必须同时配置ServerTokens Prod和ServerSignature Off才能有效隐藏版本信息;仅设后者无法阻止响应头泄露,因ServerTokens控制Server:字段,ServerSignature仅影响错误页页脚。

ServerTokens 和 ServerSignature 必须同时设为安全值,否则版本信息仍会泄露——只改一个等于白改。
为什么改了 ServerSignature Off 还能看到 Apache 版本?
因为 ServerTokens 控制响应头里的 Server: 字段,而 ServerSignature 只管错误页底部文字。两者独立生效:
-
ServerSignature Off仅隐藏 404/403 页面底部的 Apache/2.4.52 (Win64) 这类字符串 -
ServerTokens Full(默认)会让curl -I返回Server: Apache/2.4.52 (Win64) OpenSSL/1.1.1m PHP/8.1.0 - 必须把
ServerTokens设为Prod,响应头才缩成Server: Apache
该改哪个配置文件?路径和常见误操作
XAMPP 的真实主配置文件路径固定,但容易被编辑器缓存或面板误导:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- Windows:
C:\xampp\apache\conf\httpd.conf - Linux/macOS:
/opt/lampp/etc/httpd.conf - XAMPP 控制面板点 “Config → httpd.conf” 打开的可能是临时副本,尤其用 VS Code 或 Notepad++ 时
- 别去改
httpd-default.conf或httpd-vhosts.conf——除非你确认它们被Include且未被覆盖 - 检查是否在
<VirtualHost>块里又写了ServerTokens Full,这会覆盖全局设置
验证是否真正生效的三个硬检查点
重启 Apache 后不能只看浏览器页面,必须逐项验证:
- 执行
curl -I http://localhost,确认响应头中Server:字段只含Apache,不含斜杠、括号、模块名 - 访问一个不存在路径如
http://localhost/xxx,查看 HTML 错误页源码,确认<address>标签内没有版本字符串 - 运行
httpd.exe -t(Windows)或httpd -t(Linux/macOS),确保配置语法无误——拼错Off写成off或漏空格都会导致 Apache 启动失败
顺手关掉的两个高危模块:mod_status 和 mod_info
这两个模块默认可能被启用,暴露服务器内部状态和编译参数,攻击者可直接获取模块列表、MPM 类型、甚至加载顺序:
- 打开
httpd.conf,找到类似LoadModule status_module modules/mod_status.so的行,在前面加#注释掉 - 同样注释掉
LoadModule info_module modules/mod_info.so - 搜索
<Location /server-status>和<Location /server-info>,把整个<Location>块注释掉 - 不重启也能生效?不行。必须重启 Apache,否则模块仍在内存中运行
curl -I 一眼就能戳破。

















