はじめに
ドメインネームサーバー(DNS)増幅攻撃は、分散型サービス拒否(DDoS)の一般的な形式であり、攻撃者は公的にアクセス可能なオープンDNSサーバーを使用して、ターゲットシステムをDNS応答トラフィックで溢れさせます。主な手法は、攻撃者がDNS名検索要求をオープンDNSサーバーに送信し、送信元アドレスがターゲットのアドレスになりすましていることです。
参照:https://www.us-cert.gov/ncas/alerts/TA13-088A
権限のあるネームサーバーでの再帰の無効化
現在インターネット上に展開されているDNSサーバーの多くは、単一ドメインの名前解決を提供することのみを目的としています。これらのシステムでは、プライベートクライアントシステムのDNS解決は別のサーバーによって提供される場合があり、権限のあるサーバーは外部クライアントへのゾーン情報のDNSソースとしてのみ機能します。これらのシステムは、クライアントに代わって他のドメインの再帰的解決をサポートする必要はなく、再帰を無効にして構成する必要があります。
Bind9
グローバルオプションに以下を追加します。
options { allow-query-cache { none; }; recursion no; };
MicrosoftDNSサーバー
Microsoft DNSコンソールツールの場合:
- DNSサーバーを右クリックし、[プロパティ]をクリックします。
- [詳細設定]タブをクリックします。
- [サーバーオプション]で、[再帰を無効にする]チェックボックスをオンにして、[OK]をクリックします。
再帰を許可されたクライアントに制限する
組織またはインターネットサービスプロバイダー内に展開されているDNSサーバーの場合、許可されたクライアントのみに代わって再帰クエリを実行するようにリゾルバーを構成する必要があります。これらの要求は通常、組織のネットワークアドレス範囲内のクライアントからのみ送信する必要があります。すべてのサーバー管理者が再帰を組織のネットワーク上のクライアントのみに制限することを強くお勧めします。
BIND9
グローバルオプションには、次のものを含めます。
acl corpnets { 192.168.1.0/24; 192.168.2.0/24; }; options { allow-query { any; }; allow-recursion { corpnets; }; };
MicrosoftDNSサーバー
現在、再帰DNS要求をMicrosoftDNSServerの特定のクライアントアドレス範囲に制限することはできません。 MicrosoftのDNSサーバーのBINDアクセス制御リストの機能を概算するには、再帰的な解決を提供するために、別のキャッシュ専用ネームサーバーを内部的に設定する必要があります。組織のネットワークの外部からのキャッシュ専用サーバーへの着信アクセスをブロックするファイアウォールルールを作成する必要があります。その場合、権限のあるネームサーバー機能は別のサーバーでホストする必要がありますが、前述のように再帰を無効にするように構成されています。
応答レート制限(RRL)
現在、BIND9のパッチのセットとして利用可能な実験的な機能があり、管理者は、ネームサーバーから1つのクライアントに送信される1秒あたりの最大応答数を制限できます。この機能は、再帰的リゾルバーのパフォーマンスに影響を与えるため、権限のあるドメインネームサーバーでのみ使用することを目的としています。最も効果的な保護を提供するには、権限のあるネームサーバーと再帰的なネームサーバーを異なるシステムで実行し、権限のあるサーバーにRRLを実装し、再帰サーバーにアクセス制御リストを実装することをお勧めします。これにより、内部の再帰的リゾルバーのパフォーマンスに影響を与えずに、単一の権限のあるサーバーからのトラフィック量が減少するため、DNS増幅攻撃の効果が低下します。
BIND9
現在、UNIXシステムでRRLをサポートするために9.8.latestおよび9.9.latestで利用可能なパッチがあります。 Red Hatは、アドバイザリRHSA-2013:0550-1で必要な変更を提供するために、Red Hat EnterpriseLinux6で更新されたパッケージを利用できるようにしました。 RRLパッチを実行するBIND9実装では、権限のあるビューのオプションブロックに次の行を含めます。
rate-limit { responses-per-second 5; window 5; };
MicrosoftDNSサーバー
このオプションは現在、MicrosoftDNSServerでは使用できません。