Linuxのfirewalldにルールを追加して、ホスト全体(IPまたはIP範囲ではない)を拒否することは可能ですか?
たとえば、my133y.orgからのすべての接続を拒否します。
ファイアウォールの豊富な言語を使用してIPをドロップできますが、ホストの拒否はmanページにありません。
IPを拒否する例
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.100.4/24" drop'
に変更した場合:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="my133t.org" drop'
エラーが発生しました:
Error: INVALID_ADDR: my133t.org
firewall-cmd のmanページで、事実を説明しています。
送信元アドレスまたはアドレス範囲は、IPv4またはIPv6のマスクを含むIPアドレスまたはネットワークIPアドレス、あるいはMACアドレスまたはipset:プレフィックスを含むipsetのいずれかです。 IPv4の場合、マスクはネットワークマスクまたはプレーン番号にすることができます。 IPv6の場合、マスクは単純な数値です。ホスト名の使用はサポートされていません。
これには正当な理由があります。 Firewalldはパケットフィルターです。パケットとそのルールを比較します。 IPパケットには、送信元IPアドレスと宛先IPアドレスの両方がありますが、ホスト名はありません。したがって、基準としてホストを使用するには、追加のソース、つまりドメインネームシステムDNSから追加情報を収集する必要があります。このような実装は、パケットをフィルタリングしようとするときにサーバーに新しいトラフィックを生成させることが容易であるため、サービス拒否攻撃に対して脆弱です。
さらに、DNSでA
レコードを照会することにより、ホスト名をIPアドレスに変換するのは簡単ですが、IPアドレスのすべてのホスト名を検出することはそれほど簡単ではありません。確かにIPは逆PTR
レコードを持つことができますが、それは必須ではなく、信頼できません。
例えば。コンテンツフィルターを備えた一部の統合脅威管理(UTM)ソリューションは、TLSトラフィックを暗号化せずに、禁止されたホスト名に基づいてHTTPSトラフィックをブロックします。これは、HTTPリクエストとそのHost:
ヘッダーが暗号化されているため、URLを使用できないことを意味します。ファイアウォールと同様に、IPアドレスのみが表示されます。コンテンツをフィルタリングする代わりに、そのホスト名のIPアドレスのプリフェッチリストを使用して、そのIPアドレスへのすべてのHTTPSトラフィックをブロックします。これはまさにあなたがしなければならないことです。
本当にホスト名を使用したい場合は、最初にIPアドレスを照会する必要があります。従業員が貴重な勤務時間にserverfault.com
でサーフィンするのを防ぎたいとしましょう。
Dig +short serverfault.com