Ubuntu 20.04 LEMP服务器未安装Apache却被Nmap检测出CVE-2011-3192漏洞的排查与修复咨询
我完全理解你的困惑——明明搭建的是LEMP栈(用Nginx而非Apache),却被Nmap的vuln脚本扫出了Apache专属的CVE-2011-3192漏洞,这确实有点反常。咱们一步步来排查原因,再解决问题:
第一步:确认服务器上确实没有Apache在运行
先彻底验证服务器上没有Apache相关进程或安装包,避免漏网的实例:
# 检查Apache进程是否存在 ps aux | grep apache2 # 查看是否安装了Apache包 dpkg -l | grep apache2
如果这两个命令都没有返回相关结果,说明Apache确实没安装,那大概率是Nmap脚本的误报,但咱们还要进一步确认。
第二步:检查Nginx的响应特征是否导致Nmap误判
Nmap的漏洞脚本有时候会根据Web服务的响应头(比如Server字段)来识别服务类型,如果你的Nginx配置里修改过Server头,或者有其他类似Apache的特征,可能会触发误判:
# 用curl查看服务器的HTTP响应头 curl -I http://your.server.ip.address # 查看HTTPS响应头 curl -I https://your.server.ip.address
查看输出里的Server字段,如果显示类似Apache或者包含Apache相关的标识,那就是这个原因导致的误报。你可以在Nginx的配置文件(比如/etc/nginx/nginx.conf或站点配置文件)里添加以下配置来隐藏或修改Server头:
# 隐藏Nginx版本信息 server_tokens off; # (可选)自定义Server头内容,需先安装nginx-extras包 more_set_headers 'Server: CustomWebServer';
第三步:手动验证Nginx是否真的存在该漏洞
CVE-2011-3192是Apache的字节范围DoS漏洞,Nginx的请求处理机制和Apache不同,默认情况下不会受这个漏洞影响。你可以手动模拟攻击请求来验证:
# 发送大量重叠的字节范围请求到服务器上的某个测试文件 curl -H "Range: bytes=0-1,0-2,0-3,0-4,0-5,0-6,0-7,0-8,0-9" http://your.server.ip.address/test-file.html
如果Nginx能正常响应,没有崩溃或者出现异常,说明服务器根本不存在这个漏洞,完全是Nmap脚本的误判。
第四步:更新Nmap脚本或调整扫描参数
如果是Nmap脚本的误判问题,你可以尝试更新Nmap的脚本库(MacOS上用brew安装的话,运行brew upgrade nmap即可),或者在扫描时指定服务类型,提高探测精度:
# 强制进行服务版本探测,减少误判 nmap --script=vuln -sV --version-intensity 5 -p 80,443 your.server.ip.address
总结
大概率是Nmap的http-vuln-cve2011-3192脚本误将Nginx识别成了Apache,导致误报。只要确认服务器上没有Apache,且Nginx能正常处理字节范围请求,就不用过度担心。如果想消除扫描结果,修改Nginx的响应头或者更新Nmap脚本即可。
备注:内容来源于stack exchange,提问作者DanRan

