如何隐藏 Apache 的版本号和操作系统信息
Apache 是最流行的 Web 服务器之一,但它的默认配置在许多 Linux 发行版中包含有问题的选择。Apache 倾向于宣传其特定版本和运行它的平台,这些信息可能对攻击者有价值。
这篇快速文章将向您展示如何禁用此输出以帮助保护您的服务器。通常没有理由让它处于活动状态,关闭它应该只需要一分钟。
这是显示目录索引的全新 Apache 2.4 安装:
该页面的页脚显示您的服务器的 Apache 版本代码、操作系统名称以及内部 IP 地址和端口号。
这些是潜在的敏感细节。Apache 中的零日漏洞可能只影响一小部分版本。通过打开此输出,您可以向全世界展示您的机器是否存在风险。这使攻击者更容易将您的主机识别为潜在目标。
Apache 将此数据称为其“服务器签名”。它不仅限于目录索引页面:版本代码包含在Server标头中的每个 HTTP 响应中:
无论响应的状态代码如何,它都会出现。攻击者可以通过简单地向您的服务器 ping 请求来找到您的精确 Apache 版本,无论他们是否知道有效的 URL。
禁用服务器签名
禁用此不需要的输出有两个部分。首先是ServerSignatureApache 配置文件中的值。该文件的位置各不相同;/etc/apache2/apache2.conf并且/usr/local/apache2/conf/httpd.conf是两种常见的可能性。您的 Web 根目录中的ServerSignature内部文件也支持该指令。
将指令设置Off为禁用出现在服务器生成的网页上的签名:
ServerSignature Off
重新启动 Apache 以应用更改:
$ sudo service apache2 restart
没有服务器签名的默认 Apache 索引页面的图像
这会影响目录列表、Apache 的默认错误页面以及服务器生成的其他 HTML 输出。Off完全删除签名行。该设置可选地支持第三个值 ,EMail它提供了一个链接以将电子邮件发送到由 定义的地址ServerAdmin:
ServerAdmin example@example.com
ServerSignature EMail
这会将 Apache 版本信息替换为电子邮件链接。
管理服务器令牌
响应标头的内容Server由不同的设置控制,ServerTokens. 这只能由服务器的全局配置文件设置。内部.htaccess文件不支持它。
默认值Full表示上面示例中观察到的精确版本字符串和操作系统名称。这还可以包括已加载模块和 CGI 内容引擎(如 PHP)的版本号。
支持以下替代值:
- Full–Apache/2.4.2 (Ubuntu)
- Prod–Apache
- Major–Apache/2
- Minor–Apache/2.4
- Min–Apache/2.4.2
- OS– 相同Full但没有加载模块的信息
选择是最安全的Prod值。您可以将其视为Production,尽管它实际上是 的缩写ProductOnly。此服务器令牌意味着Server标头只会显示您正在使用 Apache,而没有任何关于发布的额外信息。攻击者必须进行更多的试错调查才能在您的安装中找到可利用的漏洞。
不幸的是,没有办法Server完全删除标题。Apache 实际上坚持禁用它“根本不会使您的服务器更安全”,并建议使用Min它来更容易调试互操作问题。
但是,大多数人从不使用Server标头,并且宣传有关您的系统的尽可能少的信息总是最安全的。虽然它不会阻止利用漏洞,ServerTokens Prod但可以阻止攻击者进行投机尝试。这也会让路人更难收集到你的技术堆栈内部运作的细节。这只是一个小的硬化,但有一天它可能是你需要的不同。
PHP怎么样?
Apache 经常用于由 PHP 提供支持的网站和应用程序前面。不幸的是,PHP 有自己在互联网上提供版本号的习惯。它将出现在X-Powered-By您的 PHP 代码发送的响应的标题中。
您可以通过使用以下行修改 PHP 配置文件来关闭此功能:
expose_php = Off
配置文件通常可以在/etc/php/8.1/apache2/php.ini. 替换8.1为您正在使用的 PHP 版本。您需要重新启动 Web 服务器以应用更改。
概括
Apache 的默认配置公开了您的服务器的精确版本号,以及它的操作系统和 IP 地址。这些看似无害的信息可以为寻找易受攻击服务器的攻击者提供帮助。
关闭服务器签名是强化环境的一种快速方法。同时解决堆栈中其他软件的类似信息暴露问题也是一个好主意。PHP 和一些 Web 框架也有类似的漏洞。
相关文章
- 报错:Sqoop2 Exception: java.lang.NoSuchMethodError Message: org.apache.hadoop.security.authentication.client.Authenticator
- Apache RocketMQ 5.0 笔记
- 怎么用apache版本的hadoop去实现CDH中hdfs上的不用目录权限?
- wampServer(windows、apache、mysql、php)
- Apache Spark机器学习.1.4 MLlib
- Apache Spark机器学习2.7 复用性和自动化
- SpringBoot启动报错:org.apache.catalina.LifecycleException: Protocol handler start failed
- CVE-2020-9480: Apache Spark 远程代码执行漏洞通告
- 《PHP、MySQL和Apache入门经典(第5版)》一2.8 MySQL权限系统简介
- apache ranger源码编译
- Ant—怎样Windows操作系统中搭建Apache Ant环境
- 【Kafka】Apache Kafka消息队列概述及环境搭建