servertokens prod 和 serversignature off 必须在主配置文件中全局设置,配合 header unset server、expose_php=off 及 cdn/代理层处理,才能彻底隐藏服务器信息。
直接在虚拟主机配置里设 servertokens prod 是无效的——apache 不允许在 <virtualhost></virtualhost> 块内覆盖该指令,它只能在主服务器级生效。想真正缩小暴露面,得从全局配置入手,并配合其他措施。
必须在主配置中设置 ServerTokens 和 ServerSignature
这两个指令控制响应头和错误页的服务器信息输出,但只接受全局作用域:
- 编辑主配置文件(如
/etc/apache2/apache2.conf或/etc/httpd/conf/httpd.conf) - 添加或修改两行:
ServerTokens ProdServerSignature Off - 保存后重启 Apache:
sudo systemctl restart apache2(Debian/Ubuntu)或sudo systemctl restart httpd(RHEL/CentOS)
仅靠 ServerTokens Prod 还不够
它会让响应头变成 Server: Apache,仍可被识别为 Apache 服务。攻击者用 curl -I https://yoursite.com 一眼就能确认技术栈。要彻底隐藏,还需下一步:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 启用
mod_headers:a2enmod headers(Debian系)或确保LoadModule headers_module modules/mod_headers.so已加载(RHEL系) - 在同一个主配置文件或启用的站点配置中(不在
<directory></directory>内),添加:<ifmodule mod_headers.c><br> Header unset Server<br></ifmodule> - 如果 Apache 版本较旧(如 unset 可能不生效,可改用:
Header set Server ""
别忘了 PHP 和错误页面的“补漏”
ServerTokens 管不了 PHP 自己加的头,也不影响 404/500 页面里可能残留的标识:
- 检查
php.ini,设expose_php = Off,避免返回X-Powered-By: PHP/8.x -
ServerSignature Off已禁用错误页底部文字,但自定义错误页(如ErrorDocument 404 /404.html)若手动写了版本信息,需一并清理 - 若前端有 CDN 或反向代理(如 Nginx),它可能重新注入
Server头,此时要在代理层统一处理,Apache 配置无法覆盖
验证是否真生效
改完不测等于白改。用 curl 分三类请求确认:
- 正常页面:
curl -I http://your-domain.com→ 响应头不应出现Server:行 - 404 页面:
curl -I http://your-domain.com/xxx→ 同样无Server:,且 HTML 源码里没有服务器签名 - HTTPS 请求(如有):
curl -I https://your-domain.com→ SSL 虚拟主机配置需同步应用上述设置










