バージョン情報と○んこは隠しといた方が良い

隠すのに謎の光なんていらねえんだよ

この記事を三行にまとめると

Apacheの隠し方
Nginxの隠し方
PHPの隠し方
ウェブサイトにアクセスした際、デフォルトの状態だとサーバーの種類とかバージョン情報がレスポンスヘッダーに表示されます。PHPを使用していればPHPのバージョン情報も出ます。

でもバージョン情報が見えることはあまり良いことではありません。悪意を持った第三者にバージョンが知られると、バージョン特有の脆弱性を突かれて攻撃されてしまう可能性があります。反対に見えることのメリットは僕の知る限りでは特にないので、よほどの理由がない限りは隠しておくべきでしょう。

ということで今回はApacheとNginxのそれぞれでバージョン情報を非公開にする方法を見ておきましょう。PHPのバージョン情報もついでに隠します。

全然たいした手間じゃないんで安心してください。赤子の手をひねるよりも簡単です。タオルで◯んこを隠すよりも簡単です。「人に裸見られても平気だからタオルで隠したりなんてしないぜハッハー!!」っていう俺みたいなタイプの人もこっちは隠しておいた方が良い。



Apacheの場合

Apacheの場合はhttpd.confに以下の設定を書きます。

ServerTokens Prod
ServerSignature Off

これでApacheを再起動すればレスポンスヘッダーのServerの項目が「Apache/2.x.x」みたいな表示からバージョン情報が消えて「Apache」となります。



Nginxの場合

Nginxの場合はnginx.confに以下の設定を書きます。

server {
  server_tokens off;
}

たぶんすでにNginxでサイトを動かしている場合はserverブロックにいろいろ設定を書き込んであると思うので、そこに「server_tokens off;」を一行追加すればOKです。これでNginxを再起動すればレスポンスヘッダーのServerの項目が「Nginx」になります。



PHPの場合

PHPの場合、デフォルトだとレスポンスヘッダーの「X-Powered-By」という項目に「PHP/8.5.12」みたいにバージョン情報が出てしまうので、php.iniに以下の設定を書きます。

expose_php = Off

これで再起動すればX-Powered-Byの項目自体が非表示になります。






つい先日もPHPに関するやばめな脆弱性の発表があって世界中がガクブルしましたが、こういった情報は今後も必ず出てきますから、バージョン情報を隠しただけで攻撃されなくなるというわけではありませんが、「どんなにしっかり施錠したって空き巣に入られる可能性が0にはならないんだから別に鍵なんてかけなくていいや」とはならないのと一緒で、防犯のためにやれることはやっておきたいですね。
 もしかしたら何か関連しているかも? 
 質問や感想などお気軽にコメントしてください