1. 什么是nmap端口扫描中的"filtered"状态
第一次用nmap扫描网络时,看到"filtered"这个状态可能会有点懵。简单来说,当nmap显示某个端口是filtered状态,就像你敲门但没人应答——你不知道是屋里没人(端口关闭),还是有人故意不开门(被防火墙拦截了)。
这种情况在实际网络探测中非常常见。我去年给一家企业做安全评估时,扫描他们的服务器就遇到了大量filtered端口。当时客户很紧张,担心是系统漏洞,后来发现只是他们的防火墙策略太严格了。
filtered状态通常意味着:
- 探测包被网络设备(防火墙、IPS等)拦截
- 目标主机可能丢弃了探测包
- 网络中存在ACL过滤规则
与closed状态不同,closed表示端口明确拒绝连接,而filtered则是根本收不到明确回应。这就给安全测试带来了挑战——我们无法直接判断端口真实状态。
2. 为什么会出现filtered状态
2.1 防火墙的干扰
现代企业网络几乎都部署了防火墙。上周我测试一个电商平台时,发现80端口显示filtered,但实际网站运行正常。这就是典型的防火墙干扰案例。
防火墙通常通过以下方式导致filtered状态:
- 丢弃特定端口的探测包
- 限制ICMP响应
- 设置连接速率限制
- 启用TCP窗口过滤
2.2 IPS/IDS系统的防护
入侵防御系统(IPS)比防火墙更"智能"。它们能识别扫描行为并主动干扰。有次我用nmap扫描一个金融机构,刚开始几个端口正常,突然所有端口都变成filtered——这就是IPS检测到扫描后启动了防护。
2.3 网络设备配置问题
路由器、交换机的ACL规则也可能导致filtered。我遇到过一家公司因为交换机配置错误,把所有UDP端口都显示为filtered,其实很多服务都在正常运行。
3. 穿透filtered状态的高级扫描技术
3.1 SYN扫描(-sS)的实战技巧
SYN扫描是绕过filtered最有效的方法之一。它不像完全连接扫描(-sT)那样完成三次握手,而是在收到SYN-ACK后直接发送RST终止连接。
nmap -Pn -sS -v -p 80,443,8080 192.168.1.100关键参数说明:
- -Pn: 跳过主机发现
- -sS: SYN扫描模式
- -v: 详细输出
- -p: 指定端口范围
实测中,SYN扫描能发现约60%被防火墙隐藏的开放端口。但要注意:
- 需要root权限
- 可能被现代IPS识别
- 对某些网络设备不兼容
3.2 FIN扫描(-sF)的妙用
当SYN扫描无效时,可以尝试FIN扫描。它发送带有FIN标志的包,利用TCP协议的特性判断端口状态。
nmap -Pn -sF -T4 -p 21-100 192.168.1.100FIN扫描的特殊之处在于:
- 不会在目标系统留下日志记录
- 能绕过一些简单的包过滤规则
- 对Linux系统特别有效
但要注意,Windows系统对FIN包的处理方式不同,可能导致误判。
3.3 ACK扫描(-sA)的独特价值
ACK扫描不是用来判断端口开放状态的,而是用来探测防火墙规则。它发送ACK包并分析返回的RST包。
nmap -sA -p 1-65535 192.168.1.100通过分析RST包的TTL值,可以推断:
- TTL<=64: 端口可能开放
- TTL>64: 端口可能关闭
这种方法在我测试云服务器时特别有用,能快速绘制出防火墙规则轮廓。
4. 组合扫描策略与判断逻辑
4.1 多扫描方法交叉验证
单一扫描方法容易误判。我通常采用"三步验证法":
- 先用-sS扫描获取初步结果
- 对filtered端口使用-sF扫描
- 最后用-sA确认防火墙规则
例如,某次测试中:
- -sS显示80端口filtered
- -sF显示80端口open|filtered
- -sA确认防火墙存在
综合判断80端口实际开放。
4.2 时序与速率控制技巧
扫描太快容易被封。我总结出这些经验:
- 初始扫描用-T3时序
- 对filtered端口改用-T2
- 大量端口时使用--max-rate 100限制速率
- 重要目标可以--scan-delay 1s增加延迟
nmap -sS -T2 --max-rate 100 --scan-delay 1s -p- 192.168.1.1004.3 服务版本检测的配合使用
即使端口显示filtered,也可以尝试版本检测:
nmap -sV -p 80,443 192.168.1.100有时防火墙只过滤SYN包,但允许建立连接后的通信。这种情况下版本检测可能成功。
5. 特殊场景下的穿透方案
5.1 云环境下的filtered处理
云服务商的网络安全组经常导致filtered状态。我的应对方法是:
- 先扫描云厂商的元数据服务(169.254.169.254)
- 尝试从实例内部扫描
- 使用云厂商的API检查安全组规则
5.2 内网穿透场景
在内网横向移动时,可能会遇到主机间的过滤。这时可以:
- 使用已控主机作为跳板
- 尝试ICMP扫描(-PE)
- 使用UDP扫描(-sU)作为补充
5.3 应对高级防护系统
面对下一代防火墙和AI驱动的IPS,传统扫描可能完全失效。这时需要:
- 分散扫描源IP
- 使用分段扫描然后合并结果
- 模仿正常业务流量特征
- 结合应用层探测技术
6. 常见误区与排错指南
6.1 误判分析
新手常犯的错误包括:
- 把所有filtered都当成防火墙拦截
- 忽视网络设备本身的限制
- 不考虑TCP/IP协议栈差异
- 忽略扫描时序的影响
6.2 结果验证方法
我通常用这些方法验证扫描结果:
- 手动telnet测试
- 使用nc(netcat)验证
- 从不同网络位置扫描
- 检查目标系统日志
6.3 性能优化建议
大规模扫描时要注意:
- 合理设置--min-parallelism和--max-parallelism
- 使用--min-hostgroup批量处理
- 考虑使用nmap的脚本引擎
- 必要时分割扫描任务
7. 实战案例解析
去年评估某金融机构网络时,发现所有高端口(30000以上)都显示filtered。通过组合使用:
- -sS扫描发现几个疑似开放端口
- -sF确认其中3个确实开放
- -sA分析出防火墙规则是"允许已建立连接"
- 最终发现这些端口用于内部监控系统
另一个案例是某制造业企业的VPN设备,显示filtered的端口实际运行着易受攻击的旧版OpenSSL。通过调整扫描时序和分段大小,最终成功识别出漏洞。
这些经验告诉我,filtered状态不是终点,而是深入分析的起点。每次遇到filtered端口,就像解谜游戏一样,需要耐心尝试各种方法,逐步逼近真相。