WordPressは利用者が多い分、悪意のある第三者にハッキングされる危険性があります。
何も対策を行わないと、サイト改ざんなどの被害にあってしまう可能性があります。
ということで今回は、WordPressのセキュリティを強化できるプラグイン「All-In-One Security (AIOS) – Security and Firewall」を紹介します。
このプラグインを使うことで、サイトの安全性を高めることができます。
英語表示のみのプラグインですが、この記事で分かりやすく解説するので安心してください。
目次
All-In-One Securityの使い方
「プラグイン」→「新規追加」で、「aios」と検索してください。
有効インストール数が多く、評価も高いプラグインです。
しっかり更新されているので、安心感があります。
プラグインを有効化すると、「WP Security」というメニューが左サイトバーに出てくるので、これをクリックしてください。
このようなメニューが表示されるので、1つ1つ解説していきます。
ダッシュボード
ダッシュボードを見てみましょう。
ここでは、サイトのセキュリティ設定の状態をチェックできます。
針が赤や黄色を指していると危険な状態です。できる限り満点の515に近づけましょう。
Dashboardは特に設定するところがないので、次に進みます。
設定
この項目で設定しておきたい内容は以下です。
「WP version Info」に進みます。
「Remove WP Generator Meta Info」にチェックを入れましょう。これは、WordPressのバージョンをHTMLで出力させないようにする設定です。
WordPressのバージョンによっては脆弱性がある場合があり、そのバージョンで放置されているサイトが攻撃者に狙われる可能性があるためです。
攻撃者にバージョン情報を知られないようにチェックを入れておきましょう。
ユーザーアカウント
次はユーザーアカウントに関するセキュリティです。
「WP username」に進みます。
ユーザー名が「admin」になっていないかのチェックです。
ユーザー名を「admin」にするのはセキュリティ上よくないので、これに引っ掛かったらユーザー名を変えてください。
「admin」になっていなければ、ここはそのままでOKです。
「Display name」に進みます。
「ブログ上の表示名」がユーザー名になっていないかのチェックです。
もし上記のように警告文が出る場合は、警告文下のユーザー名をクリックして、ユーザー設定に飛びます。
「ニックネーム」を設定し、それを「ブログ上の表示名」に設定して保存してください。
ユーザー名はログイン情報なので、ブログ上で表示させないようにしましょう。
次は「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はユーザー作成を承認制にする設定です。
ここにチェックを入れておきましょう。
次は「Registration CAPTCHA」をクリックします。
Enable CAPTCHA On Registration Pageはユーザー登録する際に、計算の答えを入力する欄を設ける設定です。
プログラムによるユーザー登録を難しくするための設定です。
CAPTCHAの設定や詳しい内容は後ほど説明します。
「Registration honeypot」をクリックします。
Enable honeypot on registration pageにチェックを入れます。
これは実際には画面に表示されないフォームを挿入して、そのフォームに入力されたら人間ではないと判定してユーザー登録を拒否する設定です。
データベースセキュリティ
次はデータベースのセキュリティ強化です。
次は「データベースの接頭辞」に進みます。
現在のテーブル接頭辞(プレフィックス)がデフォルトの「wp_」になっていたら危険です。
「wp_」になっていたら変更した方がいいのですが、変更前にバックアップをしましょう。
「BackWPup」プラグインなどで、データベースのバックアップを事前に取っておきましょう。
「プラグインがテーブル接頭辞をランダムな6文字で生成する場合には、これをチェックしてください。」にチェックを入れて自動でプレフィックスを生成するか、下の欄に任意のプレフィックスを入力してください。
ファイルシステムセキュリティ
次はサーバーにあるPHPなどのファイルに関するセキュリティ設定です。
「File permissions」をクリックします。
Permissions(パーミッション)とは、ファイルの読み書きや実行の権限に関する設定です。
ファイルのオーナー以外に不要な権限を与えないように、パーミッションの設定を行いましょう。
「No action required」になっているファイルは大丈夫ですが、「Set recommended permissions」と表示されている項目は、クリックして権限を変更してください。
パーミッションを変更しました。
次は、「PHP file editing」をクリックします。
テーマやプラグインのPHPファイルは、管理画面から編集できてしまいます。
Disable ability to edit PHP filesにチェックを入れて、管理画面からPHPファイルを編集できないように設定してください。
次は、「WP file access」をクリックします。
Prevent access to WP default install filesにチェックを入れて、readme.html
、license.txt
、wp-config-sample.php
にアクセスできないようにします。
ブラックリストマネージャー
特定のIPアドレスやユーザーエージェントのアクセスを拒否するための項目です。
ここは一旦飛ばして大丈夫です。
何かしらの攻撃やスパムを受けた時にアクセスを拒否する設定をしてください。
ファイアウォール
ファイアウォールは悪意のある第三者による通信をブロックするための設定です。
「Basic firewall rules」に進みます。
Enable basic firewall protectionにチェックを入れます。
.htaccessファイルの保護、サーバー署名無効、ファイルアップロード制限、wp-config.phpの保護が行われます。
Max file upload size(MB)は、アップロードできるメディアの最大サイズを設定します。デフォルトでは100MBになっていますが、これ以上大きなメディアをアップロードすることはほとんどないでしょう。
そこまで大きな画像をアップロードしなのであれば、10MBくらいに設定しても良いです。
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 Based Brute Force Preventionの項目は変更なしで大丈夫です。
まとめ
今回は、WordPressのセキュリティを強化できるプラグイン「All In One WP Security」の使い方を解説しました。
何も対策をしていないWordPressは危険度が高いです。
自分だけが被害に遭うだけならまだしも、サイト閲覧者にまで迷惑をかけてしまう可能性もあります。
サイト改ざんの被害に合わないためにも、こういった設定は早いうちにやっておくのが賢明です。