
「admin」のままで運用してて、ヒヤッとした話
結論から言うと、WordPressのユーザー名は、パスワードと同じくらい重要。推測されにくいユーザー名を使うことで、ブルートフォース攻撃のリスクを大幅に減らせる。
これは確か、3年くらい前の話だったかな。クライアントのWordPressサイトで、セキュリティ診断をやってた時のこと。ログイン画面を見たら、ユーザー名が「admin」のままだった。「え、まだadminなんですか?」って聞いたら、「インストールした時のままです」って。
正直、ちょっとヒヤッとした。っていうか、かなりヒヤッとした。adminって、ハッカーが最初に試すユーザー名なんだよね。パスワードがどんなに強くても、ユーザー名がadminだと、ブルートフォース攻撃の標的になりやすい。

すぐにクライアントに「ユーザー名を変更しましょう」って提案した。で、新しいユーザー名を作って、adminを削除した。これだけで、セキュリティが大幅に向上する。
この経験から学んだのは、ユーザー名の重要性。パスワードだけじゃなくて、ユーザー名も推測されにくいものを使う必要がある。当たり前のことなんだけど、意外と見落とされがち。
今回は、推測されにくいWordPressのユーザー名の具体的な付け方を紹介していく。僕の経験も含めて、できるだけ実践的に書いていくつもり。
なぜユーザー名が重要なのか
まず、なぜユーザー名が重要なのか、簡単に説明しておこう。っていうか、これ知らない人も結構いるんじゃないかな。
WordPressにログインするには、ユーザー名とパスワードの両方が必要。つまり、ハッカーがログインするには、この2つを突破しないといけない。
でも、ユーザー名が「admin」だったら?ハッカーはユーザー名を突破したも同然。あとはパスワードを当てるだけ。これは本当に危険。
ブルートフォース攻撃のリスク
ブルートフォース攻撃っていうのは、総当たり攻撃のこと。ハッカーが自動化ツールを使って、パスワードを片っ端から試していく攻撃。
ユーザー名が「admin」だと、ハッカーはパスワードだけを試せばいい。でも、ユーザー名が推測されにくいものだと、ハッカーはユーザー名とパスワードの両方を試さないといけない。これは時間がかかるし、成功率も下がる。
僕が過去に対応した案件で、adminを狙ったブルートフォース攻撃を受けてたサイトがあった。サーバーのログを見たら、adminへのログイン試行が数千回も記録されてた。幸い、パスワードが強かったから破られなかったけど、あれは本当に怖かった。
ユーザー名が漏洩する経路
実は、WordPressのユーザー名は、意外と簡単に漏洩しちゃう。これが厄介なんだよね。
Author Archive: WordPressには、投稿者ごとのアーカイブページがある。https://example.com/?author=1 にアクセスすると、https://example.com/author/username/ にリダイレクトされる。このURLから、ユーザー名が特定される。
REST API: WordPressのREST APIを使うと、ユーザー情報を取得できる。https://example.com/wp-json/wp/v2/users にアクセスすると、ユーザー名が表示される。これは結構知られてない。
投稿者名: 記事の投稿者名として、ユーザー名が表示されることがある。テーマによっては、デフォルトでユーザー名が表示される。
こういった経路から、ユーザー名が漏洩する可能性がある。だから、ユーザー名を推測されにくいものにするだけじゃなくて、漏洩を防ぐ対策も必要。
推測されやすいユーザー名の例
まず、推測されやすいユーザー名の例を見ておこう。これは絶対に避けるべき。
admin
これは最悪。ハッカーが最初に試すユーザー名。WordPressをインストールした時のデフォルトが「admin」だったから、今でもadminを使ってるサイトは多い。でも、これは本当に危険。
administrator
adminの次に試されるユーザー名。これも避けるべき。っていうか、adminと大して変わらない。
サイト名やドメイン名
例えば、サイト名が「Example Blog」だったら、「example」とか「exampleblog」とか。これも推測されやすい。ハッカーは、サイト名やドメイン名からユーザー名を推測することが多い。
個人名や会社名
「tanaka」とか「yamada」とか、個人名をユーザー名にするのも危険。会社名も同じ。これは推測されやすいし、ソーシャルエンジニアリング攻撃の標的にもなりやすい。
test, user1, user2
「test」とか「user1」とか、一般的な名前も避けるべき。これはハッカーが辞書攻撃で試す単語に含まれてることが多い。
僕が過去に見たサイトで、「test」っていうユーザー名を使ってるところがあった。「これはテスト用ですか?」って聞いたら、「いえ、本番です」って。正直、びっくりした。
推測されにくいユーザー名の具体的な付け方
ここからは、推測されにくいユーザー名の具体的な付け方を紹介していく。これは本当に大事。

ランダムな文字列を使う
一番安全なのは、ランダムな文字列を使うこと。例えば、k8Jx2mPq とか m3Rp9Lw5 とか。
これは推測されにくいし、辞書攻撃にも強い。ただし、覚えにくいのが難点。でも、パスワードマネージャーを使えば、覚える必要はない。僕もパスワードマネージャーに保存してる。
具体的な例
k8Jx2mPqm3Rp9Lw5T7nQ4xZr
これくらいランダムだと、まず推測されない。っていうか、推測するのは不可能に近い。
意味のない単語の組み合わせ
ランダムな文字列は覚えにくいから、意味のない単語の組み合わせを使うのもあり。例えば、blue_tiger_2024 とか moon_coffee_77 とか。
これは覚えやすいし、推測されにくい。ただし、単語が辞書に載ってるものだと、辞書攻撃に弱くなる可能性がある。だから、単語の組み合わせに数字や記号を加えるのがおすすめ。
具体的な例
blue_tiger_2024moon_coffee_77green_pencil_99x
これくらいだと、覚えやすいし、推測されにくい。僕もこのパターンをよく使う。
数字と文字の組み合わせ
数字と文字を組み合わせるのも効果的。例えば、user7x9m3 とか wp8k2n5 とか。
これは推測されにくいし、覚えやすい。ただし、「user」とか「wp」とか、一般的な単語を使うと、推測されやすくなる可能性がある。だから、一般的な単語は避けた方がいい。
具体的な例
k7x9m3zn8k2p5wr3t7q9m
これくらいだと、推測されにくいし、覚えやすい。
大文字小文字の混在
大文字と小文字を混在させるのも効果的。例えば、BlUeTiGeR とか MoOnCoFfEe とか。
これは推測されにくいし、覚えやすい。ただし、WordPressのユーザー名は大文字小文字を区別しないから、セキュリティ的な効果は限定的。でも、やらないよりはマシ。
具体的な例
BlUeTiGeR2024MoOnCoFfEe77GrEeNpEnCiL99
これくらいだと、推測されにくい。
自動生成ツールの活用
ユーザー名を自分で考えるのが面倒なら、自動生成ツールを使うのもあり。パスワード生成ツールをユーザー名にも使える。
例えば、1PasswordとかLastPassとか、パスワードマネージャーには、ランダムな文字列を生成する機能がある。これをユーザー名にも使える。
あと、オンラインのランダム文字列生成ツールもある。「random string generator」でググれば、いくらでも出てくる。僕もたまに使う。
ユーザー名を変更する方法
ここからは、既存のユーザー名を変更する方法を紹介していく。っていうか、これが一番知りたいところだと思う。

新規ユーザーを作成して、古いユーザーを削除
WordPressは、ユーザー名を直接変更できない。だから、新しいユーザーを作成して、古いユーザーを削除する、っていう手順が必要。
手順1: 新規ユーザーの作成
まず、WordPressの管理画面にログインする。左のメニューから「ユーザー」→「新規追加」を選択。
新規ユーザー追加画面で、以下の情報を入力する。
- ユーザー名: 推測されにくいユーザー名を入力
- メールアドレス: 既存のユーザーとは別のメールアドレスを入力(重要)
- パスワード: 強力なパスワードを入力
- 権限グループ: 「管理者」を選択
「新規ユーザーを追加」をクリック。
手順2: メールアドレスの注意点
ここで注意が必要。WordPressは、同じメールアドレスを持つユーザーを作成できない。だから、新しいユーザーには、一時的にダミーのメールアドレスを使う必要がある。
例えば、Gmailのエイリアス機能を使うと便利。example@gmail.com を使ってるなら、example+temp@gmail.com っていうエイリアスを使える。これは同じメールボックスに届くけど、WordPressは別のメールアドレスとして認識する。
手順3: ログアウトと再ログイン
新しいユーザーを作成したら、一度ログアウトする。そして、新しいユーザー名でログインする。
これで、新しいユーザーで管理画面にアクセスできる。ここまでは簡単。
手順4: 古いユーザーの削除
新しいユーザーでログインしたら、古いユーザーを削除する。左のメニューから「ユーザー」→「ユーザー一覧」を選択。
古いユーザー(例えば「admin」)にマウスを合わせて、「削除」をクリック。
手順5: 投稿のアサイン(超重要)
ここが一番重要。ユーザーを削除する時に、「このユーザーのコンテンツをどうしますか?」っていう選択肢が出てくる。
ここで、「すべてのコンテンツを以下のユーザーのものにする」を選択して、新しいユーザーを指定する。これを忘れると、投稿が全部消えちゃう。マジで注意。
僕も過去に、これを忘れて投稿を消しちゃったことがある。幸い、バックアップがあったから復旧できたけど、あの時は本当に焦った。クライアントには言えなかったけど。
手順6: 削除を実行
投稿のアサインを確認したら、「削除を実行」をクリック。
これで、古いユーザーが削除されて、新しいユーザーに投稿が引き継がれる。
手順7: メールアドレスの変更(オプション)
新しいユーザーのメールアドレスを、元のメールアドレスに変更したい場合は、ここで変更できる。
「ユーザー」→「プロフィール」を開いて、メールアドレスを変更する。これで、元のメールアドレスに戻せる。
プラグインを使った変更
新規ユーザーを作成して削除するのが面倒なら、プラグインを使う方法もある。
Username Changerっていうプラグインを使えば、ユーザー名を直接変更できる。ただし、データベースを直接変更するから、リスクがある。バックアップは必須。
僕は、プラグインよりも、新規ユーザーを作成する方法をおすすめする。こっちの方が安全だし、確実。
ユーザー名の漏洩を防ぐ追加対策
ユーザー名を推測されにくいものにしても、漏洩する可能性はある。だから、漏洩を防ぐ追加対策も必要。

ニックネームの設定
WordPressの「ユーザー」→「プロフィール」で、ニックネームを設定できる。
ニックネームを設定したら、「ブログ上の表示名」をニックネームに変更する。これで、記事の投稿者名がユーザー名とは別になる。
これは簡単だし、効果的。僕も必ずやってる。
Edit Author Slugプラグイン
Edit Author Slugっていうプラグインを使えば、Author ArchiveのURLを変更できる。
例えば、ユーザー名がk8Jx2mPqだったとしても、Author ArchiveのURLをhttps://example.com/author/john/に変更できる。これで、URLからユーザー名が特定されるのを防げる。
これは結構効果的。僕もよく使う。
REST APIのユーザーエンドポイントを無効化
REST APIのユーザーエンドポイントを無効化することで、ユーザー情報の漏洩を防げる。
functions.phpに以下のコードを追加する。
add_filter('rest_endpoints', function($endpoints) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
if (isset($endpoints['/wp/v2/users/(?P<id>[\d]+)'])) {
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
}
return $endpoints;
});これで、REST APIからユーザー情報を取得できなくなる。これは結構重要。
Author Archiveを無効化
Author Archiveを無効化することで、ユーザー名の漏洩を完全に防げる。
functions.phpに以下のコードを追加する。
add_action('template_redirect', function() {
if (is_author()) {
wp_redirect(home_url());
exit;
}
});これで、Author Archiveにアクセスしても、トップページにリダイレクトされる。これは効果的だけど、Author Archiveを使ってる場合は注意が必要。
パスワードも忘れずに強化
ユーザー名を推測されにくいものにしても、パスワードが弱かったら意味がない。パスワードも忘れずに強化しよう。

強力なパスワードの条件
強力なパスワードの条件は、こんな感じ。
- 12文字以上: 長ければ長いほど安全
- 大文字小文字の混在: AとaとAを混ぜる
- 数字の使用: 0〜9を含める
- 記号の使用: !@#$%^&*()などを含める
- 辞書にない単語: 辞書攻撃を防ぐ
例えば、Tr7!mK9@pL2# みたいなパスワード。これは推測されにくいし、辞書攻撃にも強い。
パスワードマネージャーの活用
強力なパスワードは覚えにくい。だから、パスワードマネージャーを使うのがおすすめ。
1PasswordとかLastPassとかBitwardenとか、いろんなパスワードマネージャーがある。これを使えば、強力なパスワードを生成して、安全に保存できる。
僕も1Passwordを使ってる。これは本当に便利。クライアントにも「パスワードマネージャーを使ってください」って言ってる。
二要素認証の導入
パスワードだけじゃ不安なら、二要素認証を導入するのもあり。
Google AuthenticatorとかAuthyとか、二要素認証アプリを使えば、ログイン時に追加の認証コードが必要になる。これは本当に安全。
WordPressには、二要素認証を導入するプラグインがいくつかある。Two Factor AuthenticationとかWordfence Securityとか。これを使えば、簡単に二要素認証を導入できる。
僕も必ず二要素認証を導入してる。これは本当におすすめ。
よくある質問
Q1: ユーザー名を変更すると、投稿が消えますか?
新規ユーザーを作成して、古いユーザーを削除する時に、投稿のアサインを忘れなければ、投稿は消えない。
削除時に「すべてのコンテンツを以下のユーザーのものにする」を選択して、新しいユーザーを指定すれば、投稿は新しいユーザーに引き継がれる。これは本当に大事。
Q2: ユーザー名は何文字くらいがいいですか?
特に決まりはないけど、8文字以上がおすすめ。短すぎると推測されやすいし、長すぎると覚えにくい。
僕は、8〜12文字くらいのユーザー名をよく使う。これくらいが丁度いい。
Q3: ユーザー名に記号は使えますか?
WordPressのユーザー名には、英数字とアンダースコア(_)、ハイフン(-)、ピリオド(.)、アットマーク(@)が使える。
それ以外の記号は使えない。だから、パスワードほど複雑にはできない。でも、これだけでも十分推測されにくいユーザー名を作れる。
まとめ
WordPressのユーザー名は、パスワードと同じくらい重要。推測されにくいユーザー名を使うことで、ブルートフォース攻撃のリスクを大幅に減らせる。
推測されやすいユーザー名(admin、administrator、サイト名、個人名など)は避けて、ランダムな文字列や意味のない単語の組み合わせを使おう。
ユーザー名を変更する時は、新規ユーザーを作成して、古いユーザーを削除する。この時、投稿のアサインを忘れずに。これを忘れると、投稿が全部消えちゃう。
ユーザー名の漏洩を防ぐために、ニックネームの設定、Edit Author Slugプラグイン、REST APIのユーザーエンドポイントの無効化なども忘れずに。
あと、パスワードも忘れずに強化しよう。強力なパスワードを使って、パスワードマネージャーで管理する。二要素認証も導入すれば、さらに安全。
これらの対策をすれば、WordPressのセキュリティは大幅に向上する。僕も必ずやってる。クライアントにも「これは必須です」って言ってる。

WordPressのセキュリティ、不安に思っていませんか?

「自分のサイトは大丈夫だろうか…」
「何から手をつければいいか分からない…」
もしあなたが少しでもそう感じているなら、専門家によるセキュリティ診断を受けてみることを強くお勧めします。
上記のサイトでは、WordPressのプロがあなたのサイトの脆弱性を無料で診断してくれます。問題が見つかれば、具体的な対策方法についてもアドバイスをもらえます。手遅れになる前に、一度プロの目でチェックしてもらい、安心を手に入れましょう。