iptables가 즉시 적용되도록 강제 실행

iptables가 즉시 적용되도록 강제 실행

나는 다음과 같은 설정을 가지고 있습니다 :/etc/iptables/rules.v4

# Generated by iptables-save v1.4.21 on Mon Jul  1 11:32:00 2019
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3:620]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.35.107/32 -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -s 192.168.35.0/24 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -s 192.168.35.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -j DROP
COMMIT
# Completed on Mon Jul  1 11:32:00 2019

위에서 특정 IP의 핑을 차단하고 싶다는 것을 알 수 있습니다. 저장 규칙 iptables-restore < /etc/iptables/rules.v4과 목록 규칙을 사용한 후 iptables -LIP 192.168.35.107을 사용하는 컴퓨터가 서버를 ping할 수 없다는 결론을 내릴 수 있습니다.

그러나 해당 IP를 가진 컴퓨터는 ping을 수행할 수 있습니다.무기한내가 회의를 중단할 때까지. 핑을 중단한 후에도 다시 핑을 할 수 없을 때까지 약 60초 동안 일시 중지해야 합니다. 핑 사이에 5~10초 동안 일시 중지하면 방화벽이 통과하도록 허용합니다.

흥미롭게도 iptables를 통해 ping을 활성화하면 즉시 작동합니다. 또한 Samba 포트 445를 사용해 보았습니다. 동일한.

iptables에 의해 삭제된 포트를 즉시 적용할 수 있는 방법이 있습니까?

답변1

시스템에 nf_conntrack*netfilter의 연결 추적 시스템(모듈 제품군)이 활성화되어 있기 때문에 이 문제가 발생합니다.그리고귀하의 --state RELATED,ESTABLISHED규칙(분명히 으로 설정됨 )은 ping에 대한 특정 규칙 앞에 ACCEPT배치됩니다 .DROP

이러한 -m state규칙과 보다 세분화된 -m conntrack규칙은 UDP 및 ICMP와 같은 프로토콜도 기술적으로 연결 지향적이지 않더라도 추적하는 연결 추적 시스템을 사용합니다. 기본 만료 시간 제한을 사용하여 목록에 "연결" 항목을 작성하여 이러한 프로토콜을 추적합니다. 이러한 기본값은 특정 파일 /proc/sys/net/netfilter/(일반적으로 nf_conntrack_*_timeout.

ICMP는 연결 없는 프로토콜이므로 연결 추적 시스템은 이러한 "연결"이 실제로 완료되는 시기를 감지할 수 없으므로 시간 초과 기반 휴리스틱에 의존해야 합니다. 따라서 원본 IP/대상 IP ICMP "대화"와 일치하는 연결 추적 목록에 항목이 있는 한 모든 -m state --state ESTABLISHED규칙은 해당 트래픽과 일치하며 귀하의 경우 특정 규칙에 따라 이를 수락합니다.

알아차린 "~60초" 제한 시간은 일반적으로 30초입니다 . 그러나 해당 파일에 다른 값을 입력 /proc/sys/net/netfilter/nf_conntrack_icmp_timeout하여 변경되었을 수도 있습니다 .echo

또한 이 파일의 값은 해당 시점부터 새로운 "연결"에 적용됩니다. 연결 추적 시스템에 알려진 현재 항목과 현재 만료 시간 초과를 보려면 conntrack설치해야 할 수 있는 명령을 사용할 수 있습니다. 이 명령을 사용하여 항목을 수정하거나 삭제할 수도 있습니다.

iptables에 의해 삭제된 포트를 즉시 적용할 수 있는 방법이 있습니까?

가장 쉬운 방법은 항상  ACCEPT 규칙 앞에 DROP규칙을 두는 것입니다.-m state

대안은 규칙을 추가할 때마다 DROP해당 conntrack명령을 실행하여 현재 활성 항목을 삭제하는 것입니다.

답변2

이는 해당 호스트에 대한 연결 테이블에 항목이 여전히 있고 iptables규칙을 추가하거나 제거할 때 유틸리티가 어떤 방식으로든 해당 항목을 새로 고치거나 조작하지 않기 때문에 발생합니다.

이를 위해서는 설치해야합니다conntrack(8)커널의 실시간 연결 추적 테이블을 조작하는 데 사용할 수 있는 유틸리티입니다. 이는 /proc다른 방법을 통해서는 사용할 수 없는 기능을 제공하는 netlink 소켓 인터페이스를 사용하여 수행됩니다 .

예를 들어 conntrack -F모든 연결이 플러시되고, conntrack -D --dst=8.8.8.8이 대상이 있는 모든 항목이 삭제되고, conntrack -D --src=192.168.35.107이 소스가 있는 모든 항목이 삭제됩니다.

대부분의 배포판에 쉽게 설치할 수 있습니다. apt-get install conntrack, yum install conntrack,등.

관련 정보