核心思路是切断攻击者获取服务器版本、组件类型、后端框架等关键指纹信息的路径,通过“模糊+拦截+替换”组合动作,统一处理server、x-powered-by、x-aspnet-version等敏感响应头,并禁用options/trace等高风险方法,配合自定义错误页、敏感路径屏蔽及waf层隔离实现纵深防护。

核心思路是切断攻击者获取服务器版本、组件类型、后端框架等关键指纹信息的路径。不靠“藏”,而靠“模糊+拦截+替换”组合动作,让探测返回无效或误导性数据。
修改或删除敏感HTTP响应头
Server、X-Powered-By、X-AspNet-Version 等字段是最直接的指纹来源。不能只删,要统一处理:
- IIS:在 web.config 的
<system.webserver></system.webserver>节点内添加:<security><requestfiltering removeserverheader="true"></requestfiltering></security>;再用<httpprotocol><customheaders><remove name="X-Powered-By"></remove></customheaders></httpprotocol> - Apache:在 .htaccess 或主配置中加入:
ServerSignature Off和ServerTokens Prod(仅显示 “Apache”,不带版本) - Nginx:在 server 或 http 块中设置:
server_tokens off;,并用more_set_headers "Server: nginx";(需安装 headers-more 模块)覆盖原始值
禁用高风险HTTP方法与探测入口
OPTIONS 请求常返回 Allow 头(如 Allow: GET,HEAD,POST,OPTIONS,TRACE),还可能暴露 Server 字段;TRACE 方法易被用于 XSS 攻击。
- IIS:通过 web.config 的
<requestfiltering></requestfiltering>禁用 TRACE 和 OPTIONS:<verbs allowunlisted="false"><add verb="TRACE" allowed="false"></add><add verb="OPTIONS" allowed="false"></add></verbs> - Apache:在配置中加入:
TraceEnable off,并用LimitExcept GET POST HEAD限制允许的方法 - Nginx:用
if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|OPTIONS)$) { return 405; }拒绝非常规方法
统一错误页面与屏蔽敏感路径
默认 404/500 页面常含服务器型号、PHP 版本、堆栈路径等;.git、web.config、robots.txt 等文件也极易泄露架构线索。
- 所有服务器都应配置自定义错误页(如 404.html),内容简洁,不含任何技术标识
- 在 Web 根目录外移除或重命名 .git 目录;对 web.config、.htaccess、phpinfo.php 等设为禁止访问(返回 403)
- robots.txt 不要暴露后台路径(如
Disallow: /admin/)、测试目录或备份文件(如Disallow: /backup/)
引入WAF做指纹层隔离
把 WAF 当作“前端面具”,真实服务器完全隐身于其后:
- 云 WAF(如 Cloudflare、阿里云WAF)可一键关闭 Server 头、自定义错误页、屏蔽敏感路径规则
- 自建 WAF(如 ModSecurity + Nginx)启用规则集(如 OWASP CRS),重点开启:
–SecRule RESPONSE_HEADERS:Server "@rx ^.*$"+SecRuleRemoveById 920170(隐藏 Server)
–SecRule REQUEST_URI "@rx \.(php|asp|jsp|config|bak)$" "deny,status:403" - 确保 WAF 与后端通信走内网,且后端响应头不再向外透出(如 Nginx upstream 中设
proxy_hide_header Server;)











