必须全局配置servertokens prod和serversignature off,并启用mod_headers添加header unset server、设expose_php=off,同时在cdn/代理层过滤,才能彻底隐藏apache版本信息。

要真正用 ServerTokens Prod 安全隐藏 Apache 版本信息,不能只改一行配置,也不能只靠它“单打独斗”。它只是关键一环,必须配合其他设置才能阻断响应头、错误页、PHP 头等多处泄露点。
必须在主配置文件中全局设置 ServerTokens 和 ServerSignature
ServerTokens 和 ServerSignature 指令只接受服务器级作用域,不能写在
- Linux/Ubuntu:/etc/apache2/apache2.conf 或 /etc/apache2/mods-enabled/httpd.conf
- RHEL/CentOS:/etc/httpd/conf/httpd.conf
- XAMPP(Windows):C:\xampp\apache\conf\httpd.conf
- XAMPP(Linux/macOS):/opt/lampp/etc/httpd.conf
确保文件中明确包含这两行(未被注释):
ServerTokens Prod
ServerSignature Off
注意:XAMPP 很多版本默认把这两项放在 conf/extra/httpd-default.conf 中,而该文件常被 Include 行注释掉。请搜索 Include "conf/extra/httpd-default.conf" 并取消注释,或直接把两行复制到 httpd.conf 底部。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
仅 ServerTokens Prod 不够:响应头仍暴露 Apache 身份
设为 Prod 后,响应头变成 Server: Apache,虽不带版本号,但攻击者仍能识别技术栈。若需进一步模糊,需启用 mod_headers 并移除整个 Server 头:
- Debian/Ubuntu:运行
a2enmod headers - RHEL/CentOS/XAMPP:检查
httpd.conf中LoadModule headers_module modules/mod_headers.so是否已取消注释 - 在主配置或站点配置(不在
内)添加:
Header unset Server
Apache 2.4.29 以下版本如不支持 unset,可改用:
Header set Server ""
别漏掉 PHP、错误页和代理层的“补漏”
ServerTokens 管不了这些地方,必须单独处理:
-
PHP 头:编辑
php.ini,设expose_php = Off,防止返回X-Powered-By: PHP/8.x -
自定义错误页:即使
ServerSignature Off生效,若你写了ErrorDocument 404 /404.html,且 HTML 里手动写了 Apache 版本,仍会泄露——需人工清理 -
CDN 或反向代理:如 Nginx、Cloudflare 等可能重新注入
Server头,此时 Apache 配置无效,须在代理层统一过滤
验证是否真生效,三步缺一不可
改完不验证等于没改。必须逐项确认:
- 执行
curl -I http://localhost,响应头中Server:字段应为空,或只剩Server: Apache(若未用 Header unset) - 访问一个不存在路径如
http://localhost/xyz,查看 HTML 错误页底部不能出现任何 Apache/PHP/OS 文字 - 运行
apachectl -t(Linux/macOS)或httpd.exe -t(Windows),确保配置语法正确,避免重启失败










