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

有効インストール数が多く、評価も高いプラグインです。
しっかり更新されているので、安心感があります。
初期設定
プラグインを有効化すると、設定画面がでてきますので、「開始」を押して進みます。

設定が始まります。
ユーザーセキュリティや、ファイルのセキュリティの開閉がでてきますので、それを押します。
これらの設定は基本的なものですので、通常はそのままにしてConfirmを押して、次に進みます

次に進むと、「ログイン時の2段階認証」の設定項目になります。
後からでも設定ができますので、まだ「認証アプリ」を導入するか決めかねている場合は次に進んで下さい。

以降、
「最新情報のキャッチアップ」
「おすすめのプラグインのインストール」
「プレミアムアップデート」
と続きますが、ひとまず全て「Skip this step」を選択して初期設定を完了して下さい。
初期設定が完了したら「ダッシュボード」が開きます。
また、「AIOS」というメニューが左サイトバーに出てくるので、これをクリックしてください。

このようなメニューが表示されるので、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です。
表示名のセキュリティ
そのまま下にスクロールして「表示名のセキュリティ」に進みます。
「ブログ上の表示名」がユーザー名になっていないかのチェックです。

もし上記のように警告文が出る場合は、警告文下のユーザー名をクリックして、ユーザー設定に飛びます。
「ニックネーム」を設定し、それを「ブログ上の表示名」に設定して保存してください。
ユーザー名はログイン情報なので、ブログ上で表示させないようにしましょう。
ユーザー番号無効化
/?author=1 や、/wp-json/wp/v2/users などでユーザー情報(IDなど)が表示されたりします。
これはONにしてください。

ユーザーパスワード
「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は悪意のある攻撃に利用されることがあるので、上記の設定で無効化することをおすすめします。
フィード制御

フィードを無効化する設定ですが、これはチェックを外したままで大丈夫です。
コメント保護
ブログをやっている場合は、OFF推奨です。
『Akismet』などのスパム対策プラグインを導入して下さい。
プラグインを入れてもスパムが多いな、と感じているようならONにしてください。
コメント機能を一切使わないサイトの場合は「ON」にしておくのがおすすめです。
一般読者のコメントを弾いてしまう心配がなく、スパムbotの無駄な攻撃だけを安全にブロックできます。
URLセキュリティ
基本的には「OFF」推奨です。
ONにするのが理想ですが、導入には注意が必要です。
お問い合わせフォームなどの機能を「攻撃」と勘違いしてブロックしてしまい、サイトの機能がおかしくなるトラブルが非常によく起こります。
ONにして各機能を検証して、問題なければONのまま、問題があった場合はOFFに戻しましょう。
高度な文字列フィルター
基本的には「OFF」推奨です。
こちらも「URLセキュリティ」と同じく、ONが理想ですが、正常な機能まで「攻撃」と勘違いしてブロックしてしまう(誤検知の)トラブルが非常に起きやすくなります。
どうしてもONにしたい、という方は、ONにした後、必ず「記事の投稿」や「お問い合わせフォームの送信」が正常にできるかテストを行った上で利用してください。
6G ファイアウォール
これは必ず 「ON」にしてください。
6Gファイアウォールは、攻撃のパターンリストを使って、自動で危険なアクセスを弾いてくれる優秀な機能です。
必ずONにしましょう。
WP REST API設定
これは「OFF」のままでいいです。
「REST API」は、ワードプレスの裏側でデータをやり取りするための機能で、ONにした場合、致命的な不具合が発生する可能性があります。
オンラインのボットの設定
これは基本的には2つとも「ON」にして下さい。
- 偽の Googlebots をブロック
「Googleの検索ロボット」のフリをしてくる悪質な偽物を見破ってブロックします。
※「Google検索に記事が出なくなるかも…」と不安な場合は、「OFF」のままでも問題ありません。
- 空白の user-agent と referer を持つ POST リクエストの禁止
ブラウザの種類やリンク元を隠したままデータを送りつけてくるのは、ほぼ悪質なスパムボットです。
※ 設定後にお問い合わせフォームが動かなくなった、など何かサイトの不具合がでるようでしたら「OFF」に戻してください。

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は危険度が高いです。
自分だけが被害に遭うだけならまだしも、サイト閲覧者にまで迷惑をかけてしまう可能性もあります。
サイト改ざんの被害に合わないためにも、こういった設定は早いうちにやっておくのが賢明です。