自社のような小さな会社のサイトが狙われるはずがない、という認識は事実と異なります。WordPressへの攻撃は、企業規模を選んで行われるものではなく、機械的に世界中のサイトへ無差別に実行されています。この記事では、ログイン画面が実際にどれだけ攻撃を受けているのか、その仕組みと、専門知識がなくても今日から実施できる対策を解説します。
攻撃は人が選んでいるのではなく機械が総当たりしている
まず攻撃の実態を正しく理解してください。狙われる理由に「自社の事業内容」は関係ありません。
WordPressのログイン画面は場所が決まっている
WordPressで作られたサイトは、ドメインの後ろに wp-login.php または wp-admin を付ければログイン画面が開きます。この場所が世界共通で決まっていること自体が、攻撃者にとっての最大の利点です。攻撃側は、サイトの中身を調べる必要すらありません。(すべての家の玄関が同じ位置にあると分かっている泥棒のようなものです)
攻撃は自動化されたプログラムが実行している
攻撃者は、WordPressで作られたサイトを自動収集し、そこに対して機械的にログイン試行を繰り返します。1サイトあたり数百回から数千回の試行が、毎日発生します。セキュリティベンダーのWordfenceは、WordPressサイトへの攻撃状況とプラグイン・テーマの脆弱性情報を継続的に公表しています(出典 Wordfence Blog)。
侵入の目的はサイトの内容ではない
攻撃者が欲しいのは、自社の顧客情報だけとは限りません。侵入したサーバーは、スパムメールの送信元、フィッシングサイトの設置場所、他サイトへの攻撃の踏み台として利用されます。被害者になるだけでなく、加害者にされるのが最も深刻な問題です。IPAも、Webサイトの改ざんによる被害を継続的に注意喚起しています(出典 IPA 情報セキュリティ10大脅威)。
今日から実施できる対策は5つ
専門業者に頼まなくても、管理画面から実施できる対策があります。効果の大きい順に紹介します。
ログイン名にadminやドメイン名を使わない
攻撃はまずユーザー名の推測から始まります。admin、administrator、会社名、ドメイン名は最初に試される候補です。これらを使っていると、攻撃者はパスワードだけを当てればよい状態になります。ユーザー名を推測されにくいものにするだけで、攻撃の難易度は倍以上になります。
既に admin というアカウントを使っている場合、名前の変更はできないため、別名の管理者アカウントを新規作成し、既存アカウントを削除する手順になります。削除時は投稿の引き継ぎ先を必ず指定してください。
投稿者名をログイン名と別にする
WordPressは初期状態で、記事の著者表示にログイン名を使う場合があります。この状態では、記事ページを見るだけでログイン名が判明します。管理画面の「ユーザー」からプロフィールを開き、「ブログ上の表示名」をログイン名と異なる名前に変更してください。
パスワードを12文字以上のランダムな文字列にする
会社名と設立年、担当者の名前と誕生日といったパスワードは、辞書攻撃で数秒から数分で破られます。WordPressのパスワード生成機能が提示する強力なパスワードをそのまま使い、パスワード管理ツールで保管してください。
| パスワードの例 | 強度 | 問題点 |
|---|---|---|
| company2020 | 極めて弱い | 辞書攻撃で即座に破られる |
| Yamada1234 | 弱い | 人名と連番の組み合わせは定番 |
| Web-kanri-2026 | やや弱い | 意味のある単語の組み合わせは推測可能 |
| x7Kq2mV9pLwZ | 強い | 管理ツールでの保管が前提になる |
ログイン試行回数の制限を導入する
同じIPアドレスから一定回数ログインに失敗したら、一時的にアクセスを遮断する仕組みです。これがあるだけで、総当たり攻撃は実質的に成立しなくなります。Wordfence・SiteGuard WP Plugin・Limit Login Attempts Reloadedなどのプラグインで実装できます。
二段階認証を管理者アカウントに設定する
パスワードに加えて、スマートフォンのアプリで生成される確認コードの入力を求める仕組みです。パスワードが漏洩しても、それだけではログインできません。管理者アカウントだけでも設定しておけば、最悪の事態は防げます。
二段階認証の設定時は、スマートフォンを紛失した場合に備えてリカバリーコードを必ず保管してください。保管していないと、自分がログインできなくなります。
ログインURLの変更は効果があるが万能ではない
よく紹介される対策ですが、位置づけを正確に理解しておく必要があります。
自動化された攻撃の大半は防げる
ログイン画面のURLを wp-login.php から別の文字列に変更すると、標準のURLを狙う自動攻撃はログイン画面にたどり着けなくなります。攻撃ログが劇的に減るため、サーバー負荷の軽減という副次的な効果もあります。
根本的な防御ではなく隠しているだけ
URLの変更は、玄関の位置を分かりにくくする対策であって、鍵を強くする対策ではありません。何らかの方法で新しいURLが判明すれば、防御効果はなくなります。パスワードの強化とログイン試行制限が本体で、URL変更は補助と考えてください。
変更後のURLを社内で確実に共有する
URLを変更したことを社内に周知していないと、担当者がログインできなくなります。変更後のURLは、社内の管理台帳とパスワード管理ツールの両方に記録してください。プラグインを停止すると元のURLに戻る仕組みのものが多い点も覚えておくと役立ちます。
侵入されたかどうかを確認する方法
すでに侵入されていないかを点検します。
ユーザー一覧に見覚えのないアカウントがないか
侵入した攻撃者は、再侵入用の管理者アカウントを作成することがあります。管理画面の「ユーザー」を開き、以下を確認してください。
- 身に覚えのないユーザー名がないか
- 管理者権限を持つアカウントが想定どおりの数か
- 退職者のアカウントが管理者のまま残っていないか
- メールアドレスが自社ドメイン以外になっているアカウントがないか
Search Consoleのセキュリティの問題を確認する
Google Search Consoleには「セキュリティの問題」というメニューがあります。Googleが不正なコンテンツを検知すると、ここに警告が表示されます。定期的に確認する習慣をつけてください。
検索結果で自社サイトを検索してみる
Googleで「site:自社ドメイン」と検索すると、インデックスされているページの一覧が表示されます。身に覚えのない外国語のページや、不自然なURLが大量に出てくる場合、改ざんされている可能性が高いです。
侵入された場合はバックアップからの復元だけでは不十分
万一の際の対応について、重要な点を書いておきます。
侵入経路を塞がなければ再度侵入される
改ざんされたサイトをバックアップから復元しても、侵入に使われた脆弱性が残っていれば、数日以内に再び侵入されます。復元と原因除去はセットでなければ意味がありません。(元通りにしたのに3日後また改ざんされた、というのは典型的な失敗パターンです)
全アカウントのパスワードを変更する
侵入が確認された場合、WordPressの全ユーザー、FTP、データベース、サーバーの管理画面、ドメイン管理会社のアカウントまで、すべてのパスワードを変更してください。どこまで情報が抜かれているか分からない以上、全面的な変更が必要です。
個人情報が保存されている場合は報告義務を検討する
問い合わせフォームの内容や会員情報がサイトに保存されている状態で侵入された場合、個人情報の漏えいにあたる可能性があります。個人情報保護委員会への報告と本人への通知が必要になるケースがあるため、早い段階で確認してください。
最後に
WordPressのログイン画面は、企業規模に関係なく毎日攻撃を受けています。しかし対策は難しくありません。推測されにくいユーザー名、12文字以上のパスワード、ログイン試行の制限、二段階認証。この4つを実施するだけで、自動化された攻撃はほぼ通用しなくなります。所要時間は1時間もかかりません。
Web管理では、月額1万円からWordPressサイトの運用保守を代行しています。セキュリティ設定の実施、不正アクセスの監視、侵入痕跡の点検まで対応可能です。「対策しているつもりだが実際どうなのか診断してほしい」というご相談も歓迎します。

