実は今まで放置していたんですよ。この問題。なぜならば
- スパムアクセス自体はblogのコメントに対するものがほとんどでWeb本体は影響がほぼ無い
- blogのコメントはblogのスパムコメント除去機能により(多少手間は取られるが)影響がほぼ無い
- blogのアクセスカウンタは「blogをすべて読み込んだ場合」にのみカウントされ、コメントを投げるURLを直接アクセスした場合はカウントされない
- blog以外のアクセスログは目を通すことにはしているがそれほど参考にしていない
- 何よりアクセス制限があまり好きではない
という理由によるものです。セキュリティに関してはセキュリティアップデートをちゃんと行うことで影響をかなり少なくすることはできるので、という考えの下でした。
無視できないレベルのアタックが中国から、という状態に
上にも書いてあるとおり、元々blogにコメントを書き込もうとするような動きをしているアクセスがあったことは知っているのでそれほどでもなかったのですが、アクセスログの解析結果を見ていたところ、あまりにも無視できないレベルでアクセスが急増してアクセスログ側で統計情報が意味のないものになってしまう状態となりまして・・・。これはまずい、というわけでフィルタを一枚かませることにしました。
フィルタそのものは普通に国別IPを使ったiptablesを使用
iptablesを使用した例は検索をかければそれなりの数が出てくる上に私が施した対策のスクリプトはほぼコピペになるのでこのblogには乗せません。というわけでがんばって探してみてください。自分で組んでみたい、という人が(いまでも)いる場合は一応ヒントだけ。
- 各IPのリストファイルがIPを管理している団体のFTPサーバーから入手できるのでそれを取得する
- スクリプトによりiptablesで使用できる形に変換する
- (すでに動いているはずの)iptablesにフィルタを追加するなり起動時に読み込むなりしてフィルタリング
- IPは売買されているためしばらくすると変わってしまうこともあるので一定周期で確認するようにすること
フィルタリングをかけてみると
フィルタリング前のアクセスログとフィルタリング後のアクセスログを見てみると非常に悲しいものがありました。おそらくフィルタリング後のものが正しくページを読んでいるものなのか、と思うといかにアクセスが少なかったのか、という気持ちがわいてきます。月ごとにアクセス数が増えていく状態を見るのはそれはそれで気持ちのいいものなのですが、アクセス数が(こんな原因であったとしても)がくっと減るのはいい気分ではありませんね。