Apache + PHP で初期設定のままだと、バージョン情報は結構たくさん表示されてしまう。
次のように。
(太字は入力部)
Apache のバージョン、PHP のバージョン、OS情報(Unixだけだけど)が出てる。
バージョン情報は出ない方がいいので、まず Apache の設定をいじる。
httpd.conf に以下の定義をする。
この ServerTokes ディレクティブの初期値は Full となっていて、全部吐き出してくれるので、Prod にする。 こうすると、製品名(Apache)だけが表示されるようになる。
実際は、製品名すら不要なので、'Unknown Web Server' とか、任意の文字列を指定できると、もっといいのになとか思う。わざと IIS とか指定したりして。
このディレクティブを設定してから再度 telnet で確認してみると、
Server: のところが変わった。OS も表示されなくなった。
でも、PHP のバージョンがマイナーレベルまできっちり表示されているので、これはよくない。PHP はまだまだ頻繁にセキュリティホールが発見されるので、多くの脆弱性を内包している可能性が高いから。
ということで、PHP のバージョンも表示しないようにする。
これは、php.ini をいじる。
expose_php というディレクティブがあるので、これをオフにする。初期値はオンになってる。
配布ファイル(tarball)を展開すると、php.ini は、php.ini-dist と、php.ini-recommended の2種類が出てきて、そのどちらからを /usr/local/lib/php.ini として配置するなどするんだけど、せめて recommended の方は、これをオフにしててもよさそうなもんだけどなあ…
さて、変更したら apache のサービスを再起動させて、再度 telnet で確認してみる。
これですっきり。
次のように。
(太字は入力部)
% telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Tue, 04 Jan 2010 12:22:39 GMT Server: Apache/2.2.14 (Unix) PHP/5.2.12 X-Powered-By: PHP/5.2.12 Cache-Control: no-cache Pragma: no-cache Connection: close Content-Type: text/html; charset=EUC-JP Connection closed by foreign host. % |
Apache のバージョン、PHP のバージョン、OS情報(Unixだけだけど)が出てる。
バージョン情報は出ない方がいいので、まず Apache の設定をいじる。
httpd.conf に以下の定義をする。
ServerTokens Prod |
この ServerTokes ディレクティブの初期値は Full となっていて、全部吐き出してくれるので、Prod にする。 こうすると、製品名(Apache)だけが表示されるようになる。
実際は、製品名すら不要なので、'Unknown Web Server' とか、任意の文字列を指定できると、もっといいのになとか思う。わざと IIS とか指定したりして。
このディレクティブを設定してから再度 telnet で確認してみると、
% telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Tue, 04 Jan 2010 12:24:10 GMT Server: Apache X-Powered-By: PHP/5.2.12 Cache-Control: no-cache Pragma: no-cache Connection: close Content-Type: text/html; charset=EUC-JP Connection closed by foreign host. % |
Server: のところが変わった。OS も表示されなくなった。
でも、PHP のバージョンがマイナーレベルまできっちり表示されているので、これはよくない。PHP はまだまだ頻繁にセキュリティホールが発見されるので、多くの脆弱性を内包している可能性が高いから。
ということで、PHP のバージョンも表示しないようにする。
これは、php.ini をいじる。
expose_php というディレクティブがあるので、これをオフにする。初期値はオンになってる。
配布ファイル(tarball)を展開すると、php.ini は、php.ini-dist と、php.ini-recommended の2種類が出てきて、そのどちらからを /usr/local/lib/php.ini として配置するなどするんだけど、せめて recommended の方は、これをオフにしててもよさそうなもんだけどなあ…
expose_php = Off |
さて、変更したら apache のサービスを再起動させて、再度 telnet で確認してみる。
% telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Tue, 04 Jan 2010 12:25:32 GMT Server: Apache Cache-Control: no-cache Pragma: no-cache Connection: close Content-Type: text/html; charset=EUC-JP Connection closed by foreign host. % |
これですっきり。