iptablesを保守しやすくする


13

ホワイトリストに登録されているいくつかのサイトを除き、私のネットワークは完全にロックされています。これはすべて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アドレス(/ maskを使用)、またはプレーンIPアドレスのいずれかです。

しかし、私が心配しているのは、「解決する名前を指定する... DNSは本当に悪い考えです」という部分です。なぜこれは悪い考えですか?すべてが遅くなるだけですか?

iptablesルールでホスト名を実際に使用すべきではない場合、ファイアウォールを簡素化するにはどうすればよいですか?


security.stackexchange.comでより良い答えが得られます
Jim B

この質問がそのサイトに属していることは正しいかもしれませんが、受け入れられた答えに問題がある場合は、その理由を説明してください。
デビッドケネディ

ネットワークのロックダウンとその方法について知りたい場合は、セキュリティについて尋ねてください。IPtablesを使用するのではなく、iptablesを使用する場合は、これが場所です。
ジムB

回答:


27
  • DNS名は、パケットがチェックされるときではなく、ルールが追加されるときに解決されます。これは、ほとんどの人の期待に反します。
    • ルールは、変更されたDNS結果を反映するために更新されません。追加されたときに解決され、それだけです。定期的にルールをリロードする必要があります。そうしないと、一部のサイトが破損する可能性があります。
  • 基本的に、ファイアウォールルールの制御を外部エンティティに委任しているという点で、セキュリティ上の問題が少しあります。
    • 親DNSサーバーが危険にさらされ、誤ったデータを返した場合はどうなりますか。

HTTPアクセスをブロックすることが目的の場合、通常、そのレベルでフィルタリングするように設計されたソフトウェア(squid + squidquardなど)をセットアップする方がはるかに優れています。


1)これがどのように問題になるかわかります-google.comは今日1.2.3.4に解決できますが、明日そのアドレスは無効です。ファイアウォールを再起動するだけでこれを処理できますか?2)DNSサーバーがよく知られている場合、GoogleのDNSやOpenDNSなど、まだセキュリティの問題ですか?
デビッドケネディ

これを答えとしてマークしたのは、iptablesルールでホスト名を使用しない理由を説明し、ファイアウォールを簡素化するための一連のアクションを提供するためです。
デビッドケネディ

Squidのサポートを追加したいと思います。私はオフィスにSquidを実装しました。一度セットアップすると、ホストをホワイトリストに登録するのは非常に簡単です(ブラックリストに使用しています)。あなたの手には記念碑的な仕事があるようです。たとえば、Googleのホワイトリストへの登録を開始する場所さえ知りません。www.google.comは、5つのIPのみに解決します。これは、ssl.gstatic.com、および認証に関与する他のすべてのホスト、G +など、それぞれ複数のIPに解決される可能性があるためです。
s.co.tt

記念碑はそれを置く良い方法です。しかし、私は単にGoogleを例として使用していました。私のfirwallの基本的な概要は次のようになります。パケットの宛先がホワイトリストに登録されている場合は、受け入れます。それ以外の場合は、プロキシサーバー経由で送信します。
デビッドケネディ

また、負荷分散にDNSを使用するシステムの問題もあります。このようなドメインを連続して2回検索すると、同じ結果が得られない場合があります。そのため、1回の検索では、ドメインが解決できる可能性のあるIPアドレスの完全なリストは得られません。
cdhowie

9

ファイアウォールでホスト名を使用している場合、ファイアウォールはDNSに依存しています。これにより、ファイアウォールがいくつかの問題にさらされます。

  • 大量のDNSルックアップはレイテンシを引き起こす可能性があります。
  • DNSの変更はすぐには反映されません。そのため、ファイアウォールはキャッシュされたIPを使用している可能性があります。
  • DNSは、なりすまし、ハイジャック、ハッキングされる可能性があります。
  • DNSは失敗する可能性があります-ファイアウォールが失敗することを意味します。
  • ファイアウォールルールは、サードパーティによって制御されるようになりました。

ホスト名を使用し、DNSを制御しない場合、他の誰かがIPtablesルールを効果的に制御します。間違い、エラー、またはセキュリティ上の問題は、あなたにとって問題になります。

ホスト名がよく使われているのを見てきたのは、内部操作のためだけです。私は、DHCPを介してIPとホスト名が割り当てられているオフィスで働いてきました。ファイアウォールはホスト名を使用して、異なるグループ間にバリアを配置しました。これはすべて内部で制御されていたため、うまく機能しました。


2
これは良い答えですが、ファイアウォールを簡素化するのに役立つ部分がありません。
デビッドケネディ

3

shorewallのようなiptablesのラッパーを使用して、ルールを管理しやすくすることができます。


これは良いアイデアですが、iptablesルールでホスト名を使用しない理由を教えてくれませんでした。
デビッドケネディ

Shorewallについてはあまり知りませんが、davidkennedy85は、Shorewall config内で許可したいサービスのすべてのIPアドレスのリストを維持する必要があるという印象を受けています。netfilter [&など]の管理が少し簡単になるかもしれませんが、IPの膨大なリストである彼の中心的な問題は解決しません。
s.co.tt

1

他の人がすでに言ったように、iptablesルールではDNS解決可能な名前を使用しないでください。それらは不正確であり、サードパーティによって管理されており、通常は悪いこと(tm)です。また、iptablesサービスの開始時にDNSに障害が発生したり、到達できない可能性があることも追加します。その場合、ルールはまったく追加されず、まったく新しいタイプの問題が発生する可能性があります(再起動後にsshアクセスが失われるなど)。

できることは:

  1. カスタムチェーンを使用してルールを論理的に分離する
  2. ipsetsを使用してアドレスをグループ化し、ルールから分離します
  3. ルールにコメントを追加する

また、DNSによって解決されないホスト名について悪いことを言う人はいません(つまり、で指定されていhostsます。本当に必要な場合は使用できます)。


1

/ etc / hostsでホスト名を手動でipに割り当て、それをiptablesで使用します。

このように

  1. ファイアウォールルールを外部エンティティにオフロードしないでください
  2. 簡単にメンテナンス可能なiptablesがあります
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.