WordPressはOSSであり、管理画面のURLは秘匿されておらず誰でも知っている状況です。そのため、セキュリティ面を考慮しなければ、誰もがログインURLにアクセスできてしまいます。
それは嫌なので、管理画面へのアクセスに関するセキュリティについて調べてみました。なお、Amazon Lightsail の WordPress に適用することを前提としています。
IPアドレス制限
管理画面へのアクセスで、接続元のIPアドレスを制限をすることで、アクセス可能なユーザーを制限します。
接続元IPアドレスを自宅のみに制限することで、攻撃者からの攻撃を防ぎます。
ネットを検索すると .htaccess ファイルを編集して設定するとの情報が多いですが、Apache としては .htaccess ファイルを使用する方法はサーバのパフォーマンスなどから推奨されないようです(詳細は以下記事を参照ください。)
IPアドレス制限を行う際の注意点として、自宅のグローバルIPアドレスは変わる可能性があります。おそらく大多数の方は、自宅のグローバルIPアドレスを固定化していないと思われます。
「私のグローバルIPアドレスはいつ見ても同じだけど……」という方もいらっしゃると思いますが、固定化オプションなどを付けていない限り、そのグローバルIPアドレスは動的です。
通常時は変わらなくても、何かのタイミングで変わることがあり得ます。
実際私の自宅のグローバルIPアドレスは 1 年以上同じでしたが、最近になって異なるグローバルIPアドレスに変わりました。
クライアント証明書認証
サーバでクライアント証明書を発行し、同証明書を持っているPCのみアクセスを許可します。
発行はオレオレ証明書でよいので個人でもできますが、他と比べて設定が難しいかもしれません。
基本認証(Basic認証)
ダイアログでユーザー名とパスワードを求める方法です(WordPressのユーザー名・パスワードとは異なる)。
ブルートフォース攻撃(パスワード総当たり攻撃)を防ぐことはできません。
Apache のメイン設定ファイル(httpd.conf)と htpasswd を使用することで設定できます(メイン設定ファイルの代わりに .htaccess ファイルを使用することもできますが、 Lightsail ではデフォルトで .htaccess を使用できません。)。
セキュリティ面であまり意味がなさそうです。
MFA
WordPress プラグインを利用し、MFAを設定します。
利用できるプラグインは多数あります。評価が高く、継続して開発されているプラグインであれば問題ありません。
自分のスマホの認証アプリなどを使用すれば、セキュリティが一気に高まるでしょう。
ログインURL変更
WSP Hide Login プラグインを利用して、ログインURLを変更します。
ログインURLのカスタマイズをすることにより、攻撃者がログインURLを知ることが難しくなります。
プラグインはその他にもありますが、ログインURL変更のみのシンプルなプラグインなので例に挙げました。
WordPressのプラグインを入れすぎると重くなるので、無意味に多機能なプラグインは入れない方が無難でしょう。
以下の記事で実際に変更してみました。
まとめ
この記事で挙げた方法以外でも、WordPressのセキュリティを高める方法はあるかもしれませんが、管理画面の基本的なセキュリティに関しては以上になります。
調べてみると、便利なプラグインの多さに驚かされます。
不正ログインはMFAを適用すれば高い確率で防げるため、最低でもMFAは適用した方が良いでしょう。