WordPressのログインを守る基本(2段階認証・ログイン試行制限ほか)

目次

WordPressのログイン画面は、毎日のように自動化されたプログラム(ボット)からのパスワード試行を受けています。特に何もしていなければ、WordPressは試行回数に制限をかけないため、正しい組み合わせを見つけるまで延々と試し続けられるおそれがあります。

当サイト記事 難易度表記について

  • 【難易度:簡単】WordPressの管理画面だけでできる・すぐ試せること
  • 【難易度:普通】少し手間がかかる(念のため、事前にバックアップを取りましょう)
  • 【難易度:やや難しい】FTPや設定ファイルへの操作が必要(これらが分からない場合や、不慣れな場合は実施するかは慎重に検討ください)
  • 【難易度:難しい】専門の知識が必要。場合によっては致命的なトラブルにもなりかねませんので自信がない場合は専門家へご相談を

この記事では、不正ログインを防ぐためにご自身で取り組める対策を、リスクの低い順に紹介します。すべてを同時に行う必要はなく、できるところから始めるだけでも効果はありますので、無理をせず少しづつすすめてみましょう。

まず行うべき、3つの手順

時間がない方は、この3つを優先してください。いずれも管理画面の操作だけで完結します。

  1. 管理者アカウントのユーザー名が「admin」の場合は早急に変更する — 攻撃者がまず試す組み合わせが「admin」ですので、これは大至急変更しましょう。
  2. ログインの試行回数を制限するプラグインを導入する — 短時間に何度もパスワードを試せないようにしましょう
  3. 2段階認証(2FA)を有効にする — 万が一、ユーザー名やパスワードが流出してしまった時のために、もう一段の備えをしておきましょう。

※この記事の手順は、主に管理画面内で完結するものを中心に紹介しています。サーバー側のファイル編集を伴う手順は「ここから先は要注意」と明示します。

ユーザー名を「admin」にしない【難易度:普通】

攻撃ツールの多くは、まず「admin」というユーザー名に対してパスワードを試します。WordPress公式のハードニングガイドでも、「admin」や「webmaster」のような推測しやすいユーザー名を管理者アカウントに使わないよう明記されています。

WordPressでは、一度作成したアカウントのユーザー名は管理画面から変更できません。そのため、ユーザー名が「admin」になっている場合は、別名で新しい管理者アカウントを作成し、今後はそちらをメインアカウントに。古い「admin」アカウントを削除するか権限を「購読者」など格下げするのが良いでしょう(記事・コメントの引き継ぎを忘れずに)。

author番号からユーザー名が見える問題を防ぐ【難易度:やや難しい】

WordPressでは、サイトURLに /?author=1 と付けてアクセスすると、投稿者アーカイブページへ自動転送され、URLからユーザー名が判明してしまう場合があります。ユーザー名だけではログインできませんが、攻撃者にとっては必要な情報がひとつ解決してしまう事になりますので、プラグインやfunctions.phpのコードで投稿者アーカイブへのリダイレクトを制限しておくと良いでしょう。

ただし、functions.phpの編集は誤ると画面が真っ白になるなど表示できなくなるリスクを伴いますので、実行は慎重に行ってください。

プラグインでログインの試行回数を制限する【難易度:普通】

WordPressは初期状態では、パスワードを何度間違えてもブロックしません。ログイン試行回数を制限するプラグインを入れると、一定回数連続で失敗したIPアドレスを一時的にブロックできます。

代表的なプラグインとしては、

  • SiteGuard WP Plugin(日本語対応・ログインURL変更などの機能も含む)があります。
  • Limit Login Attempts Security(旧名 Limit Login Attempts Reloaded)(英語・wordpress.orgで100万以上のアクティブインストール)

なお、正しい管理者・編集者(=関係者の人間)も入力を間違える事はあるので、目安として「5〜6回失敗で30分程度のブロック」にしておけばよいかと。適切な数値はサイトの状況によって変わるため、プラグインの推奨値をひとつの参考にしてください。

SiteGuard WP Pluginは日本語に対応し、幅広いセキュリティ機能が搭載されている優秀なプラグイン
SiteGuard WP Pluginは日本語に対応し、幅広いセキュリティ機能が搭載されている優秀なプラグイン

WordPress公式の「Brute Force Attacks」ドキュメントでも、アプリケーションレベルのプラグインによる試行制限より、ホスティングのWAF(後述)やサーバーレベルでの対処の方がリソース効率がよいと説明されています。ただし、多くの国内レンタルサーバーではWAFが標準提供されており、プラグインと組み合わせて使う方法も有効です。

プラグインで2段階認証(2FA)を有効にする【難易度:普通】

2段階認証(2要素認証/2FA)は、パスワードの入力に加えて、スマートフォンの認証アプリで発行される6桁のコードをログイン時に求める仕組みです。万が一にIDとパスワードが流出してしまった場合でも、認証アプリを設定したスマートフォンを持っていなければログインされる事はありません。

WordPressの本体機能には2FAが含まれていないため、現実的にはこの機能もプラグインで実装する事になるでしょう。オススメプラグインとしては……

  • Two Factor — 無料。認証アプリ(TOTP)・メール・バックアップコードに対応。WordPress の2要素認証機能プロジェクト由来で、まず2FAだけ1つ入れたい場合に向くシンプルな選択肢。
  • Wordfence Security — 無料版で認証アプリ(TOTP)の2FAが使える。ファイアウォール・マルウェアスキャンを含む総合型プラグイン。
  • miniOrange 2要素認証 — 認証アプリ(TOTP)に加え、メール・SMS など多くの方式に対応。ただし無料版は2FAを設定できるのが最大5ユーザーまでに限定。1人〜少人数運営であれば十分でしょう。

といった所でしょうか。2段階認証の導入にあたっては、プラグインだけでなくアプリ側の設定や紐づけも必要ですので、このあたりは後日別の記事でご紹介したいと思います。

強いパスワードを使う、他サイト・サービスとの使い回しを避ける【難易度:簡単】

WordPress公式の「パスワードのベストプラクティス」では、20文字以上で辞書に載っていない文字列を推奨しています。管理画面の「ユーザー → プロフィール」からパスワードを変更すると、強度メーターが表示されます。

使い回しが特に危険です。他のサービスから流出したID・パスワードのリストを使い、WordPressへのログインを試みる「パスワードリスト攻撃」は、パスワードが複雑でも流出元が弱ければ突破されることがあります。パスワードマネージャー(ブラウザ内蔵のものも含む)を使ってサイトごとに異なるランダムなパスワードを設定することが、現実的な対策として有効です。

反面、普段とは異なるログイン環境では、パスワードがわからなくなって不便をする事もありますので、そういった場合の対策も考えておきましょう。

プラグインでログインURLの変更【難易度:普通】

/wp-login.php というURLはWordPressの標準ログインページとして広く知られており、自動化された攻撃の多くがこのURLを直接たたきます。前述のSiteGuard WP PluginなどのプラグインでログインURLをランダムな文字列に変更すると、総当たり攻撃の試みが届きにくくなります。

ただし、この対策には注意点があります。変更後のURLを失念するとご自身がログインできなくなります。URLは必ずパスワードマネージャー等に記録し、FTPやサーバーのファイルマネージャーからプラグインを無効化できる手段を残しておいてください。

また、ログインURLの変更だけでセキュリティが完結するわけではなく、試行回数制限や2FAとの組み合わせで効果を発揮します。

総合セキュリティプラグインの活用【難易度:普通】

上記の対策を個別のプラグインで行う代わりに、総合セキュリティプラグインを1本入れて管理する方法もあります。

国内サイトで多く使われる傾向があるのは、SiteGuard WP Plugin(ログインURL変更・試行回数制限・画像認証・不審なログインのメール通知を含む・日本語対応)とWordfence Security(ファイアウォール・マルウェアスキャン・2FA・試行回数制限・英語メイン)です。

機能が多いほど安全とは限りません。設定の意味を理解して使わないと、誤設定でご自身がログインできなくなったり、正常な操作をブロックするケースもあります。プラグインを新たに追加するときは、まずバックアップを取り、1つずつ確認しながら導入してください。

サーバー側のWAF(Web Application Firewall)を設定する【難易度:普通】

多くの国内レンタルサーバー(Xserver・ConoHa WINGなど)はWAF(ウェブアプリケーションファイアウォール)を提供しています。WAFはサーバー側でWordPressへの通信をフィルタリングし、不正なリクエストをWordPressが処理する前に弾く仕組みです。

WAFはサーバーのコントロールパネルから有効化できる場合が多いですが、初期状態では無効になっていることがあります(Xserverはオフが初期値という情報もあります)。ご利用のサーバーの設定を一度確認してみてください。

なお、WAFが有効な環境では、管理画面での設定保存や一部プラグインの操作で「403エラー」が出ることがあります。これはWAFが正常な操作を誤って遮断するケース(誤検知)です。一時的にWAFを無効にして操作し、完了後に再度有効にする手順が各サーバーで案内されていることが多いです。

改ざん・不正ログインの痕跡が疑われるとき

パスワードを変えていないのに知らないユーザーが増えていた、覚えのないファイルが存在する、管理画面が急におかしくなったなど、すでに不正アクセスが発生している可能性があるときは、この記事の予防策ではなく、まず被害の範囲を確認する必要があります。

マルウェアの検出・除去やデータベースの調査は、誤った操作でサイト全体を壊してしまうリスクを伴います。ご自身での対処が難しい場合は、フォームからご相談いただくか、ご利用のホスティング会社のサポートへ連絡することをお勧めします。相談の際は「いつから」「どんな症状があるか」「直前に行った操作」を添えていただくと、状況把握が早くなります。

よくある質問

  • ログインURLを変えたら、自分がログインできなくなりました。
    • プラグインがURLを変更しているので、FTPやサーバーのファイルマネージャーでプラグインを無効化すると元のURLに戻ります。wp-content/plugins/ 内のプラグインフォルダの名前を変えることで無効化できます。無効化の手順は「WordPressにログインできないときの対処法」の記事もご参照ください。
  • 2FAの認証アプリを替えたいのですが。
    • 新しい端末や別の認証アプリに移す場合は、旧端末が使える間に設定を切り替えます。すでに旧端末が使えない場合は、設定時に保存したバックアップコードでログインしてください。バックアップコードも失ってしまった場合は、サーバーのファイルマネージャーやFTPで2FAプラグインを一時的に無効化することで管理画面に入れます。
  • プラグインを複数入れると競合しますか。
    • 同じ機能(試行回数制限など)を持つプラグインを重複して有効化すると、動作が不安定になることがあります。総合セキュリティプラグインを1本使うか、機能が重ならないように選ぶのが一般的です。
  • スパムコメントはログインセキュリティと関係ありますか。
    • 直接の関係はありません。スパムコメントは別のしくみ(コメントフォームへの自動投稿)を使うため、対策も異なります。コメントスパムが多いときは「スパムコメント対策」のプラグインが有効です。

※ 本記事は一般的な対処方法の解説です。WordPressやサーバーの構成によって手順や結果は異なります。ファイルやデータベースの操作は、誤るとサイトが表示できなくなることがあるため、作業前に必ずバックアップを取り、ご自身の判断と責任の範囲で行ってください。無理に進めず、専門スタッフや保守契約担当者にご相談ください。ご相談先がない場合は、当サイトへお気軽にご相談ください。

今すぐ相談する(ご相談無料)