エックスサーバーの WAF をどこまでオンにするか:コードの記事を載せるサイトでの考え方

広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

エックスサーバーには、サーバーパネルでオンにできる WAF(ウェブアプリケーションファイアウォール)があります。怪しい文字が入ったアクセスを見つけて止める仕組みです。

全部オンにすればいちばん安全に見えますが、このサイトのように、コードの見本を載せる記事が多いと困ることがあります。記事の中のコードが「怪しい文字」と見なされて、下書きの保存が止まるかもしれないからです。

このドメインには、WordPress の記事のサイトのほかに、HTML を貼りつけて使う道具のサイトもあります。そこで、6 つの対策のうち、ファイル対策とメール対策だけをオンにしました。その考え方をまとめます。

WAF の 6 つの対策

エックスサーバーのマニュアル(WAF設定)に書いてある中身を、短くまとめると次のとおりです。

対策 見つけるもの(マニュアルより) 守りたいもの
XSS JavaScript などのスクリプトタグが入ったアクセス 掲示板・ブログなど、人が書いたものを表示するもの
SQL SQL の文に当たる文字が入ったアクセス DB を使うもの全般
ファイル サーバーの設定ファイルや、パスワードを置くファイルの名前が入ったアクセス ファイルを扱うもの・画像を上げる掲示板
メール to・cc・bcc など、メールのヘッダーに関係する文字が入ったアクセス メールを送るフォーム
コマンド kill・ftp・mail・ping・ls などのコマンドの文字が入ったアクセス コマンドを動かす PHP・Perl のプログラム
PHP session やファイルの操作など、危なくなりやすい関数の名前が入ったアクセス PHP のプログラム全般

見つかったアクセスは、拒否されてエラーのページになります(マニュアルより)。

マニュアルには、WAF は最低限の予防で、全部を防げるわけではないこと、WordPress などを新しいバージョンにしておくことが根本の対策であることも書いてあります。

コードの記事を載せるサイトで、どこが困るか

WAF は、アクセスの中の文字を見て判断します。WordPress で記事を保存するときは、記事の本文がそのままサーバーに送られます。

なので、記事の中にコードの見本があると、その文字に WAF が反応するかもしれません。下の表の「止められやすさ」は、マニュアルの説明から考えた見込みです。

対策 コードの記事で止められやすさ(見込み) このドメインでの選び方
XSS 高い。HTML や JavaScript の見本には script タグがよく入る。HTML を貼る道具も同じ オフ
SQL 高い。DB の記事には SELECT などの文が入る オフ
ファイル 中くらい。.htaccess を説明する記事では反応するかもしれない オン
メール 低い。ふつうの記事に to・cc・bcc のヘッダーの形はあまり出ない オン
コマンド 高い。サーバーの作業の記事には ls などのコマンドが入る オフ
PHP 高い。PHP の見本には関数の名前がたくさん入る オフ

ファイル対策は、サーバーの設定ファイルを狙うアクセスを止めるもので、ふだんの記事の保存とはあまり重なりません。ただ、.htaccess の書き方を説明する記事を保存するときに止まるかもしれないので、オンにした後に確かめます(下の「確かめ方」)。

メール対策は、お問い合わせのフォームを使った大量のメールの送信を止めるものです。フォームがあるサイトでは守る意味が大きく、記事の保存とはぶつかりにくいので、オンにしました。

オフにした分は、ほかの守りで補う

WAF をオフにした対策は、主に「ログインした人の操作」とぶつかるものです。そこで、ログインそのものを守る方を固めています。

守り やっていること 防げること
ログインの URL を変える(SiteGuard WP Plugin) wp-login.php とは別の URL にする ログインの画面を狙った総当たり
画像認証(SiteGuard WP Plugin) ログインやコメントの送信に、画像認証を足す 機械での総当たり
ログインのロック(SiteGuard WP Plugin) 何回も失敗した所からのログインを、しばらく止める 同じ所からのくり返し
XML-RPC を止める .htaccess で xmlrpc.php を開けなくする(下のコード) XML-RPC を通したログインの試し
強いパスワード 長く、ほかで使っていないものにする 当てられること
新しいバージョンにする WordPress 本体・プラグイン・PHP を上げる 知られている弱いところを突かれること
.htaccess(XML-RPC を止める)
<Files xmlrpc.php>
    Require all denied
</Files>

XML-RPC は、スマホのアプリや外のサービスから記事を書くための仕組みです。使っていなければ止めてかまいません。Jetpack など、XML-RPC を使うプラグインがあるときは止めないでください。

オンにした後の確かめ方

マニュアルによると、WAF の設定を変えてから効くまで、新しいサーバーパネルで最大 30 分ほど、古いサーバーパネルで最大 1 時間ほどかかることがあります。変えた直後ではなく、時間をおいてから確かめます。

順 確かめること OK の形
1 トップや主なページが開くか 今までどおり 200
2 いつも載せるようなコード(HTML・SQL・コマンド・.htaccess の書き方)を入れた下書きを保存する 保存できる。エラーのページにならない
3 お問い合わせのフォームから、自分あてに送ってみる 送れて、メールが届く
4 サーバーパネルの「アクセスログ」で、自分のアクセスがエラーになっていないかを見る 2・3 の時刻に、自分のアクセスのエラーの行がない
1:ページが開くか
for u in https://example.com/ https://example.com/archives/1 https://sub1.example.com/; do
  printf "%s %s\n" "$(curl -s -o /dev/null -w '%{http_code}' "$u?nc=$RANDOM")" "$u"
done
4:自分の IP のエラーの行を探す(IP は例)
# サーバーパネルの「アクセスログ」で落としたファイルを、手元で見る
grep "203.0.113.10" example.com.access_log_20261011 | grep -E '" (403|406|500|501) ' | cut -c1-200
書き方 役目
curl -s -o /dev/null -w '%{http_code}' 中身は捨てて、返ってきた数字だけを出す
?nc=$RANDOM キャッシュではなく、今のページを見る
grep "自分の IP" 自分のアクセスだけにしぼる
grep -E '" (403|406|500|501) ' エラーの数字の行だけを出す

止められたときに、ログにどの数字で残るかは、マニュアルの WAF のページには書いてありませんでした。このサイトで止められたときは、画面に「501 Not Implemented」と出ました(下の「確かめた結果」)。数字は広めにとり、保存した時刻の前後の行を見ます。アクセスログは、毎日午前 4 時ごろに、日ごとのファイルとして作られます(マニュアルより)。その日の分は、次の日に見ることになります。

2 で止まったときは、記事を直す間だけその対策をオフにするか、コードの書き方を変えるかを選びます。オフにしたときは、戻すのを忘れないようにします。

確かめた結果

確かめたこと 方法 結果
6 つの対策の中身 エックスサーバーのマニュアル(WAF設定)を読んだ(2026-10-11) 上の表のとおり
効くまでの時間 同じマニュアル 新しいサーバーパネルで最大 30 分ほど・古いサーバーパネルで最大 1 時間ほど
止められたときの動き 同じマニュアル アクセスが拒否され、エラーのページになる
SiteGuard WP Plugin の設定 本番から複製した作業環境で設定の値を見た ログインの URL の変更・画像認証・ログインのロック・XML-RPC の無効が、全部オン
XML-RPC を止めた .htaccess 作業環境で xmlrpc.php を開いた 403(トップは 200)
ファイル対策をオンにした後の、この記事の下書きの保存(本番) この記事を新しい下書きとして保存した 最初の形(マニュアルにある設定ファイルの名前を、そのまま並べていた)は「501 Not Implemented」の画面になり、保存できなかった。名前を並べない形に直すと保存できた
アクセスログの中身 エックスサーバーのマニュアル(アクセスログ) IP・時刻・URL・数字(ステータス)などが残る。毎日午前 4 時ごろに作られ、30 日分

WAF そのものは、エックスサーバーの上でしか動きません。作業環境では試せないので、記事の保存は本番で確かめます。このサイトでは、この記事の下書きがまさに止まりました。設定ファイルの名前をいくつも並べる記事は、ファイル対策をオンにすると保存できないことがあります。

まとめ

こと 考え方
コードの記事が多いサイト XSS・SQL・コマンド・PHP は、記事の保存とぶつかりやすいのでオフ
オンにしたもの ファイル・メール。ふだんの操作とぶつかりにくく、守る意味がある
オフの分 ログインを守る(URL の変更・画像認証・ロック・XML-RPC を止める・強いパスワード)と、新しいバージョンにすることで補う
変えた後 30 分〜1 時間ほど待ってから、ページ・コード入りの下書き・フォーム・アクセスログを見る

コードの記事がないサイトや、お問い合わせのフォームだけのサイトなら、もっと多くの対策をオンにしてもよいはずです。どのサイトでも、オンにした後に「いつもの操作が止まらないか」を確かめるのが大事です。

参考

関連機能

  1. WordPress 画像をリファラ判定を行い自サイトからのみ表示可能にする&PHPファイルの直接参照を禁止

  2. エックスサーバーで PHP を 8.3 に上げる前に、サブドメインのサイトまでまとめて確かめる:php8.3 -l の一括チェックと、なくなった関数の探し方

  3. WordPress 特定の固定ページだけreCAPTCHAを有効にする ( Contact Form 7使用 )

サイドバー

よく使うカスタマイズ

最近の記事

Profile

PAGE TOP