web-dev-qa-db-ja.com

BIND9をDNSファイアウォールとして設定する

OpenDNSでは、フィルタリングをオンにするためにプロパッケージに1つを置く必要があり、予算が限られているため、無料のDNSフィルタリングが必要です。

バインドでドメインをブロックする方法に関するこのリンク を読んだ後、必要なカテゴリのSquidGuardブラックリストとドメインを1つの大きなリストにまとめました。次に、それを this python script にフィードして、約200万のゾーンを含むファイルを生成しました。

named-checkconfはそれを適切に解析しますが、namedの再ロードには約10分かかり、その後何も解決されず、サーバーの速度が低下してクロールします。 includeを削除すると、namedが再び正しく機能するようになります。

DNSファイアウォールとして効率的に機能するようにBIND9を設定する適切な方法は何ですか?問題全体を解決する特定のIPアドレスに解決するドメインもブロックできる場合。

権限のない権限で、単にキャッシュサーバーとしてbindを実行しています。

6
timkofu

それは現在の技術では時代遅れです。 BINDの世界では、最近、レスポンスポリシーゾーン(RPZ)はDNSファイアウォールと同義です。

RPZゾーンは通常のDNSゾーンですが、サーバーによるポリシーアクションの定義に使用されます。これは実際のDNSドメインではないため、ゾーンの「サフィックス」は重要ではありません。これは、特別にフォーマットされた命令のリストを含むゾーンファイルです。

options {
          ...
          response-policy { zone "whatever.anytld";} };
};

レコードの左側は一致ルールを定義し、レコードタイプと右側は実行するアクションを定義します。次の例の左側にある末尾のドットの不在に注意してください。

$Origin whatever.anytld.

; destination IP rewrite
baddomain1.example.com       A     198.51.100.1
*.baddomain1.example.com     A     198.51.100.1

; send them to an existing A record
baddomain2.example.com       CNAME mywebserver.example.org.
*.baddoman2.example.com      CNAME mywebserver.example.org.

; NXDOMAIN it
baddomain3.example.com       CNAME .
*.baddomain3.example.com     CNAME .

; reply with NODATA
baddomain4.example.com       CNAME *.
*.baddomain4.example.com     CNAME *.

等々。これにより、無害な共有ホスティングサイトに影響を与える可能性のある、より強引な対策を含め、かなりのことができます。

RPZが行うことはたくさんありますが、これは完全なドキュメントとして機能することを意図していません。推奨される読み物には、BINDのバージョンのBIND ARM(この回答の下部)の第6章、およびオンラインZytraxブックの 第9章 があります。

時間を節約するための私の個人的な経験からのクリフノート:

  • ゾーン転送を使用して、RPZゾーンをwith IXFRに移動します。有効にするixfr-from-differencesこれを容易にするためにマスターで。 BIND 9.9以降を使用してNOTIFYベースのDoS試行から保護する場合は、キーベースのゾーン転送を使用します。
  • 管理IPのみがRPZゾーンを照会できるようにします。
  • BIND 9.10を実行している場合を除き、複数のRPZファイルを使用しないでください。そのバージョンまで、複数のゾーンでパフォーマンスの問題がありました。
  • RPZは、2014年に普及したNSレコードベースの攻撃を阻止するために使用できません。これは、デフォルトでRPZが権限のあるルックアップを試みるように設計されており、上流のネームサーバーソースへのレコードのハイジャックを「裏切る」ことはないためです。
    • qname-wait-recurse noはBIND 9.10で追加され、この目的でRPZを使用できる場合があります。私はそれを実験するつもりでした。
    • たとえ qname-wait-recurse no機能しますが、追加の構成なしでドメインをオフラインで攻撃するために使用できるレコードタイプが必要です。これについてPaul Vixieと話しましたが、RPZ形式仕様の将来のバージョンで見られる可能性があります。
  • NXDOMAINおよびNODATAアクションは、返信のAUTHORITYセクションにあるRPZゾーンの名前を裏切ることになります。人々がその名前を知ると仮定します。

BIND ARM第6章のリンク:

7
Andrew B