
내 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이 거부된 경우에만 닫혔다고 말할 것이라는 사실을 잊어버렸습니다.