manifestor Asked: 2018-08-11 11:44:50 +0800 CST2018-08-11 11:44:50 +0800 CST 2018-08-11 11:44:50 +0800 CST 从安全角度来看,删除 Server HTTP 标头是否有意义? 772 我正在使用 Varnish,我不太确定是否还应该删除Server: nginxHTTP 标头。为什么有人需要知道我在使用 NGINX?可以从响应中删除此 HTTP 标头还是在某个地方需要它?从安全的角度来看,这样做可能会更好? nginx 3 个回答 Voted Best Answer Michael Hampton 2018-08-11T12:13:19+08:002018-08-11T12:13:19+08:00 RFC 7231 说明了 Server 标头: 源服务器可以在其响应中生成一个服务器字段。 MAY 在RFC 2119中被解释为: MAY 这个词,或形容词“OPTIONAL”,意味着一个项目是真正可选的。一个供应商可能会选择包含该项目,因为特定市场需要它,或者因为供应商认为它增强了产品,而另一个供应商可能会省略相同的项目。不包含特定选项的实现必须准备好与另一个包含该选项的实现互操作,尽管功能可能有所减少。同样,包含特定选项的实现必须准备好与不包含该选项的另一个实现互操作(当然,选项提供的功能除外。) 因此,限制或删除服务器响应标头是完全可以的。当然,了解这样做可能会放弃什么是个好主意。为此,请返回 RFC 7231: “Server”标头字段包含有关源服务器用于处理请求的软件的信息,客户端通常使用这些信息来帮助识别报告的互操作性问题的范围,以解决或定制请求以避免特定的服务器限制,以及用于有关服务器或操作系统使用的分析。源服务器可以在其响应中生成一个服务器字段。 Server = product *( RWS ( product / comment ) ) 服务器字段值由一个或多个产品标识符组成,每个产品标识符后跟零个或多个注释([RFC7230] 的第 3.2 节),它们共同标识原始服务器软件及其重要的子产品。按照惯例,产品标识符按其在识别源服务器软件的重要性的降序排列。每个产品标识符由名称和可选版本组成,如第 5.5.3 节中所定义。 例子: Server: CERN/3.0 libwww/2.17 源服务器不应该生成包含不必要的细粒度细节的服务器字段,并且应该限制第三方添加子产品。过长和详细的服务器字段值会增加响应延迟,并可能会泄露内部实现细节,这可能使攻击者(稍微)更容易找到和利用已知的安全漏洞。 尽管在实践中,攻击者并没有真正检查 Server: 标头。他们只是尝试他们知道的每一个安全漏洞,无论您的服务器是否有任何易受攻击的迹象。删除 Server: 标头是一种隐蔽操作的安全性,并且几乎完全无效。但如果它让你感觉更好,或者你的老板或审计师告诉你这样做,那就去做吧。只是不要指望它会显着改善您的安全状况。 例如,nmap即使它被配置为根本不发送Server标头,或者标头内容完全是虚假的,它也可以相当准确地识别 Web 服务器。自己尝试一下nmap -sV -P0 -p 80,443 <IP address>。 Danila Vershinin 2018-08-12T01:34:40+08:002018-08-12T01:34:40+08:00 HTTP标Server头仅用于一个目的 - 标识。在任何地方都不需要它来正确运行您的网站,并且通过删除它,什么都不会破坏。 它揭示了内部服务器基础设施,从而泄露了可能对潜在入侵有用的安全信息。 在了解您的 Web 服务器软件之后,通过ServerHTTP 标头,潜在的入侵者可以搜索您的 Web 服务器的公开漏洞。然后他们可以将此信息与他们可能获得的任何其他信息(例如通过扫描)结合使用 - 以构建适当的攻击向量。 因此,您可能希望完全删除Server标头,例如在 nginx 中删除它。 user3120146 2018-08-11T11:54:58+08:002018-08-11T11:54:58+08:00 如果你的配置中有“ server_tokens off ”(看起来你这样做了,因为只有 'nginx' 而没有说 'nginx/1.13.11'),那么就可以保持现状。如果您有一个易受攻击的版本,则可能会出现问题,并且坏人可以使用此信息来利用该漏洞,但为此您的 nginx 应该是可公开访问的。所以简而言之,使用“server_tokens off;” 并且不要为所有 IP 开放 nginx 端口,只为 Varnish 开放,你应该是安全的。
RFC 7231 说明了 Server 标头:
MAY 在RFC 2119中被解释为:
因此,限制或删除服务器响应标头是完全可以的。当然,了解这样做可能会放弃什么是个好主意。为此,请返回 RFC 7231:
尽管在实践中,攻击者并没有真正检查 Server: 标头。他们只是尝试他们知道的每一个安全漏洞,无论您的服务器是否有任何易受攻击的迹象。删除 Server: 标头是一种隐蔽操作的安全性,并且几乎完全无效。但如果它让你感觉更好,或者你的老板或审计师告诉你这样做,那就去做吧。只是不要指望它会显着改善您的安全状况。
例如,
nmap
即使它被配置为根本不发送Server
标头,或者标头内容完全是虚假的,它也可以相当准确地识别 Web 服务器。自己尝试一下nmap -sV -P0 -p 80,443 <IP address>
。HTTP标
Server
头仅用于一个目的 - 标识。在任何地方都不需要它来正确运行您的网站,并且通过删除它,什么都不会破坏。它揭示了内部服务器基础设施,从而泄露了可能对潜在入侵有用的安全信息。
在了解您的 Web 服务器软件之后,通过
Server
HTTP 标头,潜在的入侵者可以搜索您的 Web 服务器的公开漏洞。然后他们可以将此信息与他们可能获得的任何其他信息(例如通过扫描)结合使用 - 以构建适当的攻击向量。因此,您可能希望完全删除
Server
标头,例如在 nginx 中删除它。如果你的配置中有“ server_tokens off ”(看起来你这样做了,因为只有 'nginx' 而没有说 'nginx/1.13.11'),那么就可以保持现状。如果您有一个易受攻击的版本,则可能会出现问题,并且坏人可以使用此信息来利用该漏洞,但为此您的 nginx 应该是可公开访问的。所以简而言之,使用“server_tokens off;” 并且不要为所有 IP 开放 nginx 端口,只为 Varnish 开放,你应该是安全的。