
私は、PHP で生成された Web ページを配信する lighttpd Web サーバーを持っています。このサーバーは現在、DDoS ボット攻撃により大量のトラフィックが発生しており、その一部をブロックまたは軽減する方法を探しています。
私の知る限り、lighttpdはリモートIPアドレス経由のリクエストをブロックする機能を提供しています。例えば、
$HTTP["remoteip"] == "12.34.56.0/24" {
url.access-deny = ( "" )
}
に設定するとlighttpd.conf
、IP 範囲 12.34.56.0 - 12.34.56.255 からのすべてのリクエストがブロックされます。
ただし、DDoS の性質上、IP アドレスや範囲は頻繁に変更されるため、単一の IP アドレスや範囲をブロックすることは現実的ではありません。
アクセス ログを調べたところ、ボットからのリクエストのほとんどは古い HTTP/1.0 プロトコルを使用しているようですが、正当なトラフィックのほとんどは HTTP/1.1 を使用していることがわかりました。
私の質問は次のとおりです。lighttpd で、HTTP/1.0 経由で入ってくるリクエストをすべてブロック/拒否し (HTTP/1.1 経由で入ってくるリクエストは許可する) 方法はありますか?
私は公式にはそのような可能性を見つけることができませんでしたlighttpd 設定ドキュメント。
ノート:
- 一部の正当なトラフィックでも HTTP/1.0 が使用される可能性があることは承知していますが、それらもブロックしても問題ありません。
- ボットのリクエストは、ユーザー エージェントまたは HTTP リファラーに共通のパターンを使用していないようです。そのため、正規表現パターンを使用してそれらを使用することはオプションではないようです。
答え1
の解決策を示す代わりにlighttpd
、失敗2バンこれはすべての Unix ベースのシステムに存在します。ログ ファイルの変更を監視し、正規表現ルールに従って解析し、パターン (この場合は HTTP/1.0) に一致する場合はシステムのファイアウォール レベルでブロックします。これにより、不要な接続をより効果的にブロックできます。
また、通常のリクエストよりも悪意のあるリクエストが多い異常なトラフィックが発生している場合は、次のファイアウォールルールを追加してDDoS攻撃を減速させることができます。
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 127 -j ACCEPT
それでも HTTP/1.0 をレベルでブロックしたい場合はlighttpd
、次のように HTTP プロトコルを一致させてください。
env.SERVER_PROTOCOL == "HTTP/1.0" {
url.access-deny = ( "" )
}
nginx
(この解決策は、かなり前に切り替えたためテストされていませんが、私の知る限りでは機能する可能性があります。)