WordPressのセキュリティ対策として有名なプラグイン「SiteGuard WP Plugin」を導入し、設定変更をしている最中に意図せず500エラー(Internal Server Error)が発生してしまいました。その際に対応した内容を履歴として残しておきます。
エラー発生
先のプラグインでは色々とセキュリティ強化することができます。その中で「XMLRPC防御」の項目があり、XMLRPC全体を無効化しました。
その瞬間に・・・
あっ・・・やってしまった。
解決方法
まぁ焦りますよね。。。
ただ直前の作業はわかっているので原因は明らかです。十中八九、XMLRPC全体を無効化してしまったことですね。
この場合の解決方法は2つ。
- バックアップを使って、設定変更前の状態に戻す。
- WordPressの設定を管理画面を通さずに直接修正して、XMLRPC無効化を解除する。
毎日バックアップ(スナップショット)を取得しているので、1.で解決可能です。ただ、それなりの作業になるかもしれないので、2.を模索してみることにしました。
500エラーが発生した場合には、まずエラーログを確認しましょう。
Apacheのエラーログ(/var/log/apache2/error.log)を確認したところ、
[Tue Nov 17 13:48:35.695344 2020] [core:alert] [pid 25073:tid 140175055968000] [client xxxx] /var/www/html/.htaccess: Require not allowed here, referer: https://blog.bassbone.tokyo/wp-admin/admin.php?page=siteguard_protect_xmlrpc
[Tue Nov 17 13:48:37.677557 2020] [core:alert] [pid 25073:tid 140175055968000] [client xxxx] /var/www/html/.htaccess: Require not allowed here, referer: https://blog.bassbone.tokyo/wp-admin/admin.php?page=siteguard_protect_xmlrpc
というエラーが大量に出ていました。
「/var/www/html/.htaccess」に何かあるのでは??ということで、次は該当の.htaccessを確認してみましょう。
確認したところ、気になる部分が・・・
#==== SITEGUARD_DISABLE_XMLRPC_SETTINGS_START
<Files xmlrpc.php>
<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Order allow,deny
Deny from all
</IfModule>
</Files>
#==== SITEGUARD_DISABLE_XMLRPC_SETTINGS_END
コメント部分にXMLRPC設定とあるので、これが怪しい。ひとまずこの部分を削除してみました。
その結果・・・
復活!!!
色々試した結果、「ピンバック無効化」であればエラーは発生しないようです。
たしかに注意文言として「XMLRPC全体を無効化すると、XMLRPCを使用したプラグインやアプリの使用ができなくなります。」とありますが、まさか自身が使えなくなるとは・・・
セキュリティ対策のための設定となるとコアな部分も触るので、このような事象は想定しておくべきですね。今回は運良くファイルを直接編集して復活しましたが、どうしようもない場合もありますので、バックアップは忘れずに取るようにしましょう!