iptables에 대한 좋은 소개를 추천 할 수 있습니까? [닫은]


15

Linux 서버에서 방화벽을 설정해야합니다 (이전의 모든 경험은 Windows에 대한 것입니다). 내 규칙은 매우 간단합니다. 모두 금지, 모두 포트 포함, 특정 IP 서브넷에 대한 일부 포트 허용, 네트워크는 작지만 복잡합니다 (각 호스트는 최소 2192.168의 IP를 보유하고 있습니다. 다양한 방법으로 서로 연결). 나는 iptables 래퍼를 사용하면 많은 불필요한 엔티티를 논리적으로 도입하는 시스템을 지나치게 복잡하게 만들 수 있으며 간단하게 유지하고 iptables를 직접 사용하는 것이 좋습니다.

iptables 규칙을 작성하는 방법에 대한 빠른 소개를 추천 할 수 있습니까?

답변:


26

공식 및 권장 설명서 에 대한 링크 는 Netfilter 웹 사이트에 있습니다.

이것은 새로운 주제가 아니며 자원은 무한 합니다.

대부분의 기본 명령은 매우 직관적이며 맨 페이지 를 쉽게 참조 할 수 있습니다 .

패킷 필터링을 가능하게하는 커널 레벨 기술인 netfilter는 상당히 발전되었습니다. 패킷을 엉망으로 만들거나 패킷을 변환하거나 라우팅에 영향을 줄 수있는 추가 테이블이 있습니다. 이 iptables유틸리티는 netfilter와 상호 작용하기위한 사용자 도구입니다. 고급 기능에 대해 배우려면 위에서 언급 한 설명서를 참조하십시오. 기본 기능에 대한 소개는 추가 정보를 참조하십시오.

모든 기존 규칙을 나열하려면

iptables -L -n

-n iptables가 ip를 해석하지 못하게하여 더 빠른 출력을 생성합니다.

기본 테이블은 filter테이블이며 기본 방화벽 규칙을 세 개의 체인에 적용하는 데 사용됩니다. 의 세 가지 기본 체인 filter테이블은 INPUT, OUTPUT하고 FORWARD.

사슬은 대부분 설명이 필요합니다. INPUT 체인은 들어오는 패킷에 영향을 미치고 OUTPUT 체인은 로컬로 생성 된 패킷에 영향을 미치며 마지막으로 시스템을 통해 라우팅되는 모든 패킷에 대해 앞으로 전달됩니다.

지정할 수있는 대상 중에서 DROP패킷을 무시할 수 있습니다 . 즉, 무시하고 응답하지 않습니다. REJECTicmp 응답이 거부 소스로 전송되는 패킷을 사용할 수 있습니다 . 마지막으로 ACCEPT패킷 라우팅을 계속할 수 있습니다.

외부 방화벽을 사용하는 경우 인터넷에서 네트워크의 가시적 인 설치 공간이 줄어들 기 때문에 기본 선택은 DROP반대 REJECT입니다. 예를 들어 서비스를 특정 호스트로 제한하는 IP의 경우 가시성이 떨어집니다 DROP.

참고 -A수단은 상기 체인의 마지막에 추가. 상단에 삽입하려면을 사용할 수 있습니다 -I. 모든 규칙은 위에서 아래로 처리됩니다. -D삭제합니다.

DROP로부터 오는 들어오는 패킷 192.168.235.235:

iptables -A INPUT -s 192.168.235.235 -j DROP

이것은 DROP해당 IP에서 오는 모든 프로토콜 의 대상으로 이동합니다 .

수락하려면 :

iptables -A INPUT -s 192.168.235.235 -j ACCEPT

로컬 서버 또는 네트워크에서 해당 IP에 액세스하지 못하게하려면

iptables -A OUTPUT -d 192.168.235.235 -j DROP

당신은 지정할 수 있습니다 -p프로토콜의 -s패킷의 소스는 -d패킷, 목적지 포트 목적지 --dport, 소스 포트 --sport패킷이 규칙에 의해 처리하는 방법에 영향을, 그리고 많은 다른 플래그.

기본 INPUT정책이 DROP있고 192.168.123.0/24서브넷의 모든 사용자가 서버의 SSH에 액세스 할 수 있도록 하려면 다음 예를 참조하십시오.

iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT

맞습니다. CIDR 표기법 도 사용할 수 있습니다 !

일반적으로 가장 좋은 기본 정책은 DROP모든 체인에 적용됩니다. 모든 체인에는 -P플래그 로 지정된 기본 정책이 있습니다. 정책을 기본값으로 설정하더라도 DROP체인의 최종 항목을 유지하는 것이 좋습니다 DROP.

예를 들어, DROPINPUT, FORWARD 및 OUTPUT 체인 에 대한 정책을 변경하려면 다음 을 수행하십시오.

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

주의 먼저 자신에게 SSH 액세스를 허용하지 않고 원격 시스템에 입력을 DROP의 기본 정책을 지정하는 경우, 당신은 시스템에 액세스로부터 자신을 방지 할 수 있습니다. 원격 시스템에있는 경우 5 분마다 모든 규칙을 안전 장치로 플러시하도록 임시 crontab을 지정할 수 있습니다.

모든 규칙을 삭제하고 모든 트래픽을 허용하려면

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F

참고 -X생성 된 모든 사슬을 제거합니다. -F모든 규칙을 플러시합니다.

규칙을 저장하고 복원하는 기본 도구가 있습니다. 특히, iptables-saveiptables-restore. 대부분의 최신 리눅스 배포판이 saverestoreiptables에 내 기능은 시스템과 함께 제공 파일을 초기화하기.

잘못된 패킷 삭제 및 다른 유형의 원하지 않는 트래픽과 같은 다른 방화벽 모범 사례가 있습니다. Shorewall 과 같은 프런트 엔드 유틸리티를 사용하면 기본적으로 이러한 많은 정책을 구현할 수 있으므로 이점이 있습니다. 그럼에도 불구하고, 나는 귀하의 접근 방식에 동의하며 직접 규칙을 직접 유지하는 것을 선호하며 이러한 모범 사례는 프런트 엔드없이 구현할 수 있습니다.


2
여기에 임의의 iptables 항목을 찾는 동안이 답변을 보았습니다 (더 이상 Google보다 SF / SO를 검색합니다!).이 매우 자세한 답변은 더 많은 투표 사랑을받을 자격이있는 것 같습니다.
Andrew Barber

+1 좋은 답변. 데비안 위키 도 언급하겠습니다 .
michal.kreuzman 2016 년


1

최근에 https://help.ubuntu.com/community/IptablesHowTo가 유용 하다는 것을 알았습니다 . 나는 거기에 아무것도 우분투 특정이라고 생각하지 않습니다.


랩톱에서 Arch를 사용하지만 Ubuntu Lucid Server는 설정 작업입니다. 그래서 이것은 쓸모없는 것이 아니라면 손에 올 수 있습니다 (내가 볼 수있는 한 우분투 8.04를 다루고 있습니다).
Ivan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.