web-dev-qa-db-ja.com

ソフトウェアアプリケーションはDoSまたはDDoSをどのように防御できますか?

DoS攻撃に対するソリューションのほとんどは、アプリケーションレベルではありません。プロキシサーバーを使用している場合、アプリケーションレベルでのDoSの可能な対策は何ですか?

34

まず第一に、サービス拒否を表すDoSと、DDoS-分散サービス拒否を区別することが重要です。ほとんどの場合、DoSはソフトウェアの脆弱性が原因で発生します。ここでは、攻撃防止の手段としてパッチとアップデートが提供されます。脆弱ではないサービスに対するDoSは分散型攻撃ではなく、効果がなく、現在は使用されていません。質問のポイントだったと思いますが、DDoSについて話すと、状況は少し複雑になります。巨大な場合のIPTABLES PPS=通常は効果がありません-ゾンビマシンの場合のように、攻撃はさまざまな場所から行われます。ユーザーを禁止するだけで、何度も何度も表示されます。私は提案することができます:

  1. より軽量な方法で接続を処理するようにサーバーソフトウェアを構成します-長くて重いリクエストを拒否します(ApacheのMaxKeepAliveRequestsなど)。
  2. oSを構成する-IPスタックのチューニング(FreeBSDのsysctlなど)。
  3. 未使用のポートを閉じ、未使用のサービスを削除します。
  4. mod_evasive-攻撃に対するApacheモジュール。
  5. 軽量サーバーをフロントエンドとして設定します-たとえば、nginx。

これは議論する長いトピックです。私はこの推奨事項に留まるのではなく、より正確な情報を得るためにそれらについてググるようお勧めします。

18
anonymous

DDoSに関する部分は今のところ無視します。これは、ネットワークまたはサーバーインフラストラクチャ(IIS/Apache /その他のWebサーバーを含む)のいずれかで停止する必要があるためです...

DoS(アプリケーション層であり、分散されていない)は、いくつかの異なるタイプの攻撃と見なすことができることを理解することも重要だと思います。

  • 永続的なDoS-攻撃が開始されると、サーバー/アプリの再起動、構成のリセット、データの削除など、手動(管理者)の介入が行われるまで停止しません。
  • 一時的なDoS-攻撃の期間中継続するか、直後に終了します。
  • フラッディング-サーバーを順番に処理する必要がある大量の要求でサーバーを単純にいっぱいにして、正当なユーザーがシステムにアクセスするのをブロックします。 (ほとんどのDDoSはこのカテゴリに分類されます)。

各カテゴリには、攻撃するための異なる戦術があり、もちろん、防止するためのさまざまなソリューションがあります。ただし、DoSにつながる可能性のあるコーディング上の欠陥がいくつかありますが、これは完全なリストからのFARです。

  • (特定のタイプ)バッファオーバーフロー
  • SQLインジェクション-できますDROP TABLE
  • ユーザー制御データのループ-「無限」にすることができます
  • DB接続とファイルハンドルを閉じないで、ユーザーはこれらの多くを強制的に開くことができます
  • XML爆弾-DTDエンティティを使用すると、攻撃者はマルチプロセッサシステムで複数のギグのメモリと100%のCPUを簡単に使い果たすことができます( も参照してください)http://msdn.Microsoft.com/en-us /magazine/ee335713.aspx および https://stackoverflow.com/questions/1906927/xml-vulnerabilities
  • ユーザーアカウントのロックアウト-ロックアウトメカニズムを実装するには、ログインメカニズムをお勧めします。つまり、5つの間違ったパスワードの後でユーザーをロックします。これが「永続的な」ロックアウトであり、すべてのユーザー名(またはその大部分)を検出できる場合は、それらすべてをループし、意図的に間違ったパスワードを5回入力して、ユーザーを効果的にロックアウトできます。管理者にもこれを行うと、ログインして他のユーザーのロックを解除することもできません。
  • ユーザーがまだ待っていることを確認せずに、小さなリクエスト、非常に大きな応答、または長い処理時間を必要とします。
  • 単一のリクエストで、複数のプロセスを開始します。一度に多くのメールを送信します。
  • 小さなディスク/小さなデータベース/メールサーバー/制限されたフォルダークォータなどを持つサーバーへの大きなファイルのアップロード.
  • 「ビジネス」DoS-例人間がふるいにかける必要がある多くのサポート要求を送信する

はい、ご存知のように、DoSにつながる、またはフラッディングを引き起こす可能性のある多くのさまざまなパターンと欠陥があります。これは単一クラスの攻撃ではなく、1つのカテゴリーの損傷です。
それらすべてから保護するには、それぞれに対処して適切な制御を実装し、脅威モデリングを実行して、可用性に影響を与える可能性のある他の関連する脅威がないかどうかを確認する必要があります。

システムによって異なり、これらすべての攻撃の特効薬ではありませんが(それでも役立ちます)、検討できる1つの一般的な推奨事項は、「ウォッチドッグ」サービスの実装です。このサービスは、アプリを監視し、必要に応じてアプリを再起動し、必要に応じて管理者に通知することができます。その他のol 'webアプリにはお勧めできません。

14
AviD