Pingは、ICMPエコー要求とエコー応答メッセージを使用してインターネットプロトコルネットワーク上のシステムの可用性を確認するために使用されるネットワークユーティリティです。
ただし、一部のネットワーク管理者は、何らかの理由でpingをセキュリティの問題と見なしているため、pingをブロックすることを好みます。
ここLinuxAPTでは、サーバー管理サービスの一環として、お客様がDebian関連のクエリを実行するのを定期的に支援しています。
これに関連して、Debianでpingリクエストをブロックまたはブロック解除する方法を検討します。
以前、Ubuntu20.04でpingリクエストをブロックまたはブロック解除する方法を説明しました。
DebianでPingリクエストをブロックまたはブロック解除する方法は?
Pingは、ターゲットシステムに向けてICMPエコー要求を送信してから、ICMPエコー応答を取得します。
Linux OSでは、IPアドレスにpingを実行すると、Ctrl+Cを押して停止するまでICMPパケットを送信し続けます。
特定の数のパケットを送信するには、-cオプションを指定してpingを使用します。
たとえば、3つのICMPパケットを送信するには、次のコマンドを使用できます。
$ ping -c 3 <ip-address or hostname>
Debianシステムへのping要求をブロックするには、次の2つのオプションがあります。
私。カーネルパラメータを介して
ii。 iptablesを介して
それでは、Debianシステムでping要求をブロックするための両方のオプションを見てみましょう。
カーネルパラメータを使用してPingリクエストをブロックまたはブロック解除する方法は?
カーネルパラメータnet.ipv4.icmp_echo_ignore_allを変更することにより、ping要求をブロック/ブロック解除できます。
このパラメーターは、システムがping要求に応答するかどうかを制御します。
カーネルパラメータnet.ipv4.icmp_echo_ignore_allのデフォルト値は「0」です。これは、すべてのping要求を許可することを意味します。
このカーネルパラメータの値を変更することで、システムにping要求をブロックさせることができます。
カーネルパラメータを変更するには、次の3つの方法があります。
私。 「sysctl」コマンドを使用
ii。 「icmp_echo_ignore_all」ファイルを介して
iii。 「/etc/sysctl.conf」ファイルを介して
システムが現在ping要求をブロックしているか許可しているかを確認するには、ターミナルで次のコマンドを発行します。
$ sudo sysctl -ar 'icmp_echo'
「icmp_echo_ignore_all」の値が「0」に等しい場合は、pingがブロック解除されていることを意味し、値「1」はpingがブロック解除されていることを意味します。
「sysctl」コマンドを使用してPing要求をブロックまたはブロック解除する方法(一時的に)?
システムへのping要求を一時的にブロックする必要がある場合は、次のようにsysctlコマンドを使用できます。
$ sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1
上記のコマンドを実行した後、マシンはそれに着信するping要求のブロックを開始します。
これで、別のシステムがシステムにpingを実行しようとしても、応答がありません。
ただし、前述のとおり、この変更は一時的なものです。
システムを再起動するとすぐに、カーネルパラメータ値が元の値に戻り、pingのブロックが再び解除されます。
次のコマンドを使用してpingのブロックを解除することもできます:
$ sudo sysctl -w net.ipv4.icmp_echo_ignore_all=0
icmp_echo_ignore_allファイルを介してPingリクエストをブロックまたはブロック解除する方法(一時的に)?
/ proc / sys / net / ipv4 /ディレクトリには、システムがping要求に応答するかどうかを制御するファイルicmp_echo_ignore_allが含まれています。
ping要求をブロックするには、icmp_echo_ignore_allファイルの値を「0」から「1」に変更する必要があります。
これは、次のコマンドを使用して実行できます。
$ sudo sh -c 'echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all'
ただし、この変更は一時的なものです。
システムを再起動するとすぐに、カーネルパラメータ値が元の値に戻り、pingのブロックが再び解除されます。
次のコマンドを使用してpingのブロックを解除することもできます:
$ sudo sh -c 'echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all'
「/etc / sysctl.conf」ファイルを介してPing要求をブロックまたはブロック解除する方法(永続的に)?
/etc/sysctl.confファイルを使用して、ping要求を永続的にブロックすることもできます。 ping要求を永続的にブロックするには、最初に次のコマンドを使用して/etc/sysctl.confファイルを編集します。
$ sudo nano /etc/sysctl.conf
編集したファイルに、次の行を追加します。
net.ipv4.icmp_echo_ignore_all = 1
次に、/ etc / sysctl.confファイルを保存して閉じ、次のコマンドを実行して変更を適用します。
$ sysctl -p
pingのブロックを解除するには、/ etc / sysctl.confファイルを編集し、net.ipv4.icmp_echo_ignore_allの値を0に戻します。
net.ipv4.icmp_echo_ignore_all = 0
iptablesを使用してPingリクエストをブロックまたはブロック解除する方法(永続的に)?
Iptablesは、一連のルールに基づいてトラフィックを許可/ブロックするLinuxのコマンドラインユーティリティです。 Debianディストリビューションには、デフォルトでiptablesユーティリティが含まれています。
ただし、システムにこのユーティリティがない場合は、次のようにインストールできます。
$ sudo apt-get install iptables
次に、ターミナルで次のコマンドを発行して、ping要求をブロックします。
$ sudo iptables -A INPUT -p icmp --icmp-type 8 -j REJECT
上記のコマンドでは、Aオプションはiptablesにルールを追加するために使用され、icmp-type8はICMPエコー要求に使用されます。
このコマンドは、システムへのすべての着信pingをブロックするために、ファイアウォールにルールを追加します。このルールを追加すると、システムはそれに着信するすべてのping要求を拒否します。
これで、別のシステムがシステムにpingを実行しようとすると、「宛先ポートに到達できません」というメッセージが表示されます。
送信側ユーザーに宛先ポート到達不能メッセージを表示させたくない場合は、次のように、上記のコマンドでREJECTの代わりにDROPを使用します。
$ sudo iptables -A INPUT -p icmp --icmp-type 8 -j DROP
これで、ユーザーがシステムにpingを実行しても、応答はありません。
pingのブロックを解除するには、次のコマンドを使用します。
$ sudo iptables -D INPUT -p icmp --icmp-type 8 -j REJECT
または、iptablesルールでDROPオプションを使用した場合は、以下のコマンド:
$ sudo iptables -D INPUT -p icmp --icmp-type 8 -j DROP
上記のコマンドでは、Dオプションはiptablesのルールを削除するために使用され、icmp-type8はICMPエコー要求に使用されます。
iptablesのルールを一覧表示するには、次のコマンドを使用します。
$ sudo iptables -L
上記で追加したiptablesルールは、システムの再起動後も存続しません。
再起動後も存続させるには、iptables-persistentパッケージをインストールする必要があります。
次のコマンドを実行してインストールします。
$ sudo apt install iptables-persistent
iptablesで追加または削除する各ルールの後で、次のコマンドを実行して、再起動後もこれらのルールを永続化します。
$ sudo netfilter-persistent save
$ sudo netfilter-persistent reload