我正在 CentOS 6.5 上安装 apache 并尝试设置一些强化。此过程的一部分是使用指令删除服务器签名ServerSignature
。由于我希望这在版本升级后仍然有效并遵循其他最佳实践,因此我尝试在目录中进行所有设置更改/etc/httpd/conf.d/
。这是我的conf.d/defaults.conf
文件:
ServerTokens Prod
<Directory />
Options -Indexes FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/html">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ServerSignature Off
除了 ServerSignature 指令之外,此方法效果很好。似乎由于/etc/httpd/conf/httpd.conf
默认情况下已设置,因此其值无法更改。如果我注释掉该行/etc/httpd/conf/httpd.conf
,则此指令在我的文件中可以正常工作conf.d/defaults.conf
。这是 apache 配置中的错误吗?我尝试过的所有其他指令都会覆盖默认值。如何在不修改该行的情况下覆盖此值/etc/httpd/conf/httpd.conf
?
答案1
至于最初的问题- 可能是因为该Include conf.d/*.conf
行位于 之前ServerSignature On
。因此该名称的最新设置将覆盖预览设置。
关于正确的配置文件管理
编辑 是完全没问题的/etc/httpd/conf/httpd.conf
。该文件将不是被 yum/rpm 更新覆盖,相反,它会创建一个/etc/httpd/conf/httpd.conf.rpmnew
文件,系统管理员(您)应该手动将该文件与本地配置合并(大多数时候使用vimdiff
)。
关于安全
正如其他人所说 - 隐藏服务器版本号不会帮助您提高安全性 - 对于 CentOS 尤其如此。默认情况下,所有 httpd 都公开以下信息:Apache/2.2.15
。该数字在 CentOS 6 生命周期内不会改变。6.0 发布时是 2.2.15,并且在接下来的 6 年内它将保持不变,只要 CentOS 6 仍受支持。因此,从该版本号来看,攻击者可以猜出您正在使用来自 CentOS 6 存储库的 httpd - 仅此而已。
如果目的是隐藏使用 Apache 的事实(而不仅仅是版本号),这几乎是不可能的,所有 Web 服务器都有一些独特的特性(错误文档、标头排序、TCP 标志等),这些特性很难隐藏,而且很容易被识别。
答案2
请记住,正如 Chris S 指出的那样,删除服务器签名并不能真正保护服务器。如果您只是想减少服务器显示的信息量,最好使用服务器令牌conf.d 文件上的指令。