ペンテストレポートから、サーバートークンを無効にする必要があるとのフィードバックがありました。これにより、私たちが使用しているPHPのバージョンを確認できなくなり、特定のPHPバージョンを対象とする能力が制限されます。
以下をnginx.confのhttpブロックの下に追加しました。
server_tokens off;
しかし、この変更が影響を与えたことを確認するためにどのツールを使用できますか?
ペンテストレポートから、サーバートークンを無効にする必要があるとのフィードバックがありました。これにより、私たちが使用しているPHPのバージョンを確認できなくなり、特定のPHPバージョンを対象とする能力が制限されます。
以下をnginx.confのhttpブロックの下に追加しました。
server_tokens off;
しかし、この変更が影響を与えたことを確認するためにどのツールを使用できますか?
回答:
マニュアルからあなたは設定が何をするか知っています:
構文:
server_tokens on | off
;
デフォルト:server_tokens on
;
コンテキスト:http、サーバー、場所エラーメッセージおよび「サーバー」応答ヘッダーフィールドでのnginxバージョンの発行を有効または無効にします。
だからあなたのオプションは:
nginx/1.2.3
なくなります。HTTP応答ヘッダーを確認する簡単なチェックは、手動で接続するtelnet www.example.com 80
ことです。
クライアント:HEAD / HTTP / 1.1
クライアント:ホスト:www.example.comサーバー:HTTP / 1.1 200 OK
サーバー:日付:1970年1月1日水曜日22:13:05 GMT
サーバー:サーバー:Nginx / 1.2.3
サーバー:接続:
サーバーを閉じる:コンテンツタイプ:text / html
もう少しグーグルで調べた後、curlコマンドがサーバーヘッダーとphpのバージョンの両方を示すサーバーヘッダーを確認できることを確認しました。
curl -I -L www.example.com
PHPに必要な変更を指摘してくれたAlexeyに感謝します。
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 04 Jun 2015 10:49:35 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://www.example.com
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 04 Jun 2015 10:49:36 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified: Thu, 04 Jun 2015 10:49:35 GMT
Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0
ETag: "1433414975"
Content-Language: en
「コンプライアンス、セキュリティ、その他のポリシー要件を自動テストに変える」ことができるツール、InSpecを見てください。
Nginxサーバーに必要なすべての構成テストを実行できます。次に、confファイルの存在と値をテストする1つの方法を示しますserver_tokens
。
conf_path = '/etc/nginx/nginx.conf'
control 'Server tokens should be off' do
describe file(conf_path) do
it 'The config file should exist and be a file.' do
expect(subject).to(exist)
expect(subject).to(be_file)
end
end
if (File.exist?(conf_path))
Array(nginx_conf(conf_path).params['http']).each do |http|
describe "http:" do
it 'server_tokens should be off if found in the http context.' do
Array(http["server_tokens"]).each do |tokens|
expect(tokens).to(cmp 'off')
end
end
end
end
end
end
正しく設定されている場合、InSpecは以下を返します。
✔ Server tokens should be off: File /etc/nginx/nginx.conf
✔ File /etc/nginx/nginx.conf The config file should exist and be a file.
✔ http: server_tokens should be off if found in the http context.
そうでない場合:
× Server tokens should be off: File /etc/nginx/nginx.conf (1 failed)
✔ File /etc/nginx/nginx.conf The config file should exist and be a file.
× http: server_tokens should be off if found in the http context.
expected: "off"
got: ["on"]
(compared using `cmp` matcher)
server_token
PHPバージョンとは何の関係もありません。通常は別のヘッダーで送信されX-Powered-By
ます。php.net/manual/en/ini.core.php#ini.expose-php