1

明らかなハッキングの試みがあった場合、どうすればよいですか?サーバーリソースを使わずに、時間を無駄にする簡単な方法があればいいのにと思います。数秒の遅延でさえ、ブルートフォース攻撃を無駄にする可能性があります。

それらをAsyncContextに送信すると、プロセッサに負担がかかりすぎるように見えます。タイムアウトすると、同じリクエストが開始した最初の場所に自動的に再送信されます。これは実際にDOS攻撃を支援する可能性があります。

私はJettyを使用しており、DoSFilterについて知っていますが、ファウルプレイを検出したときに応答を遅らせることができれば、はるかに効果的です。これは、私の場合はかなり簡単に感知できます。検証/認証の試行が失敗するたびに、何らかの方法で自動的に応答が遅れるはずだと思います。

私はここで実際に認証を行っていないので、認証プロトコル/フロントエンドは役に立ちません。特定の条件を満たすパターンの接続パラメーターを検証しているだけです。TCP / IPが通知することは知っていますが、無効なアクセス試行をサイレントに切断してハングさせ続けることができれば、それは理想的です。

4

4 に答える 4

2

バカプレイを発見したら、一定期間IPをブロックした方が賢明だと思います。IPを追加するだけで簡単です/etc/hosts.deny(多くのUNIXデーモンで機能しますが、Javaプロセスでも機能するかどうかはわかりません.tcpデーモン自体によって使用されるため、機能するはずです)man 5 hosts.denyコマンド ラインでいくつかのヒントが得られます (または、このオンライン リンクを確認してください)。

Thread.sleep()ところで、通常の Java コードと同様に、サーブレットを一時停止するために使用できると思います。ただし、これにより、同じ呼び出し元からのより多くの要求が長時間開かれたままになり、アプリケーション サーバーが割り当てて維持する必要があるアクティブなリソースが増加する可能性があります。したがって、攻撃者がマルチスレッドで作業できる場合、攻撃のためにすべてのスレッドを保持し、他のすべてのユーザーがサービスにアクセスするのをブロックするため、攻撃者がサーバーをブロックするのに役立つ可能性があります。

于 2013-01-06T22:05:46.650 に答える
2

同じ IP から疑わしい繰り返しのリクエストを受け取った場合は、エスカレートする遅延を導入できます。

Thread.sleep(n);

ここで、n は後続のイベントごとに 2 倍になります。

于 2013-01-06T21:55:55.940 に答える
1

AsyncContext は、同期要求でスリープするよりも優れたソリューションである可能性があると実際に考えています。

ただし、両方のシナリオを試して、それぞれが CPU 使用率と合計スループットの両方に与える影響を実際に測定する必要があると思います。

于 2013-01-06T22:14:04.847 に答える
1

低レベルで保護する必要があります。コンテナはリクエストごとに環境を作成するため、Java の関与はハッカーよりもあなたに大きな損害を与えます。

ほとんどの場合、ハッカーは応答を待たないため、応答を遅らせて攻撃することはありません。

使用nginxまたはファイアウォール レベル。

于 2013-01-06T22:20:51.430 に答える