セキュリティ上の理由から、ファイアウォールルールからICMPプロトコルを削除する必要がありますか?

セキュリティ上の理由から、ファイアウォールルールからICMPプロトコルを削除する必要がありますか?

Google Cloud Platformのサーバーファイアウォールルール

GCPファイアウォールルールページのスクリーンショットに示すように、セキュリティ上の理由からファイアウォールルールからICMPプロトコルを削除する必要がありますか?攻撃される可能性が減るでしょうか?

CentOS 7を使用しています。net.ipv4.icmp_echo_ignore_all=1に追加しました/etc/sysctl.d。これは、GCPファイアウォールルールページからICMPプロトコルを削除するのと同じ効果がありますか?

答え1

GCPファイアウォールルールページのスクリーンショットに示すように、セキュリティ上の理由からファイアウォールルールからICMPプロトコルを削除する必要がありますか?攻撃される可能性が減るでしょうか?

これにはさまざまな意見がありますが、ICMPパケットを許可することは通常セキュリティリスクとは見なされません。

CentOS 7を使用しています。 /etc/sysctl.dにnet.ipv4.icmp_echo_ignore_all=1を追加しました。これは、GCPファイアウォールルールページからICMPプロトコルを削除するのと同じ効果がありますか?

いいえ。 ICMP 要求にはさまざまなタイプがあります。 pingやエコリクエストはそのうちの1つだけです。この設定はicmp_echo_ignore_allping応答のみを無効にしますが、ファイアウォールでICMPをブロックすると、すべてのICMPトラフィック、ping、および他のすべてのトラフィックがブロックされます。 ICMPパケットが正しく機能する必要がある場合があるため、これが問題を引き起こす可能性があります。

答え2

ICMPでリークタイプのメッセージを許可することについて多くの議論があります。ただし、ICMPv6では強化されているため、これらのメッセージに関連するすべてのCVEは使用されなくなる可能性があります(参照)pingのためのCVEそしてタイムスタンプのCVE)。

pingユーティリティはシステムに関する情報を提供します。主に起こります。ウェブサイトなどの他のサービスがある場合、ハッカーはとにかくあなたのシステムが動作していることを知ります。

タイムスタンプはコンピュータの現在時刻を返します。多くのシステムが現在の時間を使用して乱数を生成するため、これは悪い習慣と見なされます。私はほとんどのシステムがクライアントアクセス可能サービスを対象としていないと思います(つまり、私はまだユニットtime_t now = time(nullptr); srand(now);テストにこのシステムを使用しており、完全に安全です)。

同様に、ICMPメッセージをブロックしてタイムスタンプを非表示にしようとすると、役に立ちません。同じサーバーのWebページにアクセスすると、Date: ...現在時刻を含むフィールドが表示されます。十分にクリックすると、Webサーバーの日付と時刻の非常に近い近似を確認できます。

興味のある方のために、pingとタイムスタンプのブロックルールは次のとおりです。

-A INPUT --ipv4 -i eth0 -p icmp -m icmp --icmp-type echo-request -j DROP
-A INPUT --ipv4 -i eth0 -p icmp -m icmp --icmp-type timestamp-request -j DROP

上記のように、おそらく使用したくないでしょう。 Pingは、実際にシステムが正常に動作しているかどうかをテストするのに役立ちます。 Pingをブロックするのは最善の方法ではありません。

サポートされているICMPタイプの完全なリストを表示するには、以下を使用してください。

$ iptables -p icmp -h
$ ip6tables -p icmpv6 -h

関連情報