ブルートフォースアタック対策をしてみた。(WordPress)

ヒップアタックでも、ビッグバンアタックでもない、

そうブルートフォースアタックの対策をしなきゃ!!どうも@yusukexpです。

ちょっと知り合いのWEB制作のをしている方に色々教わっていたところ、クライアントのサイトが不正アップロードなどの被害にあったとのことで、ビビってこのサイトにも対策を講じてみました(;・∀・)

ブルートフォースアタック3

ブルートフォースアタックとは?

暗号や暗証番号などで理論的にありうるパターン全てを入力し解読する暗号解読法。人間による操作ではとても気が遠くなるほどの時間と肉体的・精神的な負荷がかかるような回数の計算をコンピュータにまかせ、時間の許す限りパスワードの検証等を行う行為がコンピュータセキュリティ分野で良く知られている。時間的制約が無い限りは、確実にパスワードをクラックする方法である。例としては、自転車のチェーンロックやトランクの番号合わせ式錠を、全ての番号の組み合わせ(4桁なら0000から9999まで)を片っ端から試す方法と同じで、この「片っ端から」でいずれ正解に行き着こうというものである。-wikipediaから引用

要は赤の他人が運営しているサイトに潜り込もうと、総当りで攻撃を仕掛けてくるということです。WordPressのユーザー名とパスワードを推測して、ログイン出来るまで、もしくは相手が諦めるまでそれはもうガンガン試されます。。。上の画像にあるようにオリンピック並みに世界各国から不正アクセスがあります。(これはCrazy Boneというプラグインで不正アクセスログを記録したもののキャプチャです。)

安易につけているユーザー名とパスワードの組み合わせに対してガンガンログインしようとしてくる!

WordPressだとユーザ名はデフォルトのままだと、「admin」ですが、これを変更してないと格好の標的です!実際のログイン試行履歴が下の画像になります。

ブルートフォースアタック2

パスワードも同様です。数字だけ、アルファベットだけ、ドメインに由来したものなどでは危険です!WordPressもバージョンが3.8になり簡単なパスワードは付けれないようになっていたと思いますが、記号( ! ” ? $ % ^ & ) )などを含めて複雑なパスワードを設定しましょう。

不正ログインを許すと何をされるのか??

僕が見せてもらったサイトでは、見に覚えのないファイル、テーマ、プラグインなどがアップされていました。謎のファイル群がGoogleにインデックスされたりしてました。。。。サイト自体はいじられてませんでしたが。。。

具体的に何をされる可能性があるか?

  • サイトの改ざんをされ全く別のサイトにされる
  • 会員の情報やメールアドレスなど個人情報が漏洩する
  • サイトからウイルスをバラまかれる

他にも考えられますが、自分達だけではなく、サイトを訪れてくれたユーザーにも迷惑をかけかねないということがわかります。企業、サービスの信用問題になりますので、対策を打つ必要があるのがわかりますね。

ブルートフォースアタック対策

では、僕が実際に行っているセキュリティー対策をいくつか紹介します。(ブルートフォースアタック対策以外の部分も含む)

  1. ユーザー名、パスワードは推測されにくいものにする
  2. 重要なファイルのパーミッションを変更
  3. wp-login.php 及び wp-admin フォルダへの POST リクエストが自分のドメインからでない場合は、403を返す設定
  4. wp-config.phpへの全てのアクセスを拒否する設定
  5. Limit Login Attemptsを導入
  6. Stealth Login Pageを導入

1.ユーザー名、パスワードは推測されにくいものにする

これは先ほども書いたように、adminのままであったり、ドメイン名が関係したりしないように設定します。自分が覚えやすいようにしてしまいがちですが、WordPressの強度インジケータを参考に、できるだけ難しくします。僕は記号を含めた乱数を設定しています。

2.重要なファイルのパーミッションを変更

テーマやパーマリンクの設定が終わり次第、wp-config.phpと.htaccessのパーミッションを変更します。
wp-config.phpは400に、.htaccessは604にしてます。

3.wp-login.php 及び wp-admin フォルダへの POST リクエストが自分のドメインからでない場合は、403を返す設定(
.htaccessへ記述)

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_REFERER} !^http://(.*)?example\.com [NC]
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteRule ^(.*)$ - [F]
</IfModule>

*ドメインの部分は自分のドメインに書き換えてください。

ブルートフォースアタックは、POSTを使って wp-login.php にアクセスしようとしますので、それを防ぎます。自分のドメインからのアクセスだけを許可します。wp-login.php または wp-admin フォルダへの POSTが自分のドメインからでない場合は、「403 Forbidden」を返す設定です。

4.wp-config.phpへの全てのアクセスを拒否する設定(
.htaccessへ記述)

wp-config.phpにはセキュリティー上見られてはいけないので、直接参照が出来ないようにします。

<files wp-config.php>
order allow,deny
deny from all
</files>

5.Limit Login Attemptsを導入(プラグイン)

これは、ログイン失敗回数がが一定数に達すると、そのIPアドレスに対して一定時間ロックをかけるプラグインです。僕は4回ミスると1時間ログインできなくなるようにしてます。また、このプラグインは英語なのですが、クライントワークでも使えるように、日本語化してくださっているサイトの記事をご紹介します。→Limit Login Attemptsの日本語化をしてみた

6.Stealth Login Pageを導入(プラグイン)

これは、WordPressのログイン画面に2つ目のログインパスワード(第二認証コード)を追加できるプラグインです。ログイン画面で、ユーザー名、パスワード(デフォルト)、Authorization code(第二認証コード)を入力することになります。また、ログインに失敗した時のリダイレクト先を設定できます。僕はとりあえずGoogleの検索画面に飛ばしています。(自分がログインするときに

ざっとではありあますが、ブルートフォースアタックへの対策に関して書かせてもらいました。ここまで書きましたが、他にも対策方法ありますし(例えばログインIPを制限、ワンタイムパスワードなど)、これらをやっておけば絶対大丈夫とは言えませんし、クラッカーたちも手を変え品を変え不正を働いてきます。ですが、せっかく頑張って運営しているサイトを改ざんされてもやりきれないし、ユーザーにも迷惑をかけてしまう場合がありますので、出来るだけのことはしてきましょう!!

まずは、パスワードを変更するところから対策を始めていきましょう!

また、これはやったほうがいいよーというのがありましたら、ぜひ教えて下さい!よろしくお願いします!(^o^)/

RSSでブログを購読する!

follow us in feedly RSS subscribe

Yusukexp