直接改配置隐藏Apache版本号和操作系统信息需同步处理三处:响应头(ServerTokens Prod + ServerSignature Off + Header unset Server)、错误页面(自定义ErrorDocument)、额外标识头(如X-Powered-By、expose_php=Off及反向代理层清理),缺一不可。

直接改配置就能隐藏 Apache 的版本号和操作系统信息,关键在三个地方:响应头、错误页、额外标识头。光改一项不保险,得一起处理。
关掉 Server 响应头里的版本和系统
Apache 默认返回类似 Server: Apache/2.4.52 (Ubuntu) 这样的头,攻击者一扫就知道你用什么版本、什么系统。必须改掉:
- 编辑主配置文件(/etc/apache2/apache2.conf 或 /etc/httpd/conf/httpd.conf)
- 找到或添加这两行:
ServerTokens Prod
ServerSignature Off - ServerTokens Prod 让响应头只留 Server: Apache,不带版本和系统;ServerSignature Off 则去掉错误页面底部的服务器信息
彻底删掉 Server 响应头(推荐)
就算设了 ServerTokens Prod,响应头里还是有 Server: Apache,高级扫描器照样能识别。要真正“隐身”,得用 mod_headers 模块主动删除:
- 先启用模块:a2enmod headers(Debian/Ubuntu)或确认 LoadModule headers_module 已加载(RHEL/CentOS)
- 在虚拟主机配置或全局配置里加:
<IfModule mod_headers.c>
Header unset Server
</IfModule> - 如果 Apache 版本较老(如 2.4.29 之前),unset 可能不生效,可改用:
Header set Server ""
清理其他可能泄露的头和页面
Server 头只是冰山一角,PHP、框架、CDN 或错误页还可能悄悄暴露信息:
- PHP 用户:检查 /etc/php/*/apache2/php.ini,把 expose_php = Off
- 自定义错误页:别用 Apache 默认 404/500 页面,在配置里加 ErrorDocument 404 /404.html,页面内容只写通用提示,不提服务器
- 删掉多余头:比如 X-Powered-By、X-Generator,加这两行:
Header unset X-Powered-By
Header unset X-Generator - 反向代理场景(如 Nginx 前置):确保代理层也清掉了 Server 头,否则 Apache 的改动会被覆盖
改完一定要验证
配置写对不等于生效,必须实测:
- 用 curl -I http://your-domain.com 看响应头里有没有 Server: 行
- 访问一个不存在的路径,比如 curl -I http://your-domain.com/xxx,检查 404 响应是否也干净
- 如果开了 HTTPS,同样测 https:// 地址,确保 SSL 虚拟主机也应用了相同配置


















