Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.11. ICMP リクエストの管理

Internet Control Message Protocol (ICMP)は、接続の問題(要求されたサービスが利用できないなど)を示すエラーメッセージと操作情報を送信するために、さまざまなネットワークデバイスによって使用されるサポートプロトコルです。ICMP は、システム間でデータを交換するために使用されないため、TCP や UDP などのトランスポートプロトコルとは異なります。
残念ながら、ICMP メッセージ(特に echo-request および echo-reply )を使用して、ネットワークに関する情報を示し、さまざまな不正行為についてこのような情報を誤用できます。したがって、firewalld は、ネットワーク情報を保護するための ICMP リクエストをブロックすることを可能にします。

5.11.1. ICMP リクエストの一覧表示

ICMP リクエストは、/usr/lib/firewalld/icmptypes/ ディレクトリーにある個別の XML ファイルで説明されています。リクエストの説明は、このファイルを参照してください。firewall-cmd コマンドは、ICMP リクエストの操作を制御します。
利用可能な ICMP タイプの一覧を表示するには、以下のコマンドを実行します。
~]# firewall-cmd --get-icmptypes
ICMP リクエストは、IPv4、IPv6、またはその両方のプロトコルで使用できます。ICMP リクエストが使用されているプロトコルを表示するには、次のコマンドを実行します。
~]# firewall-cmd --info-icmptype=<icmptype>
ICMP リクエストのステータスは、リクエストが現在ブロックされている場合は yes、ブロックされていない場合は no と表示されます。ICMP リクエストが現在ブロックされているかどうかを確認するには、次のコマンドを実行します。
~]# firewall-cmd --query-icmp-block=<icmptype>

5.11.2. ICMP リクエストのブロックまたはブロック解除

サーバーが ICMP リクエストをブロックすると、通常の情報は提供されません。ただし、情報が全く提供されないというわけではありません。クライアントは、特定の ICMP リクエストがブロックされている(拒否される)情報を受け取ります。ICMP リクエストをブロックすると、特に IPv6 トラフィックで通信の問題が発生する可能性があるため、慎重に検討する必要があります。
ICMP リクエストが現在ブロックされているかどうかを確認するには、次のコマンドを実行します。
~]# firewall-cmd --query-icmp-block=<icmptype>
ICMP リクエストをブロックするには、次のコマンドを実行します。
~]# firewall-cmd --add-icmp-block=<icmptype>
ICMP リクエストのブロックを削除するには、次のコマンドを実行します。
~]# firewall-cmd --remove-icmp-block=<icmptype>

5.11.3. 情報を提供せずに ICMP リクエストのブロック

通常、ICMP リクエストをブロックすると、クライアントはブロックしていることを認識します。したがって、ライブの IP アドレスを傍受している潜在的な攻撃者は、IP アドレスがオンラインであることを確認できます。この情報を完全に非表示にするには、ICMP リクエストをすべて破棄する必要があります。
すべての ICMP リクエストをブロックして破棄するには、次のコマンドを実行します。
  1. ゾーンのターゲットを DROP に設定します。
    ~]# firewall-cmd --set-target=DROP
  2. 新しい設定を永続化します。
    ~]# firewall-cmd --runtime-to-permanent
ICMP リクエストを含むすべてのトラフィックがドロップされるようになりました(明示的に許可したトラフィックを除く)。
特定の ICMP リクエストをブロックして破棄し、その他を許可するには、次のコマンドを実行します。
  1. ゾーンのターゲットを DROP に設定します。
    ~]# firewall-cmd --set-target=DROP
  2. ICMP ブロックの反転を追加して、すべての ICMP リクエストを一度にブロックします。
    ~]# firewall-cmd --add-icmp-block-inversion
  3. 許可する ICMP リクエストに ICMP ブロックを追加します。
    ~]# firewall-cmd --add-icmp-block=<icmptype>
  4. 新しい設定を永続化します。
    ~]# firewall-cmd --runtime-to-permanent
ブロックの反転ICMP リクエストブロックの設定を反転するため、ブロックされていないすべてのリクエストはブロックされます。ブロックされているものはブロックされません。したがって、リクエストのブロックを解除する必要がある場合は、ブロックコマンドを使用してください。
これを完全に許容できる設定に戻すには、以下を行います。
  1. ゾーンのターゲットを default または ACCEPT に設定します。
    ~]# firewall-cmd --set-target=default
  2. ICMP リクエストに追加したすべてのブロックを削除します。
    ~]# firewall-cmd --remove-icmp-block=<icmptype>
  3. ICMP ブロックの反転を削除します。
    ~]# firewall-cmd --remove-icmp-block-inversion
  4. 新しい設定を永続化します。
    ~]# firewall-cmd --runtime-to-permanent

5.11.4. GUI を使用した ICMP フィルターの設定

ICMP フィルターを有効または無効にするには、firewall-config ツールを起動し、メッセージがフィルターされるネットワークゾーンを選択します。ICMP フィルター タブを 選択し、フィルターリングする ICMP メッセージの各タイプのチェックボックスを選択します。フィルターを無効にするには、チェックボックスの選択を外します。これは方向ごとに設定され、デフォルトではすべてが許可されます。
ICMP フィルター の反転を有効にするには、右側の Invert Filter チェックボックスをクリックします。マークされた ICMP タイプのみが許可され、その他はすべて拒否されます。DROP ターゲットを使用するゾーンでは破棄されます。