web-dev-qa-db-ja.com

iptables、ICMPおよびRELATED

関連パケットを受け入れる次の単純なiptablesルールを使用しています。

-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

ICMP echo-r​​equestsにこの他のルールを通過させます:

-A INPUT -p icmp --icmp-type echo-request -j ACCEPT

destination-unreachabletime-exceededおよびparameter-problemなどの「有用な」ICMPメッセージを受信するために明示的に何かを追加する必要がありますか、またはRELATED句はすでにそれらを受け入れますか?

7
S19N

http://www.linuxtopia.org/Linux_Firewall_iptables/x1571.html

ICMPのもう1つの非常に重要な部分は、特定のUDPおよびTCP=接続または接続試行で発生したことをホストに通知するために使用されます。この単純な理由により、ICMP応答は非常に頻繁に認識されます。元の接続または接続試行に関連するものとして。単純な例は、ICMPホスト到達不能またはICMPネットワーク到達不能です。これらは、他のホストへの接続に失敗したが、問題のネットワークまたはホストに接続しようとした場合、常にホストに生成されます。がダウンしている可能性があるため、問題のサイトに到達しようとしている最後のルーターは、それについて通知するICMPメッセージで応答します。この場合、ICMP応答はRELATEDパケットと見なされます

6
thanasisk

RELATEDルールは、デフォルトで関連するICMPメッセージを処理します。 iptables man pageから、conntrackに関連するセクションで( http://linux.die.net/ man/8/iptables ):

RELATEDは、パケットが新しい接続を開始しているが、FTPデータ転送やICMPエラーなどの既存の接続に関連付けられていることを意味します。

Conntrackによって報告される他の状態は次のとおりです。

  • INVALIDは、パケットが既知の接続に関連付けられていないことを意味します
  • ESTABLISHEDは、パケットが双方向でパケットを見た接続に関連付けられていることを意味します
  • NEWは、パケットが新しい接続を開始したか、または双方向でパケットを認識していない接続に関連付けられていることを意味します
  • SNAT元の送信元アドレスが返信先と異なる場合に一致する仮想状態
  • DNAT元の宛先が返信元と異なる場合に一致する仮想状態

conntrackパッケージを使用して、conntrackテーブルを検査および管理できます。

$ Sudo conntrack -L
5
jjmontes

他の回答と次のソースに触発されて、私の最終的な構成を提供するために独自の回答を追加します。

  1. IETFによる期限切れのドラフト は、どのICMPタイプで許可、拒否、またはレート制限が行われるかを示す便利なテーブルを備えています。
  2. 別のページ iptablesおよびCisco IOSの最小行。
  3. 番目のリソース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
    
2
S19N

一般に、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を下げる。

2
Jorge Nerín