私も使用していたユーザー名を隠せるWordPressのEdit Author Slug(エディットオーサースラッグ)プラグインだったが、使用を完全にやめた。
というわけで、当サイトのユーザー名(ユーザーID:ログインID)は「gM HxeIg1R@ctdS@54WF9VnozM_.SrhU」である(admin状態)。
このように、尋常ではないレベルのものを大々的に公開しているが、それにはちゃんとした理由があるので述べていく。
ユーザー名はモロ見え前提
メジャーなサービスはメールアドレスがユーザー名の役割をしていたり、極端な話友達とやり取り → スマホを落とす → 電話帳データ流出の典型コンボで簡単に漏れるため、もともと自分一人では守りきれない情報だ。
最近だと、電話帳をクラウドにアップしたりいろいろあるよね!
世の中のサービスはほぼこの形態・重要なのはパスワードと断定し、WordPressも当然そう思っており、唐突に「ユーザー名を公開している前提の機能」を盛り込んでくる。
公式ユーザー名またはユーザーIDの開示がセキュリティ上の問題にならないのはなぜですか?(英語)
だが、これはWordPressの話であり、正直だいぶ違う。
さらに、「ユーザー名を隠しておけばパスワードのみより安全度が高い」のも事実。
当サイトのようにわざわざ公開するのはやりすぎだし(他で激烈対策済み)、「セキュリティを低下させたか?」という問いに対して、ハッキリ「いいえ」とは言えない。
なお、こちらのサイトとびっくりするほど同意見で、とても影響を受けたうえ参考にさせていただいた。
ユーザー名は/?author=1以外からも見える
Edit Author Slugを利用しているのなら、これから紹介する3つの部分すべて変換されているため、隠されている。
自サイトURL最後尾に「/?author=○」と付けると(通常○部分は1)「https://excesssecurity.com/author/gm-hxeig1rctds54wf9vnozm_-srhu/」のように見えるわけだが、REST APIの「/wp-json/wp/v2/users」で確認可能。
ところで、Edit Author Slugを入れずに「functions.php」に記述した方はいるだろうか。
途中からそうなったため仕方ないが(WordPress4.4のREST APIから)、一部の他サイトEdit Author Slug推奨記事にはプラグインなしでの実装方法として、「/?author=○」を回避させる方法しか載っていない。
心当たりのある方は、一度「プライベートブラウジング」で自サイトURL最後尾に「/wp-json/wp/v2/users」を付けてアクセスし、見覚えのあるユーザー名があるかどうか確認しよう。
当サイトは403で弾かれ(REST API自体は無効化しておらず、別の対策に巻き込まれ403)、サイトごとの対策によって挙動が違うので、見覚えのある文字列があるかどうかだけ確認すれば良い。
参考WordPress REST API によるユーザー名の漏洩を防ぐ – Xakuro System
もう一つ、コメント欄にもユーザー名のわかる手段はあるが、この記事では割愛。
参考WordPress コメントよりユーザー名の漏洩を防ぐ – Xakuro System
表示された方は、「ユーザー名隠していません同盟」に加入。
不要な理由
同時に紹介されがちなSiteGuardプラグインや、数あるセキュリティプラグインには
- ログインページ(wp-login.phpから)変更
- 試行回数制限(IPアドレスを変更されると面倒)
- 外国IPアドレスからの侵入禁止
- ログインIPアドレス限定(強力だがプロバイダ契約次第)
というような機能がだいたい同梱されている(とくに上2つ)。
英語のプラグインにも当然のように付いているはずなので、使用できるか確認しよう。
サーバーによっては、一部機能が備わっている場合もあるぞ。
これは盲点だから、表示されたらログイン系と併用するといいかな!
避けるべきはロックオン状態なので、ログインページにたどり着かせず「最初から攻撃をさせない」か、すぐに「無意味・面倒くさい」と試行回数制限で機械・悪人に思わせることが重要だ。
それが、上記のログインページ変更と試行回数制限ということになる。
ログインページ変更がユーザー名より遥かに優秀であり、私的にはこの時点で「ユーザー名不要センサー」が働くのだが、まだインパクトが弱いので圧力をかけていく。
サーバーの負荷具合は、やったことがないので未調査。
ユーザー名を隠すより2段階認証が優先
どうせ1つのプラグインを入れるなら、圧倒的に2段階認証がオススメだ。
極端な話、ユーザー名とパスワードがバレていても2段階認証が仕事をしてくれるし、パスワードを厳重にして2段階認証を入れれば孫の世代も安心(言い過ぎではない)。
30秒ほどで6桁のコードが使えなくなるため、試行回数制限とも相性が良い。
2段階認証は現代で突破されておらず非常に優秀で、これが突破されると世界数多にあるメジャーなサービスもマズいことになる(ニュースになるかも)。
現在はWordfence(ワードフェンス)の2段階認証が無料化されたため、弱小サーバー以外はもうWordfenceで良い。
ユーザー名とパスワードが流出しているってことは、住所も同時に流出している可能性があって、接近されてゴニョゴニョ
ログイン試行回数制限と2段階認証のコンボ
こちらのコンボが非常に強力で、さらにユーザー名隠しがどうでもよくなる。
仮に「ログインページがバレた話」をするが、2段階認証プラグインと同時に使うことで、
- 総当たり攻撃(ブルートフォースアタック)
- 試行回数制限に引っかかりロック(最低でも30秒以上に設定)
- 30秒経過(実際はちょっと猶予がある)
- 2段階認証ワンタイムパスワードが無効
- 極端に試行回数制限に引っかかり、まったく進まない
というコンボが成立する。
本当はログインページにすらたどり着けず、たどり着いても上記コンボが付属+パスワードの強度が試される。ユーザー名隠しはパスワード強度とやることが被っており、そもそもユーザー名の代わりはパスワード桁数で対策十分。
増やすなら別の強度・認証!上記だと2段階認証や画像キャプチャなどが同じ属性だよー
追い打ちをかけておくが、ユーザー名の管理はパスワードと同時にされていることが多く、同時流出のケースが多いので、やはりパスワードで良い。
というより、「パスワードが流出している前提の話」は何でもアリなので無意味。
XO Securityと2段階認証の華麗なコンボ
さらに、2段階認証の6桁コードを「30秒以内(猶予あり)」に入力しなければならないが、XO Securityに付属している「失敗時の応答遅延」を最大値の10秒にすることで、せいぜい3~4回しか挑戦できない。
これにより、試行回数制限を回避するための「IPアドレス変更」をほぼ封じ、ログインセキュリティはこれ以上ないほどのレベルにまで向上する。
Edit Author Slugを利用するべき人
もちろんいる。
- 本名などの個人情報や、何かしらまずい文字列をユーザー名に入れてしまった
- WordPressを始めたてで、ログインページ変更・試行回数制限をしていない
「/wp-json/wp/v2/users」でしばらく丸見えだった方や、セキュリティソフトでログインページを変更・試行回数制限を付けている人は、私と同じくもう不要だ。
始めたての方がユーザー名を隠すことだけに満足するとは思えず、そのままセキュリティプラグインに流れると思うので、ほぼ1番しか該当しないはず。
さきほどからチラチラ述べている「XO Security」でも同じく隠せる。
XO Security
SiteGuard WP Plugin(ログイン系強化)・Edit Author Slug(ユーザー名隠し)を合体させたようなプラグインで、後発の強みを最大限に活かしている。
途中述べた「メールアドレスログイン」や「REST API」も無効化でき、このプラグイン1つで激ヤセ可能なのもいいだろう(2段階認証プラグインを入れると変わっていないが)。
主にログインに力を入れているため不要な機能が少なく、総合セキュリティプラグイン(ファイアウォール付属系)と同時併用しても被っている機能を無効化できるため、エラーになりにくいはず。
とりあえず、無名すぎてインストール数に困惑すると思うので補足しよう。
SiteGuardのインストール数で安心感を得られるのもわかるが、「インストール数が少ないから微妙」といったことはない。
REST APIに困惑したのなら、ついでに無効化できてお手軽。
私は無効化してないけど!
SiteGuardはログイン履歴ページを開く必要があり、XO Securityだとダッシュボードに簡易的だがログイン履歴が表示されるので、不審なログインに気づきやすいのも良い。
ご覧のとおり、当サイトは「不要」と言っておきながら、ユーザー名を隠すことができるプラグインを平然と推奨する。
なお、ログイン系・ログ残しが付いているセキュリティプラグインをもともと導入しているのなら、説明したとおりユーザー名隠し機能は不要なのでインストールする必要はない(SiteGuardはもともと優秀)。
ただし、2段階認証は本当に強力なので当サイト的には必須。
ところで、「REST APIやコメント欄のユーザー名のことを参考にさせていただいたサイト」の運営者が、このプラグインの開発者だったりする。
パスワード強化方法
当サイトのユーザー名が激烈にヤバいことを冒頭で感じただろうが、サービスの安全度がわからない場合は、とりあえず強力にするのが必然だからそうなった。
「gM HxeIg1R@ctdS@54WF9VnozM_.SrhU」32桁の大小英数字+記号+スペース。
もちろん同じようなレベルのパスワードを使用かつ覚えているわけがないので、パスワード管理ソフトを導入するといい。
アフィリエイト関係のアカウントも管理できて、鬼に金棒だよ!
パスワード管理ソフトを使えば、自動入力のおかげで試行回数を「3回失敗までOK」などのレベルにまでキツくすることもできる。
XO Securityで「失敗時の応答遅延コンボ」を使うなら、なおさら失敗しないために使おう。
下記記事のbitwarden(ビットウォーデン)は確認していないが、KeePass(キーパス)はBasic(ベーシック)認証も自動入力に対応できる(基本はbitwardenでOK)。
極意を使って現在のパスワードを強化することは可能だけども、WordPressでは非推奨。
なぜなら、パスワードは一番強化するべきポイントで、不正アクセスされて自分のサイトに変なものを仕組まれ、閲覧者に迷惑をかけることがあるためだ。
IPアドレス制限はVPNサービスで可能
秘密にしたかったが、固定IPアドレスはVPNの共有サーバーが都合良く使える。
共有とはいえ、悪い人は数多のVPNサービスのサーバーからIPをピンポイントで見つけなければならず、非常に有効な裏ワザのような使い方が可能。
オリジナル手法なので、効果もテキメン。
※一定期間でメンテナンス等使えなくなるサーバーがでるため、定期的に交換は必要。
セキュリティの穴を付く場合って自動広範囲攻撃が主だろうし、独自手法は効果が高いと思うけど、悪い私じゃないから知らない
外出先でWi-Fiを使う人は通信も暗号化され、一石二鳥で本当に都合が良い。