web-dev-qa-db-ja.com

バインドを使用してDNS転送された応答をフィルタリングする

特定のIPアドレスまたは範囲を含むDNSクエリ応答をブロックするためにどのようなオプションがありますか?

DNS再バインド攻撃 を読んでいて、どうすればそれらをブロックできるのか疑問に思っています。

攻撃者が再バインド攻撃を試みると、ブラウザをだまして、悪意のあるコンテンツが127.0.0.1または私のLAN内のアドレスから提供されたと信じ込ませようとします。これを行うには、DNSサーバーを構成して不正なアドレスを提供します(悪意のあるスクリプト内から照会された場合)。ローカルアドレスまたはLANアドレスになる転送DNSクエリへのすべての応答をブロックすることで、これを防ぎたいと思います。

ローカルネットワークにBind9ゾーンを使用し、フォワーダーを使用して外部アドレスを解決しています。

バインドボックスは、私のNATルーターの背後にあるDebianサーバーです。ファイアウォールに対してUFWを実行し、ポート53を介したTCP/UDPを許可します。

3
Frank Thomas

Bindを取得して、deny-answer-addresses機能を使用して返されたアドレスをフィルタリングすることができます。これを使用するには、/etc/bind/named.conf.options構成ファイルのoptionsセクションに以下を追加します。

deny-answer-addresses { 192.0.2.0/24; } except-from { "example.net"; };

これにより、ローカルでホストされているexample.netドメイン以外から、DNSクエリに応答して192.0.2.xアドレスが返されるのを防ぐことができます。

バインドマニュアルでは、次の方法でエイリアスをフィルタリングすることも推奨しています。

deny-answer-aliases { "example.net"; };

http://www.sput.nl/internet/dns-morons.html で見つけたフィルターの推奨セットは、私自身のテストに基づく最も一般的なDNS再バインド攻撃をカバーしているようです。

deny-answer-addresses {
    // Unconfigured
    0.0.0.0;
    // RFC 1918
    10.0.0.0/8;
    172.16.0.0/12;
    192.168.0.0/16;
    // RFC 3927
    169.254.0.0/16;
    // IPv6
    // :: to ::ffff:ffff:ffff.
    // Includes ::, ::1, IPv4-Compatible IPv6 Addresses ::/96,
    // and IPv4-mapped IPv6 addresses ::ffff:0:0/96
    ::/80;
    // IPv6 Link local
    fe80::/10;
    // RFC 6052
    64:ff9b::/96;
} except-from { "Your.Domain"; };
deny-answer-aliases { "Your.Domain"; };

127.0.0.0/8はスパムブロックリストなどのサービスでよく使用されるため、除外することはおそらくお勧めできません。

1
davefiddes