
DOOS 攻撃 (ほとんど効果なし) の一環として、現在、次の形式のログ メッセージが表示されます。
<DATE> client <EXTERNAL-IP>#3074 (<NAME>): query: <SAME-NAME> IN RRSIG + (<ONE-OF-MY-IPs>)
DNS ログを読むと、これは < EXTERNAL-IP > からのクエリであり、その結果は < ONE-OF-MY-IPs > に送信されるようです。これは正しいでしょうか?
私たちは古い BIND を実行しており、すぐにアップグレードする予定ですが、このクエリが実際に何を実行しているのか (多数が送信されます) を理解したいと考えていました。
編集: また、結果を別の IP に送信するためにどのように構造化できるかを知るとよいでしょう。
答え1
BINDクエリログ形式
アラン・クレッグ(ISC)のBIND ロギングに関するスライド? 16ページにはこう書かれています誤って:
応答が送信されるアドレス(括弧内)
BIND 9管理者リファレンスマニュアルには、実際にはクエリ送信されました。つまり、DNSサーバーのIPアドレスマニュアルの構造は読みやすくも参照しやすくもありませんので、関連ドキュメントへの完全なパスを以下に示します。
- リファレンスマニュアルバージョン9.14.11より、
- 第5章 BIND 9 設定リファレンス
- 設定ファイルの文法、
logging
ステートメントの定義と使用法、- フレーズ
category
、queries
- フレーズ
- 設定ファイルの文法、
- 第5章 BIND 9 設定リファレンス
より明確なフォーマットと強調は私によるものです:
- クエリ ログ エントリは、まず、クライアント オブジェクト識別子を
@0x<hexadecimal-number>
形式で報告します。- 次に、クライアントのIPアドレスとポート番号を報告し、
- クエリ名、クラス、およびタイプ。
- 次に、
- 再帰希望フラグが設定されているかどうか(
+
設定されている場合、-
設定されていない場合)、- クエリが署名されているかどうか(
S
)、- EDNSが使用されていたかどうか、EDNSバージョン番号(
E(#)
)、- TCPが使用されたかどうか(
T
)、- DO (DNSSEC Ok)が設定されているかどうか(
D
)、- CD(チェック無効)が設定されているかどうか(
C
)、- 有効なDNSサーバーCOOKIEが受信されたかどうか(
V
)、および- 有効なサーバーCOOKIEのないDNS COOKIEオプションが存在したかどうか(
K
)。
- その後、クエリが送信された宛先アドレスが報告されます。
- 最後に、クライアント クエリに CLIENT-SUBNET オプションが存在する場合は、 という形式で角括弧で囲まれます
[ECS address/source/scope]
。
つまり:
info: client @0xf00 203.0.113.88#3074 (example.com): query: example.com IN RRSIG + (192.0.2.1)
203.0.113.88#3074
クライアントのIPアドレスとポートですexample.com
クエリ名、IN
クラス、RRSIG
タイプ(RFC 4034、3)+
クライアントが再帰を要求したことを伝える192.0.2.1
クエリが送信されたDNSサーバーのIPアドレスです
DNS 増幅攻撃とその軽減方法
このログエントリにはDDoS攻撃の兆候はありませんそれ自体応答はクライアントに返されます203.0.113.88#3074
。クライアントのIPアドレスが偽装されていた場合、増幅攻撃クエリに対する応答がRRSIG
元のクエリよりもはるかに大きくなることです。
...攻撃者は、UDP DNS クエリをリフレクション リゾルバに送信し、クエリの送信元 IP アドレスをターゲット (被害者) のアドレスに設定します。リフレクション サーバーは再帰クエリを処理し、クエリの送信元と思われる IP アドレスに応答を送信します。送信元が偽装されているため、応答は実際にはターゲットに送信されます。 - -
要求されていない DNS 応答は、ターゲット マシンに到達した場合には破棄されますが、破棄されるまでに、ターゲット マシン上のネットワーク リソースと CPU 時間の一部が消費されます。
これを軽減するには、状況に応じて次の操作を行います。
- もしこれが権威あるサーバーでは、オープン再帰を許可しません。これはIANAの権威ネームサーバーの技術要件:
オープン再帰名サービスなし
権威ネーム サーバーは再帰的な名前サービスを提供してはなりません。この要件は、「RD」ビットを設定したクエリを権威の管轄外に送信することでテストされます。
もしこれが再帰的ネーム サーバーでは、このサービスの使用を許可する必要がある独自のネットワークのみにアクセスを制限します。これは、またはのいずれかを使用して実行できallow-query
ますallow-recursion
。
allow-recursion
このサーバーを介して再帰クエリを実行できるホストを指定します。 が
allow-recursion
設定されていない場合はallow-query-cache
が使用され、設定allow-query
されていない場合は が使用され、それ以外の場合はデフォルト (localnets; localhost;
) が使用されます。
- 使用できます応答率の制限:
RRL がこれに対して防御できるようにするには、
named.conf
次のrate-limit
句を編集してグローバル オプションに追加します。options { … rate-limit { responses-per-second 10; }; };
これについては、公式ドキュメントで詳しく説明されています。options
ステートメントの定義と使用法:応答率の制限. そこには
- why and how to use `slip` to truncate responses (done by default with value `2`)
- use `qps-scale` to tighten defenses during attacks.