最近ここを放置気味だが、放っておくと Akismet が弾いてくれた spam コメントが大量に溜まってしまうので、しつこい輩は IP でアク禁にしたりしていた。しかしあまりに多すぎるのでおかしいと思い、久々アクセスログを覗いてみたら、wp-login.php へのアクセスがとんでもないことに。
11,496? ちょっと異常すぎるだろ!
何やら最近 WordPress の改ざんを狙ったブルートフォースアタックが流行っているそうなのだ。このブログはユーザー名が admin のデフォルトのまま。パスワードが一般的なワードでないとはいえ、これはマズイ。対策のためにプラグインを探したら以下のが良さそうなので入れてみた。
Force Email Login 作者:Takayuki Miyauchi 氏
データベースやユーザー名に変更を加えずに、ログインユーザー名を WordPress のユーザーメールアドレスに変更するプラグイン。ログインに失敗すると10秒おかないとログイン画面が表示されないので、ロボットに有効だ。
さあて、これでまずは一安心と思っていたのだが、今日になったらデータベースサーバーが不安定なのかブログが表示されにくい。もしやと思いリアルタイムログを覗いたら、どうやらクラッカーに目をつけられたのか、IPアドレスを変えて何度も wp-login.php に数秒おきにアクセスされている。ひい。
こりゃアカンと思って色々考えた挙句、.htaccess で wp-login.php 自体のアクセスを規制することにした。Wordpress をインストールしてあるディレクトリ直下にある .htaccess ファイルを一旦ダウンロードし、以下の文を挿入して上書き。
<Files "wp-login.php">
order deny,allow
allow from .jp # .jpドメインに一致したらアクセス可
deny from all # 他は全部アクセス不可
</Files>
私の使っている ISP やスマホは全部 .jp ドメインなので、.jp ドメイン以外は wp-login.php へのアクセスを全部禁止するという乱暴なやり方。クラックしようとしているのはウクライナやらロシア、中国ばかりなので、とりあえずこれで問題ないだろう。もし .jp ドメイン以外の ISP も使っている場合は、allow from のあとに ISP のルートドメインなり、固定IP を入れればいい。
本来はこんな大雑把でなく、あくまでも自分が使っているISPに絞って規制するのが一番安全だが、出先のフリースポットで更新したいとか、自宅サーバーでやってるという人は以下のように色々設定しないとならないかも。
<Files "wp-login.php">
order deny,allow
allow from .jp
allow from .bbtec.net # Yahoo BB
allow from .wakwak.com # WAKWAK
allow from 192.168. # LAN 上のローカルマシン
allow from 127.0.0.1 # ローカルテスト用
deny from all
</Files>
.htaccess にドメイン参照させるとパフォーマンスが落ちるのであまりやりたくなかったのだが、固定IPじゃないから仕方ない。でも設定した途端、データサーバーへのアクセスがなくなり効果てきめん。
– [Thu Sep 12 22:59:41 2013] [error] [client 5.234.78.117] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 22:59:41 2013] [error] [client 5.234.78.117] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 22:59:43 2013] [error] [client 5.234.78.117] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 22:59:43 2013] [error] [client 5.234.78.117] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:03:08 2013] [error] [client 95.78.221.63] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:03:08 2013] [error] [client 95.78.221.63] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:11:39 2013] [error] [client 177.108.34.225] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:11:39 2013] [error] [client 177.108.34.225] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:11:44 2013] [error] [client 108.214.134.32] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:11:44 2013] [error] [client 108.214.134.32] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:12:21 2013] [error] [client 95.78.221.63] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:12:21 2013] [error] [client 95.78.221.63] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:13:35 2013] [error] [client 222.166.214.38] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:13:35 2013] [error] [client 222.166.214.38] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:13:40 2013] [error] [client 222.166.214.38] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:13:40 2013] [error] [client 222.166.214.38] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:19:30 2013] [error] [client 31.192.129.159] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:19:30 2013] [error] [client 31.192.129.159] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:19:40 2013] [error] [client 213.87.141.209] client denied by server configuration: /*****/wp-login.php
– [Thu Sep 12 23:19:40 2013] [error] [client 213.87.141.209] client denied by server configuration: /*****/wp-login.php
しかし生ログは見ていると心臓に悪い・・・