WordPressで構築されたサイトのログインURLというのは、デフォルトだと結構丸見え。
セキュリティの対策は必須となっています。
ログインURLを任意の文字列に
ログイン画面にキャプチャ機能
ログインロック
といった、セキュリティ系の機能追加を一括で行えるプラグイン「SiteGuard WP Plugin」のご紹介です。
総当り攻撃(ブルートフォースアタック)というのは、WordPressに限ったものではありませんが、コーデックスにも概要・対処法が書かれているので確認してみましょう。
wpdocs.osdn.jp ブルートフォース攻撃
要は悪意のあるプログラムがログインURLにアクセスし、手当たり次第にユーザー名とパスワードを入力・ログインしてしまおうというものです。
WordPressにおいて、この「ログインURL」「ユーザー名」というのは、容易に見られてしまうケースもあるのです。
目次
WordPressにおける、ログインURL
環境にもよりますが、
http://【URL】/wp-admin
http://【URL】/wp-login.php
とか、
http://【URL】/wp/wp-admin
http://【URL】/wp/wp-login.php
とか、
http://【URL】/blog/wp-admin
http://【URL】/blog/wp-login.php
とかとか。
この辺のアドレスでログイン画面にアクセスできるようであれば注意が必要です。
もちろん、wordpressをインストールするディレクトリは任意の名前にすることができますが、記事内の画像を開発者ツールとかで見ればディレクトリは一目瞭然なわけです。
ログインユーザー名も実は丸見え
多くのテーマはユーザー名を記事ページや一覧ページで「著者」として表示します。
表示をログイン名ではなく、ニックネームにしたり、表示名を変更することもできますが、これは実は根本的な解決にはなっていません。
パーマリンク設定を変更していると、
http://【URL】/?author=1
にアクセスした場合、
http://【URL】/archives/author/【1に対応したログインユーザー名】
にリダイレクトされるケースがあります。
authorアーカイブを無効にするといった手段もありますが、複数で管理するキュレーションメディアを構築する際はauthorの情報・一覧は必要でしょう。
ちなみに、当ブログでは、?author=1 にアクセスしても、
http://【URL】/writer/【任意の文字列】
となり、ユーザー名の情報はサイト上のどこにも出てきません。
Edit Author Slug というプラグインを利用しています。
通常のログインエラーではヒントを与える
このログインアラートもデフォルトだと大変親切な作りになっております。
例:ユーザー名が正しくて、パスワードが違う場合
『入力したユーザー名【入力値】のパスワードが違います。』
=イコール 『安心して下さい。入力したユーザー名は合ってますよ。』
ということになりますね。
例:ユーザー名が存在しない場合
『無効なユーザー名です。』
=イコール 少なくともそのユーザー名は存在しないので、別のユーザー名を試してね
ということになり、いずれもヒントを与えていることにもなります。
このアラートメッセージも、利便性は下がりますが、単一のものにするとセキュリティは少し向上するでしょう。
SiteGuard WP を利用するとこんな風になります↓
メッセージ『入力内容を確認の上、もう一度送信して下さい。』
以前は2つのプラグインを利用していました
Crazy Bone ・・・ログインの履歴をチェック
Login Lock Down ・・・特定のIPから規定を上回るログイン・エラーがあった場合にIPをロック及びアラートの単一化
この二つのプラグインの機能を踏襲し、さらにプラスアルファの機能があるのがこれから紹介するSiteGuard WP Pluginというわけです。
SiteGuard WP Plugin のログイン
- プラグイン名
- SiteGuard WP Plugin 1.2.5
- 配布元
- https://wordpress.org/plugins/siteguard/
開発元は
株式会社ジェイピー・セキュア
英文表記:JP-Secure Inc.
https://www.jp-secure.com/siteguard_wp_plugin/
国産のプラグインなので、管理画面はもちろん日本語対応で、FAQも充実していて安心感があります。
プラグイン > 新規追加 > siteguard 検索等で出てくるのでインストール・有効化しましょう。
SiteGuard WP Plugin の機能・設定
有効化すると、管理画面に【SiteGuard】メニューが追加され、
ダッシュボードで、有効化しているセッティングが確認できます。
※ 有効化した時点でログインURLは変更・通知されます。
管理ページアクセス制限
ログインしていない接続元から管理ディレクトリ(/wp-admin/)を守ります。
この機能を使用するには、mod_rewriteがサーバーにロードされている必要があります。
利用条件は限定されていますが、簡単に言うと、ログインしていない人は/admin/にアクセスできませんよ!
という機能です。
ログインURLの変更と合わせて利用することで、セキュリティが強固になりますね。
ちなみに、以前とあるご相談で、運用しているサイトの「admin-ajax.php」への攻撃があってサーバー側から警告を受けてしまった・・・というケースがありました。
除外パスで最初から指定されているadmin-ajax.phpを削除して保存することで、攻撃はなくなりました。
admin-ajax.phpというのは、テーマやプラグインでログイン中以外にも利用するケースもあるため、これを削除しても影響がないか調査する必要はあります。
ログインページ変更
ログインページ名を変更します。
前述の通り、だれでもアクセスする可能性のあるwp-login.phpというURLを廃し、任意のURLに変更することができます。
プラグインを一旦停止したりすると、設定がリセットされ、再度有効化したタイミングで再度URLが変更・通知されるので、複数名で運用している場合は注意しましょう。
画像認証
ログインページ、コメント投稿に画像認証を追加します。
ログインページ・コメント・パスワード確認・ユーザー登録
にひらがなのキャプチャ認証を追加できます。
海外産プラグインではひらがなのキャプチャまでは無いかもしれませんね!
コメント部分の例
キャッシュ系のプラグインと併用で画像が404に?
詳しい検証はしていませんが、コメントのキャプチャ画像が404で表示されない現象を確認しました。
恐らくキャッシュ系プラグインとの併用だとは思うのですが・・・
(当サイトでは WP Fastest Cache)
これだとコメントが出来なくなってしまうので、コメントのキャプチャ機能は無効にしました。
まぁAkismetは入れているので問題は無いでしょうね。
ログイン詳細エラーメッセージの無効化
ログインエラー時の詳細なエラーメッセージに変えて、単一のメッセージを返します。
前述しているので割愛しますが、ユーザー名があっていることが分かってしまう下記のようなアラートを、
単一のメッセージに変更します。
ログイン状態でログインしようとするとエラーになる
ちなみに、自分の環境ではログインをしている状態でログインURLにアクセスしてログインしようとすると、
エラーメッセージが出てダッシュボードに遷移してくれません。
シチュエーションとしては、
1.ログインして作業し、一段落。
タブは閉じたけどログアウトはしていない
2.数時間別の作業をして、またログインしようとする。
(数時間前にログインしたことを忘れてる)
3.あれ?ログインできない
という状態ですね。
「え!? パスワード合ってるんだけど!?」
とめっちゃ焦りましたが、他のページに行くとアドミンバーが出ていたりして、
wp-adminディレクトリにアクセスすれば普通にダッシュボード行けます。
ログインロック
ログイン失敗を繰り返す接続元を一定期間ロックします。
期間・回数・ロック時間を設定することができます。
ログインアラート
ログインがあったことを、メールで通知します。
特に管理者が1名だけのサイトであれば、不正なログインにいち早く気付くことができますね。
フェールワンス
正しい入力を行っても、ログインを一回失敗します。
2回連続で正しいユーザー・パスを入力しないと、ログインできなくなります。
ピンバック無効化
ピンバックの悪用を防ぎます。
更新通知
WordPress、プラグイン、テーマの更新が必要になった場合に、管理者にメールで通知します。
WAFチューニングサポート
WAF (SiteGuard Lite)の除外ルールを作成します。
まとめ
このプラグイン一つで、かなりのセキュリティ系プラグインの代替ができるのではないでしょうか。
国産でUIも分かり易いのも、選択する決め手になりました。
最近は特に指定がなくても導入の提案をするようにしています。
1.Edit Author Slug でユーザー名を非表示にする
2.ログインURLを任意の文字列にする
たったこれだけで、
・悪意あるプログラムが 【URL】/wp-login.phpにアクセスし、
・adminというユーザー名で
・パスワードを手当たり次第入力してログインを試みる
という行為を防ぐことができるわけですね。
入れておいて損はありません!!
安心してください (セキュリティプラグイン)はいってますよ