Pingは、IPネットワーク上のシステムの可用性をテストするために使用されるネットワーク管理ユーティリティです。 pingは、ラウンドトリップ時間とパケット損失を監視することにより、ネットワーク接続の品質をテストするためにも使用されます。
一方、ネットワーク侵入者やハッカーは、pingを使用してネットワークサブネットを識別し、潜在的なホストを見つけたり、ICMPフラッド攻撃を実行したりします。したがって、あらゆる種類の攻撃を防ぐために、サーバーへのping要求をブロックすることをお勧めします。
ここLinuxAPTでは、サーバー管理サービスの一部として 、お客様がLinux関連のタスクを実行するのを定期的に支援しています。
これに関連して、Linuxサーバーへのping要求をブロックする方法を検討します。
Linuxサーバーへのping要求をブロック/ブロック解除する方法は?
ここでは、sudo権限を持つユーザーと一緒にUbuntu20.04LTSを使用しています。
pingは、ICMPパケット(エコー要求)を宛先システムに送信し、応答ICMPパケット(エコー応答)を受信することで機能します。 Linuxでは、pingコマンドはCtrl+Cを使用して停止するまでICMPパケットを送信し続けます。
ping要求をブロックするには、サーバーに送信されるICMPエコー要求を無視/ブロックする必要があります。
LinuxサーバーへのICMPエコー要求をブロック/ブロック解除するには、次の2つの方法があります。
私。カーネルパラメータを介して。
ii。 iptablesを介して。
それでは始めましょう。
カーネルパラメータを介してpingリクエストをブロック/ブロック解除する方法は?
カーネルパラメータを使用して、ping要求を一時的または永続的にブロックできます。カーネルパラメータは、sysctlコマンド、/ sys / procディレクトリ、および/etc/sysctl.confファイルを介して変更できます。
ping要求を一時的にブロック/ブロック解除する方法
Linuxのsysctlコマンドは、/ proc/sysディレクトリのカーネルパラメータの読み取りと書き込みに使用されます。このコマンドを使用して、ping要求をブロック/ブロック解除するカーネルパラメーターを設定できます。カーネルパラメータnet.ipv4.icmp_echo_ignore_allは、システムがICMPエコー要求に応答するかどうかを制御します。デフォルト値は「0」で、ICMPリクエストに応答することを意味します。
sysctlコマンドを使用してPing要求をブロックするには:
ping要求をブロックするには、ターミナルで次のコマンドを発行します。
$ sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1
このコマンドは、カーネルパラメータを「1」に設定します。これは、すべてのICMP要求を無視することを意味します。
これで、システムへのすべてのping要求がブロックされ、送信者は応答を受信しなくなります。
Ping Request sysctlコマンドのブロックを解除するには:
ping要求のブロックを解除するには、パラメータ値をデフォルトの「0」に変更して同じコマンドを再度実行します。
$ sudo sysctl -w net.ipv4.icmp_echo_ignore_all=0
または、echoコマンドを使用して/ proc / sysディレクトリのカーネルパラメータ値を変更することにより、ping要求をブロックできます。
ただし、この方法を使用するには、rootとしてコマンドを実行する必要があります。
次に、ターミナルで次のコマンドを発行します。
$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
ping要求のブロックを解除するには、コマンドは次のようになります。
$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
ping要求を永続的にブロックする方法は?
カーネルパラメータは、/ etc/sysctl.confファイルを介して変更することもできます。このファイルを使用すると、サーバーへのping要求を永続的にブロックできます。
sysctl.confファイルを介してPingリクエストをブロックするには:
私。システムへのping要求をブロックするには、/ etc/sysctl.confファイルを編集します。
$ sudo nano /etc/sysctl.conf
ii。次に、ファイルに次の行を追加します。
net.ipv4.icmp_echo_ignore_all = 1
iii。ファイルを保存して閉じます。
iv。次に、ターミナルで次のコマンドを発行して、再起動せずにこの構成を適用します。
$ sysctl -p
sysctl.confファイルを介してPingリクエストのブロックを解除するには:
私。 ping要求のブロックを解除するには、/ etc/sysctl.confファイルを編集します。
$ sudo nano /etc/sysctl.conf
ii。次に、net.ipv4.icmp_echo_ignore_allの値を「0」に変更します。
net.ipv4.icmp_echo_ignore_all = 0
iii。ファイルを保存して閉じます。
iv。次に、ターミナルで次のコマンドを発行して、再起動せずにこの構成を適用します。
$ sysctl -p
iptablesを使用してpingリクエストをブロック/ブロック解除する方法は?
Iptablesは、特定のルールに基づいて着信および発信トラフィックを制御するLinuxのファイアウォールユーティリティです。 Ubuntuシステムにプリインストールされています。システムにない場合は、ターミナルで次のコマンドを使用してインストールできます。
$ sudo apt install iptables
iptablesを使用してPingリクエストをブロックするには:
私。システムへのping要求をブロックするには、ターミナルで次のコマンドを入力します。
$ sudo iptables -A INPUT -p icmp --icmp-type 8 -j REJECT
ここで、Aフラグはiptablesにルールを追加するために使用され、icmp-type8はエコー要求に使用されるICMPタイプ番号です。
上記のコマンドは、システムへの着信ping要求をブロックするルールをファイアウォールに追加します。このルールを追加することにより、システムにping要求を送信するすべての人に、「宛先ポートに到達できません」というメッセージが表示されます。
ii。このメッセージを表示したくない場合は、次のコマンドを使用して、REJECTをDROPに置き換えます。
$ sudo iptables -A INPUT -p icmp --icmp-type 8 -j DROP
これで、誰もがping要求をシステムに送信します。
iptablesを使用してPingリクエストのブロックを解除するには:
私。サーバーへのping要求のブロックを解除するには、ターミナルで次のコマンドを入力します。
$ sudo iptables -D INPUT -p icmp --icmp-type 8 -j REJECT
Dフラグを使用してiptablesのルールを削除し、icmp-type8がエコー要求に使用されるICMPタイプ番号です。
ii。システムの再起動後にこれらのルールを永続化するには、iptables-persistentパッケージが必要です。ターミナルで以下のコマンドを発行して、iptables-persistentをインストールします。
$ sudo apt install iptables-persistent
インストールを続行するかどうかを確認するように求められます。 yを押して続行します。その後、システムはインストールを開始し、完了すると使用できるようになります。
ルールを追加または削除した後、ターミナルで次のコマンドを発行して、システムの再起動後も存続させます。
$ sudo netfilter-persistent save
$ sudo netfilter-persistent reload
iptablesに追加されたすべてのルールを表示するには、ターミナルで次のコマンドを発行します。
$ sudo iptables -L