WP Cerber Securityのインストールと簡易的な設定
なおWP Cerberでの設定はメリット・デメリットが存在するため、どのような効果があるか記載します。
WP Cerberには以下の機能があります。(これら以外にもありますが省略しています)
- 管理画面の不正ログインを防ぐ(連続試行回数の制限、ログインURLの変更等)
- 操作履歴(ログイン履歴含む)の記録
- ログイン試行を繰り返し行うような悪意のあるIPアドレスの検出
- サイト改ざん検知スキャンの実行
- スパムコメントのブロック(自動ボット検出、ReCAPTCHA等)
- セキュリティ設定の診断
- メールで週間レポートの発行
設定項目が多くて難解な印象を与えるかもしれませんが、別に全ての機能を使う必要はありません。
こういうのは無理して全て使おうとしないのが使いこなすコツです。
また他のセキュリティ系プラグインと併用する場合は、必ず理解した上で使いましょう。
機能が競合するプラグインを同時に使用すると、高確率で不具合に遭遇してしまうからです。
WP Cerber Securityのサーバーからインストール
さて、WordPressにプラグイン「WP Cerber Security」をインストールして設定します。
初めに以下URLからダウンロードしてください。
https://downloads.wpcerber.com/plugin/wp-cerber.zip
それをWordPressの管理画面の[プラグイン]からアップロードします。
画面上部の「プラグインのアップロード」ボタンを押すと以下の画面になるので、ファイルを指定します。

※もし既にWP Cerber Securityをインストールしていたら置換するか否かを聞かれるので、置き換えましょう。
アップデートサーバーを変更
場所: [WP Cerber]-[ダッシュボード]-[メイン設定]
インストール後に「Use WP Cerber's plugin repository」をONにして、[変更を保存]ボタンを押します。

WP Cerberの初期化モードを変更
場所: [WP Cerber]-[ダッシュボード]-[メイン設定]
[初期化モード]の[セキュリティエンジンのロード]を[標準モード]に変更します。

以下URLによると「他のプラグインやテーマが読み込まれる前に起動する」モードであるようです。
https://wpcerber.com/development-version-6-3/
WordPressのコアが読み込まれた直後、最も早く起動してセキュリティ制御を行うためのものみたいですね。
通常モードに設定しておかなければ使用できない機能もあるようなので、初めに設定しました。
デフォルトで「通常モード」にしてほしいところですが、パーミッションの設定によっては通常モードにできないらしいので、「使える人だけ変更してね!」というスタンスなのだと思います。
XML-RPCの無効化
メリット
- XML-RPC経由の不正なログインを防止する
- トラックバック/ピンバック機能を悪用したDDoS攻撃を防止する
デメリット
- WordPressのモバイルアプリからログインや投稿ができなくなる
- トラックバック/ピンバック機能が利用できなくなる
場所:[WP Cerber]-[ダッシュボード]-[強化設定]
無効化する場合は「XML-RPC を無効化」をONにしてください。
トラックバック/ピンバック機能やWordPressのモバイルアプリなどを使用する場合は無効化しないでください。
別なプラグインであるWordfenceにはXML-RPCに2要素認証を掛ける機能があるので、XML-RPCを生かす方はWP CerberよりもWordfenceの方がいいと思います。
ログインページを隠す
メリット
- 不正なログイン試行を未然に防止する
デメリット
- URLを忘れるとログインできなくなる
場所:[WP Cerber]-[ダッシュボード]-[メイン設定]

[カスタムログインページ]の設定を変更したいのですが、どうやらWordPressのパーマリンクの設定を変更しないとダメみたいです。
[設定]-[パーマリンク]-[共通設定]から適当に変更して保存します。

[WP Cerber]-[ダッシュボード]-[メイン設定]に戻って以下を変更します。
- [ログインセキュリティ]-[wp-login.php の認証リクエストの処理]を[wp-login.php へのアクセスをブロックする]に変更
- [カスタムログインページ]-[カスタムログイン URL]を適当な文字列で埋める。文字列は忘れないようにすること
- [ダッシュボードのリダイレクトを無効化]をOnにする

保存後は以下のメッセージが表示されるので、ログインURLをブックマークしておき、ログインできるかどうかも確認しましょう。

設定には以下URLを参考にしました。
Custom login page for WordPress – WordPress security plugin, firewall, anti-spam
How to hide wp-admin and wp-login.php from attacks – WordPress security plugin, firewall, anti-spam
もしURLを忘れてログインできなくなってしまったら、プラグインを強制的に無効化してください。
WordPressをインストールしたディレクトリ内のWP Cerberフォルダ(今回は/var/www/html/wp-content/plugins/wp-cerber)をリネームすることで無効化可能です。
ユーザー名を隠す&REST APIの制限

メリット
- ユーザー名を実質的にパスワード化することで不正なログインを防止する
デメリット
- 外部アプリと連携する機能やWordPressのモバイルアプリに不具合が発生する
- 動作しなくなるプラグインがある(設定で回避可能)
デフォルト設定の場合、WordPressのユーザー名は以下に表示されます。
- 固定ページや投稿記事の投稿者名
- RSSフィードのdc:creatorタグ
- REST APIである「ドメイン名/wp-json/v2/users」にアクセスした時のレスポンス内容
- XMLサイトマップ
3.でのユーザー名を隠す場合、REST APIを制限する必要があります。
REST APIを制限するとデメリットがあるため、外部アプリと連携する機能(具体的にはアプリケーションパスワード)やWordPressのモバイルアプリなどを使用する方は設定しないでください。
4.については、WordPress標準のユーザーXMLサイトマップを使用している場合に必要です。
Google XML Sitemapsプラグインを入れる場合は不要です。
1と2の対応 ニックネームと表示名の変更
こちらはプラグインに関係ない設定です。
WordPressの管理画面の[ユーザー]のユーザー個別のページからニックネームを設定できるので、ユーザー名と異なる名前にしてください。
プロフィールを更新すると「ブログ上の表示名」からニックネームを選べるようになるので、これも変えます。

3の対応 REST APIの制限
[WP Cerber]-[ダッシュボード]-[強化設定]から[ユーザー ID による表示を停止]と[REST API を無効化]をONにします。念のため[ログインユーザー]もONにしておきましょう。

なおNginxの場合、以下の設定も必要でした。
sudo vi /etc/nginx/conf.d/wordpress.conf
location ^~ /wp-json/ {
rewrite ^/wp-json/(.*) /index.php?rest_route=/$1 last;
}
※WP CerberでREST APIを無効にできない件についてより引用
またContact Form 7、Caldera Form、Yoast SEO、JetpackなどのプラグインはREST APIに依存しているので、さらに追加の設定が必要です。
これらのプラグインを入れる場合は以下を参考に設定してください。

4の対応 XMLサイトマップのユーザー名を隠す
[WP Cerber]-[ダッシュボード]-[ユーザー名の検出を防止]をONにしてください。
※2つありますが、「ユーザー XML サイトマップによるユーザー名の検出を防止」の方です
Google XML Sitemapsを使っている場合はOFFにしましょう。
設定後
これで以下すべてからユーザー名を隠すことができます。
- 固定ページや投稿記事の投稿者名
- RSSフィードのdc:creatorタグ
- REST APIである「ドメイン名/wp-json/v2/users」にアクセスした時のレスポンス内容
- XMLサイトマップ
フィードの無効化について
WordPressのセキュリティ対策で調べるとフィード機能は無効化した方がいいという情報が散見されます。WP Cerberにもフィードを無効化できる設定がありますが、私は推奨しません。
詳しくは以下をどうぞ。

その他注意事項
WP Cerberには籠城モード(Citadel mode)という機能があり、デフォルトで有効になっています。
デフォルトでは「直近200分で15回ログイン試行に失敗した後に、60分間有効化」の設定になっており、この間はホワイトリストのIPアドレスとアクティブなセッションを除いて誰もログインできなくなります。
一応籠城モードになった時はメールで通知してくれるのですが、運用によっては不都合になるかと思います。
不都合な方は設定で無効化するかIPアドレスを登録しておきましょう。