2013-02-05 27 views
13

私はasp.net MVC Webアプリケーションを開発しており、クライアントは可能な限りサービス拒否攻撃に耐えられるように最善を尽くすよう要求しています。彼らはサイトが遅く/サイトをダウンさせる意図で悪質な大量の要求を受け取るかもしれないと心配しています。悪意のあるリクエスト - DOS攻撃を防止する

私は実際に実際のWebアプリケーションの責任から外れているとして製品の所有者とこれについて説明しました。私はそれがトラフィックを監視し、悪意のある要求に応答するためにホスティング/ネットワークチームの責任になると考えています。

ただし、アプリケーションにはいくつかの予防措置が組み込まれている必要があります。彼らはCAPTCHAを実装したくはありません。

特定の時間枠内でセッションに対して要求できる数を制限することが推奨されています。私はこのようなことをやろうとしていました。 Best way to implement request throttling in ASP.NET MVC?しかし、クライアントIPではなくセッションIDを使用すると、企業のファイアウォールの背後から来るユーザに問題が発生します。そのIPはすべて同じになります。

サイトの特定の領域を無効にする機能を追加することも提案しています。管理者ユーザーがデータベース集約領域を無効にできることを示唆しています.....しかし、これはUIを介して制御され、 DOS攻撃では、管理者のユーザーはそれにはアクセスできません。

私の質問は、本当にこれを行う価値がありますか?確かに実際のDOS攻撃ははるかに進んでいますか?

他に提案がありますか?

+0

興味深いことに、ほんの数分前にこれを実装するためのソリューションを探していました。 –

+4

DoS攻撃は無防備であり、軽減するために何かができる場合は、通常アプリケーションレベルでは行われません。 – Icarus

+6

私はエキスパートではありませんが、サーバーをDOS攻撃したい場合は、最初に課金されたpingを送信しようとします。私は、DOS攻撃を防ぐことはウェブサイト側ではなく、ウェブサイトを保護するファイアウォールで処理するべきだとは思わない。私たちはSql Injection、Cross Site Scriptingなどを十分に持っています... – tschmit007

答えて

8

サービス拒否攻撃は、他の人々のサービスの安定性に影響を与える可能性があります。この場合、ネットワークDoSについて話していますが、既に述べたように、これは一般にアプリケーションレベルでは起こりません。

この種の攻撃は、理想的にはネットワークレベルで緩和されます。基本的な保護からハイスループットの軽減に至るまで、Cisco ASA 5500 seriesのような専用のファイアウォールが組み込まれています。これらはきわめてスマートなボックスで、取得しているスループットの正しいモデルが使用されている限り、これらのタイプの攻撃をブロックする際の有効性を保証することができます。

もちろん、これを実行するハードウェアファイアウォールにアクセスできない場合は、これらの種類の攻撃からの防御を支援するためにいくつかのストップギャップ対策があります。 これらのどれも専用のファイアウォールの半分ほど有効ではないことに注意してください。

IISモジュールDynamic IP Restrictionsを使用すると、最大同時要求数の制限を定義できます。しかし、実際には、これは、スクリプトや画像のダウンロードなどの同時処理のスループットが高いブラウザからの正当なリクエストをブロックする可能性があるという欠点があります。

最後に、あなたがそれを行うことができ何かが本当に粗製のですが、また、本当に効果、私は以前に書かれたもののようなものです。基本的には、同じIPからの重複要求のログファイルを監視する小さなツールでした。だから1.2.3.4から2秒間で/Homeに10件のリクエストがあるとします。これが検出された場合、このIPからの要求をブロックするためにファイアウォールルール(Windowsの高度なファイアウォールで、シェルコマンドを使用して追加)が追加され、30分後にルールが削除される可能性があります。

私が言うように、それは非常に粗いですが、にはサーバレベルでそれを行うにはがあります。これは、実行すべきではないため実際には多くの賢明なオプションがありません。あなたは、ホスティングプロバイダにある程度責任があるという点で、正確に正しいです。

最後に、あなたはCAPTCHAについても正しいです。何かがあれば、何度も何度も何度もリソースを消費する可能性のあるイメージ生成を実行することでDoSを支援し、リソースをさらに枯渇させることができます。あなたのサイトが自動登録ボットでスパムされることになっていたら、CAPTCHAが効果的な時間ですが、既にそれが分かっていたと思います。

あなたが本当にアプリで何かIPベースの要求の制限を実装し、単に権力を喜ばせるために、アプリケーションレベルで何かをしたい場合はいえ、なんとかです90%無効(あなたはまだ処理する必要がありますので、要求)。

+0

動的IP制限はIISボックス自体で実行されるため、攻撃の下ではサーバーのパフォーマンスに影響を与える可能性があります。より良い保護を提供できる専用のファイアウォールデバイスを使用することをお勧めします。クラウドサービスを使用すると、ほとんどの場合これを心配する必要がないので、さらなる利点をもたらすことができます。 –

+0

@LexLiこれは、ネットワークレベルの軽減について私が言っていることです。私の答えで提案したものはすべて、実際の緩和には理想的ではありません。 –

2

あなたは絶対にまで滞在していた場合は、クラウドとスケールのサーバーにソリューションを実装することもできますが、それは高価得ることができる...

もう一つのアイデアは、登録ユーザーのIPアドレスをログに記録するだろう。 DOSでは、「良い」ユーザーからの要求に対するすべてのトラフィックを制限します。

1

アプリケーションレベルで本当のDoS攻撃を防止することは、アプリケーションがアプリケーションプールに関連付けられているためにアプリケーションを終了させる前にWebサーバーを殺す可能性が高いため、実際には実行できません。使用しているサーバーテクノロジーによって定義された最大同時要求数。

この興味深い記事 http://www.asp.net/web-forms/tutorials/aspnet-45/using-asynchronous-methods-in-aspnet-45 には、Windows 7、Windows Vista、Windows 8には最大10個の同時要求があると記載されています。さらに、「高負荷時に非同期メソッドの利点を確認するには、Windowsサーバー・オペレーティング・システムが必要です」というステートメントを使用します。

キューに入れる要求の量を増やすために、アプリケーションに関連付けられているアプリケーションプールのHTTP.sysキューの制限を増やすことができます(スレッドの準備ができたら後で計算するために)プロトコルスタック(HTTP.sys) は、制限を超過し、その後の要求を処理するためのワーカープロセスがない場合、HTTPエラー503を返すことができません。

お客様は、お客様に「サービス拒否攻撃に対してできるだけ復元力を持たせるために、あなたの努力を尽くす」ことをお客様に求めていることをご説明します。 私の提案は、お客様の状況に該当する対策ではないかもしれませんが、お客様の要件を満たすために、この記事で説明したタスクベースの非同期パターン(TAP)を実装することができます。

このパターンは、永続的な操作が実行されている間にスレッドを解放し、それ以降の要求にスレッドを使用できるようにします(HTTP.sysキューを低く保ちます)。サードパーティのサービスまたは複数の集中的なIO計算が実行されます。

このメジャーでは、DoS攻撃に対するアプリケーションの耐性が向上するわけではありませんが、アプリケーションがサービスされているハードウェア上でできる限り責任を負うことになります。

関連する問題