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に送信するように構造化する方法を知っておくと便利です。
Alan Clegg(ISC) BIND Loggingのスライド をフォローしていましたか? 16ページにそれは間違って述べています:
応答の送信先アドレス(括弧内)
BIND 9管理者リファレンスマニュアルは、実際にはqueryが送信されたアドレス、つまりIPアドレスDNSサーバー。マニュアルの構造は読みやすく、参照も簡単ではないため、関連ドキュメントへの完全なパスを次に示します。
logging
ステートメントの定義と使用法、category
Phrase 、queries
より明確なフォーマットと強調は私のものです:
- クエリログエントリは、最初にクライアントオブジェクト識別子を_
@0x<hexadecimal-number>
_形式で報告します。- 次に、クライアントのIPアドレスとポート番号を報告します。
- クエリ名、クラス、タイプ。
- 次に、それを報告します
- recursion Desiredフラグが設定されているかどうか(設定されている場合は_
+
_、設定されていない場合は_-
_)、- クエリが署名されたかどうか(
S
)、- eDNSがEDNSバージョン番号とともに使用されていたかどうか(
E(#)
)、- TCPが使用されたかどうか(
T
)、- dO(DNSSEC Ok)が設定されているかどうか(
D
)、- cD(Checking Disabled)が設定されているかどうか(
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、 )+
_は、クライアントに再帰を要求したことを伝えます192.0.2.1
_は、クエリの送信先のDNSサーバーのIPアドレスですこのログエントリにはDDoS攻撃の兆候はありませんper se、応答はクライアント_203.0.113.88#3074
_に返送されます。クライアントのIPアドレスが偽装されている場合、 増幅攻撃 は、元のクエリよりもはるかに大きいRRSIG
クエリに対する応答です。
...攻撃者は、UDP DNSクエリを反映リゾルバに送信し、クエリのソースIPアドレスをターゲット(犠牲者)のアドレスに設定します。リフレクティブサーバーは再帰クエリを処理し、応答をクエリの発信元と思われるIPアドレス。偽のOriginがあるため、応答は実際にはターゲットに送信されます。 --
要求されていないDNS応答は、ターゲットマシンに到達した場合、または到達したときに破棄されますが、到達するまでに、ターゲットマシンのネットワークリソースとCPU時間の一部を消費しています。
状況に応じて、これを軽減するには:
これがauthoritativeサーバーの場合、オープン再帰を許可しないでください。これは、IANAの直接的なものです 信頼できるネームサーバーの技術要件 :
開いている再帰的なネームサービスはありません
権威ネームサーバーは、再帰的なネームサービスを提供してはなりません。この要件は、「RD」ビットが設定された当局の管轄外にクエリを送信することによってテストされます。
これがrecursiveネームサーバーである場合は、このサービスの使用を許可する必要がある独自のネットワークのみにアクセスを制限します。これは、_allow-query
_または_allow-recursion
_を使用して実行できます。
_
allow-recursion
_このサーバーを介して再帰クエリを実行できるホストを指定します。 _
allow-recursion
_が設定されていない場合、設定されている場合は_allow-query-cache
_が使用され、設定されていない場合は_allow-query
_が使用されます。それ以外の場合は、デフォルトの(_localnets; localhost;
_)が使用されます。
Response Rate Limiting を使用できます。
RRLがこれを防御できるようにするには、_
named.conf
_を編集し、次の_rate-limit
_句をグローバルオプションに追加します。_options { … rate-limit { responses-per-second 10; }; };
_
これは、公式ドキュメントのoptions
ステートメントの定義と使用法: Response Rate Limiting でさらに詳しく説明されています。そこで見つけることができます
slip
を使用して応答を切り捨てる理由と方法(デフォルトでは、値_2
_で行われます)qps-scale
_を使用します。