関連パケットを受け入れる次の単純なiptablesルールを使用しています。
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
ICMP echo-requestsにこの他のルールを通過させます:
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
destination-unreachable
、time-exceeded
およびparameter-problem
などの「有用な」ICMPメッセージを受信するために明示的に何かを追加する必要がありますか、またはRELATED
句はすでにそれらを受け入れますか?
http://www.linuxtopia.org/Linux_Firewall_iptables/x1571.html
ICMPのもう1つの非常に重要な部分は、特定のUDPおよびTCP=接続または接続試行で発生したことをホストに通知するために使用されます。この単純な理由により、ICMP応答は非常に頻繁に認識されます。元の接続または接続試行に関連するものとして。単純な例は、ICMPホスト到達不能またはICMPネットワーク到達不能です。これらは、他のホストへの接続に失敗したが、問題のネットワークまたはホストに接続しようとした場合、常にホストに生成されます。がダウンしている可能性があるため、問題のサイトに到達しようとしている最後のルーターは、それについて通知するICMPメッセージで応答します。この場合、ICMP応答はRELATEDパケットと見なされます
RELATEDルールは、デフォルトで関連するICMPメッセージを処理します。 iptables man pageから、conntrackに関連するセクションで( http://linux.die.net/ man/8/iptables ):
RELATEDは、パケットが新しい接続を開始しているが、FTPデータ転送やICMPエラーなどの既存の接続に関連付けられていることを意味します。
Conntrackによって報告される他の状態は次のとおりです。
conntrack
パッケージを使用して、conntrackテーブルを検査および管理できます。
$ Sudo conntrack -L
他の回答と次のソースに触発されて、私の最終的な構成を提供するために独自の回答を追加します。
番目のリソース はRELATED
を使用します:
iptables -P INPUT DROP
iptables -A INPUT -p icmp --fragment -j DROP
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
一般に、icmpをフィルタリングまたはブロックすることは非常に悪い考えです。通常、フィルタリングするicmpの唯一の「有効な」ビットは、単純なスキャンで「現れる」エコー要求です。
しかし、その一部を明示的に許可したい場合、少なくとも2つの非常に重要なビットが欠落しており、断片化が必要です&ソースクエンチ:
-A INPUT -p icmp --icmp-type fragmentation-needed -m state --state NEW -j ACCEPT
-A INPUT -p icmp --icmp-type source-quench -m state --state NEW -j ACCEPT
もう一度言いますが、icmpのフィルタリングは問題を隠し、発見を困難にする悪い考えです。
これは、DF(断片化しないでください)と、自動化されたPTMU検出に必要な断片化が必要で、中間ファイアウォール/ルーターがエンドポイントをアドバタイズするicmpパケットをドロップしたためにサイトにアクセスできなくなる問題でした。 MTUを下げる。