apache默认在错误页和响应头中泄露版本、系统及模块信息,须通过serversignature off和servertokens prod关闭签名与精简头信息,并禁用目录索引、拦截敏感文件、自定义错误页面以阻断信息泄露。

Apache 默认会在错误响应中暴露服务器版本、操作系统、模块列表等细节,这为攻击者提供了精准的漏洞利用线索。防范这类信息泄露,核心是切断错误页面和HTTP头中不必要的输出,而不是依赖“不被发现”。
关闭错误页服务器签名
默认404、500等错误页面底部会显示类似 Apache/2.4.65 (CentOS) Server at example.com Port 80 的信息。只需两步即可隐藏:
- 编辑主配置文件(/etc/httpd/conf/httpd.conf 或 /etc/apache2/apache2.conf)
- 添加或修改两行:
ServerSignature Off
ServerTokens Prod - 重启服务:systemctl restart apache2(Debian/Ubuntu)或 systemctl restart httpd(RHEL/CentOS)
禁用目录自动索引(防止列目录泄露)
当访问一个没有 index.html 或 index.php 的目录时,Apache 可能直接列出所有文件,暴露配置文件、备份文件、日志甚至数据库 dump。解决方法简单明确:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在对应
块中加入:Options -Indexes - 若作用于网站根目录,常见写法为:
Options -Indexes - 保存后执行 apachectl configtest 验证,再重启
阻止敏感配置文件被直接读取
.php.ini、.env、config.php、.git/config 等文件一旦被放在 Web 目录下且未加限制,攻击者可通过 URL 直接下载,导致密钥、数据库密码全盘泄露。必须主动拦截:
- 在虚拟主机或全局配置中添加:
Require all denied - 更彻底的做法:把 php.ini 移出 Web 根目录(应位于 /etc/php/*/apache2/ 或 /etc/php.ini),确保它根本不在 Apache 可服务路径中
自定义错误页面并控制响应状态码
默认错误页不仅泄露信息,还可能返回错误的状态码(如 200 而非 404),影响 SEO 和安全感知。建议:
- 在网站根目录放置简洁的 404.html(大小需 >512 字节,否则浏览器会忽略)
- 配置:ErrorDocument 404 /404.html
- 避免重定向到首页(如 ErrorDocument 404 /),否则返回 302,搜索引擎无法识别失效链接
- 同理配置 500、403 等页面,统一风格且不带服务器痕迹










