DNS DDOS攻撃 - ログを理解したい

DNS DDOS攻撃 - ログを理解したい

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 設定リファレンス
      • 設定ファイルの文法、

より明確なフォーマットと強調は私によるものです:

  1. クエリ ログ エントリは、まず、クライアント オブジェクト識別子を@0x<hexadecimal-number>形式で報告します。
  2. 次に、クライアントのIPアドレスとポート番号を報告し、
  3. クエリ名、クラス、およびタイプ。
  4. 次に、
  • 再帰希望フラグが設定されているかどうか(+設定されている場合、-設定されていない場合)、
  • クエリが署名されているかどうか(S)、
  • EDNSが使用されていたかどうか、EDNSバージョン番号(E(#))、
  • TCPが使用されたかどうか(T)、
  • DO (DNSSEC Ok)が設定されているかどうか(D)、
  • CD(チェック無効)が設定されているかどうか(C)、
  • 有効なDNSサーバーCOOKIEが受信されたかどうか(V)、および
  • 有効なサーバーCOOKIEのないDNS COOKIEオプションが存在したかどうか(K)。
  1. その後、クエリが送信された宛先アドレスが報告されます。
  2. 最後に、クライアント クエリに 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 時間の一部が消費されます。

これを軽減するには、状況に応じて次の操作を行います。

オープン再帰名サービスなし

権威ネーム サーバーは再帰的な名前サービスを提供してはなりません。この要件は、「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.

関連情報