本文目录导读:

防止网络端口扫描是一项重要的网络安全措施,但需要明确的是:完全阻止扫描几乎不可能,因为攻击者可以换用不同IP、延迟发包等方式绕过,我们的目标应该是增加扫描成本、降低暴露面、及时检测并响应。
以下是针对不同场景(个人/企业)的实用防御策略,分为基础防护、高级对抗和检测响应三个层面:
基础防护(降低暴露面)
这是最有效、成本最低的方法。
- 关闭不必要的端口和服务:
- 原则:只开放业务必需的端口(如Web的80/443,SSH的22等)。
- 操作:在服务器上使用
netstat -an或ss -tuln查看当前监听端口,关闭未使用的服务(如Telnet、FTP、SMTP等默认服务)。
- 修改默认端口:
- 效果:防君子不防小人,但能过滤掉大量全端口扫描器。
- 操作:例如将SSH端口从22改为22222,将RDP从3389改为其他高位端口。
- 配置防火墙白名单:
- 关键端口:将SSH、远程桌面、数据库等管理端口设为仅允许特定的、固定的IP地址访问。
- 其他端口:使用云平台安全组或硬件防火墙,默认拒绝所有入站流量,只开放必要端口。
- 使用“隐身模式”(端口敲门):
- 原理:端口默认关闭,只有按特定顺序访问一组端口(如先敲7000,再敲8000,再敲9000),防火墙才临时打开SSH端口。
- 工具:
knockd、fwknop(单包授权,更安全)。 - 后果:扫描者即使扫到所有端口,看到的都是
closed或filtered。
高级对抗(增加扫描难度)
针对特定类型的扫描,如SYN扫描、ACK扫描、UDP扫描。
- 系统内核调优(针对TCP扫描):
- 隐藏开放端口:在某些情况下,可以调整内核参数使开放端口不响应SYN/ACK,但可能影响正常连接(需谨慎)。
- 常见做法:设置
iptables规则,对未匹配的SYN包使用REJECT --reject-with icmp-host-prohibited或DROP。注意:DROP比REJECT更耗服务器资源,但能增加扫描者判断难度。
- 使用入侵防御系统(IPS/IDS):
- 云平台:启用云服务商提供的“DDoS高防”或“WAF(Web应用防火墙)”,它们本身带扫描防护和流量清洗。
- 本地工具:
Snort、Suricata、Fail2ban,Fail2ban会根据日志中多次连接失败的IP,自动临时封禁该IP。
- TCP SYN Cookie 与阈值限制:
- 部分系统支持设置
syn_flood阈值,当短时间内收到大量SYN包(扫描特征之一)时,自动启动SYN Cookie机制,对合法连接影响较小。
- 部分系统支持设置
检测与响应(及时发现问题并反制)
注意:反制(如反向扫描攻击者)可能存在法律风险,请谨慎操作。
- 日志监控与告警:
- 工具:
OSSEC、ELK Stack(Elasticsearch+Logstash+Kibana)。 - 规则:设置规则,过去10秒内某IP访问了超过100个不同的端口”或“22端口出现5次失败登录”,触发告警。
- 工具:
- 主动封禁:
- 结合日志监控,自动将扫描者IP加入防火墙黑名单(黑名单)。
- 使用
AbuseIPDB、Spamhaus等威胁情报源,定期更新IP黑名单,提前阻止已知的扫描器。
- 部署蜜罐/诱捕系统:
在服务器上部署一个假的、常见的漏洞服务(如伪造的MySQL、RDP),记录攻击者的交互行为,这不会阻止扫描,但能提供追踪证据。
针对不同用户的建议
| 用户类型 | 核心策略 | 简单实施指南 |
|---|---|---|
| 个人电脑 | 关闭共享、启用系统防火墙 | 开启Windows防火墙;在控制面板中关闭“文件与打印机共享”;不安装远程桌面。 |
| 小型企业/VPS | 修改端口 + 白名单 | 改SSH端口;用UFW(Ubuntu)或firewall-cmd(CentOS)只开放80/443;安装Fail2ban。 |
| 大型企业/云服务 | 多层防护 + 专业安全运维 | 使用云原生安全组 + 网络ACL;部署入侵检测系统(IDS);定期进行渗透测试。 |
重要提醒
- 不要过度依赖“防火墙隐身”:专业的渗透测试人员会使用
nmap -sA(ACK扫描)或Idle Scan(闲置扫描)来绕过部分防火墙。 - 警惕内核参数调优:随意修改
/etc/sysctl.conf中的net.ipv4.tcp_synack_retries等参数可能导致兼容性问题。 - 法律问题:对扫描者进行“反端口扫描”或“扫回”可能构成未经授权的访问,属于违法行为。建议只采用被动防御和日志记录。
最有效的方法是“关掉不必要的门”,然后用“IP白名单”锁住必要门,最后用“Fail2ban”抓住敲门的人。