再構築中につきトッ散らかっています

XserverのWordPressで501 Not Implementedエラーを出さないWAF設定

501 Not Implemented WordPress
501 Not Implemented



当Webサイトのこのワードプレスで 501 Not Implemented という見かけないエラーが発生し、公開・下書きとして保存・更新・プレビューの表示ができなくなった。

原因は利用しているレンタルサーバーのXserver(エックスサーバー)で不正アクセス対策として設定したWAF(Webアプリケーションファイアウォール)だった。投稿テキストやスラッグに特定の文字が含まれていると、それらを不正として検知し遮断してしまったようだ。

501 Not Implemented

501
Not Implemented

501
Not Implemented
アクセスしようとしたページは表示できませんでした。
このエラーは、実装されていないメソッドでのアクセスがあったことを意味します。

以下のような原因が考えられます。
対応していないメソッド(MOVE/COPYなど)を使用した。

今回いくつか試した結果、発生したエラーは以下の4パターンだった。

 501 Not Implemented エラーの発生条件

投稿テキスト内に特定の文字が存在する場合

投稿テキスト内に下記の文字列があったときに501 Not Implemented エラーが発生した。アルファベットは小文字でも大文字でもエラーに。

  1. 半角の「/etc/」という記述に『ファイル対策』が反応
  2.  半角の「;(セミコロン)」の後ろに「cc」があると『コマンド対策』が反応
  3. 半角の「cd」という記述に『コマンド対策』が反応

スラッグURLに特定の文字が存在する場合

  1. カテゴリーのスラッグに「etc」を設定し、「example.com/category/etc/」にアクセスすると501 Not Implemented エラーが発生。タグのスラッグに「etc」を設定し、「example.com/tag/etc/」にアクセスしても同様にエラー。

これで解決 501 Not Implemented エラーにならないWAF設定

WAFの設定を上から順にON、ON、OFF、ON、OFF、ONにしたらエラーが出なくなった。

設定項目対策内容エラー原因設定
XSS対策javascriptなどのスクリプトタグが埋め込まれたアクセスについて検知します。ON
SQL対策SQL構文に該当する文字列が挿入されたアクセスについて検知します。ON
ファイル対策.htpasswd .htaccess httpd.conf等、サーバーに関連する設定ファイルが含まれたアクセスを検知します。「/etc/」OFFにする
メール対策to、cc、bcc等のメールヘッダーに関係する文字列を含んだアクセスを検知します。ON
コマンド対策kill、ftp、mail、ping、ls 等コマンドに関連する文字列が含まれたアクセスを検知します。「cd」
「;」+「cc」
OFFにする
PHP対策session、ファイル操作に関連する関数のほか脆弱性元になる可能性の高い関数の含まれたアクセスを検知します。ON

解除したWAFのかわりにBBQプラグインで防御

投稿テキスト内に「cc」や「cd」と書けないのは不便なので、XserverのWAF設定を一部解除する代わりにファイアーウォール機能を持つ Block Bad Queries (BBQ) プラグインで不正アクセス対策をする。

Block Bad Queries (BBQ) is a simple, super-fast plugin that protects your site against malicious URL requests. BBQ checks all incoming traffic and quietly blocks bad requests containing nasty stuff like eval(, base64_, and excessively long request-strings. This is a simple yet solid solution for sites that are unable to use a strong .htaccess firewall.

BBQ: Block Bad Queries
The fastest firewall plugin for WordPress.

コメント

タイトルとURLをコピーしました