いま流行りの、WordPress の管理画面にログインを試みようとする Brute Force Attack(ブルートフォースアタック)をいただき、サーバーの負荷がハンパないことになっておりましたので、念のためにセキュリティを高めておこうと思った次第です。

Brute Force Attack とは、ありとあらゆる文字の組み合わせを自動で試みてログインしようとするものです。自転車のチェーンロックの数字を「000、001、002… 997、998、999」まですべて試すようなものですね。

「名前+誕生日」「ニックネーム」「家族兄弟の名前」など、覚えられるパスワードを使い続けることは、金庫にダイヤルロックの番号を貼って道に置いておくようなものです。パスワードが漏れるのは時間の問題ですわー

パスワード長と解読時間の関係

  • 8文字の大小英数字および記号を含むパスワード
    高性能パーソナルコンピューターで23年間、コンピュータ・クラスターで2.25年間、スーパーコンピューターで83.5日
  • 8文字の大小英数字を含むパスワード
    高性能パーソナルコンピューターで253日間、コンピュータ・クラスターで25.25日間、スーパーコンピューターで60.5時間
  • 6文字の大小いずれかの英字だけのパスワード
    Pentium 100MHzのPCで5分間~8.5時間
総当たり攻撃 – Wikipedia

「Cj7bHGoVr8tCNham」「E8KZhKEEzPlJE0LS」のような強力なパスワードを使うためには、「1Password」などを使ってパスワード管理すると便利ですね。Mac、Windows、iPhone/iPad、Android に対応しており、Dropbox で同期できます。

Facebook に2段階認証を設定する

2段階認証の仕組みは… 通常のID・パスワードに加えて、もう一段階パスワードをかけるものです。そのパスワードを覚える必要はなく、30秒ごとに変更されて自分のスマホのみで受け取ることができます。ジャパンネット銀行のワンタイムパスワードのようなものですね。

01_ケータイ番号を登録する

自分の Facebookアカウントとケータイとを紐付けておく必要があります。しばらく前に Facebook が促していたので、すでに登録が済んでいる人は飛ばしてください。
携帯電話番号を確認する – Facebook

02_ログイン承認を設定する

PCサイトの「アカウント設定 > セキュリティ > ログイン認証」の[編集]から、「使用したことのないブラウザからアカウントにアクセスする際にセキュリティコードを求める」にチェックを入れます。

03_コードジェネレータを使ってログインする

設定が完了したら一度ログアウトして、再度ログインします。このような画面が表示されます。

スマホのFacebookアプリの[コードジェネレータ]で表示されているセキュリティコードを入力します。

Dropbox に2段階認証を設定する

「設定 > セキュリティタブ」の[2段階認証]を有効にします。ケータイ番号を登録し、SMS でセキュリティコードを受け取ります。

セキュリティコードは SMS で受け取りたいので、「テキストメッセージを使用」を選択します。

ケータイ番号を登録します。

ケータイにメッセージが届きます。もしものために「緊急用バックアップコード」をメモしておきます。この管理も厳重にね。

Google アカウントに2段階認証を設定する

01_ケータイを登録する

手順にしたがって、ケータイの電話番号やメールアドレスを登録していきます。
2段階認証プロセスについて

02_コードを使ってログインする

一度ログアウトして、再度ログインします。2段階認証プロセスの画面が表示されるので、ケータイのメールアドレスに届いたコードを入力します。

03_アプリケーション固有のパスワードを設定する

ここで、スマホやPCのメールアプリ、カレンダーアプリなど、一部のアプリが通常のパスワードではログインできなくなるので、「アプリケーション固有のパスワード」をそれぞれ作成していきます。

これらのアプリには2段階認証のコードを確認する機能がないため、「アプリケーション固有のパスワード」を使うことで認証を行なっているのですね。

WordPress の管理画面にログイン認証を設定する

Brute Force Attack を受けるとサーバーが高負荷になってしまうため、少しでも軽減するためにログイン認証をかけます。

WordPress のログイン画面(wp−login.php)のディレクトリに「.htpasswd」「.htaccess」を追加して、管理画面にログイン認証を設定していきます。

01_.htpasswdの設定

このサイトで、ログイン認証のための ID・パスワードを暗号化します。生成されたテキストをもとに .htpasswd というファイルを作成します。
htpasswdファイル生成 – lufttools

02_.htaccessの設定

WordPress のログイン画面(wp−login.php)のディレクトリにある .htaccess に以下を追加します。

<Files wp-login.php>
AuthName "LoginMessage"
AuthType Basic
AuthUserFile /var/www/.htpasswd
Require valid-user
</Files>

AuthName にはダイアログに表示されるメッセージ、AuthUserFile は「.htpasswd」までのフルパスを書きます。

WordPress の管理画面へのログインに Google Authenticator code を使用する

01_Google Authenticator アプリをインストールする

スマホに「Google Authenticator」アプリをインストールしておきます。
Google Authenticator(iPhone)
Google Authenticator(Android)

02_Google Authenticator code のプラグインをインストールする

「Google Authenticator code」のプラグインを使って、2段階認証の機能を追加します。
Google Authenticator « WordPress Plugins

プラグインをインストール&有効化し、「ユーザー > あなたのプロフィール」に表示された設定項目の「Active」にチェックを入れて反映させます。

次に[Show/Hide QR code]を選択して、表示された QRコードをスマホの「Google Authenticator」アプリで読み込みます。これで紐付けが完了しました。

03_コードを使ってログインする

一度ログアウトして、再度ログインします。いつものユーザー名、パスワードに加えて「Google Authenticator code」の入力欄が追加されています。スマホの「Google Authenticator」アプリに表示されているコードを入力してログインします。

ログインに失敗する場合は、血の気がさーっと引きますが… 落ち着いて「wp-content > plugins > google-authenticator」を削除してください。元のログイン画面に戻ります。もう一度プラグインをインストールしなおしてみてください。次はうまくいくかもしれません。

また、プラグインがちゃんとアクティブになっていないと、Google Authenticator のコードを入力してもしなくてもログインが可能になります。なので、空欄でログインできないこともチェックした方がよさそうです。

ソーシャル・エンジニアリング(欺術)について

パスワードを強化することで、悪意のあるプログラムからは自分のアカウントを守ることができるかもしれません。

こんな本があります。史上最強のハッカーは、社会のルールを利用して担当者を信じさせ、情報を盗み出す技術を持った人です。どんなにパスワードを強化しても、人間から漏れる情報は防ぎきれません。
欺術(ぎじゅつ)―史上最強のハッカーが明かす禁断の技法

どうかパスワードは墓場までもっていき、そのWebサービスの終了とともに消滅していただきたい。

こちらの関連記事もあわせてどうぞ!