WordPressはCMSのひとつで、特別な知識がなくてもWEBサイトやブログを構築できるためとても人気があります。
CMSとはContents Management System(コンテンツ・マネジメント・システム)の略です。
無償のCMSではつぎのようなものが有名です。
- WordPress(ワードプレス)
- Joomra!(ジュームラ)
- concrete5(コンクリート・ファイブ)
CMSは手軽に構築できる反面、セキュリティがおろそかになり侵入の糸口になることが少なくありません。
企業で利用している場合や収益化を目的にWordPressをはじめとするCMSを利用している方は特に注意が必要です。
そこで、Ubuntu Linuxを使いWordPressで問題が発生していないか確認する方法と対処方法を解説します。
なおWindows10にインストールしたUbuntuでも同様の手順で問題が発生していないか確認できます。
CMSスキャナー
セキュリティがおろそかになりがちなCMSを守るため、是非ともCMSスキャナーについて知っておくことをおすすめします。
CMSスキャナーを利用すると、自分のWEBサイトにどのような問題があるのか明らかにしてくれます。
CMSmap
わたしは普段CMSmapを利用しています。
CMSmapはシンプルなツールでセキュリティ上の問題がないかチェックすることができます。
インストール方法
CMSmapはGitHubで入手できます。
gitがインストールされていなければ、あらかじめインストールしておきます。
ubuntu@ubuntu:~$ sudo apt install git
CMSmapをGitHubからcloneします。
ubuntu@ubuntu:~/work$ git clone https://github.com/Dionach/CMSmap
CMSmapはExploitDBの脆弱性情報を利用します。Kali Linuxを使っている場合は設定の必要がありませんが、そうでなければ以下のファイルを編集します。
CMSmap/cmsmap/cmsmap.conf
デフォルト設定は下記のようにaptを利用しています。
[exploitdb] edbtype = apt edbpath = /usr/share/exploitdb/
これをgitを使うように変更します。
[exploitdb] edbtype = git edbpath = /path-to-exploitdb/exploitdb/
「/path-to-exploitdb/」の箇所はExloitDBをGitHubからcloneしたときのファイルパスですから適宜修正してください。それでは「/path-to-exploitdb/」へ移動してExploitDBをcloneします。
ubuntu@ubuntu:~$ cd path-to-exploitdb
ubuntu@ubuntu:path-to-exploitdb$ git clone https://github.com/offensive-security/exploitdb
これでインストール完了です。
スキャンしてセキュリティ上の問題を確認する
CMSの使い方に迷った場合は「-h」オプションを指定することによって利用可能な機能を知ることができます。
ubuntu@ubuntu:~/work/CMSmap$ ./cmsmap.py -h
cmsmapは引数にURLを指定するだけでスキャン可能です。
ubuntu@ubuntu:~/work/CMSmap$ ./cmsmap.py http://192.168.0.101/wordpress/
CMSmapを実行すると左側に[L]や[M]、[H]といった表示ありますがこれはメッセージのレベルを示しています。[M]はレベル中のメッセージ、[H]レベル高のメッセージです。
以下の例ではWordPressのユーザー名が露呈している旨のメッセージがレベル中で表示されています。
[-] WordPress usernames identified:
[M] wordpress
以下はレベル高のメッセージです。ユーザー名とパスワードが表示されています。安易なパスワードを設定していると、このように分かってしまいます。
[H] Valid ADMIN Credentials! Username: wordpress Password: password
ユーザー名が攻撃者に知られるとブルートフォース攻撃の成功確率を高めることになります。大文字小文字、数字に記号を含めた24文字のパスワードが望ましいのですが、それが難しい場合は安易に推測できないパスワードにしておく必要がります。
質の高いワードリストが出回っていますから、安易なパスワードを設定している場合は比較的簡単にパスワードが破られてしまいます。
CMSmapにはブルートフォース攻撃を実行する機能もありますので、興味のある方はどれくらいの時間でパスワードが破られるのか試してみたら良いかもしれません。
対策
安易なパスワードを設定しないことが基本です。
更にセキュリティを高めたい場合、わたしのおすすめは「SiteGuard WP Plugin」のようなセキュリティプラグインの導入です。
SiteGuard WP Plugin
SiteGuard WP Pluginは管理ページとログインに関する攻撃からの防御に特化したセキュリティプラグインです。プラグインの追加画面で「SiteGuard WP Plugin」を検索し、インストールします。
インストールしたら同時に有効化もしておきます。
プラグインを有効化すると次のようなメッセージが表示されます。
プラグインが有効化されるとログインURLが変わるので注意してください。
- 有効化前 https://example.com/wp-login.php/
- 有効化後 https://example.com/login_****/
「login_****」の「****」の箇所は数字です。「新しいログインページ」というリンクをクリックすると新しいログインページへアクセスできます。
SiteGuard WP Pluginの設定
管理画面のサイドバーから「SiteGuard WP Plugin」をクリックすると以下のような設定画面が表示されます。
管理ページアクセス制限
管理ページアクセス制限を設定すると、ログインしていないユーザーが「/wp-admin」へアクセスしようとしても404 Not Fundを返します。ログインしているユーザーは引き続き「/wp-admin」アクセスできますが、24時間以上ログインが行われないと「「/wp-admin」へアクセスできなくなります。
この機能を有効にするには「ON」をクリックしてから「変更を保存」ボタンをクリックします。
サーバーにmod_rewriteがインストールされていないと設定できませんので、注意してください。エックスサーバー は問題なく設定可能です。
ログインページ変更
SiteGuard WP Pluginをインストールするとログインページが変更される事は既に触れていますが、新しいログインページは数字のためブルートフォース攻撃で簡単に判明してしまいます。
できれば「管理ページアクセス制限」と合わせてログインページを変更しておくことをおすすめします。
この設定もサーバーにmod_rewriteがインストールされていないと設定できませんので、注意してください。エックスサーバー は問題なく設定可能です。
また「管理者ページからログインページへリダイレクトしない」にチェックを入れておきましょう。
フェールワンス
リスト攻撃、ブルートフォース攻撃から保護したい場合は「フェールワンス」の設定を検討すると良いでしょう。
この設定を有効にすると正しいログイン情報を入力しても、1回だけログインが失敗します。5秒以降、60秒以内に再度正しいログイン情報を入力すると、ログインが成功します。
この機能を有効にするには「ON」をクリックしてから「変更を保存」ボタンをクリックします。
まとめ
企業サイトはもちろんのこと、ブログで収益を得ている方はブログのセキュリティについて真剣に検討することをおすすめします。