web-dev-qa-db-ja.com

クライアントごとのIPアドレスカウンターとUDPで動作するIPTables DDoS保護

LAMPサーバーをソフトウェアで保護し、単一のIP番号(この場合はDNSクエリ)からの平均以上の要求を検出し、これらのホストをIPTables拒否チェーンに追加することを考えています。

したがって、私のBind/Centos DNSサーバーが複数のホストからのUDPパケットのストリームの形でサービス拒否を一度に処理する場合、このマシンには大量の着信パケットを処理するための10GBpsインターフェイスがあり、ipテーブルは多くのホストを処理できます。

実際にそれを行うためのツール/方法はありますか? LOGがあることを知っています。これを使用する必要がありますか、またはこれにより適したモジュールがありますか?

UDPクエリの超過率が一部のIP番号を超えている各IP番号。 1秒あたりのリクエスト数がブラックリストファイルに追加され、そのファイルに基づいてIPTablesチェーンが生成されます。

だから私の質問は、すべてのIPv4番号がRAMに収まると仮定して、特定のホストからの過剰なレートをログに記録してそれらを高パフォーマンスにする方法ですか?

主なことは、1つのホストから1時間の間にパケット/セッション/開いた接続の数を数えず、それらをブラックリストに登録することです。

Bindを使用して、単一のIPアドレスからDNSサーバーへの1時間あたり1000のリクエストを許可するポート53のソースコードの例/ IPTABLESルールを探しています。

また、許可されたホストのホワイトリストを同時に保持するため、攻撃中に最も使用されているDNSサーバーが問題ないときに全員をブラックリストに登録できます。これは、攻撃が偽装されており、すべてのリクエストが異なるIPアドレスからのものである場合にも機能します。検出されました。

現在エニーキャストサービスを作成することはできませんが、時々発生するDDoSを回避するためにDNSをある程度保護する必要があります。

更新:実際に同じことを行うCisco Guard製品がありますが、これはすべてのLinuxマシンで必要です。これは、Linuxで処理できるためです。これは、これを実行するための優れたソフトウェアの問題にすぎません。

4
Andrew Smith

ここで説明するように、mod_securityを使用して、IPからのリクエスト数に上限を設けることができます。

https://secure.jwall.org/blog/2009/07/19/1248004300834.html

とはいえ、このソリューションは完璧ではありません。アプリケーションレベルのDDoS攻撃の場合、次のような結果になる可能性があるからです。

A.)同じIP範囲(トロイの木馬ボットネット)からの法的要求の遮断

B.)大規模なマルチノード攻撃の成功。各IPは、(設定されたしきい値を下回って)少量のリクエストしか提供しないため、ブロックされません。

また、これは、スプーフィングされたIPを使用するネットワークDDoS(つまり、SYNフラッド)に対しては何もしません。この場合、DDoSが機能するために完全な双方向接続を確立する必要さえありません。

IPスプーフィングおよび の詳細 IP DDoS保護

これを停止するには、完全な2接続が確立される(ACKが受信される)までアクセスできないように、フロントゲートリバースプロキシを配置する必要があります。

3
Igal Zeifman

Snortは実際にこれを非常にうまく制御しますが、落とし穴があります。すべての攻撃で署名を追加する必要があるので、最初にそれをキャッチする必要があり、次にそれをブロックできます。

単にルールは、あるしきい値を超えると、ホストがアラートを介して報告され、これに基づいて、ルールが作成されるか、ファイアウォールが更新されるように機能します。

単に私は実際にそれを処理するためにそのような小さなワークフローを持っています:

enter image description here

たとえば、これは1つのXeonサーバーまたはEC2マシンのセットで構成できるため、DDoSを無料で受信できますが、IPTablesで処理する必要があるため、プライベートで実行されているDNSのクラウドでのDDoS保護にすぎません。セキュリティのためのスペース。

私はDNSサーバーに対する大規模な長期DDoS攻撃のDRシナリオを開発しており、これにはDNSのDDoS保護を備えたクラウドサーバーが必要なので、Bind-SDBを構成しました。これらのアドレスを偽装アドレスから問題なく強制終了できます。 、IPTablesなどを増やした後でも、ある時点でBindがクラッシュし、これには数日かかることがあるので、特定のレベルを超えるトラフィックを除外する必要があります。これには、RAM内の各IP番号ごとの本当に単純なルーターが含まれるため、これはすでに接続追跡を行っているのであれば、ロケット科学ではありません。

2
Andrew Smith