キターっていうか、ずっと前から来てたんだけども、最近はネタもないので対策を載せてみようかと思った。
そいでは、ちょっとLogwatchの一部を載せます。
403 Forbidden /wp-login.php: 290 Time(s) /wp-login.php: 130 Time(s) /wp-login.php: 209 Time(s) 403 Forbidden /wp-login.php: 115 Time(s) /wp-login.php: 2452 Time(s) /wp-login.php: 1884 Time(s)
こんな感じで多いでは2,000回以上のアタックが来ている訳ですが、被害は0です。
これはたけけんがすごい訳ではなく、対策を作った先人達の知恵なのです。
いまのとこ対策と言えることとしては3つほどしてます。
簡単に紹介したいと思います。
まずWordpressのプラグインから。
Simple Login Lockdown
これはいわゆる、何回かログインをミスるとしばらくYouをLockするっていうやつです。
でも最低ラインでも5回なんで、たけけん的には3回で設定したいなあっていうか・・・。
ただこれはサーバーの管理権限がなくても使えるのでおすすめなんだなあ。
そして、ログがForbiddenなのはこいつのせいやね~。
余談ですがWordpressなので、DBへガシガシと書き込みます。
DBのテーブルに載っていくので、phpmyadminから引っかかったIPの解除とか確認ができますのですじゃ。
ちょっと覗いたら、見ろ!IPアドレスがゴミのように見えるーっていう状態でした。
いっぱいあったってことです。
続いてfail2ban、こいつはログを監視してヒットしたらbanします。
そのままやんけ~というものですが、不正アクセスにはfail2banはとても有効です。
wp-loginへのアタックは海外でも盛んなようで、っていうか海外から来ているのばっかりですけどw
海外サイトで見つけたconfファイルを少しいじって流用してます。
これはサーバーの管理権限が必要だけど、簡単に導入できるのでVPSとかでおすすめですじゃ。
sudo cat /etc/fail2ban/jail.conf [apache-wplogin] enabled = true filter = apache-wplogin action = iptables-multiport[name=apache-wplogin, port="http,https", protocol=tcp] logpath = /var/log/httpd/access_log maxretry = 3 bantime = 86400 sudo cat /etc/fail2ban/filter.d/apache-wplogin.conf failregex = ^<HOST>\ \-.*\"POST\ \/wp-login.php HTTP\/1\..*\"
ごらんのようにこのままだとPOSTが3回続くとbanしちゃいます。
そんな摂政なって方は設定を変えればだいじょうぶ。
ちなみにfail2banをリロードすれば解除されるはずなんですが、何が原因か分からなくて困ってて、リロードしても制限が解除されなくなってしまってテスト時にちょっと困った状態になってますww
SYSLOGが絡んでるようなんだけど、ちょっと謎。
最後にmod_dosdetector、はてなの田中慎司さんという方が作ったApacheのモジュールで閾値を設定しておいて、閾値に絡んで来るとフラグが立ってリライトで飛ばします。
閾値は2段階で設定できます。
これはWP-LOGINへというかDoS攻撃の対策で、国産の超モジュールです。
もちろん管理権限が居るのでVPSとかにおすすめ。
sudo cat /etc/httpd/conf/httpd.conf | grep dosdetector LoadModule dosdetector_module /usr/lib64/httpd/modules/mod_dosdetector.so sudo cat /etc/httpd/conf.d/dosdetector.conf DoSDetection On DoSPeriod 5 DoSThreshold 20 DoSHardThreshold 35 DoSBanPeriod 10 DoSTableSize 100 DoSIgnoreContentType jpeg|gif|png|image|application|javascript|css
セキュリティを高くして、楽しいサーバーライフを過ごそう。
というか、root権限なしでどこまで戦えるのかって感じですが、プラグインだとあまりにたくさん来た時にDBへの負荷が上がっちゃうような気がするから、やっぱりサーバー側で戦わないといけないのかなあなんて思ったり。
となると.htaccessなのかしら。