WordPressは利用者が多い分、悪意のある第三者にハッキングされる危険性があります。
何も対策を行わないと、サイト改ざんなどの被害にあってしまう可能性があります。
ということで今回は、WordPressのセキュリティを強化できるプラグイン「All-In-One Security (AIOS) – Security and Firewall」を紹介します。
このプラグインを使うことで、サイトの安全性を高めることができます。
英語表示のみのプラグインですが、(日本語対応されました)この記事で分かりやすく解説するので安心してください。
目次
All-In-One Securityの使い方
「プラグイン」→「新規追加」で、「aios」と検索してください。

有効インストール数が多く、評価も高いプラグインです。
しっかり更新されているので、安心感があります。
プラグインを有効化すると、「WP Security」というメニューが左サイトバーに出てくるので、これをクリックしてください。

このようなメニューが表示されるので、1つ1つ解説していきます。
自動更新を有効化
解説の前に、まずは自動更新を有効化にしましょう。
これはセキュリティの脆弱性を防ぐためで、常に最新のパッチが適用された状態にしておくことが重要です。
All-In-One Securityは利用者が多く狙われやすいため、運営元が日々プラグインのアップデートを頻繁に行ってくれています。
そのため、常に最新のバージョンを適用し、脆弱性を最小限に抑えることが推奨されます。

ダッシュボード
それではダッシュボードを見てみましょう。
ここでは、サイトのセキュリティ設定の状態をチェックできます。
針が赤や黄色を指していると危険な状態です。できる限り満点の5/5に近づけましょう。
Dashboardは特に設定するところがないので、次に進みます。
設定
この項目で設定しておきたい内容は以下です。
「WP version Info」(WP バージョン情報)に進みます。


「Remove WP Generator Meta Info」(WP Generator メタ情報の削除)にチェックを入れましょう。これは、WordPressのバージョンをHTMLで出力させないようにする設定です。
WordPressのバージョンによっては脆弱性がある場合があり、そのバージョンで放置されているサイトが攻撃者に狙われる可能性があるためです。
攻撃者にバージョン情報を知られないようにチェックを入れておきましょう。
ユーザーセキュリティ
次はユーザーアカウントに関するセキュリティです。
「User accounts」タブに進みます。


ユーザー名が「admin」になっていないかのチェックです。
ユーザー名を「admin」にするのはセキュリティ上よくないので、これに引っ掛かったらユーザー名を変えてください。
「admin」になっていなければ、ここはそのままでOKです。
表示名のセキュリティ
そのまま下にスクロールして「表示名のセキュリティ」に進みます。
「ブログ上の表示名」がユーザー名になっていないかのチェックです。

もし上記のように警告文が出る場合は、警告文下のユーザー名をクリックして、ユーザー設定に飛びます。
「ニックネーム」を設定し、それを「ブログ上の表示名」に設定して保存してください。
ユーザー名はログイン情報なので、ブログ上で表示させないようにしましょう。
ユーザーパスワード
「Password tool」は「ツール」→「パスワードツール」に移動しています。

次は「Password tool」に進みます。ここでは、パスワードの強度を確認できます。
仮に「aiueo」というパスワードだったとしましょう。

なんと1秒以内でこのパスワードは破られてしまいます。
次は、記号と数字を含めた「-BW_y95T9/BR」という12桁のパスワードを試してみます。

このパスワードを破るには、5389762年と2ヶ月かかります。非常に強固なパスワードです。
このように、パスワードは英数字と記号を含める、桁数を多くすることで、破られるのが困難になります。ぜひ実践してください。
ユーザーログイン(ログイン ロックアウト)
次はログインに関する設定です。
まずは「Login lockout」の項目を設定します。

ここでは、パスワードを数回間違えた時に、ログイン試行をロックする設定を行います。
Enable Login Lockdown Feature(ログインロックダウン機能を有効化)にチェックを入れます。これでログインに失敗するとロックされるようになります。
Allow unlock requests(ロック解除リクエストを許可)は、特にチェックをしなくて大丈夫です。チェックが入っている場合はチェックを外します。

Max login attempts(最大ログイン試行回数)は、何回失敗したらロックされるかの設定です。3回だと自分が間違えてロックされると面倒なので、5回くらいでも良いでしょう。
最小ロックアウト時間と最大ロックアウト時間はデフォルトのままで大丈夫でしょう。
上の画像でいうと、「5分間に5回パスワードを間違えたら60分間はログインできませんよ」ということになります。

この設定はチェックなし、空欄のままで問題ないでしょう。
メールで通知は、誰かがログインに失敗してロックされたらメールに通知が行くように設定します。

必須ではありませんが、万が一攻撃された時に気がつけるように私はチェックを入れています。

「Force logout」に進みます。

Enable force WP user logout(ユーザーの強制ログアウトを有効化)は、一定の時間が経つとログアウトする設定です。誰かにパソコンを勝手に操作されて、WordPressを利用されるのを防ぐための設定です。
Logout the WP user after XX minutesは、何分でログアウトするかの設定です。画像の例では60分で自動的にログアウトするように設定しています。
この項目を設定すると毎回ログインが必要になり面倒にはなります。
手動承認(ユーザー登録)
ここではユーザー作成に関する設定を行います。

手動承認(Manual approval)の設定を行います。

Enable manual approval of new registrationsはユーザー作成を承認制にする設定です。
ここにチェックを入れておきましょう。
データベースセキュリティ
次はデータベースのセキュリティ強化です。

次は「データベースの接頭辞」に進みます。

現在のテーブル接頭辞(プレフィックス)がデフォルトの「wp_」になっていたら危険です。
「wp_」になっていたら変更した方がいいのですが、変更前にバックアップをしましょう。
「BackWPup」プラグインなどで、データベースのバックアップを事前に取っておきましょう。
「プラグインがテーブル接頭辞をランダムな6文字で生成する場合には、これをチェックしてください。」にチェックを入れて自動でプレフィックスを生成するか、下の欄に任意のプレフィックスを入力してください。
ご自身で入力する際は最後に _ を入力しましょう。
ファイルのセキュリティ
次はサーバーにあるPHPなどのファイルに関するセキュリティ設定です。
File permissions
「File permissions」をクリックします。

Permissions(パーミッション)とは、ファイルの読み書きや実行の権限に関する設定です。
ファイルのオーナー以外に不要な権限を与えないように、パーミッションの設定を行いましょう。

「No action required」(アクション不要)になっているファイルは大丈夫ですが、「Set recommended permissions」と表示されている項目は、クリックして権限を変更してください。

パーミッションを変更しました。
File protection
File protectionタブに進みます。
「Delete default WP files」をクリックします。

Delete readme.html, license.txt and wp-config-sample.phpにチェックを入れて、readme.html
、license.txt
、wp-config-sample.php
を削除します。
次は、「PHP file editing」(PHPファイル編集を無効化)をクリックします。

テーマやプラグインのPHPファイルは、管理画面から編集できてしまいます。
Disable ability to edit PHP files(PHP ファイル編集機能を無効化:)にチェックを入れて、管理画面からPHPファイルを編集できないように設定してください。
ブラックリストマネージャー
特定のIPアドレスやユーザーエージェントのアクセスを拒否するための項目です。
ここは一旦飛ばして大丈夫です。
何かしらの攻撃やスパムを受けた時にアクセスを拒否する設定をしてください。
ファイアウォール
ファイアウォールは悪意のある第三者による通信をブロックするための設定です。
.htaccess firewall settings
「.htaccess」タブに進み「基本的なファイアフォール設定」に進みます。


Enable basic firewall protectionにチェックを入れます。
.htaccessファイルの保護、サーバー署名無効、ファイルアップロード制限、wp-config.phpの保護が行われます。
Max file upload size(MB)は、アップロードできるメディアの最大サイズを設定します。デフォルトでは100MBになっていますが、これ以上大きなメディアをアップロードすることはほとんどないでしょう。
そこまで大きな画像をアップロードしなのであれば、10MBくらいに設定しても良いです。
PHPファイアウォールの設定
ここではPHPファイアウォールを設定しますがすべてチェックは不要です。
機能について説明はしていますが特にスキップで大丈夫です。
「XML-RPC へのアクセスを完全にブロック」のチェックは不要です |
---|


Completely block access to XMLRPCをオンにすると、XMLRPC(後述)を無効化できます。よりセキュリティは強くなりますが、Jetpackなど一部のプラグインや、スマホやタブレット用のWordPressアプリなどが動かなくなります。
XMLRPCの無効化を推奨しますが、どうしてもJetpackやアプリを使いたい場合は、その下のDisable pingback functionality from XMLRPCだけにチェックを入れてください。
XML-RPCとは?
Webの管理画面にログインせず、リモートで操作ができる仕組みです。
XML-RPCは悪意のある攻撃に利用されることがあるので、上記の設定で無効化することをおすすめします。

フィードを無効化する設定ですが、これはチェックを外したままで大丈夫です。

Block access to debug.log fileはデバッグログファイルへのアクセスをブロックする設定です。
WordPressのデバッグログを残すように設定していると、エラー発生時などにログを残すようになっています。
何もしていなければデバッグログは生成されないのでどちらでも良いですが、念のためチェックを入れておきましょう。
Additional Firewall Protectionの項目は全部チェックを入れて大丈夫です。
細かい説明は省きます。
6G Blacklist Firewall Rulesは、Enable 6G Firewall Protectionにだけチェックを入れればOKです。
Internets BotsはGoogleを偽ったbotを防ぐものですが、公式がブロックされる可能性もあるので、チェックは入れないようにしましょう。
Prevent Hotlinks、404 Detection、Custom Rulesもチェックを入れなくて大丈夫です。
Brute Force(総当たり攻撃)
次はBrute Forceに関する設定です。この設定がかなり重要です。
ブルートフォースアタックとは
ブルートフォースアタック(総当たり攻撃)とは、文字の組み合わせを何回も試行し、ログインしようとする攻撃方法です。
例えば、4桁の数字でロックされたダイヤルロックは、0000から9999までの1万通りを試せば必ずロックを外すことができます。
これを、ログイン画面で行うのがブルートフォースです。
ログインページの名称を変更
Rename Login Page(ログインページの名称を変更)の設定を行います。

通常ログインページには「WordPress アドレス + /wp-login.php(または/wp-admin/)」で入れますが、ログインページが知られていない方が安全です。
Enable Rename Login Page Featureにチェックを入れて、ログインページを指定のURLに変更しましょう。
Login Page URLで任意のログイン画面に変更できます。

ここで設定したログイン用のURLは、必ずメモやブックマークをしておきましょう。
Cookieベースの総当たり攻撃の防止
Cookie Based Brute Force Prevention(Cookieベースの総当たり攻撃の防止)の項目は変更なしで大丈夫です。
CAPTCHA settings
次は「CAPTCHA setting」をクリックします。

CAPTCHAする方法がいくつかありますが、ここでは「Simple math CAPTCHA」を選択します。
Simple math CAPTCHA はユーザー登録する際に、計算の答えを入力する欄を設ける設定です。プログラムによるユーザー登録を難しくするための設定です。

Simple math CAPTCHA を選択すると下に CAPTCHAのオプション設定が出てきます。
上3つぐらいにチェックをいれて保存します。
これでログインページに簡単な計算式が加えられて正解しないとログインができなくなります。

ハニーポット
「Registration honeypot」(ハニーポット)をクリックします。


Enable honeypot on registration pageにチェックを入れます。

これは実際には画面に表示されないフォームを挿入して、そのフォームに入力されたら人間ではないと判定してユーザー登録を拒否する設定です。
人間には表示されず、ロボットのみに表示されることでこのユーザーはロボットだと判定する仕組みです。
まとめ
今回は、WordPressのセキュリティを強化できるプラグイン「All In One WP Security」の使い方を解説しました。
「All In One WP Security」にはまだまだ細かい設定ができますが、ざっとこれくらいを設定しておけば無防備ではないレベルのセキュリティ設定になるかと思います。
何も対策をしていないWordPressは危険度が高いです。
自分だけが被害に遭うだけならまだしも、サイト閲覧者にまで迷惑をかけてしまう可能性もあります。
サイト改ざんの被害に合わないためにも、こういった設定は早いうちにやっておくのが賢明です。