web-dev-qa-db-ja.com

pfSenseを使用してDDoS攻撃を検出して、ISPにブロックするユーザーを通知するにはどうすればよいですか?

先週の私のネットワーク DDoS攻撃に見舞われた は、インターネットへの100 MBpsリンクを完全に飽和させ、ホストしているすべてのサイトとサービスをかなりシャットダウンしました。

私は(この経験と 他の回答 から)、このようなDDoS攻撃を私の側で処理できないことを理解しています。接続を飽和させます。

しかし、これが起こったとき、私のISPは(奇妙なことに)攻撃がどこから来ているのかを知ることができませんでした。送信元を特定できる場合(例:tcpdumpを使用)、ブロックするIPアドレスを指定できるとのことです。しかし、事態が過負荷になり、tcpdumpを実行することは不可能でした。出力を表示できませんでした。

ほぼすべてのサーバーがpfSenseルーターの背後にあります。 pfSenseを使用してDDoS攻撃を検出し、ISPにブロックするユーザーを通知するにはどうすればよいですか?自分で攻撃をブロックしたくありません。アラートを取得したい、または通常よりも多くの帯域幅を使用しているIPアドレスのリストを表示したいだけです。

PfSenseルーターがSnortを実行している場合、それが何らかの形で支援に使用できる場合。

6
Josh

DDoSにはいくつかの異なるタイプがあるため、それらに関する一般的な情報は1つの特定のタイプについてのみ正しい場合があります。たとえば、DDoSが常に帯域幅を使い果たすという考えは正しくありません。行う必要があるのは、トラフィックの一部を分析し、それがサイトを破壊している理由を特定し、それを特定する方法を見つけ、トラフィックをブロックできるアクションを決定することです。

DDoSトラフィックおそらくは実際のトラフィックのようには見えませんが、違いは、必ずしも量ではありません。最近のDDoSの際、ホスティングプロバイダーは、接続IPアドレスの上位10位をブロックすることを決定しました。もちろん、これらはすべてDDoSとは関係がなく、そのうちの1つは実際にはGoogleボットでした。彼らは、IPアドレスを認識した場合を除いて、私たちのオフィスをブロックしていたでしょう。 netstatsortおよびuniqを使用して最高の接続を見つけるための標準的なアドバイスは、必ずしも良いアドバイスとは限りません。

私たちのDDoSはSYNフラッドでした。これは、検出のためにいくつかのことを意味します。

  1. これらは完全に開かれた接続ではないため、接続の測定方法によっては、これらが表示されない場合もあります。
  2. 続行するための識別情報はあまりありません。送信元IPアドレスと送信元ポートだけです。
  3. 送信元アドレスは、応答を期待していないため、なりすまされる可能性があります(ほぼ間違いなくそうなります)。
  4. 運がよければ、異常なTCPフラグセットが見つかることがあります。

各IPアドレスは1回しか表示されない可能性があるため、すでに表示されているIPアドレスをブロックしても意味がありません。実際には、10分間で100,000個の一意の送信元IPアドレス、140,000パケット/秒が確認されました。これは、平均して、各IPアドレスが毎秒約1回戻ってきたことを意味します。私たちのケースでは、IPアドレスのブロックが効果的でした。総帯域幅はわずか70Mb/sであり、送信元アドレスが偽装されているため、DDoS全体が単一のサーバーによってどこかに簡単に押し出される可能性があります。

各IPアドレスは1秒あたり約1パケットしか送信しなかったので、これは他のほとんどの正当なIPアドレスよりもかなり低くなっています。私たちのウェブサイトのホームページの多くは最大でMBのサイズです。つまり、ユーザーが単一のリクエストとして見るものに対して数千のパケットを意味します。

ほとんどの場合、送信元ポートはランダム化されていましたが、数時間の間、変更され、送信元ポートは常に1234でした。これにより、トラフィックの識別が非常に簡単になりました。

私たちの場合、問題は、1秒あたりのパケット数がファイアウォールが処理できる数よりも多かったということです。ファイアウォールに問題があったため、ファイアウォールでこれらのIPアドレスをブロックしても機能しませんでしたが、トラフィックがファイアウォールを通過していて、Webボックスに問題がある場合は、ファイアウォールでのブロックが役立ちます。送信元ポートが1234に切り替わったときに、ホスティングプロバイダーはファイアウォールの上流のトラフィックをブロックできました。

他のタイプのDDoSがあり、これらのいくつかは帯域幅を満たします。とにかく、ファイアウォールがノックアウトされました。つまり、インフラストラクチャのどの部分にもアクセスできませんでした。特定の質問については、ファイアウォールやボックスと通信するための何らかの帯域外の方法が必要です。これにより、インターネットパイプがいっぱいになった場合でも、問題を診断できるようになります。とにかく、これは一般的に良い考えです。パイプが下がる方法は他にもたくさんあるからです。データセンターを歩き回っているとき、他の人のラックにADSLモデムがたくさん見られる傾向があり、これらの一部が帯域外通信用であったとしても驚かないでしょう。

私が目にした他の2つのDDoSタイプは、DNS要求と高価なHTTP要求です。反映されたDNS要求は、DNSリゾルバーを実行する場合に特に厄介です。なぜなら、これらのIPアドレスの1つから実際の応答を受け取りたい場合に、これらのIPアドレスをブロックしたくないからです。新しいDNSリゾルバー(おそらく無料のパブリックリゾルバー)を使用するようにホストを変更し、他のすべてのDNSトラフィックをブロックします。

高価なHTTPリクエストは、CPU /メモリ/ IOPSをターゲットにする傾向があります。また、HTTPヘッダーなどの識別情報も多く含まれており、送信元アドレスを偽装することはできません。 mod_securityのようなツールは、これらのタイプのリクエストを識別してブロックする驚くべきことを実行できます。 HTTP応答を送り返すのではなく、tcp接続をドロップすることさえできます。

要するに:

  1. 帯域外アクセスを取得します。
  2. プロトコルを完全に把握します。 (TCP、IP、HTTP、使用するものは何でも。)
  3. ツールを裏返しに知ってください。 (pfSense、tcpdump、mod_securityなど)
  4. あなたのオプションを知っています。 (HTTP 403、pfSenseブロック、ISPファイアウォールブロック、ヌルルートなど)
14
Ladadadada