WordPress に二段階認証(2FA)を設定するには?
執筆:Eureka Studio · 更新日
要点
WordPress には二段階認証の機能が標準で備わっていません。TOTP に対応した 2FA プラグインをインストールし、表示される QR コードをお好きな認証アプリで読み取り、6 桁のコードを入力して確認したら、リカバリーコードをオフラインで保存します。以後、パスワードだけではアカウントに入れなくなります。wp-config.php で使える緊急用のスイッチも用意しておきましょう。
手順
1手順 1
サイトで二要素認証をオンにする
WordPress で「Hushfort → 二要素認証」を開き、「二要素認証を有効化」をオンにします。各ユーザーが自分のコードを設定するまで、ユーザー側には何の変化もありません。

2手順 2
アプリで QR コードを読み取る
「2FA の設定を開始」を押します。お好きな認証アプリで QR コードを読み取るか、その下に表示される設定キーを入力します。QR コードはあなた自身のサーバー上で描画されるため、秘密鍵がサーバーの外に出ることはありません。ほかのユーザーも、自分のプロフィール画面で同じ設定を行えます。

3手順 3
6 桁のコードで確認する
「ステップ 2: 確認」で、アプリに表示されたコードを入力して「有効化」を押します。コードは 30 秒ごとに変わるので、今表示されているものを使ってください。

4手順 4
リカバリーコードをオフラインで保存する
設定の直後に、Hushfort は 10 個のリカバリーコードを一度だけ表示します。「コードをダウンロード (.txt)」または「印刷」を押し、スマートフォン以外の場所に保管してください。各コードは 1 回だけ使えます。
5手順 5
パスワードとコードでログインする
次回のログインでは、パスワードの後に WordPress がアプリのコードを求めます。これで、盗まれたパスワードだけでは攻撃者は何もできません。
なぜ重要なのか
パスワードは漏れるものです。情報漏えいを起こした別のサイトで使い回されていたり、偽のログインページに入力されたり、推測されたりします。誰かがあなたのパスワードを手に入れたら、WordPress にはその人とあなたを見分けることができません。
二段階認証 (このプラグインでの名称は「二要素認証 (2FA)」) は、あなただけが持っているものを追加します。スマートフォンのアプリに表示され、30 秒ごとに変わる 6 桁のコードです。ログインするには、攻撃者はあなたのパスワードとスマートフォンの両方を同時に手に入れなければなりません。管理者アカウントなら、この変更ひとつで、サイトが乗っ取られる最もよくある経路がなくなります。
これらのコードの基になっている標準規格は TOTP (時間ベースのワンタイムパスワード) です。オープンな規格で、オフラインで動作し、主要な認証アプリはすべて対応しているため、特定のベンダーに縛られることはありません。
よくある間違い
- リカバリーコードを保存しない。 2FA をオンにした後、リカバリーコードなしでスマートフォンを紛失するのが、自分を締め出してしまう最もよくあるパターンです。印刷するか、同じスマートフォンに入っていないパスワードマネージャーに保管してください。
- 1 台のスマートフォンにすべてを入れる。 コードとリカバリーコードが同じ端末にあると、それを紛失したときに両方を失います。
- 2FA がすべての入口を守ると思い込む。
xmlrpc.phpがまだパスワードを受け付けていたり、コードの失敗がカウントされていなかったりすると、攻撃者は推測を続けられます。XML-RPC のログインを塞ぎ、2FA の失敗がログイン制限のカウントに含まれるようにしてください。 - サードパーティのサービスで作られた QR コード。 外部の画像サービスを使って QR コードを描画する仕組みもあり、その場合は秘密鍵がインターネット経由で送られます。自分のサーバー上で作られる QR コードを選びましょう。
- 計画なしにセキュリティソルトを変更する。 仕組みによっては、2FA の秘密鍵が WordPress のソルトに結び付いています。ソルトが変わったときにプラグインがどう動くかを把握しておきましょう。
プラグインを使わない方法
コードを書かずに WordPress へ TOTP の 2FA を追加する、まっとうな方法はありません。WordPress プラグイン以外の選択肢は次のとおりです:
- ホスティング会社のログイン保護。 マネージドホスティングの中には、
wp-adminの手前に 2FA の層を置くところがあります。使える環境なら便利ですが、ホスティング会社を移ると持ち運べません。 - シングルサインオン。 規模の大きいチームなら、2FA を強制する ID プロバイダー経由で WordPress にログインさせられます。強力ですが、ほとんどの小規模サイトには設定の手間が大きすぎます。
- wp-admin への HTTP ベーシック認証。 これは 2 つ目の要素ではなく、2 つ目のパスワードを追加するだけです。ボットの足止めにはなりますが、漏えいしたパスワードのリストに両方が含まれていることもあります。
自作する場合は、各ユーザーの秘密鍵を暗号化して保存し、わずかな時刻のずれを許容してコードを検証し、コード入力に回数制限をかけ、リカバリーコードを生成し、管理者がリセットできるようにする必要があります。セキュリティ上重要なコードを、ひとりで大量に保守することになります。
うまくいかないときは
コードが常に「正しくない」と言われる。 スマートフォンの時刻を確認してください。TOTP は時計に依存します。スマートフォンの設定で時刻の自動設定をオンにしましょう。
スマートフォンを紛失した。 コード入力画面でリカバリーコードを使います。各コードは 1 回だけ使えます。
リカバリーコードが残っていない。
wp-config.phpに次の行を追加します:define( 'GATEKEEPER_2FA_DISABLE', true );ログインし、新しいスマートフォンで 2FA を設定し直して新しいコードを保存したら、その行を削除してください。
別の管理者に助けてもらう。 管理者なら、あなたのユーザープロフィールからあなたのアカウントの 2FA をリセットできます。
詳しい手順は ログイン URL を変更したら wp-admin が 404 に?ログインし直す方法 にまとめています。
Hushfort なら
二要素認証は、無料の WordPress セキュリティプラグイン Hushfort Security に追加する有料アドオン Hushfort Pro の機能です。
Hushfort の 二要素認証 レイヤーは TOTP を使うため、どの認証アプリでも使えます。
- QR コードはローカルで生成されます。秘密鍵がサーバーの外に出ることはありません。
- 各ユーザーが自分のプロフィール画面から 2FA を設定し、管理者はそれをリセットできます。
- リカバリーコードはダウンロードも印刷もできます。
- 秘密鍵は暗号化して保存されます (AES-256 と HMAC による検証)。
- WordPress のセキュリティソルトが変わっても、2FA が黙ってオフになることはありません。影響を受けたユーザーはリカバリーコードでログインし、2FA の再設定を求められます。
wp-config.phpに別の鍵GATEKEEPER_2FA_KEY(32 文字以上) を設定すれば、ソルトの影響を受けなくすることもできます。 - コードの失敗は、ログイン制限のカウントに含まれます。
よくある質問
WordPress には二段階認証が標準で備わっていますか?
どの認証アプリを使えばいいですか?
スマートフォンを紛失したらどうなりますか?
SMS やメールの二段階認証は、アプリより優れていますか?
すべてのユーザーに 2FA を設定すべきですか?
関連するハウツー
WordPress でログイン試行回数を制限するにはどうすればいいですか?
WordPress でログイン試行回数を制限し、総当たり攻撃を止める方法。効果的な設定値、プラグインなしのコード、見落としがちな抜け道を解説します。
手順を読むログイン URL を変更したら wp-admin が 404 になりました。なぜですか?どうすればログインし直せますか?
ログイン URL を変えたら wp-admin が 404 に。慌てずに WordPress へ戻る 4 つの方法を、簡単な順に解説します。
手順を読むWordPress のログイン URL を変更するには?
WordPress のログイン URL を変更して wp-admin を隠す 5 つの手順。ログアウト前のテストと、URL を忘れたときの戻り方も解説します。
手順を読む

