はじめに
実務にて、WordPress のログイン URL がデフォルトのままになっている Web サイトがあった。セキュリティ的に問題があるので Login rebuilder という新しいログインページを作ることができるプラグインをインストールして、最低限のセキュリティ対策を行った情報になります。
検証環境
WordPress プラグイン
- Login rebuilder 2.6.7 / マニュアル
解説
WordPress をインストール後、まずやることはログイン URL の変更です。
理由
WordPress は、下記のようなデフォルトのログイン URL を設定します。example.com の部分はあなたのサイトのドメイン名になります。
http://example.com/wp-admin
http://example.com/wp-login.php
つまり、誰でもあなたのサイトのログイン URL がわかっちゃいます。
さらに、下記の URL にアクセスすることで、あなたのサイトのユーザー名を特定できます。URL に ?author=1 というパラメータを付けることでユーザー ID が 1 の投稿者アーカイブページにリダイレクトされます。
http://example.com/?author=1
http://example.com/author/calliope
ユーザー ID が 1 のユーザー名は calliope ですね。同じように数値を変えるだけでユーザー名を洗い出すことができます。
あとは、パスワードをプログラムに解析させれば不正アクセスができます。
つまり、クラッカー や スクリプトキディ にいとも容易く不正アクセスされてしまう状態になっているので、まずはログイン URL を変更して、侵入経路を断ちましょうということです。
脅威
もし、あなたの Web サイトが クラッキング によって不正アクセスされてしまうと、DDoS攻撃 や スパムメール 大量送信の 踏み台、マルウェア の埋め込み、ユーザー権限の乗っ取りなど、多種多様な攻撃を受ける可能性があります。
手口
あなたの Web サイトのログイン URL とユーザー名に対して、総当たり攻撃、または 辞書攻撃 を行うプログラムを実行してパスワードを解析します。または、WordPress Security Scanner の WPScan などを利用して解析することができます。
もっと具体的な手口を知りたい方は「WordPress のサイトを PHP の辞書攻撃でハッキングする」という記事をオススメします。
対策
5 分で終わります。Login rebuilder という新しいログインページを作ることができるプラグインをインストールしてサクっと設定するだけです。
Login rebuilder の導入
WordPress の管理画面左メニューにある「プラグイン」をクリック、「新規追加」ボタンをクリック、検索フォームに「Login rebuilder」と入力、プラグインをインストールして有効化します。
WordPress の管理画面左メニューにある「設定」の「ログインページ」をクリック、ここで Login rebuilder の設定をします。
「無効なリクエスト時の応答」は、新しいログインページの設定後、wp-login.php へアクセスした場合の動作です「サイトトップへリダイレクト」を選択します。
「ログインファイルのキーワード」は、自動的にランダムな 8 文字を生成します。基本的に変更する必要はありません。
「新しいログインファイル」には、wp-login.php に代わる新しいログインページのファイル名を設定します。ファイル名は、あなただけが分かる名前に変更して、ログイン URL を忘れないようにブラウザにブックマークなどすると良いでしょう。
「ロックファイルを使用」は、Login rebuilder 2.5.0の新機能紹介 に情報があります。ロックファイルのログイン制限で不正アクセスを抑制する機能ですが、特定期間中のログイン制限をする必要がなければチェックしません。
「第2ログインファイル」は、ユーザーの権限グループ毎にログインページのファイル名を設定します。会員制サイトで管理者とそれ以外の権限グループでログインページを分けたい時に便利です。必要がなければ入力しません。
「ステータス」は、「稼働中」を選択します。
「ログ保存」は、Login rebuilderのログ表示機能を紹介、Login rebuilder 2.3.0の新機能を紹介、Login rebuilder 2.6.0の新機能紹介 に情報があります。ログイン時の履歴(ログ)や不正なログインページへのアクセス履歴を保存する機能ですが、必要がなければ「しない」を選択します。
「著者ページの閲覧」は、Login rebuilder 2.4.0の新機能を紹介 に情報があります。著者ページの閲覧を制限できる機能です。投稿者アーカイブページを使っていないサイトであれば、「404ステータス」を選択します。
「oEmbed」は、Login rebuilder 2.4.1の新機能紹介 に情報があります。oEmbed(オーエンブド)は、YouTube、Facebook、Slideshare などのコンテンツを埋め込むために必要な HTML を問い合せるためのプロトコルです。レスポンスデータからユーザー名を特定されないために「レスポンスデータの投稿者名とURLを隠す。」を選択します。
「ログイン時のエラーメッセージをあいまいな内容に変更する。」は、エラーメッセージからユーザー名を類推できてしまうので、曖昧にすることで不正アクセスを防止できる設定です。必要がなければチェックしません。
「メールとパスワードによる認証を禁止する。」は、そのままの意味ですね。必要であればチェックします。
「登録フォームを拒絶する。」は、そのままの意味ですね。必要であればチェックします。
「ログインしていない場合はREST API / Usersを拒否する。」は、Login rebuilder 2.6.0の新機能紹介 に情報があります。ログインしていないクライアントからの REST API / Users リクエストはエラーレスポンスを返すようにできる設定です。必要がなければチェックしません。
「ログファイルに見出しを付ける。」は、ログの BOM 付き CSV ファイルをダウンロードした際に見出しを付ける設定です。必要がなければチェックしません。
「管理者のログインを通知する。」は、そのままの意味ですね。必要がなければチェックしません。
最後に、「変更を保存」ボタンをクリックして完了です。
思い通りに動作しない場合は、Login rebuilder:プラグイン作ってみました のよくある質問を確認しましょう。また、別のプラグインに切り替える際は、プラグインを無効化しても新しいログインページは有効なので削除しましょう。
以上です。
おわりに
もし、自分の Web サイトがマルウェア感染していないか心配な方は、Sucuri Sitecheck を利用して無料で調べることができます。
さて、サイトの UI / UX や SEO について話そうか。