
다음과 같은 시나리오가 있습니다.
22, 80 및 443 포트에만 액세스를 허용하고 그 외 모든 포트는 허용하려고 합니다.
내 iptables -L
모습은 다음과 같습니다.
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state RELATED,ESTABLISHED
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
하지만 원하는 효과를 얻을 수 없으며 심지어 내 서버에서도 더 이상 아무 것도 핑할 수 없습니다(더 이상 인터넷에 접속할 수 없습니다).
INPUT
또한 원하는 포트 에 정책을 설정하고 수동으로 여는 옵션을 살펴봤지만 DROP
원하는 효과를 얻지 못했습니다.
DROP
체인 에 정책을 적용 INPUT
하고 원하는 포트를 수동으로 여는 것과 모든 트래픽을 마지막 규칙으로 삭제하여 수행한 방식에 차이가 있습니까 ?
정말 감사합니다.
감사합니다.
답변1
현재 INPUT
체인 설정을 통해 클라이언트는 TCP 22, 80 및 443에서 서버에 연결할 수 있으며TCP응답을 받기 위해 시작한 연결. 그게 다야! 아니요ICMP(핑의 경우) 아니요UDP(DNS 조회).
단순한 규칙이 아닌 모든 프로토콜에 ESTABLISHED, RELATED
대한 규칙을 갖습니다 .ALLOW
TCP, 위의 문제를 해결해야 합니다.
규칙과 DROP
정책을 사용하여 모든 것을 삭제하는 방법:
iptables -P INPUT DROP
다음을 갖는 것과 동일합니다.
iptables -A INPUT -j DROP
마지막 규칙으로.
또한 자신이 무엇을 하고 있는지 정확히 알지 않는 한, 완전히 허용해야 합니다.루프백교통.