Apache 防止目录遍历漏洞 ServerSignature 配置怎么改

文章导读
Apache 服务器配置 ServerSignature Off 主要用于隐藏错误页面中的版本信息,防止目录列表泄露需同时配置 Options -Indexes,两者均不能直接修复代码层面的路径遍历漏洞。适用 Apache 2.x 环境,修改配置文件后需重启服务,风险在于部分监控工具可能依赖服务器签名识别环境。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

Apache 服务器配置 ServerSignature Off 主要用于隐藏错误页面中的版本信息,防止目录列表泄露需同时配置 Options -Indexes,两者均不能直接修复代码层面的路径遍历漏洞。适用 Apache 2.x 环境,修改配置文件后需重启服务,风险在于部分监控工具可能依赖服务器签名识别环境。

先说结论:ServerSignature 配置用于隐藏错误页面底部的服务器签名,配合 Options -Indexes 才能防止目录列表泄露。

  • 先判断:确认 Apache 版本及配置文件位置,检查是否允许.htaccess 覆盖。
  • 优先做:在 httpd.conf 或虚拟主机配置中设置 ServerSignature Off 及 Options -Indexes。
  • 再验证:访问不存在的页面检查底部签名,访问无 index 目录确认是否列出文件。

命令速用版

以下配置片段可直接放入 httpd.conf 或虚拟主机配置文件中,修改后需重启 Apache 服务。

<Directory /var/www/html>
    Options -Indexes +FollowSymLinks
    ServerSignature Off
</Directory>

# 全局隐藏 Server 头版本信息
ServerTokens Prod

若使用.htaccess 文件,需确保 AllowOverride 已开启,内容如下:

Options -Indexes
ServerSignature Off

为什么会这样

ServerSignature 指令控制错误页面底部是否显示服务器版本信息,关闭后可减少攻击者获取服务器具体版本号的途径。

默认情况下,Apache 在 404 或 403 错误页面底部会显示 Apache 版本和操作系统信息,攻击者可利用这些信息匹配已知漏洞。ServerTokens 指令控制 HTTP 响应头中的 Server 字段,设置为 Prod 仅显示 Apache 字样而不显示版本号。Options -Indexes 则防止当目录缺少 index 文件时直接列出文件结构,三者配合可降低信息泄露风险,但无法阻止应用层代码漏洞导致的路径遍历。

分步处理

第一步:定位配置文件。使用命令 apachectl -V 查看 SERVER_CONFIG_FILE 路径,通常为/etc/httpd/conf/httpd.conf 或/etc/apache2/apache2.conf。

第二步:修改配置。使用文本编辑器打开配置文件,搜索 ServerSignature,将其设置为 Off。若不存在则手动添加。同时在对应的 Directory 块中添加 Options -Indexes。

第三步:检查语法。执行 apachectl configtest 或 apache2ctl configtest 确认配置无语法错误。

第四步:重启服务。执行 systemctl restart httpd 或 systemctl restart apache2 使配置生效。

回滚提醒:修改前备份原配置文件,若服务启动失败,恢复备份文件并检查错误日志。

怎么验证是否生效

验证签名隐藏:浏览器访问一个不存在的 URL 触发 404 页面,检查页面底部是否还有 Apache 版本信息,若只显示简单错误提示则生效。

Apache 防止目录遍历漏洞 ServerSignature 配置怎么改

验证目录列表:访问一个没有 index.html 或 index.php 的目录 URL,若返回 403 Forbidden 而不是文件列表,则 Options -Indexes 生效。

验证响应头:使用命令 curl -I http://your-domain.com 检查 Server 字段,若仅显示 Apache 而不带版本号,则 ServerTokens Prod 生效。

常见坑

虚拟主机覆盖:若服务器运行多个虚拟主机,需确保每个 VirtualHost 配置块内都应用了相应设置,否则未配置的站点仍会泄露信息。

.htaccess 权限:若主配置中 AllowOverride 设置为 None,.htaccess 中的配置将不生效,需在主配置中统一修改。

模块依赖:ServerSignature 由 mod_core 提供,通常默认启用,但若编译时裁剪过模块需确认是否存在。

常见问题

ServerSignature 和 ServerTokens 有什么区别

ServerSignature 控制错误页面底部的签名显示,ServerTokens 控制 HTTP 响应头中的 Server 字段内容。

配置后网站打不开怎么办

检查 Apache 错误日志 locate 位置,通常为/var/log/httpd/error_log 或/var/log/apache2/error.log,根据报错信息回滚配置。

这能防止黑客入侵吗

不能,这仅减少信息泄露,增加攻击成本,无法替代代码漏洞修复和防火墙策略。

参考来源

Apache HTTP Server Documentation, Core Features, ServerSignature Directive, https://httpd.apache.org/docs/2.4/mod/core.html#serversignature

Apache HTTP Server Documentation, Core Features, ServerTokens Directive, https://httpd.apache.org/docs/2.4/mod/core.html#servertokens

Apache HTTP Server Documentation, mod_autoindex, Options Directive, https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html