【Wordpress】ユーザー名を特定されての不正ログインが多発したので対処してみた
も・く・じ
これまでもサイト(ワードプレス)を乗っ取ろうとする攻撃はいくつかあったんです。
そのほとんどがユーザー名”admin”での攻撃。
ところがですよ。
最近はワードプレスの管理画面へのログインに使われるユーザー名を”特定”しての攻撃が増えてきましてね。
これはちょっと由々しき問題と思って何らかの対処をせねばならんと思っていたところだったんです。
不正ログインアタックは忘れた頃にやってくる
これまでのワードプレスへの攻撃と言えばユーザー名は「admin」でアタックするのがパターンでした。
ワードプレスをインストールする際、ユーザー名が最初からadminとなってる場合があって、それをそのままにしておく人が多いからなんでしょうね。
(もちろん私は”admin”なんてユーザー名は速攻で変更してますから「またか」ぐらいの気持ちで放っておいんたんです、これまでは)
攻撃者は次に考えうる限りの(推測しやすい)パスワードを機械的に打ち込んでガードを突破しようとします。
(たとえば”123456”とか”password”といった安易な文字列)
これはユーザー名を「admin」から別のものに変更し、パスワードは使い回しでないランダムな英数字記号に置き換えることで不正ログイン攻撃を高い確率で防ぐことができます。
不正ログインされて困るのは”サイトの改ざん”もそうですが、個人情報を盗まれる心配もあったりします。
特に企業レベルのサイトは要注意ですね。
その情報が勝手に流されたりする可能性もあるので、セキュリティ対策を施すのはある意味必然とも言えるでしょう。
セキュリティプラグインからの警告メール
私はワードプレスに「All In One WP Security」というセキュリティ用プラグインを入れてあります。
もしも何らかの不正ログインの試みを受けた時はメールで知らせてくれる設定にしてあります。
そんな折、最近よく来るのが”ユーザー名を特定”しての不正ログインの試みのメールです。
(ちなみに下のIPアドレスはウクライナからのものでした)
これって第1段階のユーザー名は突破してあとは第2段階のパスワードさえわかればサイトが乗っ取られるってことを意味してます。
パスワードはかなり強力なものにしてあるのでおいそれとは突破できないでしょうが、心理的にはあまりいい感じはしないですよ。
さらに問題なのはユーザー名を変更しても今度は変更したユーザー名で不正ログインを試みてくることでした。
つまりユーザー名がどこかで漏れてるってことですよ。
はて、敵はいったいどこでユーザー名を特定してるんだろうか。
で、いろいろ調べた結果、おそらくこれじゃないかっていうのが出てきました。
ニックネーム=ユーザー名が危ない
一つ目はユーザー名で投稿者が表示される場合です。
テーマの中には記事内に(もしくはソース内に)投稿者を表示する機能を持ったものもあります。
(もちろんその機能がないテーマもあります)
この時投稿者名としてユーザー名が出力されてしまうケースです。
仮に私のように”投稿者名を表示しない”に設定していても、どこかで知らず知らずのうちに出力されてる可能性もありますね。
なぜ投稿者=ユーザー名になるかと言えば、ワードプレスをインストールした際、ワードプレス側の親切機能として、デフォルトでユーザー名=ニックネームで設定されるというのがあります。
その「ニックネーム」が投稿者名として出力されます。
だから投稿者名=(ニックネーム=)ユーザー名となるわけです。
試しにワードプレス管理画面で「ユーザー」→「あなたのプロフィール」を開いてみてださい。
何も手を付けてないとおそらくこんな↓感じで、ユーザー名とニックネームと「ブログ上の表示名」が同一のままになってるはずです。
これじゃあ、ユーザー名はバレバレですよ。
解決策としてはニックネームとブログ上の表示名をユーザー名とは別のモノに変えてあげれば投稿者名にユーザー名が使われることはなくなります。
”投稿者名=ユーザー名”による検索
ユーザー名は上記以外の方法でも簡単にわかっちゃいます。
自分のサイトを開き、URLの最後に「/?author=1」 を付けて[Enter]キーを押してみます。
すると「投稿者のアーカイブページ」が開きます。
(特定の投稿者の記事だけが表示されるアーカイブページのことです)
その時のURLは”ドメイン/author/ユーザー名/”になってるはずです。
ハイ、バレたぁ!
もしも”author=1”で404ページになる場合、”author=2、author=3…”と数字を増やしてみましょう。
私の場合は”author=3”でユーザー名が表示されました。
(過去にユーザー名を変えた→結果的にユーザー名を追加したことがあるのでその数だけ数字が増えるようです)
ユーザー名を特定しての不正ログイン試行がこのやり方でアタックしてるかどうかはわかりませんが、可能性としては否定できません。
そこでこのユーザー名をわからなくする方法がないかと調べてみたらやっぱりありましたよ。
Edit Author Slugで擬装する
「Edit Author Slug」というプラグインをインストールすると、投稿者アーカイブページにアクセスされた際に表示されるURLを強制的に任意の文字列に変更(擬装表示)させることができます。
たとえば先ほどの”ドメイン/author/ユーザー名/”なら”ドメイン/author/(Edit Author Slugで設定した任意の文字列)/”で表示されます。
これならユーザー名がバレる心配はないですね。
ただしプラグインを常駐化させないといけない(?)みたいなので、私は次で説明するやり方を採用してます。
(Edit Author Slugで検索すれば使い方を載せたサイトが多数ヒットします)
トップページに強制的にリダイレクト
動作検証は行ってますが、カスタマイズ・実装に関しては”サイトが表示されない”などのトラブルが発生する可能性もありますゆえ、失敗した時に元に戻せるようオリジナルファイルのコピーは必ず作っておいてください。
なお導入に際しては自己責任にてお願いします。
これは投稿者アーカイブページにアクセスされた際、強制的にサイトのトップページにリダイレクトさせてユーザー名そのものを表示させない方法です。
やり方はわかっているだけで2種類あります。
functions.phpを使う方法
functions.phpに以下を加筆します。
0 1 2 3 4 5 6 7 8 |
function theme_slug_redirect_author_archive() { if (is_author() ) { wp_redirect( home_url()); exit; } } add_action( 'template_redirect', 'theme_slug_redirect_author_archive' ); |
phpファイルを新規作成する方法
上記と同じ効果がありますが、こちらは新規にファイルを作成する方法です。
具体的には契約しているレンタルサーバーにログインし、ファイルマネージャ等で、使用しているテーマフォルダを開きます。
そこに”author.php”という名前でファイルを新規作成し、以下をコピーペーストして保存すれば終了です。
0 1 2 3 4 |
<?php wp_redirect(home_url()); exit(); |
私はfunctions.phpに加筆する方を採用してますが、どちらでも結果は一緒です。
念のための1ステップ
話は戻りますが、ユーザー名がすでにバレてる方のためにもう一つだけ作業を済ませておきます。
そのための作業がユーザー名の変更です。
プラグインを使ったユーザー名の変更
ユーザー名の変更は「Admin renamer extended」というプラグインを使うとあっという間に変更できます。
ただしこのプラグインは2年ほど更新がストップしてるので、ワードプレスのバージョンアップに伴ってそのうち使えなくなる可能性も考えられます。
やり方ですが、Admin renamer extendedをインストール&有効化します。
管理画面左側のプラグインにマウスオーバーすると「Admin renamer extended」があるのでそこをクリックします。
出てきた画面で変更したいユーザー名を入力してupdateをクリックします。
(再ログインが必要になるのでユーザー名は忘れずにメモしておきましょう)
こちらの画面になったら変更終了です。
管理画面のどこかをクリックするとログイン画面に変わるので、ここでメモしておいた新しいユーザー名で再ログインします。
(作業終了後はプラグインを停止→削除して大丈夫です)
プラグインを使わないユーザー名の変更
プラグインを使う変更は不安だと感じる方のために、または上記プラグインが使えなくなったときのために、マニュアルでユーザー名を変更するやり方も載せておきます。
ただしやり方を間違えたりサーバーの状況が不安定だったりすると記事がすべて焼失する危険性もあるので、万が一に備えてデータベースのバックアップ等は必ず取って自己責任にてお願いします。
(バックアップ方法は割愛します)
最初に、新たなユーザー名に変更する場合、今と同じメールアドレスは使えないので、もしもメルアドを変えたくない方は先にメールアドレスを一時的に変更しておく必要があります。
管理画面の「ユーザー」→「あなたのプロフィール」を開きます。
(ユーザーが複数いる場合は「ユーザー」→「ユーザー一覧」から選択します)
メールアドレスを変更します。これは適当でかまいません。
例えば先頭にアンダーバーを足すだけでも大丈夫です。
変更したら一番下の「プロフィールを更新」をクリックして変更を確定させます。
「ユーザー」→「新規追加」で新規ユーザーを追加します。
こちら↓の画像のように、順次入力していきます。
※パスワードは前と同一のモノでもいいし、これを機により強力なパスワードに変更するもよし。
ただし変更したら必ず忘れずにメモっときましょう。
※「権限グループ」は必ず”管理者”を選択します。
これでユーザー一覧に2つのユーザーが表示されます。
一度ログアウトし、新規ユーザー名で再ログインします。
再度「ユーザー」→「ユーザー一覧」を開きます。
ここで古いユーザーを削除します。
コンテンツの処理選択画面になるので、下の画像のように必ず「すべてのコンテンツを以下のユーザーのものにする」を選択します。
そうしないとそれまでの記事が消失して引き継げなくなってしまいます。
その際、ユーザー名は新規に作成したユーザー名になってることも確認します。
「削除を実行」をクリックすると古いユーザーは削除されます。
ニックネームの変更
ユーザー名の変更が済んだらそのまま続けてニックネームとブログ上の表示も変えちゃいましょう。
ここを変更しておかないとまたユーザー名がバレちゃいますからね。
ユーザー名がバレてないと思ってても、ログイン痕跡を残さずに不正ログインされてる場合もあると聞きます。
そのためまだ不正ログインの痕跡がない方でもここの変更はやっておいた方がいいでしょう。
これは単純にユーザー名と違う名前を入れて変更確定すれば終了です。
これでログインパスワードが強力であれば、不正ログイン攻撃があってもしばらくは何の問題もないでしょう。
不正ログイン試行のテクニックは日々進歩してるので”しばらくは”と言ったまでです。
もしかしたらここまでやっても突破される日がやってくる可能性だってありますからね。
そしてこの記事を書いた2日後、また不正ログインの試みがあったというメールが届きました。
それがこちら↓。
見たことも聞いたこともないユーザー名での攻撃です。
IPアドレスはドイツからのようなので以前のとは違うところからの攻撃なのかな。
注目すべきはユーザー名がバレてないってことです。
(それにしても”leissingbellsouth-net”なんてユーザー名はどこから引っ張ってきたんだろう)
そして1時間後、また来たよ。
しつこいね。
今度のユーザーネームは”toddnye”。
もう行き当たりばったりって感じ。
どうやら今回のセキュリティ対策は一応の効果はあったみたいです。
WordPress半年の初心者ですが、大変参考になり助かりました。被害に遭っていたのは http://wp.rimtech.net/ という私的な麻雀の集まりなので未だ良かったと言えますが、他に運営している4サイトだったら大変なことのなることでした。
(上のアドレスは編集してもらってもそのままでも構いません。)
念のために全サイトを調べましたが?author=* でユーザー名が出てきたのは上記だけでした。恐らくテーマが古かったのではないかと予想されます。
functions.phpはFTPファイル検索してみたら4つも出てきて迷ったのですがテーマフォルダ内にauthor.phpを入れたらTOPへリダイレクトするように改善されました。
ありがとうございました。
まっさん白書さん、きゅいじんです。
コメントありがとうございます。
ただここに書いた方法でも最近はチラホラ突破される事例が見受けられます。
もしかしたらまた別の方法で突破されてるのかもしれないのでご注意ください。