もしバグを見つけた場合は、問題報告に投稿してください。
はい、特定のページのセッション数を制限することができます。ただし、ファイアウォールパネルで「オンラインセッション制限」を先にオフにする必要があります。なぜなら、それはグローバルな範囲であり、同じデータプール内で使用することはできないからです。
「オンラインセッション制限」を無効にした後、ShieldonのパブリックAPIを使用することができます。以下に示すコードを参考にしてください。
if (strpos($_SERVER['REQUEST_URI'], 'faq/online-session-limit.html') !== false) {
$firewall->getKernel()->limitSession(5, 300);
}
このページでは、最大ユーザー数を5人に制限し、各ユーザーはページを300秒間表示できます。
ユーザーがこのページにアクセスし、ユーザー数が制限に達した場合、以下のスクリーンショットと似たダイアログが表示されます:
ファイアウォールパネルに「すべてブロックする」機能を含めていません。URL / に関連するすべてのIPアドレスをブロックすることを防ぐためです。それにより、ファイアウォールパネルへのアクセスを含むすべてのURLがブロックされてしまいます。代わりに、IPマネージャーを使用し、必要に応じて特定のIP範囲を設定することをおすすめします。
特定のURLのすべてのIPアドレスをブロックしたい場合、以下のコードを使用すると便利です。
// $firewall->run() の前にこのコードを置いてください。
if (strpos($_SERVER['REQUEST_URI'], 'example/block-all.html') !== false) {
$firewall->getKernel()->getComponent('Ip')->denyAll();
}
これは例のページで、すべてのIPアドレスからのアクセスをブロックします。
ユーザーがブロックされると、以下のスクリーンショットのようなダイアログが表示されます。
注意:この例のリンクをクリックすると、このウェブサイトへのアクセスがブロックされます。ブロックが解除されるまで60分待つ必要があります。
デフォルトのユーザー名は shieldon_user
で、パスワードは shieldon_pass
です。ファイアウォールパネルにログインした後、最初にユーザー名とパスワードを変更することをお勧めします。
小規模なHTTP型のDDoS攻撃に対しては、はい、軽減できる可能性があります。ただし、実際のシナリオは帯域幅、ハードウェアの品質、システムの調整、コードの品質など、多くの要素に依存する場合があります。
以下に簡単な例を考えてみましょう。ウェブサイトの平均ページサイズが3MBで、サーバーの帯域幅が100Mbpsの場合、サーバーは約12.5MB/s
のデータレートを処理できます。誰かがあなたのウェブサイトを悪意を持って攻撃する場合、サーバーを圧倒するにはどれくらいの攻撃元が必要だと思いますか?これにはMySQL接続への潜在的な負荷も考慮されていません。
Shieldonファイアウォールは、これらの悪意のある接続を中断し、50KB未満のCAPTCHAページを返します。これにより、PHPスクリプトの追加実行が停止され、さらなるMySQL接続が防止されます