端口扫描是了解主机上可访问哪些服务的最快方法之一。如果使用得当,它可以帮助识别暴露的攻击面、验证防火墙规则以及排除连接故障。
鲁莽使用,可能会违反政策和法律。
港口国的含义
大多数扫描仪将端口分类为:
- 开:服务正在接受连接
- 已关闭:主机可访问,该端口上没有任何监听
- 已过滤:防火墙/中间盒阻止可见性
filtered 并不总是意味着安全。它通常意味着“扫描仪无法确认此路径的状态”。
安全合法范围第一
扫描前:
- 验证所有权/授权
- 文档目标列表
- 定义扫描窗口和速率
- 通知相关运营/安全团队
未经授权扫描第三方基础设施可能会被解释为恶意活动。
Nmap 实用示例
基本顶部端口扫描
命令
nmap target.example.com
完整 TCP 端口扫描(较慢)
命令
nmap -p- target.example.com
服务/版本检测
命令
nmap -sV target.example.com
SYN 扫描(需要权限)
命令
sudo nmap -sS target.example.com
内部扫描与外部扫描
尽可能运行两者:
- 内部扫描 显示横向移动可以看到的内容
- 外部扫描 显示互联网暴露的表面
许多团队保护外围,但开放不必要的内部服务。
误报和陷阱
- 负载均衡器可能会隐藏后端行为
- IDS/IPS 可能会限制速率,或者 tarpit 可能会扭曲结果
- 云安全组+主机防火墙可以创建混合状态
始终通过第二遍检查来验证高风险结果(nc, curl,应用程序日志)。
按风险确定发现的优先级
并非所有开放端口都是平等的。
更高优先级:
- 暴露的远程管理界面
- 具有已知漏洞的过时服务
- 不必要的公共管理端口
较低优先级:
- 需要适当加固的公共服务端口
基线和持续监测
一次扫描就是一个快照。更好的做法:
- 维持预期开放端口基线
- 运行计划扫描
- 对意外新暴露发出警报
这可以捕获部署后意外的服务暴露。
底线
在明确授权和严格解释的情况下,端口扫描是一种核心防御实践。专注于减少不必要的暴露、验证关键路径以及跟踪随时间的变化,而不是追逐原始扫描输出量。
小型团队的开放端口扫描清单
如果您没有大型安全计划,则此轻量级清单有效:
- 每月扫描您的公共 IP/域名
- 与预期服务列表比较
- 关闭意外开放的端口
- 验证云安全组和主机防火墙是否均匹配策略
- 文档异常所有者
目标是操作卫生,而不是为了扫描本身而扫描。
诠释“开放但安全”
一些港口应继续开放以满足业务需求。对于那些:
- 强制身份验证和速率限制
- 保持软件补丁
- 尽可能通过源 IP 进行限制
- 记录并警告异常访问模式
开放的端口不会自动变坏。不受管理的暴露是不好的。
变更后的验证命令
关闭或过滤端口后,从内部和外部验证:
命令
nc -zv target.example.com 22
nc -zv target.example.com 443
curl -I https://target.example.com
这确认了服务和策略更改是否确实产生了预期的行为。
底线(行动)
扫描、验证、减少和监控。保持明确的预期端口基线的团队比仅在紧急情况下进行扫描的团队发生的“意外暴露”事件要少得多。