修正版が来るまでサイトを守る「入口で閉じる」応急処置 なぜ効くのか、どこまで効くのか
2026年10月21日、PHPの重大な穴(PHP2Shell)の修正版が出ました。
でも、レンタルサーバーでは、修正版を入れるのはサーバー会社の仕事です。自分では入れられません。
しかも、サポートの終わった古いPHP(8.1以前)には、公式の修正版が出ません。
「修正版が届くまでの今夜、どうする?」
そんなときの応急処置が、サイトを入口で一時的に閉じることです。
実際にやってみて、なぜ効くのか、どこまで効くのかを整理しました。
閉じるとは、何をすることか
サイトの入口の設定ファイル(.htaccess)に数行足して、どのページにアクセスされても、
「ただいまメンテナンス中です」
とだけ書いたページを返すようにします。
このとき、「503(一時的に休止中)」という印も一緒に返します。
これでGoogleに「一時的に休んでいる」と伝わり、検索の順位はほぼ落ちません。
元に戻すときは、足した数行を消すだけです。
なぜ、閉じれば攻撃されないのか
アクセスがサイトに届くまでの流れは、こうなっています。
訪問者(攻撃者)→ nginx(受付)→ Apache(.htaccessを読む)→ PHP(WordPressを動かす)
今回の穴は、一番右のPHPの中にあります。
攻撃者は、細工したデータをPHPに読ませる必要があります。
ところが、入口で閉じると、まん中のApacheの段階で「メンテナンス中」と返して終わります。
PHPは起動すらしません。 細工したデータを送っても、読む人がいない状態です。
エンジンの穴は、エンジンをかけなければ突けない。そういう理屈です。

どこまで効くのか(限界)
ただし、万能ではありません。
| 限界 | 中身 |
|---|---|
| サイトが使えない | 閉じているあいだは、訪問者も持ち主も管理画面に入れない。問い合わせフォームも止まる |
| 同じアカウントの別サイト | 同じ契約の別のサイトがやられたら、閉じたサイトのファイルも読まれる |
| PHP以外の穴 | 入口(nginxやApache)そのものに穴があれば防げない |
特に2つ目が大事です。
同じアカウントにほかのサイトが同居していて、そちらもまだ修正版が入っていないなら、サーバー全体が安全になったわけではありません。
閉じたのは「このサイトが入口になること」だけです。
誰かのサイトを閉じるときは
人から預かっているサイトを閉じるときは、持ち主の了解が要ります。
閉じているあいだは、お店の情報も問い合わせも止まるからです。
私の場合は、「夜中だけ閉じて、朝に戻す」という形にしました。
寝ているあいだは訪れる人も少なく、攻撃は公表直後に増えやすいからです。
あくまで「つなぎ」
入口で閉じるのは、修正版が届くまでの応急処置です。
本当の対策は、PHPを修正版にすること、古い版なら8.3や8.4に切り替えることです。

PHPの版の確かめ方や切り替え方は、こちらにまとめました。
