/wp-admin/ にアクセスするとログインページが表示される。これはダメなことなのでしょうか?
この記事を書こうと思ったきっかけ
Twitterで、2,3ヶ月毎に1回くらいのペースでこんな内容のツイートがTLに流れてきます。
/wp-admin/ にアクセスしてログインページが表示されるサイトはクソ
/wp-admin/ はWordPressの管理画面のパスです。ログインしていないと /wp-login.php にリダイレクトされID/パスワードの入力フォーム、いわゆるログインページが表示されます。 /wp-admin/ にアクセスすることでログインページが表示されるのはよくない、という内容です。
結構多いのでぼくの考えをまとめて記事にしようかと思いました。
※WordPressについて書きますが、WordPressに限ったことじゃないです。
※WordPressすげー!って記事じゃないです。
/wp-admin/ でログインページが表示されることはダメなのか?
さて、ログインページが表示されると何がまずいのでしょうか?ログインページが表示されるということは、攻撃者に攻撃されてしまうリスクがあります。WordPressなサイトでは、 /wp-admin/ にアクセスさえすればログインページが表示されるので、『攻撃できる場所』を容易に見つけることができます。
では、これはダメなのか?
ぼくはこれがダメだとは思いません。これは家で例えると『**ホームが2x4で売り出している家は玄関が必ず駐車場の奥』っていう感じで、玄関の場所がわかったところで、攻撃できる場所がわかっただけで、『玄関の場所がわかる = 誰でも家に入ることができる』ではないからです。戸締りさえしっかりしていれば、家に入ることはできません。
※そもそも認証自体に脆弱性があった(=ドアがベニヤ板で簡単に蹴り破ることができる)ときを除く
ログインページのURLを変える効果は?
ログインページのURLを推測しにくいものにし攻撃者にログインページをわかりにくくする、というのは一定の効果はあります。これは間違いないです。でも、これって玄関の場所がわかりにくいってだけで見つけさえしてしまえば攻撃できますし、ドアにダイヤル式の南京錠とかを使っているのであれば、セキュアな状態ではありません。
セキュリティ向上を目指すのなら
ログインページのURL変更は、攻撃をされにくくするもので、RPGで例えると回避率がすこし上がったといった感じです。しかし推測可能なID/PWなどをつかっていて、ぼうぎょ力が低いとあっという間にやられてしまいます。なので、回避率を上げるだけではなくぼうぎょ力も上げることが重要です。以下はその一例です。
強固なID/パスワードを使う(ぼうぎょ力UP)
上記で述べたとおり、ログインページのURLを変えてセキュリティ向上をしたところで、肝心のID/パスワードが推測可能であれば台無しです。ID/パスワードは推測されにくい強固なものを使うようにします。基本はこれです。自分では強固なパスワードが用意できない場合は、1Password, LastPassなどで自動生成するのもありです。というか推奨です。IDやパスワードにadminとかadministratorとか1234とかadmin1234とかはやめましょう。
回数制限する(ぼうぎょ力UP)
何回も攻撃をゆるしてしまうと、そのうち突破されてしまう可能性があります。プラグインなどでログインしようとする回数を制限し、際限なく攻撃されることを防ぎます。Limit Login Attempts Reloadedなどのプラグインがあります。
2段階認証・2要素認証にする(ぼうぎょ力UP)
ID/パスワードだけで認証せず、もう1段階・1要素追加して認証させることで、より強固な認証にすることができます。Jetpackなどのプラグイン+wordpress.comなどでWordPressを2段階・2要素認証に変えることができます。
例:Jetpack+WordPress.com
WordPress.comのアカウントで認証したあと、iOS Appなどで承認しないとログインできません。
特定の条件に一致した場合だけ、ログインページにアクセスできるようにする(ぼうぎょ力、回避率UP)
ログインページが誰でもアクセスできるから、IPアドレスで制限をかける、Basic認証をかけるなどして/wp-admin/に特定のユーザしかアクセスできないようにします。特定の場所から執拗に攻撃を受けてるならこの制限が役立ちます。
例:ホワイトハウス
https://www.whitehouse.gov/
/wp-admin/にはぼくたちはアクセスすることができません。
管理画面を設けない(ぼうぎょ力、回避率UP)
そもそも管理画面があるからアクセスされるので、管理画面を設けないという作戦。WordPressをHeadless CMSとして扱い、公開サイトと管理画面を別ドメインにすることで、公開サイトに管理画面を設けないようにしたり、Shifterを使って静的出力して同じく公開サイトに管理画面を設けないようにします。
参考:Shifter
https://www.getshifter.io/
まとめ
というわけで、ぼくの答えは『/wp-admin/ でログインページが表示されることは悪ではない。』です。