真正有效的IP封禁策略是分层拦截+动态响应+精准匹配,需基于高频请求、404扫描、恶意UA等特征识别攻击,结合云安全组、系统防火墙、Web服务器三层协同,辅以白名单、ipset和自动化脚本实现毫秒级响应与自动解封。

直接封禁恶意IP,关键不在“高性能”三个字,而在规则够准、动作够快、不拖慢正常访问。真正有效的策略不是堆参数,而是分层拦截+动态响应+精准匹配。
明确攻击特征,先识别再拦截
盲目封IP容易误伤,必须先确认哪些行为属于恶意:高频请求同一接口(如每秒10次以上)、大量404路径扫描、User-Agent含扫描工具名(如sqlmap、dirbuster)、无Referer直访后台路径(/admin/login.php)、短时间内建立大量TCP连接。这些特征比单纯看IP更可靠。
- 查Nginx或Apache访问日志,用命令快速定位异常IP:
awk '$9 ~ /^4|5/ {print $1}' access.log | sort | uniq -c | sort -nr | head -20 - 用
fail2ban自动解析日志并触发封禁,比手动加规则更及时 - 对已知恶意IP段(如某些IDC批量扫段),可提前加入黑名单,避免等它打进来才反应
分层部署,系统级+应用级协同封堵
单靠一层防火墙容易被绕过。建议组合使用:
- 云平台安全组:最先拦截,直接丢弃来自高危IP段(如192.168.30.0/24)到80/443端口的流量,不进服务器内核
-
系统防火墙(iptables/ufw/firewalld):封禁已确认的恶意单IP或小范围段,例如:
iptables -I INPUT -s 203.122.45.112 -j DROP -
Web服务器层(Nginx/Apache):用
limit_req限速、deny指令封IP、或集成mod_security做请求体检测(如拦截含union select的SQL注入特征)
避免误封,设置白名单与临时豁免机制
封错一个搜索引擎爬虫IP,可能影响SEO;封错合作伙伴出口IP,业务就断了。所以必须留出口:
- 把百度、谷歌、必应官方爬虫IP段(如Googlebot的
google.com反向DNS验证结果)加入白名单,不参与任何限速或封禁 - 用
ipset管理IP列表,支持毫秒级增删,比逐条iptables规则快得多,也方便脚本调用 - 所有封禁规则加注释和时效标记,例如:
# DROP 203.122.45.112 —— CC扫描 2026-06-18 —— auto-expire 24h
自动化封禁,让响应速度跑赢攻击节奏
人工查日志→复制IP→敲命令→生效,整个过程常超5分钟,而一次CC攻击可在30秒内发起数百请求。必须自动化:
- 用Python或Shell写脚本,定时读取Web日志,按阈值(如1分钟内请求超300次)自动加入
ipset黑名单 - 配合
iptables的-m set --match-set引用该集合,实现毫秒级拦截 - 设置自动解封机制,比如封禁2小时后自动移出,防止误封长期生效



















