ホワイトリストに登録されているいくつかのサイトを除いて、私のネットワークは完全にロックダウンされています。これはすべて、次のようなiptablesを介して行われます。
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT
...
明らかに、これらのアドレスは架空のものですが、あなたはそのアイデアを理解しています。ファイアウォールが巨大化しています。これを行うことができれば、メンテナンスがはるかに簡単になります。
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT
iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT
man iptables
さんのコメント:
アドレスは、ネットワーク名、ホスト名(DNSなどのリモートクエリで解決する名前を指定することは非常に悪い考えです)、ネットワークIPアドレス(/マスク付き)のいずれかです。 、またはプレーンIPアドレス。
しかし、私が心配しているのは、「解決する名前を指定する... DNSは本当に悪い考えです」と言っている部分です。なぜこれが悪い考えなのですか?すべてを遅くするだけですか?
Iptablesルールで実際にホスト名を使用するべきではない場合、ファイアウォールを簡素化するにはどうすればよいですか?
HTTPアクセスをブロックすることが目的である場合は、通常、そのレベルでフィルタリングするように設計されたソフトウェア(squid + squidquardなど)を設定する方がはるかに優れています。
ファイアウォールでホスト名を使用する場合、ファイアウォールはDNSに依存するようになりました。これにより、ファイアウォールに多くの問題が発生します。
ホスト名を使用していて、DNSを制御していない場合、他の誰かがIPtablesルールを効果的に制御します。間違い、エラー、またはセキュリティ上の問題が発生すると、問題が発生します。
ホスト名が上手く使われているのを目にしたのは、内部操作のためだけです。 DHCP経由でIPとホスト名が割り当てられているオフィスで働いていました。ファイアウォールはホスト名を使用して、異なるグループ間に障壁を設けました。これはすべて内部で制御されていたため、うまく機能しました。
Shorewallなどのiptablesのラッパーを使用して、ルールを管理しやすくすることができます。
他の人がすでに言ったように、iptablesルールではDNS解決可能な名前を使用しないでください。それらは不正確であり、サードパーティによって管理されており、通常は悪いこと(tm)です。また、iptablesサービスの開始時にDNSが失敗するか到達不能になる可能性があることも付け加えておきます。その場合、ルールはまったく追加されず、まったく新しいタイプの問題が発生する可能性があります(再起動後にsshアクセスが失われるなど)。
あなたができることは:
ipset
sを使用して、アドレスをグループ化し、ルールから分離しますまた、DNSによってnotで解決されるホスト名について悪いことを言った人はいません(つまり、hosts
で指定されています。本当に必要な場合は、それらを使用できます。
/ etc/hostsで手動でホスト名を手動でIPに割り当て、それをiptablesで使用します。
このように