第三tDiary.Netに対して、このところ何度か DoS 的なアクセスが行なわれていたので、mod_evasive を導入した。
これまでも見つけた時には、ログから IP を抜き出して iptables のルールへ追加して来たんだけど、いい加減後手後手な対応になってしまっているので、動的な対応を追加した。
参考にしたのは「Apache DoS攻撃にそなえる」という記事。
Debian には libapache2-mod-evasive というパッケージがあったのでインストールは楽々。設定も参考記事通りでほぼ大丈夫だったのだけど、ひとつだけハマったところが。
DOSEmailNotify
にメールアドレスを指定すれば、DoS を検知した時にメールが送信されるということなのに、テスト用のスクリプトを叩いても何も送信されなかった。メールのログを見ても送信された形跡が無い。
設定項目が変わったののかな?と調べてみても特に情報はなく、メールアドレスの記載も間違いが無いし、何が原因なんだろう?と追ってみたら、、、どうやら /bin/mail
が存在しないことが原因だった模様。
/usr/bin/mail
から /bin/mail
へシンボリックリンクを張ることで、DoS 検知のメールが送信されるようになった。
# ln -s /usr/bin/mail /bin/mail
昨日の夕方に仕込んで、今朝までに 8 つの IP を検知している。WHOIS による国別の内訳を見るとこんな感じ。
ずっと CN な IP が目立っていたんだけど、このところの数回は US からひどいアクセスが続いている。
それから、DOSSystemCommand
の設定を使えば、動的に iptables へ追加ができるのかも。今回導入した Apache レベルでの拒否では対処できない状態になったら、それも実施した方が良いのかもなぁ。