如何隐藏 Apache 版本号和其他敏感信息
当远程请求发送到您的 Apache Web 服务器时,默认情况下,一些有价值的信息(例如 Web 服务器版本号、服务器操作系统详细信息、已安装的 Apache 模块等)会随服务器生成的文档一起发送回客户端。
另请参阅:如何在 Linux 中隐藏 Nginx 服务器版本
这些信息对于攻击者利用漏洞并访问您的 Web 服务器来说非常宝贵。为了避免显示 Web 服务器信息,我们将在本文中介绍如何使用特定的 Apache 指令隐藏 Apache Web 服务器的信息。
建议阅读: 保护 Apache Web 服务器的 13 个实用技巧
两个重要指令是:
服务器签名
允许在服务器生成的文档(例如错误消息、mod_proxy ftp 目录列表、mod_info 输出等等)下添加显示服务器名称和版本号的页脚行。
它有三个可能的值:
- 开启– 允许在服务器生成的文档中添加尾随页脚行,
- 关– 禁用页脚行和
- 电子邮件——创建“ mailto: ”引用;向引用文档的 ServerAdmin 发送邮件。
服务器令牌
它确定发送回客户端的服务器响应头字段是否包含服务器操作系统类型的描述和有关启用的 Apache 模块的信息。
该指令具有以下可能的值(以及设置特定值时发送给客户端的示例信息):
ServerTokens Full (or not specified) Info sent to clients: Server: Apache/2.4.2 (Unix) PHP/4.2.2 MyMod/1.2 ServerTokens Prod[uctOnly] Info sent to clients: Server: Apache ServerTokens Major Info sent to clients: Server: Apache/2 ServerTokens Minor Info sent to clients: Server: Apache/2.4 ServerTokens Min[imal] Info sent to clients: Server: Apache/2.4.2 ServerTokens OS Info sent to clients: Server: Apache/2.4.2 (Unix)
注意:在 Apache 版本2.0.44之后,ServerTokens指令还控制ServerSignature指令提供的信息。
建议阅读: 提升 Apache Web 服务器性能的 5 个技巧
要隐藏 Web 服务器版本号、服务器操作系统详细信息、已安装的 Apache 模块等,请使用您最喜欢的编辑器打开 Apache Web 服务器配置文件:
$ sudo vi /etc/apache2/apache2.conf #Debian/Ubuntu systems $ sudo vi /etc/httpd/conf/httpd.conf #RHEL/CentOS systems
并添加/修改/附加以下行:
ServerTokens Prod ServerSignature Off
保存文件,退出并重新启动 Apache Web 服务器,如下所示:
$ sudo systemctl restart apache2 #SystemD $ sudo service apache2 restart #SysVInit
在本文中,我们解释了如何使用某些 Apache 指令隐藏 Apache Web 服务器版本号以及有关 Web 服务器的更多信息。
如果您在 Apache 网络服务器中运行 PHP,我建议您隐藏 PHP 版本号。
与往常一样,您可以通过下面的评论部分为本指南添加您的想法。