前回記事 2個めのWordPressをインストール でご紹介したように、さくらインターネットのサービスと契約していて、WordPressをクイックインストールした場合にあらかじめ初期プラグインとしてセットで入ってくるプラグインの内の一つが All In One WP Security & Firewall です。
All In One WP Security はWordPressのセキュリティ用プラグインで、管理者(自分)以外の人間が管理画面に侵入することを防いだり、コメントを無効化してスパムコメントを防いだり、といった機能があります。
設定も割と簡単なので、他にセキュリティ用プラグインを使っていない方は有効化して使ってみてください。
プラグインを一覧の中から【 有効化 】すると、サイドメニューに設定メニューが表示されます。
※他にセキュリティ用のプラグインを入れた場合は同じ機能が競合して動作が遅くなることがあるので、機能を比較して、不要なほうの停止・削除を行ってください。
アップデートによるデータベース接続不具合
2022年9月に入ってからこのプラグイン『All In One WP Security』を更新すると、更新が正常に終了しない、データベース接続エラーが起きてサイトにアクセスできなくなる、などの不具合が発生しています。
一旦プラグインを無効にして様子を見てください。
プラグインを無効にするには、FTPソフトでサーバー側の【wp-content】⇒【plugins】⇒【all-in-one-wp-security-and-firewall】のフォルダを右クリックして『名前を変更』で【_all-in-one-wp-security-and-firewall】や【stop-all-in-one-wp-security-and-firewall】など、自分が「とりあえず止めてあるプラグイン」だと分かりやすい名称に変えてください。
問題が改善されたら、名称変更した『_』などの部分を削除するだけで再びプラグインが動作します。
そのまま再開しただけではエラーが再発する場合は、プラグインのバージョンを一つ前に戻すか、もしくは一旦プラグインを完全に削除して再度インストールしてください。
.htaccessの内容の一部が消える不具合
2023年5月に『All In One WP Security』を更新した際に、.htaccessに記述した内容の一部が勝手に消えてしまいました。
IPブロックしているはずなのに中国からの不正アクセス試行があったので、.htaccessファイルを確認してみたらそのIP帯域の記述がまとめて消えていました。
どうやら.htaccessに『All In One WP Security』の記述が二重に書き込まれてしまい、それが不具合を引き起こしたようです。
『All In One WP Security』をアンイストールして他のセキュリティプラグインを使ってみようという方は『SiteGuard WP Plugin』などをご検討ください。
Dashboard(ダッシュボード)
ダッシュボードでは、
・現在のセキュリティの安全性がどの程度か
・WordPress管理画面のログイン履歴
・メンテナンスモードのON/OFF
といった項目が表示されています
プラグインの開発者情報(Spread the Word と Get To Know The Developers)はそんなに頻繁に見ることもないかと思うので、ドラッグ&ドロップで配置を入れ替えた方が使いやすいかと思います。
それでは以下で順番に各設定項目についてご説明します。
Settings(設定)
ここは基本的に設定前のバックアップや、いざエラーが起きた際に使う項目です。
General Settings(一般設定)
データバックアップを取る
セキュリティ機能を有効化した後で、WordPressテーマや他のプラグインとの競合でエラーが起きた場合に備えて、あらかじめバックアップを取っておくと安心です。
・Backup your database
・Backup .htaccess file
・Backup wp-config.php file
それぞれのリンク先から、データベース、.htaccessファイル、wp-config.phpファイルのバックアップを取得することができます。
Disable Security Features
【 Disable All Security Features 】をクリックするとこのプラグインで有効にしたセキュリティ機能を全てオフ(無効)にします。
Disable All Firewall Rules
【 Disable All Firewall Rules 】をクリックすると、ファイアウォールの設定を全て無効化して、.htacessファイルからもファイアウォールに関する記述を削除します。
Debug Settings
『 Enable Debug 』(デバッグの有効化) の部分にチェックを入れ、【 Save Debug Settings 】をクリックすると、このプラグインのデバッグ機能が有効になります。
※デバッグのログファイル(lugins / all-in-one-wp-security-and-firewall / logs)は、ラグインの更新が入る度にリセットされます。
.htaccess File
【 Backup .htaccess File 】をクリックすると、現在の.htaccessファイルのバックアップを保存します。
『 .htaccess file to restore from 』 の横から復元に使いたいファイルを選択して【 Restore .htaccess File 】をクリックすると、ファイルを以前のものに戻すことができます。
『 .htaccess(エイチティーアクセス) 』 ファイルとは
サーバーの挙動を制御するApacheというプログラムソフトに対する設定を行うもの。
自分のサイトが間借りしているサーバーに対して『こういう時はこうしてほしい』というお願いを記述するファイルが.htaccessということです。
・サイトを引っ越したから【 http://●●.com 】に誰かがアクセスしようとしたら、そのページじゃなくて【 https://●●.com 】に連れてきてね!
(HTTPからHTTPSにリダイレクト)
・このIPアドレスは怪しい奴だからうちのサイトにアクセス禁止、入れないように弾いといて!
・存在しないURLにアクセスしたら【 404エラー用に作ったページ 】を表示しといて!
(特定の相手のアクセスを拒否・サイトに制限をかける)
こんな感じで、.htaccessファイルには色々な設定を記述することができます。
ただ、このファイルの記述を間違うと、そもそもサイト自体がエラーで表示されなくなったりもするので、自分で記述する際は慎重に編集してください。
wp-config.php File
WordPressの基本機能のファイルである『 wp-config.php 』 のバックアップと復元。
【 Backup wp-config.php File 】をクリックすると、現在の wp-config.php ファイルのバックアップを保存します。
『 wp-config file to restore from 』 の横から復元に使いたいファイルを選択して【 Restore wp-config File 】をクリックすると、ファイルを以前のものに戻すことができます。
WP Version Info
【 Remove WP Generator Meta Info 】の項目にチェックを入れるとWordPressのバージョン情報を隠すことができます。
WordPressのバージョンがソースファイル上に表示されているとそのバージョンのセキュリティの脆弱性を突かれることがあるので、とりあえずチェックを入れて隠しておくと良いでしょう。
Import/Export
このプラグインの設定情報のインポート(入力)とエクスポート(出力)。
このプラグインの設定情報をエクスポートで外部に保存し、インポートで復元します。
同じ設定を他のWordPressサイトでも使いたい時などに便利。
Advanced Settings(詳細設定)
サイト訪問者のIPアドレスを取得保存するための変数をデフォルトから変更したい方向けの設定項目。
User accounts(ユーザーアカウント)
この設定項目では、自分のWordPress上の管理者名(ユーザ名)などの確認・変更ができます。
WP Username
WordPressのインストール時のデフォルト設定だと、ユーザー名は 『 admin(管理者) 』 になります。
もしも 『 admin 』 のままだった場合は、お早めに別の任意の名称に変更してください。
デフォルト名だと、怪しい奴が不正ログインしようとした時に「 ユーザー名が『admin』って分かってれば後はパスワードだけ当てれば良いんだな 」となってしまうので、セキュリティ上あまり宜しくない状態です。
クイックインストールの際に自分でユーザー名を変更した場合はちゃんとその名前がここに表示されているはずなので何もする必要はありません。
Display Name
コメントを投稿した際に表示する名前についての設定です。
他のWordPressサイトでコメントを投稿したり、自サイトのコメントに返信した際に、デフォルトでユーザー名を 『 ニックネーム 』 として表示するようになっています。
これも上記の 『 admin 』と同じように「 ユーザー名が『●●●』って分かってれば後はパスワードだけ当てれば良いんだな 」と悪用されることがあるので、気になる方はニックネームを変更しておきましょう。
たとえばユーザー名が 『 Ichiro 』 だったら、ニックネーム表示は漢字で 『 一郎 』 にしておくとか。
不正ログインは海外からのアクセスが圧倒的に多いので、こうした変更でも有効かと思います。
Password
設定しているパスワードのセキュリティ強度を調べることができます。
『Start typing a password.』の上部の入力欄にパスワードを入れてエンターキーを押すと一般的なデスクトップパソコンを使ってそのパスワードを解読・突破するまでにかかる時間の目安を算出してくれます。
私の場合は英字と数字を混ぜてかなり長めにしているのでなんか桁数が良く分からないくらいになってますね。
このくらいだったらパスワードの強度はまず安心。
User Login(ログインのセキュリティ)
【 User login 】内の『 Login Lockdown Configuration 』 の項目ではパスワードを数回間違えた人を一定時間ログインページに入れなくする設定ができます。
自分がうっかりパスワードを打ち間違えるとしても1、2回だろうからそれ以上の回数間違えるなら怪しい侵入者だろう、侵入者に繰り返しログインを試されないように閉め出そう、ということですね。
以下の例の場合だと、5分以内に3回ログインに失敗したIPアドレスからはそれ以降の60分はログインできないようにするという設定にしています。
icon-lightbulb-o ポイント
※ロックアウトの設定を有効にしていて、うっかり自分がロックアウトされてしまった時は違うパソコンやスマホからでアクセスすればIPアドレスが変わるので制限に引っかからずにログインできます。
※ちょいちょいユーザー名やパスワードを間違えそうでやばい、という方はホワイトリスト(上図の緑色の部分)に登録しておくと安心ですね。
その際には自分が普段WordPressの管理に使う機器(パソコン、タブレット、スマホ等)それぞれのIPアドレスを忘れずにいれておきましょう。
複数のIPアドレスを記述する場合は
123.123.12.0
123.123.13.1
のように、改行して1行につき1つのアドレスを記述します。
※ただし、回線の切断・再接続などでIPアドレスは変わってしまうことがあります。
特にスマホは、Wi-Fi接続した際のIPアドレスとそれ以外の接続のIPアドレスが変わることが良くあるので自分のログインを怪しい奴のログインと間違えてブラックリストに入れないようにご注意を。
User Registration(ユーザー登録)
WordPressの登録フォームから新規アカウントの追加を許可している場合、不正ログインした怪しい奴に勝手に管理画面に入られて怪しい奴を複数管理者として追加登録されてしまうかもしれません。
そうなると、記事の中に偽ブランド品サイトに誘導するURLを貼られたり、メールフォームを悪用されて迷惑メールの送信元にされてしまったり、といった実害が出る可能性があります。
それを防ぐための機能がこの 『 ユーザー登録設定 』です 。
Manual Approval
【 Enable manual approval of new registrations 】(新規登録の手動承認を有効にする)のチェックボックスにチェックを入れると、今後新規登録したアカウントをひとまず全て保留にして、管理者である自分が許可を出さない限り、新規アカウントを開始することはできなくなります。
Registration Captcha
上部タブ【 Registration Captcha 】をクリックして『 Enable Captcha On Registration Page 』 にチェックを入れると、新規アカウント追加登録フォームに簡単な足し算などのフォームが追加されます。
基本的にロボット(この場合は、自動的にサイトを巡回して不正アクセスを試みるプログラム)はそうした計算を理解して回答を入力する機能を持たされていないため、こうしたフォームを追加することで、ロボットの不正アクセスを防ぐことができます。
Registration Honeypot
上部タブ【 Registration Honeypot 】をクリックして『 Enable Honeypot On Registration Page 』 にチェックを入れると、新規アカウント追加登録フォームにハニーポットを設置します。
ロボットプログラムに対して『 ここにセキュリティ突破できそうな場所がありますよ~ 』と罠を設置して、それに反応した奴はロボット、という判断をして、そのIPアドレスをサイトの外に飛ばす、ということですね。
上の手動許可と計算式フォームさえ有効化しておけば別にハニーポットまでは要らないかなーと思って私は無効にしています。
Database Security(データベースのセキュリティ)
データベース(自分がファイルなどを置いているサーバー上の場所)のセキュリティ設定です。
DB Prefix
WordPressのデータベーステーブルはデフォルトで名称の頭に『 wp_ 』と付いているので、不正ログインしようとする怪しい奴に名前を推測されやすい状態です。
ここでChange Database Prefix、つまりデータベース接頭辞の変更を有効化すると、『 8kpoe_ 』 といったランダムな接頭辞に変わります。
ただ、データベースに何らかの変更を加えるとWordPressや他プラグインでエラーが発生することがあります。
いざという時に自力でデータベースの修正やデータ復元が出来る方でない限り、この機能は有効化しない方が良いかもしれません。
DB Backup
【 Create DB Backup Now 】をクリックすると即時データベースのバックアップを取ることができます。
『 Automated Scheduled Backups 』 の項目では定期的なバックアップの設定ができます。
私は他にバックアップ用のプラグインを入れているので、ここは無効のままにしています。
・【プラグイン】バックアップ保存用BackWPupのインストールと設定
・【プラグイン】バックアップ保存用BackWPupの使い方(活用編)
Filesystem Security(ファイルシステムのセキュリティ)
File Permissions
WordPressの各ファイルへのパーミッション(アクセス権限)の安全性をチェックできます。
基本的に全ての項目が緑になっていればセキュリティ上の問題はありません。
PHP File Editing
WordPressテーマやプラグインのPHPファイルを管理画面から編集できないようにする設定。
『 Disable Ability To Edit PHP Files 』 にチェックを入れると、WordPress管理画面のサイドメニューの【 外観 】⇒【 テーマの編集 】も使用できなくなります。
一度外観作り上げたら後はそんなにテーマの編集することも無いし、セキュリティの方が重要!という方はチェックを入れておくと良いでしょう。
私はちょいちょい外観をいじるので、テーマの編集に入れないのは面倒だなーと思ってチェックは外したままにしています。
WP File Access
『 Prevent Access to WP Default Install Files 』 にチェックを入れると、WordPressインストールに含まれる初期ファイル(readme.html、license.txt、wp-config-sample.php など)にアクセスできないようにして、WordPressバージョンなどの情報を外部から見られないようにします。
この辺りのファイルは普段自分も見ることは無いので、有効化しておいても良いかもしれませんね。
Host System Logs
【 View Latest System Logs 】をクリックすると、error_logというファイルに保存されているエラーログや警告ログを見ることができます。
『 No system logs were found!(システムログは見つかりませんでした) 』 と表示されれば、現状でエラーが特に無いということなのでそれでOKです。
エラーログが表示された場合は内容を確認して修正しましょう。
Blacklist Manager(ブラックリスト管理)
指定したIPアドレスまたはユーザエージェントを持つユーザーを自サイトに一切アクセスできないように拒否する機能。
ネットスラングで言うところの 垢バン(アカウントをBAN=禁止)的なやつです。
ここに入力したIPアドレスやユーザーエージェント情報(この場合はプロバイダドメインやネットワーク名)を.htaccessファイルのアクセス拒否リストに記述してくれます。
改行して1行につき1つのIPアドレスやユーザーエージェント情報を記述します。
WordPressサイトを運営していて、スパムや不正アクセスが来たらコメントフォームやメールフォームから送られたメッセージのプロパティやログインエラー履歴の詳細欄から、IPアドレスやネットワーク名を確認して、ブラックリストに入れて対応しましょう。
ドメイン/IPアドレス サーチ 【whois情報検索】などのWEBサービスで
・IPアドレスからドメイン名を
・ドメイン名からIPアドレスを
それぞれ調べることができます。
ブラックリストを使う時の注意点
上の【 ログインのセキュリティ 】の項目でもお話したように、回線の切断・再接続などでIPアドレスは変わってしまうことがあります。
特にスマホは、Wi-Fi接続した際のIPアドレスとそれ以外の接続のIPアドレスが変わることが良くあるので、自分のログインを怪しい奴のログインと間違えてブラックリストに入れないようにご注意を。
また、しつこいスパムメールや掲示板の荒らし行為に困っていて、相手がスマホ、PCを複数持っていたりして毎回IPアドレスを確認するのが大変!という時にはIPアドレスの範囲指定や、ドメインやネットワーク名でのブロックを検討してください。
IPアドレスの範囲指定
掲示板を荒らしている相手がスマホで、頻繁にIPアドレスが変わってブロックが追いつかない…という時などにおすすめなのがIPアドレスの範囲指定。
私達がネット接続するために契約している会社には、その会社ごとにIPアドレスが割り振られています。
他の会社と被って、違う人が同じIPとかになったら大変ですからね。
そのため 『 この企業のIPアドレスは上3ケタが100のことが多い 』 というような傾向があります。
※もちろん同じ上3ケタで以下の番号が違うアドレスが他社に割り振られている場合もあります。
IPアドレスが変わったとしても、ネット接続契約しているプロバイダが変わっていない限り
123.123.111.1
123.123.111.2
のように上9ケタまでは同じだったり、
123.123.111.100
123.123.100.123
のように上6ケタまでは同じ、というようなパターンになることがあります。
しばらくIPアドレスを個々にブロックしつつ、こうしたパターンを見つけたら、まとめて範囲指定でブロックしてみましょう。
上の例で言えば上6ケタは同じで、それから先が変わっていっているため
123.123.*.*
と指定すれば、下6ケタが何であってもブロックすることができます。
プロバイダのブロック
相手のIPアドレスがいくつか判明しているのであれば、それぞれドメイン/IPアドレス サーチ 【whois情報検索】などのWEBサービスでプロバイダを確認すると、全て同じプロバイダになっているはずです。
スマホでもPCでも、同じ回線を使ってネット接続している限り、契約しているプロバイダは一つで、プロバイダの接続IDも一つで変わらないはずですからね。
例えば一軒家で1階にあるPCでも2階にあるPCでもスマホでも、家族が契約しているプロバイダで皆がネット接続していたら同じプロバイダからの接続になります。
プロバイダでブロックをかけると、そのプロバイダを使っているネット接続全てをブロックできるので、いちいちIPアドレスを記述する手間が省けます。
ただそれで問題なのが、同じプロバイダを使っている不特定多数の無関係な方も巻き込んでブロックしてしまうということ。
ものすごくローカルな、例えば特定の市町村でのみプロバイダ契約をしている小さな会社のプロバイダ名でブロックをかけた場合は巻き込まれる人も少なくなりますが、ドコモ光や、Yahoo!BBソフトバンクなど、契約者が多いプロバイダを丸ごとブロックしてしまうと、下手をすると何万人の人が自分のサイトに入れない状態になります。
その辺りをご注意いただきつつ、『 市町村名のついたローカルなプロバイダだからブロックしても巻き込まれる人は少ないはず 』 『 とりあえずしつこい不正アクセスが諦めるまで期間限定でプロバイダでブロックしてみよう 』 という感じで、慎重にプロバイダ接続IDでのブロックを使ってみてくださいね。
国ごとのブロック
特定の国からしつこいスパムが送られてくる、不正アクセスしようとしてくる。
そんな時は、その国からのアクセスをまるごとブロックすることもできます。
自分で.htaccessファイルを書き換えて拒否したほうが確実なので、【.htaccess】国ごとのIPアドレスでサイトアクセスを拒否するの記事をご覧ください。
Firewall(ファイアウォール)
ファイアウォールとは、防火壁が炎の侵入を防いでくれるようにネットワーク上の不正な通信を通過させないようにするセキュリティ機能のこと。
All In One WP Securityにもファイアウォール設定メニューがあるので必要に応じて設定しておきましょう。
自分で.htaccessファイルを編集してセキュリティ設定する場合は特にここで設定はしなくても良いのかも。
以下の例ではピンバック機能を無効化しています。
完全にピンバック機能を無効化する場合は【 Completely Block Access To XMLRPC 】に、JetpackなどのXML-RPC機能を使用するプラグインをインストールしている場合は【 Disable Pingback Functionality From XMLRPC 】の方にチェックを入れてください。
ピンバック機能とは
自分のWordPressページに対して誰かがリンクを貼ったことを知らせてくれる機能。
記事を閲覧してくれた人が自分のサイトに『この記事良かったよー』とリンクを貼る
⇒ピンバックで自分に『このサイトにリンクが貼られたよ』という通知が来る
⇒ピンバックを承認すると、自サイトのリンクとして貼られた記事に相手サイトへのリンクが掲載される
⇒お互いリンクを貼っている状態になる、という流れです。
基本的にはお互いのサイトを紹介しあうための便利な機能なのですが、悪いやつに貼られたサイトを確認で見に行ってウイルスを仕掛けられたり、こちらのサーバーに負荷をかけるDDoS攻撃に利用されたりすることが稀にあります。
そのため、こうしたセキュリティプラグインではピンバックの無効化機能を付けていることが多いです。
Brute Force(ブルートフォースアタックへの対策)
自動プログラムで英字と数字の組み合わせを片っ端から試行して不正ログインしようとする総当たり攻撃のことをブルートフォースアタックと呼びます。
WordPressのログインファイルは末尾が皆同じ『wp-login.php』なので、『 https://(ドメイン名)/wp-login.php 』 がログイン画面のURLだと誰にでも分かりやすい状態です。
そのURLにやってきた自動プログラムが万が一にパスワードを突破したらログインされてしまうので、パスワードを長めにする等の対策と合わせてログインURL自体も変えてしまおう、というのがこの設定項目です
他の項目でログインの制限かける設定してあるし、URL変えたら自分も面倒だから別にいいかなー、という場合はこの設定はしなくても構いません。
SPAM Prevention(スパム防止)
コメント欄に詐欺サイトへのURLを貼ったりする迷惑な投稿をスパムコメントと呼びます。
コメント欄を開設しているのであれば、この項目は必ず設定しておいた方が良いですね。
Scanner(マルウェアのスキャン)
怪しい奴に不正ログインされ、ファイルを書き換えられたことに気づけなかったら大変なので、File Change Detection Feature(ファイル変更の検出機能)でファイル変更を察知しよう、という機能です。
【 Perform Scan Now 】:手動でファイル変更検出を実行
【 View Last File Change 】:最後にスキャンしたファイルの変更結果を表示
『 Enable Automated File Change Detection Scan 』 にチェックを入れると定期的に自動でファイルの変更をチェックしてくれます。
※頻繁に変更が加わる可能性があるログファイルやキャッシュファイルは 『 Files/Directories To Ignore(検出から除外するディレクトリ/ファイル) 』 の欄に加えておきましょう。
Maintenance(メンテナンスモード)
手動でメンテナンスモードに切り替えて、ログインしている管理者以外の全ての訪問者をサイトから弾き出して閲覧させない(メンテナンスモードの画面を表示する)状態にできます。
エラー原因の調査中や保守メンテナンス中で、今は誰もサイトの中に入れたくない、という時などに使います。
Miscellaneous(その他の設定)
コピー防止やフレーム呼び出し禁止といった、その他の細々した設定。
Copy Protection
【 Enable Copy Protection 】にチェックを入れて設定保存すると、管理者以外の訪問者のテキストコピー防止機能が有効化されます。
サイト内で
・右クリック
・テキスト選択
・コピー
これらの操作ができなくなります。
パクリサイトに著作権侵害されることを防ぐためには有効な設定ですが、一般の閲覧者にとっては 『 右クリックメニューで画像だけを表示 』や『 コピーした単語を検索 』などが使えなくなり、かなり不便になってしまうので、慎重に検討してから設定しましょう。
Frame
【 Enable iFrame Protection 】にチェックを入れて設定保存すると、他のサイトにフレームやiframe経由でコンテンツが表示されないように防止できます。
パクリサイトやアフィリエイトサイトの中には、自サイトの中に置いたフレームと呼ばれる枠内に自動で取得した他サイトのコンテンツを丸ごと流用して、あたかも自分のサイトのコンテンツかのように表示していることがあります。
著作権侵害の中でもなかなか悪どい奴ですね。
これを防ぐために、自サイトのコンテンツがフレーム内に呼び出されることを防止するための機能です。
とりあえずチェックを入れて有効化しておくと良いかと思います。
Users Enumeration
WordPressでは標準の管理者情報ページ(ドメイン/WordPress/?author=1 など)にアクセスされると、管理者情報が外部から閲覧できてしまうことがあります。
【 Disable Users Enumeration 】にチェックを入れて設定保存すると、もし閲覧可能な管理者情報ページに外部からアクセスがあっても、情報ではなく、forbidden(アクセス禁止)エラーを表示するようになります。
これもとりあえずチェックを入れて有効化しておくと良いかと思います。
WP REST API
【 Disallow Unauthorized REST Requests 】にチェックを入れて設定保存すると、許可されていないリクエストに対するWordPress REST APIのアクセスをブロックできます。
APIはアプリケーション・プログラム・インターフェイスの略。
WordPress REST APIはリセット要求を使用するプログラム(WordPress記事の投稿など)。
管理者ユーザーがログインしていないのに投稿、編集されないようにブロックするための機能ということですね。
ただ、メールフォームプラグインなどが自動でこのAPIを使ってメール送受信を行うことがあるため、APIを自分で修正や制御できる人以外はここは無効のままの方が良いかもしれません。