IP 블록이 내 서버의 포트 22에 액세스하지 못하도록 iptables에 규칙을 작성하는 Python 스크립트가 있습니다.
이러한 규칙을 작성한 후 블록 중 하나의 호스트 이름은 "localhost/22"입니다. iptables는 이를 127.0.0.1로 처리합니까, 아니면 여전히 실제 IP 주소를 인식합니까? 이 때문에 내 서버가 잠겨지는 것을 원하지 않습니다.
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- *****/14 anywhere
DROP all -- localhost/22 anywhere
DROP all -- ****/20 anywhere
또한 간단한 질문: iptables가 각 규칙에 대한 포트를 표시하지 않는 이유는 무엇입니까? dport로 22를 지정했습니다.
답변1
iptables
Netfilter를 구성하는 도구입니다. Netfilter는 호스트 이름을 처리하지 않습니다.
규칙을 수정하면 iptables
호스트 이름이 IP로 확인되고, 규칙을 나열하면 iptables
IP 역방향 조회가 수행됩니다(이 -n
옵션을 사용하지 않는 경우).
localhost가 127.0.0.1 이후의 다른 항목으로 확인되거나 다른 항목의 역조회 결과인 경우 매우 이상한 설정을 갖게 되어 놀랄 수 있습니다.
답변2
루프백 인터페이스에서 허용되는 트래픽을 결정하는 규칙이 없는 이유는 무엇입니까?
iptables -I INPUT 1 -i lo -m comment --comment "ALLOW loopback interface" -j ACCEPT
"localhost"의 IP를 볼 수 있습니다.
iptables -L -v -n