【Linux】Firewalldサービスで安全にping(icmp)をブロックする方法

Linuxサーバ

firewall-cmdコマンドの
「--add-icmp-block=echo-request」でpingの応答をブロックできますが
こちらは利用しないようにしてください。

NG:firewall-cmd --zone=public --add-icmp-block=echo-request

理由
応答を返さないことを送信者へ応答しているからです。
これは、pingリクエストに対して正常応答ではなく異常応答を
返していることになり、結果応答を返しているのと変わらないからです。
※悪意のあるping実行だった場合、存在していることがバレてしまいます。

以下は「192.168.11.19」に「add-icmp-block=echo-request」を設定した時の
「192.168.11.16」からpingを実行した結果になります。
Destination Host Prohibited」と応答を返しています。

スポンサーリンク

IP・セグメント単位でping(icmp)をブロックする設定方法

Firewalldサービスは、activeとするゾーンを決めて(public、dmz、dropなど)、そのゾーンに割当てるターゲット(default、ACCEPT、DROPなど)を設定します。
複数のゾーンをactiveに設定することができることを利用して設定します。

前提条件

  1. activeになっているゾーンが
    「drop」以外
    かつ
    そのゾーンのターゲットが「DROP」以外
    になっている事
    ※デフォルト設定だと「public」がactiveになっておりターゲットも「default」なので、前提条件をクリア―しています。
    くわしくはこちら
  2. 以下の設定をした場合は、指定したIP・セグメントからのpingの通信のみ拒否されます

  3. 恒久設定する場合は
    「--permanent」オプションの付与と「firewall-cmd ---reload」の実行が必要

---
■IPアドレスを指定してpingの応答を停止
以下の3つのコマンドを実行

firewall-cmd --add-port=0-65535/tcp --zone=drop
firewall-cmd --add-port=0-65535/udp --zone=drop
firewall-cmd --add-source=192.168.11.16 --zone=drop

->
「192.168.11.16」からping実行は拒否されます。
但し、ping以外の通信はすべて許可(「0-65535/tcp」と「0-65535/UDP」)されています。

■セグメント単位で指定してpingの応答を停止
以下の3つのコマンドを実行

firewall-cmd --add-port=0-65535/tcp --zone=drop
firewall-cmd --add-port=0-65535/udp --zone=drop
firewall-cmd --add-source=192.168.11.0/24 --zone=drop

->
「192.168.11.0/24」からping実行は拒否されます。
但し、ping以外の通信はすべて許可(「0-65535/tcp」と「0-65535/UDP」)されています。

■ポイント

  1. 「drop」ゾーンのターゲットは「DROP」なので、「drop」ゾーンがactiveになるとすべて拒否からのスタートになります。

  2. 前提条件でも記載したとおり、設定前は「drop」ゾーンはactiveになっていません。

  3. 「drop」ゾーンがactiveになるタイミングは、送信者を設定した時になります。複数のゾーンをactiveにできます。
    ※「# firewall-cmd --add-source=~」を実行したタイミング

    今回の場合、もともとactiveだったゾーン(「public」ゾーンなど)と「drop」ゾーンがactiveになります。

    ※複数のゾーンをactiveにできる詳細は、以下を参照してください。
    https://isleofhoso.com/linux-firewalld-conf/

  4. 「drop」ゾーンに送信者(--add-source)を設定すると「drop」ゾーンがactiveになり送信者に設定されたIP・セグメントからの通信はすべて拒否されます。

  5. 「drop」ゾーンに設定したサービス(--add-portなど)は、拒否から許可に変更されます。
    ※「# firewall-cmd --add-port=~」の実行が該当します。

以上を踏まえ
コマンドの実行順も重要となっています。

  1. 「drop」ゾーンの「tcpとudp」の全ポートだけを
    「拒否」から「許可」へ変更する。
    ※「drop」ゾーンは、ping(ICMP)通信だけが拒否設定になります。

  2. 送信者「192.168.11.16」or「192.168.11.0/24」からの通信を「drop」ゾーンに設定する。

    ※「1.」にて「drop」ゾーンの「tcpとudp」の全ポートだけを許可することで「192.168.11.16」or「192.168.11.0/24」からのpingだけを拒否できます。



以下は「192.168.11.19」に「192.168.11.16」からの通信を「drop」した時の
ping実行した結果になります。
※応答を返していません。応答が破棄されていることがわかります。

コメント

タイトルとURLをコピーしました