iptables는 정확한 IP 주소를 위해 UDP 포트를 삭제하지 않습니다.

iptables는 정확한 IP 주소를 위해 UDP 포트를 삭제하지 않습니다.

내 iptables 규칙은 다음과 같습니다.

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N f2b
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b
-A INPUT -d (my public facing ip)/32 -p udp -m udp --dport 10000 -j DROP
-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b -j RETURN

다른 모든 테이블에도 모든 체인이 ACCEPT에 있습니다.
1.1.1.1이 tcp 포트 80 및 443에 액세스할 수 없는데 왜 모든 사람이 여전히 내 공용 IP에서 포트 10000에 액세스할 수 있습니까?

답변1

-A INPUT -p tcp -m multiport --dports 80,443 -j f2b

이름이 지정된 체인으로 이동하면 다음과 같이 표시됩니다.f2b

-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable

체인의 첫 번째 규칙은 다음과 같습니다.f2b거부라고 말하세요 1.1.1.1/32

8.8.8.8의 경우 UDP가 아닌 TCP를 사용하는 트래픽을 볼 수 없습니다. 8.8.8.8은 대상이므로 소스가 8.8.8.8이고 대상이 다른 경우 규칙과 일치하지 않습니다.

이 시도:

-I FORWARD 1 -d 8.8.8.8/32 -p udp -m udp --dport 10000 -j DROP

답변2

들어오는 트래픽을 차단하고 싶다면~에서8.8.8.8 포트에 도달하면 -s(대상 주소)가 아닌 -d(소스 주소)를 사용합니다.

답변3

DROP을 REJECT로 대체하여 문제를 해결했습니다. 이것이 왜 작동하는지 모르겠지만 결과는 다음과 같습니다.

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N f2b
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b
-A INPUT -d (my public facing ip)/32 -p udp -m udp --dport 10000 -j REJECT --reject-with icmp-port-unreachable
-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b -j RETURN

편집: DROP이 완벽하게 작동한다는 것을 알았습니다. nmap을 사용하여 포트가 열려 있는지 확인했고 nmap이 거부된 경우에만 닫혔다고 말할 것이라는 사실을 잊어버렸습니다.

관련 정보