我们从渗透测试报告中获得了反馈,说我们应该关闭服务器令牌。这使人们无法看到我们正在使用哪个版本的PHP,并限制了他们针对特定PHP版本的能力。
我在http块下将以下内容添加到nginx.conf中:
server_tokens off;
但是我可以使用哪些工具来检查此更改是否生效?
我们从渗透测试报告中获得了反馈,说我们应该关闭服务器令牌。这使人们无法看到我们正在使用哪个版本的PHP,并限制了他们针对特定PHP版本的能力。
我在http块下将以下内容添加到nginx.conf中:
server_tokens off;
但是我可以使用哪些工具来检查此更改是否生效?
Answers:
通过手册,您可以了解设置的作用:
语法:
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
感谢Alexey指出PHP需要进行的更改。
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
另外,如果您提供PHP项目,则可能需要更改 /etc/nginx/{fastcgi,fastcgi_params).conf
fastcgi_param SERVER_SOFTWARE nginx;
看一下InSpec,该工具可让您“将合规性,安全性和其他策略要求转换为自动化测试”。
它可以完成Nginx服务器所需的所有配置测试。这是一种测试conf文件是否存在以及其值的方法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版本无关。通常在单独的header中发送X-Powered-By
。我想您需要php.net/manual/en/ini.core.php#ini.expose-php