サーバーTips

501エラー Not ImplementedはXserverのWAFが原因かも

2020-02-06

本記事にはプロモーションが含まれています。

501エラー Not ImplementedはXserverのWAFが原因かも

ソラミ♪

Webエンジニアをやりつつ、デザインにも携わる株式会社コムワークの中の人。WordPress、Adobeアプリ、カワウソ好き。 2015年から当ブログ運営|2008年からGmail使用中|WordPress制作10年以上|15社以上のレンタルサーバー利用経験|100件以上のドメイン取得運用|サイト・ドメイン移転多数 »  もっとくわしく

新規で立ち上げたウェブサイトのGoogleサーチコンソールから「サーバーエラー(5xx)」が検出されたというメールが届いた時の、原因究明と解決までの備忘録です。

結論から言うと、ある特定のページが「501 Not Implementedエラー」になっており、その原因はページ自体の問題ではなくXserverのWAF機能に誤検知されてしまったことでした。

エラーが出た状況と解決方法を順を追ってみていきます。

Googleサーチコンソール「カバレッジ」関連の問題が検出されました

Google Search Consoleカバレッジで問題が検出されました「サーバーエラー5xx」の画面

カバレッジhttps://www.example.com/で問題が検出されました

サーバーエラー(5xx)

なぜサーバーエラー?

このウェブサイトは静的HTMLで構成されているサイトで、全く思い当たることがなく「カバレッジの問題を解決する」をクリックしてSearch Consoleの画面を確認すると。。。

Google Search Consoleカバレッジ>サーバーエラー(5xx)の画面

下段にある例を見てみると、アップロードしているPDFファイルが一覧に表示されています。

PDFがエラーの原因のようでした。

実際のページをブラウザから確認してみると、以下のような501エラーが表示されます。

Xserver-501 Not Implemented エラー画面
501 Not Implemented
アクセスしようとしたページは表示できませんでした。
このエラーは、実装されていないメソッドでのアクセスがあったことを意味します。
対応していないメソッド(MOVE/COPYなど)を使用した。

501エラーの原因を特定する

エラーが発生しているページはPDFファイルで、PDFファイルの内容は業務のお知らせ的なテキストをWordで打ったものをPDFにした、ごく一般的なPDFファイルでした。

なのでPDFファイル自体に問題があるとは考えにくい。そうなるとサーバー側での問題が考えられます。

上記エラーメッセージでわかる人はわかるかと思いますが、利用しているサーバーはエックスサーバー です。

XserverにはWAF機能があります。

エラーは、XserverのWAF設定はいつくかある中の一つが原因のようでした。(一旦すべてOFFにしてみると、エラーは発生しなくなったため)

でもこのエラーのためにWAFを全てOFFにするのはもったいないというか、できればWAFは有効な状況にしておきたいところです。

なのでWAFのどの設定で引っかかっているのかを調べることにしました。

XserverのWAF機能

エックスサーバーのWAF設定画面

エックスサーバーのWAFの設定項目は以下の6つの機能からなります。

  • XSS対策
  • SQL対策
  • ファイル対策
  • メール対策
  • コマンド対策
  • PHP対策

WAFの設定を変更してから反映されるまでに1時間程度かかるようです。

今回の場合、疑われるのは「XSS対策」か「コマンド対策」かなとアタリをつけ、一つずつOFFにしてエラーが解消されるかどうかを確認してみました。

当たりをつけた「XSS対策」「コマンド対策」を一つずつOFFにして問題が解決するかどうか確認したところ、どちらでもエラーが出たままで解決しないことが判明。次に該当しそうなWAF「ファイル対策」をOFFにしてみました。

すると、エラーが表示されなくなりました。原因はWAFの「ファイル対策」だったのです。

XserverのWAF「ファイル対策」:
.htpasswd .htaccess httpd.conf等、サーバーに関連する設定ファイルが含まれたアクセスを検知します。

上記のような機能で、なぜ誤検知されてしまったのだろうと、さらに色々調べてみると、PDFファイルをアップしていたディレクトリ名を「etc」としていことが原因とわかりました。

このetcディレクトリの中にアップロードしたファイルは、PDFであれ画像であれ、すべて501エラーとなってしまうことがわかりました。

考えてみたらLinuxではルート直下にetcというディレクトリがあり、hostsファイルのような設定ファイルが置かれるところです。システム上重要なファイルが置かれるところであり、このような理由でWAFで弾かれてしまったようです。

501エラーの解決ポイント

ディレクトリ名に「etc」を使わない。etcというディレクトリ名を別の名前に変更。

こうしてPDFファイルがエラーにならず表示されるようになりました。

サーバーのWAF設定はWebアプリケーションの脆弱性対策として必ず有効にしておきたい機能ですが、意図せずエラーが発生してしまうので難しいところですね。

Xserver WAF設定 https://www.xserver.ne.jp/manual/man_server_waf.php

本記事以外でもWAFが原因によるトラブルがありました。。。

  • この記事を書いた人
  • 最新記事

ソラミ♪

Webエンジニアをやりつつ、デザインにも携わる株式会社コムワークの中の人。WordPress、Adobeアプリ、カワウソ好き。 2015年から当ブログ運営|2008年からGmail使用中|WordPress制作10年以上|15社以上のレンタルサーバー利用経験|100件以上のドメイン取得運用|サイト・ドメイン移転多数 »  もっとくわしく

-サーバーTips
-,