【WordPress】セキュリティプラグイン『Wordfence』でログインに2段階認証を設定

WordPressのセキュリティプラグイン『Wordfence Security』を利用して、WordPressへのログインにワンタイムパスワードでの2段階認証を設定する方法の紹介&備忘録記事です。

無料版の『Wordfence Security』でも、認証アプリでの2段階認証を利用できるようになっていたので導入してみました!

スポンサーリンク
スポンサーリンク

Wordfeneでの2段階認証について

『Wordfence Security(以下:Wordfence)』は、WordPressのセキュリティプラグイン。Firewallやマルウェアスキャンなど、総合的なセキュリティ機能を搭載しています。

無料版と有料版がありますが、今回設定する二段階認証は無料版でも利用可能です。

Wordfenceで利用できる2段階認証は、認証アプリを利用する時間ベースのワンタイムパスワード(Time-based One-Time Passwords:TOTP)となっています。

無料版のWordfenceバージョン7.3以降で利用できるのは、認証アプリでのTOTPだけのようです。それ以前のバージョン(有料のプレミアム版)では、SMSやテキストメッセージでの認証があったらしいです。
参考:Legacy Two-Factor Authentication – Wordfence

ログイン画面の表示

設定すると、WordPress管理画面へのログインに、通常の[(メールアドレス/ユーザー名)+パスワード]による認証に加えて、認証アプリに表示される6桁のコードが必要になります。

厳密には「2要素認証(Two-Factor Authentication)/多要素認証(Multi-Factor Authentication)」と言うようですが、Googleアカウントなどへのログインで使う「2段階認証」に慣れているので、後者の表現を使っています。

設定の流れ

設定の流れ
  • 1
    認証アプリのインストール
  • 2
    QRコードの読み取り
  • 3
    Wordfenceで二段階認証を有効化
  • 4
    追加設定

基本設定は、「認証アプリ入れて」→「QRコード読み込んで」→「Wordfenceの管理ページで有効化する」だけで簡単です。

設定方法や注意点については、Wordfenceの公式ページにも詳しい説明が掲載されています。

設定時の環境(バージョン)
  • WordPress:5.4.2
  • Wordfence:7.4.9

認証アプリをインストール

使用できるアプリは、時間ベースのワンタイムパスワードをサポートしている以下のようなもの。

  • Google Authenticator
  • Sophos Mobile Security
  • FreeOTP Authenticator
  • 1Password (モバイル版/デスクトップ版)
  • LastPass Authenticator
  • Microsoft Authenticator
  • Authy 2-Factor Authentication
  • 時間ベースのワンタイムパスワード(TOTP)をサポートするその他の認証アプリ

私は、スマホとタブレットでは「Google Authenticator」と「Microsoft Authenticator」。WindowsPCでは「WinAuth」を使用しています。
認証アプリの基本的な使い方は、関連記事の方法と大体同じです。

QRコードの読み取りと有効化

2段階認証の設定

QRコードの読み取りを含む2段階認証の基本設定は、管理画面のWordfence「Login Security」ページでサクッとできちゃいます。

  1. 「WordPress管理画面」-「Wordfence」-「Login Security」
  2. QRコードを読み取る(下の英数字コードをコピペでも可)
  3. リカバリーコードをダウンロード/コピー/メモ
  4. 6桁のワンタイムパスワードを入力
  5. 「ACTIVATE」ボタンで2段階認証を有効化

設定する時のポイントや注意点は以下。

(設定完了前は)管理画面のWordfence「Login Security」ページにアクセスするたびに、別のコードが生成されます。
複数端末の認証アプリにQRコードを読み込ませたい場合は、ページを移動せず開いたままにして、1回で全ての端末に登録してから有効化します。
パソコン用の認証アプリを使用する場合や、スマホ/タブレットのカメラでQRコードを上手くスキャン出来ない場合は、QRコード直下に表示されている英数字のコードで認証アプリに登録できます。
リカバリーコード(回復コード/バックアップコードとも)は、必ず「ダウンロード/コピー/メモ」しておきましょう。
何らかの理由で認証アプリを使えなくなった場合にログインするための保険になります。
端末のストレージが物理的に壊れた際に備えて、紙媒体に印刷orメモしておくのもいいと思います。
時間ベースのワンタイムパスワードは、サーバーの時間がずれていると正常に動作しないため、「Login Security」ページの下部に表示されている「Sever Time」と「Browser Time」にずれがないか要チェックです。

追加設定

2段階認証について「適用するユーザーの種類」「認証済みデバイスで30日間免除」「XML-RPCに有効/無効」などを追加設定できます。

追加設定

[管理画面]→[Wordfence-Login Security]→[Settings]でアクセス。

  • Enable 2FA for these roles
    • ユーザーの種類別に2段階認証を適用する設定
    • 「管理者/編集者/投稿者/寄稿者/購読者」など任意で
  • Require 2FA for all administrators
    • すべての管理者に2段階認証を適用する設定
    • WordPress/テーマ/プラグイン等の脆弱性で不正に管理者ユーザーが作成された場合にも、自動で2段階認証が適用されることにより不正ログイン防止の保険になる
    • 「Grace period to require 2FA」は、管理者ユーザーが複数いる場合に設定を適用するまでの猶予時間。「SEND NOTIFICATION」で通知を送信
    • マルチサイトではSuperAdminにのみ適用
  • Allow remembering device for 30 days
    • 認証済みデバイスでの再認証を30日間免除する設定
    • Googleでの「信頼するデバイス」みたいな設定
    • cookieで設定される(ブラウザのcookieを削除するとリセット)
  • Require 2FA for XML-RPC call authentication
    • XML-RPCの呼び出しに2段階認証を適用する設定
    • xmlrpc.phpを利用する攻撃から保護できる
    • 「Skipped(省略)/Required(必須)」で設定
    • XML-RPCの呼び出しを必要とするプラグインや機能とは互換性がないため注意
  • Disable XML-RPC authentication
    • 有効なユーザー名とパスワードがあるかどうかに関係なく、認証を必要とするすべてのXML-RPC要求を拒否する設定
    • WordPress電話アプリ、Jetpackプラグイン、またはXML-RPCを使用する他のほとんどのサービスと互換性がない
  • Whitelisted IP addresses that bypass 2FA
    • IPでのホワイトリスト設定
    • 指定したIPは2段階認証を省略できる

セキュリティ強化のために、[Enable 2FA for these roles]で「編集者(Editor)/投稿者(Author)/寄稿者(Contributor)」にチェック。
さらに、「Require 2FA for all administrators」も有効化しています。
XML-RPCの設定は、使っているアプリ/プラグインによっては衝突することもあるようなのでテストした方がいいでしょうね。

2段階認証の解除

2段階認証を有効化すると「Login Security」ページの表示が以下のように変わります。

2段階認証の解除とリカバリーコードの再生成

2段階認証を解除/無効にしたい場合は、[Wordfence 2FA Active]の項目で[DEACTIVATE]ボタンをクリック。

リカバリーコードの再生成

同画面でリカバリーコードの再生成も可能です。

リカバリーコードを再生成したい場合は、[Recovery Codes]の項目で[GENERATE NEW CODES]ボタンをクリック。

コードを再生成した場合、以前生成した全てのコードは使用できなくなります。

補足事項

コードの入力方法について

ログイン画面の表示

2段階認証のプロンプトが表示されない場合

使用しているプラグインやテーマによっては、(上記画像右側のような)二段階認証のプロンプトが表示されないことがあるらしいです。

その際は、(上記画像左側のような)通常ログイン画面に表示される「パスワード」の入力欄に、パスワードに続けてコードを入力することでもログインできます。

【例:パスワード「abcdefg」、コード「123456」の場合】
パスワード入力欄に[abcdefg123456]と入力
※パスワードとコードの間にスペースは不要

リカバリーコードの使い方

使い方は、基本的に認証アプリのコードと同じです。

2段階認証のプロンプトが表示されない場合の入力方法も通常のコードと同じです。

【例:コード[1234 abcd 5678 efgh]の場合】
入力欄に[1234 abcd 5678 efgh]と入力
※4文字毎に半角スペースが必要なようです
リカバリーコードは、4×4の英数字16文字で構成されていて、一度に「5つ」生成されます。各コードの使用回数は1回限りです。
コードを再生成した場合は、以前生成した全てのコードが使用できなくなります。

ログインできなくなった場合

「端末の故障/紛失で認証アプリを使えない」+「リカバリーコードも紛失」などでログインできなくなった場合の対象方法です。

Wordfenceプラグイン自体を無効化すれば2段階認証機能も無効化できるので、FTP/SSHでサーバーにアクセスして、「プラグインを削除する」or「プラグインのディレクトリの名前を一時的に変える(一時的に無効化する)」等で対処できるそうです。

Wordfenceのディレクトリは[~/wp-contens/plugins/wordfence]です。

プラグインのディレクトリの名前を一時的に変更する方法の場合、

  1. FTP等でWordfenceのディレクトリ名を変更
    • 変更前:~/wp-content/plugins/wordfence
    • 変更後:~/wp-content/plugins/wordfence-disabled
    • 一時的に変更するだけなのでディレクトリ名は適当でOK
    • ディレクトリ名を変えることでプラグインを無効化できる
  2. Wordfenceの2段階認証が無効化されるのでWordPressにログイン
    • この時点ではWordfenceプラグインは管理画面に表示されない
  3. 変更したWordfenceのディレクトリ名をFTPで元に戻す
    • WordPressにはログインしたまま
  4. WordPressの管理画面を再読込/更新する
    1. 適当にダッシュボードのメニューなどをクリック
    2. ディレクトリ名が元に戻ってプラグインが正常に有効化されていればメニューに「Wordfence」が表示される
  5. Wordfenceの「Login Security」にアクセスして諸々を再設定する

2段階認証は、セキュリティが強固になる反面、設定ミスや認証手段の喪失でログインできなくなる可能生もあるため要注意ですな。

まとめ

今回のOTP設定で、うちのWordPressへのログイン認証は、[ベーシック認証]+[ユーザー名/パスワード]+[ワンタイムパスワード]の”3段階”的な感じになりました。

厳密には、ベーシック認証とユーザー名/パスワードによる「知識認証」×2段階に、ワンタイムパスワードの「所有認証」を加えた、[2段階+2要素]といったところでしょうか。

追加の設定で、全ての管理者に2段階認証を適用できるのも不正アクセス対策に有効そうです。管理者自身の設定ミスや、WordPress/プラグインの脆弱性で他の認証を突破されてしまった際に、防衛線の一つになってくれるかな?

Wordfenceを利用しているなら簡単に導入できるので、試してみるのも良いかもしれませんね。

スポンサーリンク
スポンサーリンク
WordPress
この記事をシェアする
どんぱっぱをフォローする
スポンサーリンク
となはざな
コメントの通知/購読設定
受け取る通知
guest
0 Comments
Inline Feedbacks
View all comments
タイトルとURLをコピーしました