WordPress への不正ログインを防ぐ幾つかの方法

シェアする

先日やけにサーバの負荷が高いなと思ってログを見ていたら wp-login.php に大量のアクセスが・・・どうみてもブルートフォースアタックです本当にありがとうございました、実行者は速やかに死んでくださると助かります。

munin-apache-accesses

しかし攻撃者が死滅するまでの間は自分で対処しないといけないし、残念ながら死滅する未来を想像できない。幾つか対処方法を考えたので列挙してみる。

Sponsored Links

デフォルトの Admin をやめる

基本的に攻撃者は WordPress をインストールしたら最初にできるユーザー名である Admin ユーザで試してくる。

これは別の名前にしておこう。が、テーマによってはユーザ名がそのまま出たりするしあまり有効な手ではないと思う。

-- 追記
攻撃のログを見ると表示されているユーザ名でログインを試行してくるので表示名とIDは分けたほうが良いですね。

Basic 認証をつける

basic-auth

認証を二つに増やせばそれだけ突破するのが面倒くさくなる。Basic 認証なら .htaccess をちょっといじるだけで設置も簡単。

<Files "wp-login.php">
    Authname "For Members"
    Authtype Basic
    AuthUserFile /path/to/.htpasswd
    require valid-user
</Files>

.htpasswd は各自用意してください。

ただ Basic 認証はユーザ名とパスワードを Base64 化して平文で送ってるので盗聴されるとアウト。でも今回のようなケースの場合には悪くないんじゃないかと思う。

IPアドレスで制限

ログを見ると wp-login.php への不正ログインの試行元は全部海外であった。いっそ自分の IP アドレス以外からのアクセスを除外すれば不正にログインされる危険性はなくなるだろう。

wordpress にある .htaccess へ以下の文言を追加しよう。

<Files "wp-login.php">
    order deny,allow
    deny from all
    allow from 127.0.0.1 # ここに自分のIPアドレスを入れる
</Files>

これで指定した IP アドレス以外からのアクセスを防ぐ事ができる。

現実には通常のブロードバンド契約では固定IPを得られないのであまり実用的ではない。IPが固定されている企業などでは使える手かもしれない。

Simple Login Lockdown でログイン制限

Simple Login Lockdown という WordPress のプラグインがある。これを利用するとある一定回数ログインに失敗したらしばらくの間そのホストからログインできなくなる。手軽に導入できるのが利点だ。

設定項目も少なく、名前の通りシンプルで良い。

simple-login-lockdown

欠点としては $_SERVER['REMOTE_ADDR'] を利用しているため、攻撃側が接続元のホストを変更すると無効になる点だ。基本的に攻撃者はいくつかの IP アドレスへ変更をかけながら攻撃してくる。

今回のログをざっと見た感じ、一つの IP アドレスから数百ほど試行した後 IP アドレスを変更する、という動作を繰り返していた。それでも無いよりはマシだろう。

WordPress へ二段階認証をつける

通常の Username/Password での認証へ加え、ワンタイムパスワードをつける方法がある。これはかなり強力で突破するのはかなり難しくなる。

利用するのは Google Authenticator という iPhone/Android のアプリ。Google で二段階認証を行う際に利用するものと同じやつを WordPress でも使う事ができる。

そしてそれを利用するための WordPress のプラグインが同じ名前の Google Authenticator です。

インストールを行うとユーザー設定のところに Google Authenticator という項目が追加される。ここにある Active にチェックを入れると二段階認証が有効になる。

google-authenticator-settings

Secret欄にある Show/Hide QR code を押し、QR コードを表示したらスマートフォン側のアプリで Set up Account -> Scan a barcode からコードを読み込もう。

google-authenticator

そうするとアプリに WordPress 用のコードも表示されるようになる。これをログインする時に一緒に入力しないとログインできないようになる。

login-with-google-authenticator

Google の二段階認証が使える環境でないといけないが、Google を使っていれば二段階認証は普通使うものなので問題無いだろう。

これでログインされる危険性はかなり下がると思う。

Sponsored Link

シェアする

フォローする