ペンテストレポートから、サーバートークンを無効にする必要があるとのフィードバックがありました。これにより、PHPのどのバージョンを使用しているかを人々が確認できなくなり、特定のPHPバージョンを対象とする能力が制限されます。
次のコードをnginx.confのhttpブロックの下に追加しました。
server_tokens off;
しかし、この変更が影響を与えたことを確認するためにどのツールを使用できますか?
もう少しグーグルで調べたところ、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
manual から、設定の内容がわかります。
構文:
server_tokens on | off
;
デフォルト:server_tokens on
;
Context: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
サーバー:接続:閉じる
server:Content-Type:text/html
「コンプライアンス、セキュリティ、その他のポリシー要件を自動テストに変える」ことができるツールであるInSpecを見てください。
Nginxサーバーに必要なすべての構成テストを実行できます。 confファイルの存在とserver_tokens
の値をテストする1つの方法を次に示します。
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)
また、PHP=プロジェクトを提供している場合は、/etc/nginx/{fastcgi,fastcgi_params).conf
fastcgi_param SERVER_SOFTWARE nginx;