概要
Webサーバのバージョンを全世界に公開してしまっていると、セキュリティ上よくない。
例えば、機器の脆弱性は色々なサイトから公表されているが、(以下はZabbix)
該当のバージョンに対応する脆弱性を検索されてそれを実行されてしまうという恐れがある。
*上記の例だと、ZabbixAgentのバージョンが外から見れてしまうと問題になりそう。
そのため、各サービスのバージョン情報は外部から見れないようにするとよい。
今回は、apacheとphpのバージョン情報をcurlで見れないようにしていく手順を記載する。
事前確認
対象のWebサーバ宛てにcurlコマンドを実行する。
curl -v --head url
何も対処していないと以下のようにバージョンが表示される。
200OKのすぐ下に、Apacheのバージョンが表示されているのが確認できると思われる。
PS C:\Users\daigo.ito> curl -v --head https://sample.hoge.co.jp
略
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Date: Wed, 25 Oct 2023 02:33:08 GMT
Date: Wed, 25 Oct 2023 02:33:08 GMT
< Server: Apache/2.2.3 (CentOS)
Server: Apache/2.2.3 (CentOS)
< Last-Modified: Fri, 21 Jan 2011 08:11:11 GMT
Last-Modified: Fri, 21 Jan 2011 08:11:11 GMT
略
httpd隠ぺい作業
これではよくないため、以下の操作をして隠ぺいを行っていく。以下のファイルを編集する。
sudo vi /etc/httpd/conf/httpd.conf
その後、以下の内容を追記する。ない場合は新たに追記する。
*Enablesendfile
の後に記載し、include
の前に記載するとよい。
ServerTokens ProductOnly
ServerSignature Off
その後、httpdを再起動させる。
sudo systemctl restart httpd
この状態でcurlを実行すると、apacheのバージョンは見えなくなる。
略
< HTTP/1.1 200 OK
< Date: Wed, 25 Oct 2023 02:41:31 GMT
< Server: Apache (ここ)
< Content-Length: 481
< Content-Type: text/html;charset=ISO-8859-1
<
略
php隠ぺいサイト
次にphp分がある場合は、以下のように記載する。
sudo vi /etc/php.ini
そして、以下の記述を追加する。
expose_php = Off
phpはモジュールであり、再起動は不要。
それぞれのパッケージのアップデート
これが済んだら、update作業を行っていく。
以下のコマンドを実行し、apacheをupdateする。
sudo yum update httpd
updateが終わった後httpdは一度落ちるため、再度systemctl start
させる必要がある。
sudo systemctl start httpd
phpのアップデートが必要な場合は実行する。ただい、phpはバージョンアップにより仕様が変わって動かなくなることがあるので、もし行う場合は事前に検証を入念に行う事。
sudo yum update php
参考サイト