端口扫描的威胁与识别
端口扫描是攻击者探测服务器开放服务、收集攻击信息的常见手段。通过扫描工具(如Nmap)可快速发现开放端口、服务类型及版本,进而利用已知漏洞实施入侵。管理员应通过防火墙规则主动拦截扫描行为,降低风险。
防火墙拦截策略核心原理
防火墙基于规则表匹配数据包特征,对可疑流量进行丢弃或拒绝。常用方法包括:
- 限制SYN、FIN、Xmas扫描:通过iptables的模块(如
connlimit、recent)检测异常TCP标志组合。 - 限制连接频率:对单个IP的每秒新连接数设置阈值,超过则临时封锁。
- 启用状态防火墙:仅允许已建立连接(ESTABLISHED)和新合规连接(NEW),丢弃无效状态包。
常用防火墙配置示例
1. 使用iptables基础规则
以下规则针对常见扫描类型:
# 阻止SYN扫描(半连接过多)
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 10 -j DROP
# 阻止FIN扫描(只含FIN标志)
iptables -A INPUT -p tcp --tcp-flags ALL FIN -j DROP
# 限制单个IP每分钟SSH连接尝试次数
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 -j DROP
注意:需确保iptables规则持久化(如iptables-save),否则重启失效。
2. 使用firewalld的富规则
CentOS/RHEL 7+中推荐firewalld:
# 限制端口扫描:对22端口每分钟最多3次新建连接
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="22" accept limit value="3/m"'
# 记录并丢弃异常标志包
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" tcp-flags fin syn rst ack all accept' # 实际需根据策略调整
firewall-cmd --reload
更精细的扫描检测需结合IDS/IPS系统(如Snort、Suricata),防火墙作为第一道防线可过滤大部分粗暴扫描。
最佳实践与注意事项
- 避免误封锁正常业务:设置阈值时应参考服务器实际流量基线,必要时开启白名单。
- 定期审查日志:通过
/var/log/messages或防火墙日志识别漏网扫描及误封情况。 - 结合云安全组:云服务器同时配置云平台的网络ACL和安全组,形成多层防护。