DDoS (分散型サービス拒否攻撃) は通常、サーバー レベルでブロックされますよね?
PHPレベルでそれをブロックする方法、または少なくともそれを減らす方法はありますか?
そうでない場合、DDoS 攻撃を阻止する最も速くて一般的な方法は何ですか?
DDoS (分散型サービス拒否攻撃) は通常、サーバー レベルでブロックされますよね?
PHPレベルでそれをブロックする方法、または少なくともそれを減らす方法はありますか?
そうでない場合、DDoS 攻撃を阻止する最も速くて一般的な方法は何ですか?
DDOS は、次のようなデータセンターの主要システムを圧倒する一連の攻撃です。
DDOS 防御の構築を開始する前に、最悪の場合のバリュー アット リスクを検討してください。小規模なコミュニティ向けの重要でなく無料で使用できるサービスの場合、危険にさらされる価値の合計はピーナッツになる可能性があります。確立された数十億ドル規模のビジネス向けの、有料で一般向けのミッションクリティカルなシステムの場合、その価値は会社の価値になる可能性があります。この後者の場合、StackExchange を使用するべきではありません :) とにかく、DDOS から防御するには、防御の詳細なアプローチが必要です。
すべてのシステムとソフトウェア パッケージを最新のセキュリティ パッチで最新の状態に保ちます。
適切なファイアウォールまたはセキュリティ アプライアンスが設定されていることを確認し、資格のあるセキュリティ エキスパートによって定期的に確認してください。ファイアウォールの強力なルールは、多くの単純な攻撃に対する優れた防御になります。また、オープン サービスごとに使用可能な帯域幅を管理できることも便利です。
適切なネットワーク監視ツールを用意してください。これは、次のことを理解するのに役立ちます。
攻撃は、単に正規の Web サイト サービスを頻繁に使用している可能性があります (たとえば、クエリを実行している「正規の」URI にアクセスしたり、データを挿入/更新/削除したりするなど) - 数千から数百万の異なる IP アドレスから送信される数千または数百万の要求が、サイトをそのサイトにもたらします。ひざ。あるいは、一部のサービスは実行コストが非常に高く、少数のリクエストだけで DOS が発生する可能性があります。したがって、何が起こっているかをアプリケーションレベルで適切に監視する必要があります。
アプリケーションにおける適切な制約と制限。たとえば、次のようにします。
最後になりましたが、重要なことですが、DOS 対応計画文書を作成し、これをすべての関係者 (ビジネス、管理、ソフトウェア開発チーム、IT チーム、およびセキュリティ専門家) によって内部的にレビューしてもらいます。文書を作成するプロセスにより、あなたとあなたのチームは問題を熟考し、休日の午前 3 時に最悪の事態が発生した場合に備えることができます。ドキュメントは(とりわけ)以下をカバーする必要があります。
したがって、前置きはさておき、ここにいくつかの具体的な答えがあります。
通常、DDOS はサーバー レベルでブロックされますよね?
そうではありません。最悪の DDOS 攻撃のほとんどは低レベル (IP パケット レベル) であり、ルーティング ルール、ファイアウォール、および DDOS 攻撃を処理するために開発されたセキュリティ デバイスによって処理されます。
PHPレベルでそれをブロックする方法、または少なくともそれを減らす方法はありますか?
一部の DDOS 攻撃は、有効な URI と HTTP 要求を送信して、アプリケーション自体を対象としています。リクエストのレートが上がると、サーバーが苦戦し始め、SLA が停止します。この場合、PHP レベルでできることがいくつかあります。
アプリケーション レベルの監視: 各サービス/ページが、何が起こっているかを確認できる方法でリクエストをログに記録するようにします (これにより、攻撃を軽減するためのアクションを実行できます)。いくつかのアイデア:
ログ ツール (または Excel など) に簡単に読み込めるログ形式を用意し、コマンドライン ツール (grep、sed、awk) で解析します。DDOS は何百万行ものログを生成することに注意してください。何が起こっているのかを理解するために、ログを (特に URI、時間、IP、およびユーザーに関して) 細かく分割する必要があり、次のようなデータを生成する必要があります。
各リクエストの IP アドレスをログに記録します。DNS を逆にしないでください - 皮肉なことに、これを行うコストにより、攻撃者にとって DDOS がより簡単になります
合理的なレート制限: 特定の IP またはユーザーが特定の期間に行うことができるリクエストの数に制限を実装する場合があります。正当な顧客は、1 秒あたり 10 を超えるリクエストを行うことができますか? 匿名ユーザーは高価なレポートにアクセスできますか?
匿名アクセスの CAPTCHA: すべての匿名要求に CAPTCHA を実装して、ユーザーが DDOS ボットではなく個人であることを確認します。
DDOS 攻撃を阻止する最も速くて一般的な方法は何ですか?
最も速いのは恐喝に屈することですが、これは望ましくないかもしれません。
それ以外の場合、最初に行うことは、ホスティングおよび/または CDN プロバイダーに連絡して、彼らと協力することです (彼らがあなたにまだ連絡をとっていない場合は、何が起こっているのかを尋ねます...)。DDOS が発生すると、ホスティング プロバイダーの他の顧客に付随的に影響を与える可能性が高く、プロバイダーは、リソースを保護するためだけにサイトをシャットダウンするというかなりのプレッシャーにさらされる可能性があります。ログ (ありとあらゆる情報) をプロバイダーと共有する準備をしてください。これらのログをネットワーク モニターと組み合わせることで、攻撃をブロック/軽減するのに十分な情報が得られる場合があります。
DDOS を予期している場合は、ホスティング プロバイダーが提供できる保護レベルを確認することをお勧めします。DDOS の経験とそれを軽減するためのツールが必要です。ツール、プロセス、およびエスカレーション手順を理解してください。また、ホスティング プロバイダーがアップストリーム プロバイダーからどのようなサポートを受けているかについても尋ねてください。これらのサービスは、初期費用または月額費用が高くなる可能性がありますが、これは保険として扱ってください。
攻撃を受けている間は、ログを取得してマイニングする必要があります。攻撃のパターンを調べてみてください。匿名アクセスをオフにして、攻撃を受けているサービスを調整することを検討する必要があります (つまり、サービスに対するアプリケーションのレート制限を下げます)。
運が良ければ、顧客ベースが小さく固定されている場合は、有効な顧客の IP アドレスを特定できる可能性があります。このような場合は、しばらくの間、ホワイトリスト アプローチに切り替えることができます。新しいIPからアクセスする必要がある場合に電話できるように、すべての顧客がこれが起こっていることを知っていることを確認してください:)
Doug McCleanは、 https ://stackoverflow.com/a/1029613/1395668 で素晴らしいアドバイスを提供しています。
質問のPHP部分によると;
私はこれを PHP に依存していませんが、実装することはできますが、これらすべての可能性またはそれ以上を考慮する必要があります。
単純な疑似;
<?php
// Assuming session is already started
$uri = md5($_SERVER['REQUEST_URI']);
$exp = 3; // 3 seconds
$hash = $uri .'|'. time();
if (!isset($_SESSION['ddos'])) {
$_SESSION['ddos'] = $hash;
}
list($_uri, $_exp) = explode('|', $_SESSION['ddos']);
if ($_uri == $uri && time() - $_exp < $exp) {
header('HTTP/1.1 503 Service Unavailable');
// die('Easy!');
die;
}
// Save last request
$_SESSION['ddos'] = $hash;
?>
リクエスト チェーンで php レベルが遅すぎます。
オープン ソース アプライアンスの背後に Apache サーバーを配置することは、適切なオプションとなる場合があります。
http://tengine.taobao.org/には、いくつかのドキュメントと、DDOS 防止を目的としたより多くのモジュールのソース コードがあります。これは nginx の拡張であるため、Apache インスタンスのリバース プロキシとして簡単に設定できます。
参照: http://blog.zhuzhaoyuan.com/2012/01/a-mechanism-to-help-write-web-application-firewalls-for-nginx/衝突と戦う方法については、DoS 攻撃があります。
完全に忘れていた、http: //www.cloudflare.comはトップの無料 Web アプリケーション ファイアウォールの 1 つです。無料プランと有料プランがあり、DDOS からお尻を救うことができます。キャッシュ機能のためだけに、多くの高トラフィック サイトで使用しています。 . やばいです!
これは PHP レベルでは実行できません。DDOS は、Web サーバーに大量のリクエストを送信する一種の攻撃です。ウェブサーバーは、PHP スクリプトを呼び出す前にリクエストを拒否します。
Apache を使用している場合は、Apache からのヒントを以下に示します: http://httpd.apache.org/docs/trunk/misc/security_tips.html
DDoS は、非常に高価な専用のネットワーク アプライアンスによって最適に処理されます。ホストは、パフォーマンスが比較的低い、状態が枯渇している、帯域幅が限られているなどの影響を受けやすいため、一般的に DDoS 保護を行うのが得意ではありません。DDoS 軽減ハードウェアにアクセスできない場合は、iptables、apache mod、および同様のサービスを使用すると、状況によっては役立つことがあります。または DDoS 軽減サービスですが、これは理想とはほど遠いものであり、依然として攻撃のリスクにさらされています。
ddos/dos 用に apache で使用できるプラグインがあります。ここから始めましょう http://www.debianadmin.com/how-to-protect-apache-against-dosddos-or-brute-force-attacks.html
LEMP を使用している場合は、ここで確認できます。 http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
これらは、安価な出発点として適しています。
PHP ベースの保護は使用しないでください。これは恐ろしく、ほとんど影響を与えません。たとえば Nginx で limit_req モジュール ( http://ngx_http_limit_req_module.html ) を使用して、リクエストのレートを制限するように Web サーバーを構成します。
ただし、層 4 と戦うために CloudFlare を使用することをお勧めしますが、支払う気がない限り層 7 ベースの攻撃は避けてください。