web-dev-qa-db-ja.com

httpフラッドを軽減しますか?

私はSYNフラッドなどに対処するためにddos保護プロキシを用意しています。しかし、httpの洪水はまだ続いています。何らかの理由で、彼らのddosプロキシはフラッドをブロックしていません。したがって、ボックスに接続するipは約500であり、最大で約20kの接続になります。これにより、phpはボックスをオーバーロードする1kプロセスを生成します。このhttpフラッドをどのように軽減できますか?サイトにアクセスするためにCookieを必要とするhtaccessファイルを設定することは機能すると思いましたが、rewritecondがphpを呼び出しているため、ボックスが過負荷になっているようです。

どうすればこれを軽減できますか?

2
Will

Cookieベースのアプローチは順調に進んでいますが、最初のチェックは、Apache/PHPスレッドよりもはるかに安価なプロセスを使用して実行する必要があります。 Webホストの前にnginxプロキシを配置して、Cookieのリダイレクトと設定を強制することをお勧めします。適切なCookieを含むリクエストだけが、PHPホストに送信されることさえ許可されます。

そして、プロキシを設定している限り、この比較的新しいボット検出ソフトウェアは非常に印象的です。

http://www.ecl-labs.org/2011/03/17/roboo-http-mitigator.html

また、そのページからリンクされているDDoSプレゼンテーションを強くお勧めします。

http://www.ecl-labs.org/papers/yg-ab-building_floodgates.pptx

全体的な反DDoSの概念をカバーし、Robooを作成した理由を説明します。

2
Insyte

あなたのような状況では、サーバーへの接続をレート制限またはIP制限することです(DDoS保護プロキシで-これを実行できる価値がある場合は-またはサーバーで)利用可能なファイアウォールソフトウェア(pf、iptablesなど)を使用します)。

あなたの目標は、攻撃が別のファイアウォールまたはDDoS保護プロキシ(計算上無料)を使用してサーバーに到達する前に、またはサーバー上のTCPハンドシェイクプロセス中など)できるだけ早く攻撃を停止することです。 (計算上安価)Webサーバー/アプリケーションレイヤーで処理しようとするのではなく(計算上高価:TCP接続全体をセットアップし、Webサーバーとの通信を開始してから気付く必要がありました)この特定の要求に応答したくない)。

3
voretaq7

Htaccessルールでこの攻撃を軽減することができました

RewriteEngine On

SetEnvIf User-Agent ".*MSIE 6.0; Windows NT 5.1; SV1.*" dontlog
RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.0; Windows NT 5.1; SV1.$" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.0; Windows NT 5.1;1813.$" [OR]
RewriteCond %{HTTP_USER_AGENT} "^(?:User-Agent: )?Mozilla/4.0 \(compatible; MSIE 6.0; Windows NT 5.1;(?: SV1|1813)\)$" [OR] 
RewriteCond %{HTTP_USER_AGENT} "MSIE 6.0; Windows NT 5.1; SV1"
RewriteRule ^(.*)$ http://127.0.0.1/$1 [R=302,L]

およびまたはiptables

iptables -I INPUT 1 -p tcp --dport 80 -m string --string "MSIE 6.0; Windows NT 5.1; SV1" --algo bm -j DROP

iptablesに複数のポートを追加したい場合があります

0
Benn

Voretakの返信に、iptablesで「LIMIT」ターゲットを試してみることをお勧めします。

取得元: http://www.cyberciti.biz/faq/iptables-connection-limits-howto/

例:IP /ホストごとにSSH接続を制限するクライアントごとに3つのssg接続のみを許可するホスト:

/sbin/iptables  -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
# save the changes see iptables-save man page, the following is redhat and friends
# specific command
service iptables save
0
niglesias