DDos対策
今朝、自分がプライベートで使っている個人サーバーのwikiが突然更新できなくなった。
サーバーに入って調べてみると、予想どおりディスクフル
WEBサーバーに、とんでもないアクセスが来ていて、ログが溢れているのが原因だった。
IPアドレスは、ほぼユニークで2万以上あって、ネットワーク帯域指定ではじくことができず...。
ユーザーエージェントは固有っぽかったので、とりあえずユーザーエージェントで弾く
<Directory /usr/local/apache/htdocs> BrowserMatch "ユーザーエージェント名" ddos_app SetEnvIf User-Agent "^$" spam_ua Order allow,deny Allow from all Deny from env=ddos_app Deny from env=spam_ua </Directory>
- iptables stringモジュールで弾く
iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "ユーザーエージェント名" -j DROP
iptables stringモジュールで弾くとApache側に接続だけは残るようで408エラーが返ってしまう。
そうすると、apacheのリソースを食いつぶしてしまうので、Apache側でTimeoutを10秒に設定する。
表題と全く関係ないけど面白い物を見つけたのでメモ