Hushfort

WordPress に二段階認証(2FA)を設定するには?

執筆:Eureka Studio · 更新日

要点

WordPress には二段階認証の機能が標準で備わっていません。TOTP に対応した 2FA プラグインをインストールし、表示される QR コードをお好きな認証アプリで読み取り、6 桁のコードを入力して確認したら、リカバリーコードをオフラインで保存します。以後、パスワードだけではアカウントに入れなくなります。wp-config.php で使える緊急用のスイッチも用意しておきましょう。

手順

  1. 1手順 1

    サイトで二要素認証をオンにする

    WordPress で「Hushfort → 二要素認証」を開き、「二要素認証を有効化」をオンにします。各ユーザーが自分のコードを設定するまで、ユーザー側には何の変化もありません。

    Hushfort の「二要素認証」タブで、有効化のスイッチがオンになり保存されている
  2. 2手順 2

    アプリで QR コードを読み取る

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

    「2FA の設定を開始」を押すと「ステップ 1: アプリに追加」が開き、認証アプリに追加するための QR コードと手動入力用の設定キーが表示される
  3. 3手順 3

    6 桁のコードで確認する

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

    「ステップ 2: 確認」に 6 桁のコードを入力して「有効化」を押し、二要素認証が有効になったところ
  4. 4手順 4

    リカバリーコードをオフラインで保存する

    設定の直後に、Hushfort は 10 個のリカバリーコードを一度だけ表示します。「コードをダウンロード (.txt)」または「印刷」を押し、スマートフォン以外の場所に保管してください。各コードは 1 回だけ使えます。

    「あなたのリカバリーコード」: 10 個の使い捨てコードと「コードをダウンロード (.txt)」「印刷」ボタン、二要素認証が有効になったことを示す表示
  5. 5手順 5

    パスワードとコードでログインする

    次回のログインでは、パスワードの後に WordPress がアプリのコードを求めます。これで、盗まれたパスワードだけでは攻撃者は何もできません。

    パスワードの後に 6 桁の確認コードを求めるログイン画面と「確認してログイン」ボタン

なぜ重要なのか

パスワードは漏れるものです。情報漏えいを起こした別のサイトで使い回されていたり、偽のログインページに入力されたり、推測されたりします。誰かがあなたのパスワードを手に入れたら、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 には二段階認証が標準で備わっていますか?

いいえ。WordPress コアが対応しているのはユーザー名とパスワードだけです。2 つ目の要素を追加するには、プラグイン、ホスティング会社のログイン保護、またはシングルサインオンのサービスが必要です。

どの認証アプリを使えばいいですか?

TOTP に対応したアプリならどれでも使えます。たとえば Google Authenticator、Microsoft Authenticator、1Password、Bitwarden、FreeOTP などです。どれも同じ QR コードを読み取れます。

スマートフォンを紛失したらどうなりますか?

リカバリーコードのいずれかでログインします。残っていない場合は、wp-config.php に define( 'GATEKEEPER_2FA_DISABLE', true ); を追加してログインし、2FA を設定し直してから、その行を削除してください。

SMS やメールの二段階認証は、アプリより優れていますか?

一般的には、アプリのコードのほうが強力な選択です。オフラインで機能し、通信途中で傍受されることがなく、メールサーバーや電話網にも依存しません。

すべてのユーザーに 2FA を設定すべきですか?

まずは、公開やサイト管理ができるユーザー全員、特に管理者から始めましょう。顧客や購読者には、通常は必要ありません。

不具合の報告・機能のリクエスト

メッセージは Hushfort の開発チームに直接届きます。

内容の種類

返信にのみ使用します。

これらの情報は返信のためだけに使用します。 プライバシー