メインコンテンツに移動

エックスサーバーのWAFで記事が保存できない?501エラーの原因と対処法

エックスサーバーのWAFで記事が保存できない?501エラーの原因と対処法

Drupal で作っている会社のブログに、パソコンの作業手順の記事を投稿しようとしたときのことです。プレビューのボタンを押すと「501 Not Implemented」というエラーの画面になり、アイキャッチの画像を選ぶと「Oops, something went wrong.」というメッセージが何度も出るようになりました。

原因は、サーバーの故障でも Drupal の不具合でもなく、エックスサーバーの WAF(ウェブアプリケーションファイアウォール)が、記事の本文を攻撃と判断して止めていたことでした。どうしてそう判断できたのかも、あわせて紹介します。

この記事では、実際に起きたことの画面とともに、原因を突き止めた根拠、エックスサーバーの WAF の6つの対策の役割とメリット・デメリット、記事を保存できないときの3つの対処法をまとめます。

この記事の要点

  • エックスサーバーの WAF は、送られてきた内容に攻撃に使われる文字の並びがあると、アクセスを止める
  • 本文にコマンドの手順を書いた記事は、自分の管理画面からでも止められることがある
  • 止められると、501 のエラーの画面や、Drupal の「Oops…」のメッセージが出る
  • WAF には6つの対策があり、守れる攻撃と、止められやすい記事がそれぞれ違う
  • 設定の反映には最大1時間ほどかかるため、投稿の前に段取りを決めておくとよい

 

実際に起きたこと

投稿しようとしたのは、PowerShell の手順を載せたパソコンの記事です。本文を貼り付けてプレビューを押すと、次の画面になりました。

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

画面には「対応していないメソッドを使用した」と書かれていますが、特別な操作をしたわけではありません。
エックスサーバーでは、WAF がアクセスを止めたときに、このようなエラーの画面が表示されます。

記事の作成の画面に戻り、アイキャッチの画像を選ぶと、今度は「Oops, something went wrong.」というメッセージが出ました。

Drupal の記事の作成の画面に、Oops, something went wrong. で始まるエラーメッセージが2つ表示されている

ブラウザの開発ツールで通信を確かめると、アイキャッチの画像のアップロードの通信が 501 で止められていました。

ブラウザの開発ツールのネットワークの画面。アイキャッチの欄(field_image)のアップロードの通信がステータス 501 になっている。左側には Oops のエラーメッセージが3つ表示されている

Drupal は、画像をアップロードするときにも、入力中のフォームの中身(本文を含む)をまとめて送るしくみです。そのため、画像そのものではなく、本文の中のコマンドが原因で止められていました。

 

原因を WAF と判断した根拠

「WAF が原因」と判断したのは、次の5つの理由からです。

根拠内容
1. 公式マニュアルの説明エックスサーバーのマニュアルには、WAF が検知した場合はアクセスが拒否され、エラーページが表示されると書かれている
2. ブラウザの開発ツールの記録開発ツールのネットワークの画面で、アイキャッチのアップロードの通信が、サーバーから 501 で返されていることを確認した(上の画面)
3. 止められた操作の共通点止められたのは、プレビュー・保存・画像のアップロードといった本文をサーバーへ送る操作だけで、記事の一覧を開く、別の記事を表示するといった操作は問題なかった
4. 本文の中身による違いこれまでの記事では一度も起きず、コマンドの手順を本文に入れた記事でだけ起きた
5. 設定を変えたあとの結果「XSS対策」と「コマンド対策」を OFF にして反映を待ったところ、同じ本文でアイキャッチのアップロードとプレビューができた(下の画面)

5つ目の根拠の画面です。反映が終わり、kinfuu.co.jp の XSS対策とコマンド対策が OFF になった状態です(「反映待ち」の表示が消えています)。

反映が終わったあとの WAF設定の画面。kinfuu.co.jp の XSS対策とコマンド対策が OFF、SQL対策・ファイル対策・メール対策・PHP対策は ON

この状態で同じ本文の記事を開き直すと、さきほど 501 で止められていたアイキャッチのアップロードが通り、エラーのメッセージも出なくなりました。

Drupal の記事の作成の画面。アイキャッチ画像の欄に画像がアップロードされ、代替テキストが入っている。保存とプレビューのボタンが表示され、エラーメッセージは出ていない

プレビューも、501 の画面にならずに表示できました。

Drupal の記事のプレビューの画面。タイトル、カテゴリの IT技術・ハードウェア、最終更新日、アイキャッチが表示されている

なお、今回は XSS対策とコマンド対策の2つを同時に OFF にしたため、どちらが反応したかまでは切り分けていません。

本文に書いた内容から、主にコマンド対策が反応したと考えています。

 

WAF とは

WAF は、ホームページやブログの仕組み(Web アプリケーション)の弱点をねらった攻撃から、サイトを守る仕組みです。サイトに送られてくる内容を調べ、攻撃に使われる文字の並びを見つけると、そのアクセスを止めます。

エックスサーバーでは、サーバーパネルの「WAF設定」から、ドメインごとに6つの対策を ON・OFF できます。マニュアルでは、WAF はあくまで最低限の予防策で、不正アクセスを100%防ぐものではなく、アプリケーションを最新に保つことが根本の対策だと説明されています。

 

エックスサーバーの WAF の6つの対策

エックスサーバーの WAF の6つの対策の図。XSS対策、SQL対策、ファイル対策、メール対策、コマンド対策、PHP対策のそれぞれについて、見ているもの、防げる攻撃、止められやすい記事の例をまとめている。今回反応したのはコマンド対策

それぞれの対策の役割と、メリット・デメリットをまとめます。止められやすい記事の具体的な文字の例は、図の中に載せています。

XSS対策(クロスサイトスクリプティング)

見ているものスクリプト(プログラム)を動かすためのタグが埋め込まれた内容
防げる攻撃クッキーを盗んでなりすます、偽のページへ誘導する、など
メリットお問い合わせフォームやコメント欄など、他人が入力した内容を表示する仕組みを守れる
デメリット記事に埋め込みのコードや計測用のタグを書くと、管理画面からの保存でも止められることがある

SQL対策(SQLインジェクション)

見ているものデータベースへの命令(SQL)の書き方に当てはまる文字の並び
防げる攻撃データベースの情報の漏えい・書き換え・破壊
メリット会員サイトやお問い合わせの記録など、データベースを使う仕組みを守れる
デメリットSQL の書き方を解説する記事を投稿すると止められることがある

ファイル対策(ファイル不正アクセス)

見ているものサーバーの設定ファイルの名前を含む内容
防げる攻撃パスワードや設定のファイルを書き換えて、サイトを乗っ取る
メリット画像のアップロードなど、ファイルを扱う仕組みを守れる
デメリットサーバーの設定ファイルの書き方を解説する記事を投稿すると止められることがある

メール対策(メールの不正送信)

見ているものメールの宛先などの項目名を含む内容
防げる攻撃お問い合わせフォームを悪用した、第三者への迷惑メールの大量送信
メリットメールを送るフォームを、迷惑メールの踏み台にされにくくなる
デメリットメールの送り方や設定を解説する記事で止められることがある

コマンド対策(コマンドアクセス・実行)

見ているものサーバーへの命令(コマンド)の名前を含む内容
防げる攻撃プログラムを通してサーバーに命令を実行させ、情報を盗む・踏み台にする
メリットサーバーを直接操作されるという、被害の大きい攻撃を防げる
デメリットパソコンやサーバーの操作の手順を載せる記事が止められやすい(今回はこれ)

PHP対策(PHP関数の脆弱性)

見ているものファイル操作など、弱点になりやすい PHP の関数の名前を含む内容
防げる攻撃管理者になりすます、不正なファイルを置いてサーバーを乗っ取る
メリットWordPress や Drupal など、PHP で動く仕組み全般を守れる
デメリットPHP のプログラムを載せる記事で止められることがある

 

なぜ自分の管理画面でも止められるのか

なぜ記事の保存が止められたのかの図。Drupal の管理画面で本文にコマンドの手順を書き、プレビュー・保存・アイキャッチのアップロードで送信すると、エックスサーバーの WAF がコマンドのような文字を見つけて攻撃と判断し、501 のエラーの画面や Oops のメッセージになる

WAF は、誰が送ったかではなく、何が書かれているかを見ています。

ログインしている管理者でも、本文に攻撃と同じ文字の並びがあれば止められます。

一方で、公開した記事を読者が見るときは、本文がサーバーへ送られるわけではないので、止められることはありません。

止められるのは、本文を送る操作(プレビュー・保存・画像のアップロード)だけです。

 

止められたときの3つの対処

止められたときの3つの対処の図。A その対策だけ一時的に OFF:管理画面からいつもどおり投稿できるが、反映まで最大1時間ほど待ち、OFF のあいだは守りが弱くなる。B サーバーから記事を作る:SSH で本文を送り、WAF を ON のまま投稿できる。C 書き方を変える:手順を画像にする、コピー用のファイルを別に置く。コマンドを載せる記事が多いなら B、たまにだけなら A がおすすめ

A. その対策だけ、一時的に OFF にする

今回はこの方法で投稿しました。サーバーパネルの「WAF設定」で、kinfuu.co.jp の「XSS対策」と「コマンド対策」だけを OFF にし、ほかの4つは ON のままにしました。

エックスサーバーのサーバーパネルの WAF設定の画面。kinfuu.co.jp の XSS対策とコマンド対策が OFF で反映待ち、SQL対策・ファイル対策・メール対策・PHP対策は ON

注意したいのは、切り替えてもすぐには反映されないことです。

サーバーパネルでは「反映待ち」と表示され、説明には最大1時間ほどかかると書かれていました。

WAF設定の反映待ちの説明。WAF設定は変更後、サーバーに設定が反映され利用可能になるまで、最大で1時間程度かかります。しばらくお待ちください

手順操作
1反応している対策だけを OFF にする(全部は OFF にしない)
2「反映待ち」の表示が消えるまで待つ
3記事の作成の画面を開き直して、投稿・保存する
4保存できたら、すぐ ON に戻す(戻すときも反映まで時間がかかる)

B. サーバーから記事を作る

本文の HTML を SSH でサーバーへ送り、Drupal の記事をサーバーの上のコマンドで作る方法です。

ブラウザから本文を送らないので、WAF を ON のまま投稿でき、待ち時間もありません。

コマンドを載せる技術記事が多いなら、この方法がいちばん手間がかかりません。

C. 書き方を変える

手順を画像で見せる、コピー用のテキストファイルを別に置いてリンクする、といった方法です。

WAF の設定は変えずに済みますが、読者が手順をそのままコピーしにくくなります。

 

WAF を使い続けるうえで気をつけること

気をつけること理由
全部の対策を OFF にしない止められた対策だけを OFF にすれば、ほかの攻撃は防ぎ続けられる
OFF にしたら、必ず ON に戻す戻し忘れると、守りが弱いままになる。戻すときも反映を待つので、予定に入れておく
どの対策が反応したかを記録しておく次に同じ種類の記事を書くときに、OFF にする対策が分かる
WAF だけに頼らないWAF は最低限の予防策。CMS やプラグインを最新に保つ、管理画面のログインを守る、といった対策と組み合わせる

 

よくある質問

Q. WAF で止められると、読者も記事を見られなくなりますか?

見られなくなりません。止められるのは、本文をサーバーへ送る操作だけです。読者が記事を表示するときは、本文を送らないので影響はありません。

Q. どの対策が反応したかを知る方法はありますか?

エックスサーバーのアクセスログには、止められたアクセスがエラーとして残ります。ただし、アクセスログは1日1回まとめて作られるため、確かめられるのは翌日以降です。急ぐときは、反応しそうな対策(コマンドを書いたならコマンド対策、など)から順に OFF にして試すのが早いです。

Q. 面倒なので、WAF をずっと OFF にしてもよいですか?

おすすめしません。WAF は、サイトの弱点が見つかってから修正されるまでのあいだも、攻撃を止めてくれる仕組みです。止められるのは、特定の内容を送るときだけなので、そのときだけ対処するのが安全です。

 

まとめ:WAF は「何が書かれているか」で止める

  • エックスサーバーの WAF は、送られてきた内容に攻撃に使われる文字の並びがあると止める
  • 自分の管理画面からでも、コマンドやプログラムを載せた記事は止められることがある
  • 止められると、501 のエラーの画面や Drupal の「Oops…」のメッセージが出る
  • 対処は、反応した対策だけを一時的に OFFにするか、サーバーから記事を作るか、書き方を変える
  • 設定の反映には時間がかかるので、OFF と ON の両方の待ち時間を見込んで段取りする

金風株式会社では、ホームページのセキュリティの設定の見直しや、WAF などの守りの仕組みについてのご相談を承っています。サイトの弱点を確かめる「Webセキュリティ診断」もご用意していますので、お気軽にお問い合わせください。

 

参考資料

  • エックスサーバー:WAF設定(6つの対策の内容と、検知したときの動き)

最新のお役立ち情報はメルマガでもお届けしています