たとえば、ファイアウォールを通過する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
発信ルールとforNEW
の違いは何ですか?ファイアウォールNEW,ESTABLISHED,RELATED
を作成し、神秘的な魔法を実行させるだけで十分ですか?NEW
それとも必ず書くべきですかNEW,ESTABLISHED,RELATED
?
答え1
2番目の設定は機能しません(試してみてください!)。デフォルトポリシーはDROP
オンOUTPUT
チェーンであるため、TCP 3ウェイハンドシェイクの3番目のパケットは、そのパケットが属していないため、ファイアウォールによってブロックされるため、NEW
接続は確立されません。
OUTPUT
デフォルトのポリシーがある場合、または後でACCEPT
別のOUTPUT
許可ESTABLISHED
およびRELATED
宣言されたルールがある場合に機能します。
結論として、それをデフォルトポリシーとして使用したい場合は、DROP
最初のルールセットが正しいです。