예를 들어 방화벽을 통해 나가는 HTTP[S] 트래픽만 허용한다고 가정해 보겠습니다. 실제 시나리오에서는 나가는 DNS 트래픽도 허용해야 한다는 것을 알고 있지만 이는 단지 예일 뿐입니다. 나는 다음과 같이 iptable 규칙을 작성합니다:
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP
-A INPUT -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
맞습니까? 누군가가 다음과 같이 동일한 방화벽 규칙을 작성하는 것을 본 적이 있기 때문에 궁금합니다.
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP
-A INPUT -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT
나가는 규칙 과 for NEW
의 차이점은 무엇인가요 ? 방화벽을 NEW,ESTABLISHED,RELATED
작성하고 신비한 마법을 수행하게 하는 것만으로도 충분합니까? NEW
아니면 꼭 써야 하나요 NEW,ESTABLISHED,RELATED
?
답변1
두 번째 구성은 작동하지 않습니다(시도해보세요!). 기본 정책은 DROP
온 OUTPUT
체인이므로 TCP 3방향 핸드셰이크의 세 번째 패킷은 해당 패킷이 속하지 않기 때문에 방화벽에 의해 차단되므로 NEW
연결이 설정되지 않습니다.
OUTPUT
기본 정책이 이거나 나중에 ACCEPT
다른 OUTPUT
허용 ESTABLISHED
및 RELATED
선언된 규칙이 있는 경우 작동합니다.
결론적으로, 이를 기본 정책으로 사용하려는 경우 DROP
첫 번째 규칙 세트가 정확합니다 .