1.12. ICMP リクエストの管理

Internet Control Message Protocol (ICMP) は、テスト、トラブルシューティング、診断のために、さまざまなネットワークデバイスによって使用されるサポート対象のプロトコルです。ICMP は、システム間でデータを交換するのに使用されていないため、TCP、UDP などの転送プロトコルとは異なります。

ICMP メッセージ (特に echo-request および echo-reply) を利用して、ネットワークに関する情報を明らかにし、その情報をさまざまな不正行為に悪用することが可能です。したがって、firewalld は、ネットワーク情報を保護するため、ICMP リクエストを制御できます。

1.12.1. ICMP フィルタリングの設定

ICMP フィルタリングを使用すると、ファイアウォールでシステムへのアクセスを許可または拒否する ICMP のタイプとコードを定義できます。ICMP のタイプとコードは、ICMP メッセージの特定のカテゴリーとサブカテゴリーです。

ICMP フィルタリングは、たとえば次の分野で役立ちます。

  • セキュリティーの強化 - 潜在的に有害な ICMP のタイプとコードをブロックして、攻撃対象領域を縮小します。
  • ネットワークパフォーマンス - 必要な ICMP タイプのみを許可してネットワークパフォーマンスを最適化し、過剰な ICMP トラフィックによって引き起こされる潜在的なネットワーク輻輳を防ぎます。
  • トラブルシューティングの制御 - ネットワークのトラブルシューティングに不可欠な ICMP 機能を維持し、潜在的なセキュリティーリスクとなる ICMP タイプをブロックします。

前提条件

  • firewalld サービスが実行している。

手順

  1. 利用可能な ICMP のタイプとコードをリスト表示します。

    # firewall-cmd --get-icmptypes
    address-unreachable bad-header beyond-scope communication-prohibited destination-unreachable echo-reply echo-request failed-policy fragmentation-needed host-precedence-violation host-prohibited host-redirect host-unknown host-unreachable
    ...

    この事前定義されたリストから、許可またはブロックする ICMP のタイプとコードを選択します。

  2. 特定の ICMP タイプを次の方法でフィルタリングします。

    • 許可する ICMP タイプ:

      # firewall-cmd --zone=<target-zone> --remove-icmp-block=echo-request --permanent

      このコマンドは、エコーリクエスト ICMP タイプに対する既存のブロックルールを削除します。

    • ブロックする ICMP タイプ:

      # firewall-cmd --zone=<target-zone> --add-icmp-block=redirect --permanent

      このコマンドは、リダイレクトメッセージ ICMP タイプがファイアウォールによって確実にブロックされるようにします。

  3. ファイアウォール設定をリロードして、変更を適用します。

    # firewall-cmd --reload

検証

  • フィルタリングルールが有効であることを確認します。

    # firewall-cmd --list-icmp-blocks
    redirect

    コマンド出力には、許可またはブロックした ICMP のタイプとコードが表示されます。

関連情報

  • firewall-cmd(1) man ページ