특정 포트가 닫혀 있어도 iptables가 여전히 패킷을 허용하는 이유는 무엇입니까?

특정 포트가 닫혀 있어도 iptables가 여전히 패킷을 허용하는 이유는 무엇입니까?

저는 리눅스 민트를 사용하고 있습니다.

라우터에 공용 고정 주소를 할당하고 토렌트용으로 지정된 포트를 수동으로 전달했기 때문에 UPnP를 거치는 대신 라우터와 전송 비트토렌트 응용 프로그램 모두에서 UPnP를 비활성화했습니다.

이는 전송 디스플레이 포트가 열려 있다는 의미에서 작동합니다. 하지만 제가 아는 바로는 운송이 중단되면 항구도 폐쇄되어야 합니다.

iptables그러나 전송이 닫혀도 새 패킷은 계속 허용됩니다.

왜? 어떡해?

여기있어 iptables -L -v:

# iptables -L -v

Chain INPUT (policy DROP 7514 packets, 585K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  251 10040 DROP       all  --  any    any     anywhere             anywhere             ctstate INVALID
 4330  371K DROP       icmp --  any    any     anywhere             anywhere            
    0     0 DROP       igmp --  any    any     anywhere             anywhere            
 4394  850K ACCEPT     all  --  lo     any     anywhere             anywhere            
1324K  462M ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
 6751  415K ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:56874

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1484K packets, 2391M bytes)
 pkts bytes target     prot opt in     out     source               destination         

1분 후에도 마찬가지입니다.

# iptables -L -v

Chain INPUT (policy DROP 7869 packets, 611K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  251 10040 DROP       all  --  any    any     anywhere             anywhere             ctstate INVALID
 4330  371K DROP       icmp --  any    any     anywhere             anywhere            
    0     0 DROP       igmp --  any    any     anywhere             anywhere            
 4437  863K ACCEPT     all  --  lo     any     anywhere             anywhere            
1324K  462M ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
 6983  430K ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:56874

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1485K packets, 2391M bytes)
 pkts bytes target     prot opt in     out     source               destination 

의견은 다음과 같습니다.

netstat -nap | grep <my port number here>

이 명령은 빈 결과를 표시합니다.

답변1

포트가 닫힐 때 패킷을 삭제하는 것은 iptables의 작업이 아니며 일반 네트워크 스택의 작업입니다(iptables가 없는 것과 같습니다). (정확히 말하면 네트워크 스택은 패킷을 삭제하는 것이 아니라 상대방에게 아무것도 듣고 있지 않다는 것을 정중하게 알립니다.)

iptables가 패킷을 허용한다고 해서 수신 대기 중인 항목이 있다는 의미는 아닙니다.

업데이트: 댓글에서 언급했듯이 위험이 있습니다. 하지만 이는 닫힌 포트 자체에서 패킷을 수락하는 데서 오는 것이 아니라차이점다른 모든 포트와 비교한 이 포트의 동작: 삭제 및 거부. 해결책은떨어지지 않는다다른 모든 포트에는 패킷이 있지만거부하다이는 네트워크 스택이 수행하는 작업과 같습니다.

패킷이 TCP인 경우 -j REJECT --reject-with tcp-resetUDP 및 기타 포트 기반 프로토콜에 사용됩니다 -j REJECT --reject-with icmp-port-unreachable. 모든 간단한 DROP은 이제 두 개의 규칙으로 분할되므로 거부를 위한 새 체인을 만들고 이전에 삭제하려는 체인으로 이동하는 것이 좋습니다.

포트 매퍼를 사용하여 nmap결과를 확인하세요.

관련 정보