web-dev-qa-db-ja.com

DNSサーバーに対する増幅されたリフレクション攻撃

用語 Amplified reflected attackは私にとって初めてのことであり、いくつか質問があります。

それは主にDNSサーバーで発生すると聞きました-それは本当ですか?
どのようにそれから保護しますか?
サーバーがそのような攻撃に使用できるかどうかをどうやって知るのですか?それは構成の問題ですか?

11
Mike Janson

まず、この種の攻撃は、タイトルが示すように(主に)DNS自体を標的にしていません。もちろん、DNSサーバーに追加の負荷がかかりますが、主な目的は他の誰かをDDoSすることです。サーバー構成が悪いと悪化する可能性がありますが、最終的にこの問題はDNSとUDPの設計、そして実際にはステートレス通信プロトコルに固有のものです。

基本的には次のように機能します。攻撃者は通常の(DNS)クエリを(DNS)サーバーに送信します。これらのクエリは、ターゲットシステムから発信されたように見えるように偽造されています。 DNSサーバーはクエリに応答し、その応答を申し立てられたオリジン(被害者)に送り返します。これがReflection攻撃と呼ばれる理由です。

これが可能なのは、ハガキの送信者アドレスを信頼できるのと同じくらい、ステートレス通信の送信元(DNS over UDPとして)を確認できるためです。サーバーには、クエリが正当なものなのか、そのような攻撃の一部なのかを判断する方法がありません。 DNSは、ここで最も人気のあるプロトコルです。DNSには多くのサーバーがあり、DNSを(誤)使用するために多くの技術的洞察や特別な機器を必要としないためです。

事態をさらに悪化させる(そしてすべての攻撃効率を高める)には、増幅の部分を見てください。攻撃者のトラフィックのサイズが結果のトラフィックと同じであれば、それほど害はありません。攻撃者にとっての唯一の利点は、攻撃者のアドレスがDNSサーバーの背後に隠されることです。彼は送信者アドレスを直接偽造する可能性があり、DNSを介して再ルーティングする必要はまったくありません。しかし、DNSは答えます。これが、DNSがここで非常に人気があるもう1つのポイントであり、質問よりもa lot大きくなる可能性があります。使用される正確なクエリに応じてさまざまな数を見つけることができますが、サーバーが実行するのに十分な友好的である場合は1:60まで上がる可能性があります再帰クエリ。したがって、攻撃者は、大量の悪意のあるトラフィックを生成するために、自分の制御下にある多くのマシンを必要としません。

パブリックインターネット上で数百、数千の「オープン」DNSサーバーを簡単に見つけることができるため、攻撃者が知っているオープンDNSサーバーごとに、ターゲットに対して60倍に増幅されたクエリを反映する場合、攻撃者が行う必要のある作業がどれだけ少ないかを簡単に計算できます。冒頭で申し上げましたように、これに対抗する良い方法はありません。当然のことながら、多くのDNSサーバーは、構成の誤りのために、開かれるべきではないものの、すべての人に開かれています。しかし、まさにそれが彼らの目的であるため、開かなければならないオープンサーバーはたくさんあります。

リクエストが攻撃の一部であるかどうかはわかりませんが、唯一の選択肢はサーバーを実行しないことです。レート制限やその他のおもちゃをいじることはできますが、これを完全に取り除くことはできません。楽しみのためにDNSを提供している場合は、リクエストの送信元IPをブラックリストに登録できます。しかし、あなたがより大規模であるならば、これは犠牲者にさらにもっと損害を与えるでしょう。 DNSサーバーに表示されるのは、被害者のアドレスだけであることを忘れないでください。あなたの会社があなたのプロバイダーのDNSを介して攻撃を受けており、あなたのプロバイダーがあなたの会社のDNSサービスを停止することを決定したと想像してください。攻撃者は、これをサービス拒否に関する数億のボーナスポイントとして獲得する可能性があります。

とにかく、これらの攻撃は昼夜を問わず発生し、インターネットの「バックグラウンドノイズ」と見なされます。パブリック(再帰的)DNSサーバーを設定した場合、ランダムな攻撃に参加するまでにそれほど時間はかかりません。もちろん、大規模なインフラストラクチャ(DNSルートサーバーなど)を悪用して増幅すると、事態が悪化することもありますが、その場合は、攻撃が「通常の」レベルに下がるまで、担当者が事前対策を講じます。


これまでの教えについて。あなたの質問に答えるために、ついに:

サーバーが制限なしにクエリに応答すると、サーバーが脆弱であることがわかります。期間。再帰クエリを提供している場合、サーバーは攻撃者に対して前述の1:60の比率を生成できます。非再帰的にのみ提供している場合、それほど悪くはありませんが、それでも...

そう...

  • publicDNSサーバーを本当に実行する必要があることを確認してください
  • 必要に応じて、BINDのallow-recursionおよびallow-queryディレクティブを確認してください。
  • dNSサーバーが自分のゾーンに対して権限があるの場合、再帰はまったく必要ありません。allow-recursionを「none;」に設定してください。
  • 他のドメインに対してresolverを実行する場合は、クエリと再帰クエリの許可されるユーザーを制限します。上記のディレクティブでIPアドレス、ネットワーク、またはアクセスリストを定義できます
  • レート制限BINDだけでなくシステムレベルでもDNSトラフィックについて考えてみてください。非常に簡単な例として、これらのiptablesルールでは、各IPアドレスから1分あたり10を超えるクエリを許可しません。

iptables -A INPUT -p udp --dport 53 --set --name dnslimit
iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 11 --name dnslimit -j DROP

さて、これらの点を念頭に置いて、あなたは行ってもいいはずです。サーバーには悪意のあるトラフィックが時々存在する可能性がありますが、ぐっすり眠るほどの量ではありません。

22
Karma Fusebox