ウェブサイト検索

Linux システムへの Ping ICMP リクエストをブロックする方法


一部のシステム管理者は、不安定なネットワーク上で Linux ボックスを外部に隠したり、ある種の IP フラッディングやサービス拒否攻撃を防ぐために、 サーバーへのICMP メッセージをブロックすることがあります。

Linux システムでping コマンドをブロックする最も簡単な方法は、以下の例に示すようにiptablesルールを追加することです。 Iptables は Linux カーネルの netfilter の一部であり、通常、ほとんどの Linux 環境にデフォルトでインストールされます。

iptables -A INPUT --proto icmp -j DROP
iptables -L -n -v  [List Iptables Rules]

Linux システムで ICMP メッセージをブロックするもう 1 つの一般的な方法は、すべての ping パケットをドロップする以下のカーネル変数を追加することです。

echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_all

上記のルールを永続的にするには、次の行を /etc/sysctl.conf ファイルに追加し、続いて sysctl コマンドを使用してルールを適用します。

echo “net.ipv4.icmp_echo_ignore_all = 1” >> /etc/sysctl.conf 
sysctl -p

UFW アプリケーション ファイアウォールが同梱されている Debian ベースの Linux ディストリビューションでは、図に示すように、次のルールを /etc/ufw/before.rules ファイルに追加することで ICMP メッセージをブロックできます。以下の抜粋で。

-A ufw-before-input -p icmp --icmp-type echo-request -j DROP

以下のコマンドを実行して、UFW ファイアウォールを再起動してルールを適用します。

ufw disable && ufw enable

Firewalld インターフェイスを使用して iptables ルールを管理する CentOS または Red Hat Enterprise Linux ディストリビューションでは、次のルールをping メッセージをドロップします。

firewall-cmd --zone=public --remove-icmp-block={echo-request,echo-reply,timestamp-reply,timestamp-request} --permanent	
firewall-cmd --reload

ファイアウォール ルールが上記のすべてのケースに正常に適用されたかどうかをテストするには、リモート システムから Linux マシンの IP アドレスに ping を実行してみます。 Linux ボックスへの ICMP メッセージがブロックされている場合は、リモート マシン上で「リクエストがタイムアウトしました」または「宛先ホストに到達できません」というメッセージが表示されます。