eyemovic inc.

Works blog仕事の取り組み・ビジョン

2014.01.10

WordPress セキュリティプラグイン
「Better WP Security」

概要

Better WP Security」プラグインは、
WordPressのセキュリティ関連のチェックや設定が管理画面上で出来るようになります。

近年では、ブルートフォースアタック(総当たり攻撃)や
セキュリティホールを突いたハッキング被害・データ改ざん等をよく耳にします。

昨年では、ロリポップサーバで大規模な改ざん被害も発生しました。
http://lolipop.jp/info/news/4149/

自身のサイトが被害に遭わない為にも一度セキュリティ面を見直しては如何でしょうか?

導入環境

・WordPress 3.7.1
・Better WP Security 3.6.2

本体のインストールだけでは、日本語化されていない為、下記サイトより、言語ファイルを導入ください。
http://blog.akagi.jp/archives/2825.html
https://github.com/akagisho/better-wp-security-ja/tree/master/languages

注意事項

一部設定によっては、管理画面にログイン出来なくなることがありますので、
必ずバックアップ(ファイル・SQL)してから作業してください。

プラグイン導入については、自己責任にて導入ください。
ログイン出来なくなった等の問題が発生しても
自己で導入されたものについては、弊社では一切責任は負いません。

導入・設定

初期導入画面

 0first「Better WP Security」を初めて導入する際に、データベースのバックアップをするかどうかを聞かれます。

バックアップがない場合には、必ずバックアップをしてから作業することをオススメします。

データベースのバックアップを作成】を選択した場合には、管理者宛にSQLが添付されたメールが送信されます。

1startどちらを選んでも後で詳細の設定は可能なので、特に理由がない場合には、【サイトを基本的な攻撃から保護する】を選択してください。

ダッシュボード

2info

システムの状態をチェックし、安全度によって色分けされます。
全て緑色にする必要はないですが、オレンジ色と赤色は見直す必要があります。
特に赤文字については、すぐにでも対応を検討してください。

注釈にも書かれておりますが、青文字を対応する場合、テーマやその他のプラグインに影響することもある為、状況に応じて設定を見直してください。

ユーザ

3user

 初期インストール時にユーザ名を「admin」にしている方は、必ず変更をしてください。

変更される際も予測出来そうなものは、意味を成しません。

ハッカーは、下記のようなワード(一例)で攻撃してきます。

  • admin
  • administrator
  • support
  • manager
  • qwerty
  • sysadmin
  • test
  • adm
  • root
  • user

管理者ユーザIDについてもインストール時に設定したアカウントをお使いの場合は、1になっている為、変更をする必要があります。

不在モードの設定

4away

不在モードを有効化すると設定した時間内は、管理画面にログイン出来なくなります。
管理者も対象となる為、設定を間違えると設定時間外までログイン出来なくなります。

例えば、
制限のタイプ:毎日
開始時刻:10:00(pm)
終了時刻:6:00(am)
と設定した場合、夜22時〜朝6時まで管理画面にアクセス出来なくなります。

Web担当者や管理者がいない時間帯を設定しておくことで、セキュリティ向上になりますが、緊急対応とかが発生した場合にログインが出来ないといたことも発生してしまうかもしれません。

不在モードの使用には、十分注意してください。

禁止ユーザ

5ban

HackRepair.comが管理するブラックリストを追加することができます。
「有効化」にチェックを入れて追加するボタンをクリックすと、htaccessに拒否リストが追加されます。

IPアドレスを「禁止ホスト」に設定することで、接続を禁止したいユーザのアクセスを拒否します。
拒否されたユーザは、「403Forbiden」エラーとなり、管理画面は元よりサイト自体閲覧することができなくなります。

一点、気をつけて頂きたいのが、公衆のIPアドレスを禁止リストに含めてしまうと、その場所からの関係ないユーザもアクセス出来なくなるといったことも発生してしまいます。
企業や通販サイトなどで使用される場合には、注意して設定してください。

後述する、侵入検知やログイン失敗などでも自動的に禁止ユーザに設定することができます。

wp-contentのディレクトリ名変更

8prefix

WordPressのプラグインやテーマが入っている「wp-content」の名称を任意のものに変更することが可能です。
初期導入時に変更する場合には、問題も少ないですが、運用中のものを変えてしまうとリンク切れなどが発生してしまいます。

テーマやプラグインによっては、このディレクトリ名を変更すると問題が起こるものもある為、ここは、変更せず他の対策を講じたほうが影響が少ないかもしれません。

バックアップ

7backup

このプラグインでは、SQLのバックアップのみなので、別途専用のバックアッププラグインを使用するほうがよいと思います。
その為、基本ここは無効にしています。

バックアップ機能に優れた「BackWPup」プラグインをお試しください。
SQLのバックアップに加え、DBの最適化やファイルのバックアップも可能なプラグインとなります。

BackWPupについては、また改めて解説していきます。

データベースのプレフィックス変更

8prefix

初期のプレフィックス(データベーステーブルの接頭辞)は、固定で「wp_」となっています。
ハッカーによる攻撃やデータベースの不正操作を招く要因となりますので、変更しておくことをオススメします。
ワンクリックで、ランダムな文字列へと変更してくれます。

管理画面の隠蔽

9hide

WordPressが入っているサイトでは、URLの後ろに「/wp-admin/」「/admin/」「/wp-login.php」等を入力すると、管理画面へのログイン画面が開いてしまいます。
そこで、管理画面やログイン画面のURLを変更することで、管理者以外からWordPressへのアクセスを制限します。

ですが、ここを設定したところ、管理画面にログインできなくなりました。
設定を色々変更したりもしましたが解決しませんでしたので、この項目は無効にして、functions.phpに下記、隠蔽用のコードを書くようにしています。

3行目の「abcdef」という文字が、URLに含まれていなければ、トップページにリダイレクトされログイン画面が開かなくなります。

ログイン画面NG => http://example.com/wp-admin/
ログイン画面OK => http://example.com/wp-admin/?abcdef

侵入検知・ファイ変更検知

10detect

404とは、
アクセスしたURLが見つからない時に発生します。

「404検知」を有効にした場合、
存在しないファイルに何度もアクセスしてくるユーザーを発見します。

初期値では、5分間の間に20回アクセスエラーが発生するとそのユーザを15分間ロックアウトします。
※サイト内でスクリプトや画像等のリンク切れが多い場合もカウントされてしまう為、ご注意ください。

「繰り返しの攻撃者のブラックリスト」にチェックを入れておくことで、3回ロックアウトしたユーザを禁止ユーザに自動追加します。

管理者によるチェックや記事作成時などで404が多発する場合も、検知の対象に入ってしまいますので、自身のIPアドレスを「404 ホワイトリスト」に追加することで、404エラーとなってもロックアウトされることはなくなります。

10detect2「ファイル変更検知」を有効化することで、
変更があったファイルを知らせてくれます。

ハッキング被害にあった際もどのファイルが変更されたかが判るようになります。

記事作成時に画像追加した際やバックアップデータ等が作成された際も、変更ということで毎回通知が来てしまう為、必要ないようであれば、「除外」リストに「wp-content/uploads」を追加しておくとよいでしょう。

ログイン試行回数の制限

11login

ログイン試行回数の設定を行います。

制限を有効にすると、初期設定で、5分間を基準に、同ホストから5回か、同じユーザ名を10回失敗すると15分間ログインできなくなります。
3回ロックアウトするとIPアドレスを自動的にブラックリストに追加します。

ロックアウトした場合、その旨のメールが管理者に送信される為、頻繁に来るようであれば設定を見直すことをオススメします。

使用しているユーザー名をハッカーに10回アタックされた場合、自分自身もログインできなくなりますので、ユーザ名は、予測されにくいものを設定してください。

SSL

12ssl「コンテンツごとに指定する」か「サイト全体」を選択できますが、SSLを使用できる環境であれば、すべて有効にすることをオススメします。
利用できない場合には、特に設定する必要はありません。

各種設定

13tweaks

基本的に全て有効にすることをオススメします。
ですが、サーバや環境によっては、問題が起こる場合もありますので、ご注意ください。

例として、
さくらインターネットでは、「ディレクトリの一覧表示の無効化」を有効にすると、500エラーとなり、表示エリア・管理画面共にすべて表示されなくなります。

【サーバの調整】
・ファイルの保護
・ディレクトリの一覧表示の無効化
・リクエストメソッドを限定
・疑わしいクエリ文字列を制限
・Filter Non-English Characters

【ヘッダーの調整】
・WordPressのGenerator Metaタグを削除
・wlwmanifestヘッダを削除
・EditURIヘッダを削除

【ダッシュボードの調整】
・テーマアップデート通知を隠蔽
・プラグインのアップデート通知を隠蔽
・コアのアップデート通知を隠蔽

【強力なパスワードの調整】
・強力なパスワードを強制
・強制するロール

【その他の調整】
・WordPressのログインエラーメッセージを削除
・コアファイルへの書込みを許可
・コメントスパムの抑制
・.htaccessとwp-config.phpから書込み権限を除去
・管理者以外にはランダムなバージョンを表示
・長いURL文字列を禁止
・管理画面でファイルエディタを無効化

ログ画面

14log

ロックアウト履歴や変更されたファイルのログを確認することができます。

404エラー」の項目では、
ほとんどが脆弱性が含まれているファイルなどに対してのログになると思います。
URLの中に自身がアップ設定したファイルや画像等があった場合には、該当の記事やテーマファイルを見直すとよいでしょう。

ログイン失敗履歴」に、
自身が設定しているユーザ名があった場合は、早急に変更してください。

すべてのロックアウト」は、
404検知などに引っ掛かったユーザーのIPアドレスがリストされます。
頻繁にロックアウトしているIPアドレスがあれば、一般のユーザではない可能性が高いので、自動禁止にしていない場合、手動で禁止ユーザに追加してください。

変更されたファイル」は、
コアファイルやプラグインのバージョンアップファイルも含まれます。

まとめ

このプラグインを入れておけば絶対に大丈夫というわけではないので、
バージョンアップだったり、定期的なパスワード変更といった日々の運用が重要となります。

類似なセキュリティチェックプラグインで、「Acunetix WP Security」というものもあります。

愛媛県松山市でWeb開発一筋15年、700サイト以上の構築実績!

Webサイト制作・システム開発・スマホアプリ開発・組込ソフトウェア開発ならアイムービックにお任せ下さい。