エックスサーバーの 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 確認すること:トップや主なページが開くかOK の形:今までどおり 200
2 確認すること:いつも載せるようなコード(HTML・SQL・コマンド・.htaccess の書き方)を含めた下書きを保存するOK の形:保存できる。エラーのページにならない
3 確認すること:お問い合わせのフォームから、自分あてに送ってみるOK の形:送れて、メールが届く
4 確認すること:サーバーパネルの「アクセスログ」で、自分のアクセスがエラーになっていないかを見るOK の形: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 時間ほど待ってから、ページ・コード入りの下書き・フォーム・アクセスログを見る

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

参考

SiteBeacon(サイトビーコン)

サイトが止まったら、すぐに気づける。

ホームページを 5 分ごとにチェックして、止まったとき・エラーが出たとき・SSL やドメインの期限が近いときに、メールでお知らせします。2 サイトまでは、ずっと無料で使えます。

SiteBeacon を見る サイトを直す相談をする

監視で気づいたあとの直す作業も、同じ担当がお受けします。