5.11. ICMP リクエストの管理

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

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

/usr/lib/firewalld/icmptypes/ ディレクトリーに置いた個々の XML ファイルで ICMP リクエストを説明しています。このファイルを読み、リクエストの説明を表示します。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 タイプを編集するには、firewall-config ツールを起動してから 設定 ラベルのあるメニューで 永続 モードを選びます。サービス ウィンドウの下部に新たなアイコンが表示されます。以下のダイアログで はい を選択し、マスカレーディングを有効化し、動作している別のマシンに転送します。
ICMP フィルター の反転を有効するには、右側の フィルターの反転 チェックボックスをクリックします。マークが付いた ICMP タイプが受け入れられ、その他はすべて拒否されます。DROP ターゲットを使用するゾーンでは、破棄されます。