如何隐藏 Apache 版本号和其他敏感信息
当远程请求发送到您的 Apache Web 服务器时,默认情况下,一些有价值的信息(例如 Web 服务器版本号、服务器操作系统详细信息、已安装的 Apache 模块等)将在服务器生成的文档中一起发送回客户端。
另请阅读:如何在 Linux 中隐藏 Nginx 服务器版本
对于攻击者来说,这是利用漏洞并访问您的 Web 服务器的大量信息。为了避免显示 Web 服务器信息,我们将在本文中展示如何使用特定的 Apache 指令隐藏 Apache Web 服务器的信息。
建议阅读: 13 个保护 Apache Web 服务器的有用技巧
两个重要指令是:
服务器签名
它允许在服务器生成的文档下添加显示服务器名称和版本号的页脚行,例如错误消息、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 指令还控制 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 Web 服务器中运行 PHP,我建议您隐藏 PHP 版本号。
像往常一样,您可以通过下面的评论部分将您的想法添加到本指南中。