나는 다음과 같은 설정을 가지고 있습니다 :/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 -L
IP 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
,등.