web-dev-qa-db-ja.com

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
RabidMutant

BINDクエリのログ形式

Alan Clegg(ISC) BIND Loggingのスライド をフォローしていましたか? 16ページにそれは間違って述べています

応答の送信先アドレス(括弧内)

BIND 9管理者リファレンスマニュアルは、実際にはqueryが送信されたアドレス、つまりIPアドレスDNSサーバー。マニュアルの構造は読みやすく、参照も簡単ではないため、関連ドキュメントへの完全なパスを次に示します。

  • リファレンスマニュアルバージョン9.14.11から、
    • 第5章BIND 9設定リファレンス、
      • 構成ファイルの文法、

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

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

DNS増幅攻撃とその緩和方法

このログエントリには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_を使用します。
2
Esa Jokinen