wordpress-logo-stacked-rgb

おおよそWebサイトのセキュリティ対策が終わったので、簡単にまとめてみます。
【追記 2016/11/22】

 不正ログイン対策

  • fail2ban で外部(特定IPアドレス以外)からのログイン試行回数を調べ、閾値を超えた場合にBANします。
  • Jetpackプロテクトでブルートフォース攻撃を防御します。
  • 同じく Jetpack に含まれるシングルサインオン機能を使い、WordPress.comのアカウントでログイン出来るようにしました。
    ※この機能を使うには、事前にWordPress.comにアカウントを作っておく必要があります。

 SPAMコメント対策

  • Akismet によるSPAMコメントのフィルタリングを行います。ここでは検出→即削除ではなくSPAMフォルダーに隔離する設定にしました。何も操作をしなくても15日隔離後自動的に削除されます。
  • iQ Block Country を使い、公開ページ及び管理者画面に対してアクセス元の国別にアクセス制限を行います。IPアドレスの国別情報は定期的にアップデート(有料!?)されるようです。
  • あまりにもしつこく同じIPアドレスからSPAMコメントを投げてくる対策として Block Spammers を使っています。実際には Block Spammers のブラックリスト機能だけを使っている感じです。
  • コメント投稿には Google Captcha (reCAPTCHA) by BestWebSoft、コンタクトフォームには Contact Form 7 のインテグレート機能を使い reCAPTCHA を設置し、自動化されたSPAMボットからの投稿を防ぎます。

■しばらくはこの体制で運用しようと思っています。

 追記 2016/11/22

iQ Block Country にはアクセス制限が発動した時に、表示する画面をリダイレクトする機能があります。この forbidden という画面はサイトマップにも表示されない隠し画面になっていますが、アクセス制限によってリダイレクトされると、サーバのログには残ります。
注意:この forbiden という画面にはアクセスしないでください。万一アクセスしてしまうとしばらくこのサイトにアクセス出来なくなります。

146.185.xxx.xxx – – [22/Nov/2016:13:04:53 +0900] “GET /forbidden/ HTTP/1.0” 200 156413 “http://garciniacambogiabenefits.biz” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 YaBrowser/15.12.1.6475 Safari/537.36”

iQ Block Country はアクセスのリダイレクトをしますが、アクセスそのものをブロックする機能はありません。ですので、相手がアクセスを諦めてくれない限りサーバは応答を続けることになります。今回は、fail2ban と連携して対応することにしました。
つまり、fail2ban に新しいフィルターを作り、forbidden の画面へリダイレクトされた接続元の IPアドレスを抽出して、そのアドレスからのアクセスを iptables でパケットを落とすようにします。

failregex = ^<HOST> -.*"GET /forbidden/ HTTP.*$

フィルターはこのようにとてもシンプルです。
jail.conf には、

maxretry = 1
findtime = 1800
bantime  = 1814400

と設定したので、1度でも forbidden へリダイレクトされた場合、一週間アクセスが出来なくなります。これでログが軽くなったと同時に、サーバのリソース消費がずいぶん軽減されました。