Drupal で作っている会社のブログに、パソコンの作業手順の記事を投稿しようとしたときのことです。プレビューのボタンを押すと「501 Not Implemented」というエラーの画面になり、アイキャッチの画像を選ぶと「Oops, something went wrong.」というメッセージが何度も出るようになりました。
原因は、サーバーの故障でも Drupal の不具合でもなく、エックスサーバーの WAF(ウェブアプリケーションファイアウォール)が、記事の本文を攻撃と判断して止めていた ことでした。どうしてそう判断できたのかも、あわせて紹介します。
この記事では、実際に起きたことの画面とともに、原因を突き止めた根拠、エックスサーバーの WAF の6つの対策の役割とメリット・デメリット、記事を保存できないときの3つの対処法をまとめます。
この記事の要点 エックスサーバーの WAF は、送られてきた内容に攻撃に使われる文字の並び があると、アクセスを止める 本文にコマンドの手順 を書いた記事は、自分の管理画面からでも止められることがある 止められると、501 のエラーの画面 や、Drupal の「Oops…」のメッセージが出る WAF には6つの対策 があり、守れる攻撃と、止められやすい記事がそれぞれ違う 設定の反映には最大1時間ほど かかるため、投稿の前に段取りを決めておくとよい
実際に起きたこと 投稿しようとしたのは、PowerShell の手順を載せたパソコンの記事です。本文を貼り付けてプレビューを押すと、次の画面になりました。
画面には「対応していないメソッドを使用した」と書かれていますが、特別な操作をしたわけではありません。 エックスサーバーでは、WAF がアクセスを止めたときに、このようなエラーの画面 が表示されます。
記事の作成の画面に戻り、アイキャッチの画像を選ぶと、今度は「Oops, something went wrong.」というメッセージが出ました。
ブラウザの開発ツールで通信を確かめると、アイキャッチの画像のアップロードの通信が 501 で止められて いました。
Drupal は、画像をアップロードするときにも、入力中のフォームの中身(本文を含む)をまとめて送る しくみです。そのため、画像そのものではなく、本文の中のコマンドが原因で止められていました。
原因を WAF と判断した根拠 「WAF が原因」と判断したのは、次の5つの理由からです。
根拠 内容 1. 公式マニュアルの説明 エックスサーバーのマニュアルには、WAF が検知した場合はアクセスが拒否され、エラーページが表示される と書かれている 2. ブラウザの開発ツールの記録 開発ツールのネットワークの画面で、アイキャッチのアップロードの通信が、サーバーから 501 で返されている ことを確認した(上の画面) 3. 止められた操作の共通点 止められたのは、プレビュー・保存・画像のアップロードといった本文をサーバーへ送る操作だけ で、記事の一覧を開く、別の記事を表示するといった操作は問題なかった 4. 本文の中身による違い これまでの記事では一度も起きず、コマンドの手順を本文に入れた記事でだけ 起きた 5. 設定を変えたあとの結果 「XSS対策」と「コマンド対策」を OFF にして反映を待ったところ、同じ本文でアイキャッチのアップロードとプレビューができた (下の画面)
5つ目の根拠の画面です。反映が終わり、kinfuu.co.jp の XSS対策とコマンド対策が OFF になった状態です(「反映待ち」の表示が消えています)。
この状態で同じ本文の記事を開き直すと、さきほど 501 で止められていたアイキャッチのアップロードが通り、エラーのメッセージも出なくなりました。
プレビューも、501 の画面にならずに表示できました。
なお、今回は XSS対策とコマンド対策の2つを同時に OFF にしたため、どちらが反応したかまでは切り分けていません。
本文に書いた内容から、主にコマンド対策が反応したと考えています。
WAF とは WAF は、ホームページやブログの仕組み(Web アプリケーション)の弱点をねらった攻撃から、サイトを守る仕組みです。サイトに送られてくる内容を調べ、攻撃に使われる文字の並びを見つけると、そのアクセスを止めます。
エックスサーバーでは、サーバーパネルの「WAF設定」から、ドメインごとに6つの対策を ON・OFF できます。マニュアルでは、WAF はあくまで最低限の予防策 で、不正アクセスを100%防ぐものではなく、アプリケーションを最新に保つことが根本の対策だと説明されています。
エックスサーバーの WAF の6つの対策
それぞれの対策の役割と、メリット・デメリットをまとめます。止められやすい記事の具体的な文字の例は、図の中に載せています。
XSS対策(クロスサイトスクリプティング) 見ているもの スクリプト(プログラム)を動かすためのタグが埋め込まれた内容 防げる攻撃 クッキーを盗んでなりすます、偽のページへ誘導する、など メリット お問い合わせフォームやコメント欄など、他人が入力した内容を表示する仕組み を守れる デメリット 記事に埋め込みのコードや計測用のタグ を書くと、管理画面からの保存でも止められることがある
SQL対策(SQLインジェクション) 見ているもの データベースへの命令(SQL)の書き方に当てはまる文字の並び 防げる攻撃 データベースの情報の漏えい・書き換え・破壊 メリット 会員サイトやお問い合わせの記録など、データベースを使う仕組み を守れる デメリット SQL の書き方を解説する記事 を投稿すると止められることがある
ファイル対策(ファイル不正アクセス) 見ているもの サーバーの設定ファイルの名前を含む内容 防げる攻撃 パスワードや設定のファイルを書き換えて、サイトを乗っ取る メリット 画像のアップロードなど、ファイルを扱う仕組み を守れる デメリット サーバーの設定ファイルの書き方を解説する記事 を投稿すると止められることがある
メール対策(メールの不正送信) 見ているもの メールの宛先などの項目名を含む内容 防げる攻撃 お問い合わせフォームを悪用した、第三者への迷惑メールの大量送信 メリット メールを送るフォーム を、迷惑メールの踏み台にされにくくなるデメリット メールの送り方や設定を解説する記事 で止められることがある
コマンド対策(コマンドアクセス・実行) 見ているもの サーバーへの命令(コマンド)の名前を含む内容 防げる攻撃 プログラムを通してサーバーに命令を実行させ、情報を盗む・踏み台にする メリット サーバーを直接操作されるという、被害の大きい攻撃 を防げる デメリット パソコンやサーバーの操作の手順を載せる記事 が止められやすい(今回はこれ)
PHP対策(PHP関数の脆弱性) 見ているもの ファイル操作など、弱点になりやすい PHP の関数の名前を含む内容 防げる攻撃 管理者になりすます、不正なファイルを置いてサーバーを乗っ取る メリット WordPress や Drupal など、PHP で動く仕組み全般 を守れる デメリット PHP のプログラムを載せる記事 で止められることがある
なぜ自分の管理画面でも止められるのか
WAF は、誰が送ったかではなく、何が書かれているか を見ています。
ログインしている管理者でも、本文に攻撃と同じ文字の並びがあれば止められます。
一方で、公開した記事を読者が見るときは、本文がサーバーへ送られるわけではないので、止められることはありません。
止められるのは、本文を送る操作(プレビュー・保存・画像のアップロード) だけです。
止められたときの3つの対処
A. その対策だけ、一時的に OFF にする 今回はこの方法で投稿しました。サーバーパネルの「WAF設定」で、kinfuu.co.jp の「XSS対策」と「コマンド対策」だけを OFF にし、ほかの4つは ON のままにしました。
注意したいのは、切り替えてもすぐには反映されない ことです。
サーバーパネルでは「反映待ち」と表示され、説明には最大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つの対策の内容と、検知したときの動き)
AUTHOR
金風株式会社代表 廣瀨 武志
Web制作・システム開発・Webマーケティングに26年携わる。大手企業でWebコンテンツのプロデュースやディレクションを経験した後、中小企業や個人事業者の現場で、情報設計からシステム構築、運用まで幅広く支援。名古屋を拠点にAI活用やIT講師としても活動しています。
企業情報を見る
X
Threads
CONTACT
Web制作・運用のご相談を承っています
サイトの新規制作から、既存サイトの改善、更新作業の自動化まで。
「何から手をつければいいか分からない」という段階でも構いません。
相談してみる