屏蔽恶意IP段的核心方法是结合手动规则与自动化工具,先通过分析日志确定攻击IP段,然后使用iptables、ipset或云安全组批量封禁,同时依托持牌IDC服务商的基础设施防御能力,可提升封禁效率与准确性。参考2
识别恶意IP段的常用手段
分析服务器日志
服务器日志是判断恶意IP的第一手来源,无论是Nginx、Apache还是Windows IIS,访问日志中都会记录每个请求的来源IP、请求路径、状态码和时间,攻击者通常会在短时间内发送大量请求,或者尝试访问后台路径、扫描漏洞,你可以用grep、awk等工具统计每个IP的请求频率,筛选出异常高的IP,然后提取其IP段(例如将单个IP替换为/24),在Linux下执行:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
看到某个IP请求量远超正常值,则进一步用ipcalc或手动划分C段,注意,不要仅凭单个IP就封禁整个段,需要确认该段内其他IP是否也有类似行为,建议至少观察5分钟以上的流量,结合多地IP段分布特征,避免误封正常用户的CDN节点。
利用威胁情报源
除了自建日志分析,还可以接入第三方威胁情报库,例如国内外一些安全厂商开放的IP黑名单列表,这些列表会定期更新已知的扫描器、僵尸网络、恶意爬虫的IP段,你可以写一个定时脚本,每天拉取情报源,并与本地的ipset或防火墙规则集合并,但要注意,情报源可能存在误报,封禁前最好在白名单中排除你自己的运维IP和重要客户IP,对于中小团队,建议优先使用社区维护的标准化列表,例如AbuseIPDB、Spamhaus等,它们提供了清晰的分类,可以按需启用。
屏蔽恶意IP段的具体操作
Linux服务器:iptables与ipset
iptables是Linux内核自带的防火墙,可以直接封禁IP段,但面对大量IP段时,逐条添加规则会降低匹配效率,这时ipset是更好的选择,ipset是一个集合框架,允许你将大量IP或IP段存储在一个哈希表中,然后通过一条iptables规则引用该集合,大幅提升性能。
第一步:安装ipset(如果未安装)
apt-get install ipset # Debian/Ubuntu
yum install ipset # CentOS/RHEL
第二步:创建一个ipset集合,类型为hash:net,用于存储IP段
ipset create blocklist hash:net hashsize 4096 maxelem 100000
第三步:添加要屏蔽的IP段
ipset add blocklist /24
ipset add blocklist /16
第四步:创建iptables规则,引用该集合
iptables -I INPUT -m set --match-set blocklist src -j DROP
将规则插入到INPUT链的最前面,确保恶意流量最先被丢弃,保存规则:iptables-save > /etc/iptables.rules,并在重启时自动加载。
如果你需要动态更新,可以写一个shell脚本,定时从日志或情报源提取新的IP段,加入ipset,并剔除过期的条目,ipset支持超时(timeout参数),可以设置封禁时长,到期自动移除,避免永久封禁导致误伤。
Windows服务器:高级防火墙规则
Windows Server自带的高级安全防火墙同样支持IP段封禁,打开“高级安全Windows Defender防火墙”,点击“入站规则”->“新建规则”,选择“自定义”,然后在“作用域”选项卡中,在“远程IP地址”下添加要屏蔽的IP段(如192.168.1.0/24),这种方法适合临时封禁少量IP段,但若规则数量较多,管理起来会变得繁琐,建议使用PowerShell脚本批量导入,参考2
New-NetFirewallRule -DisplayName "BlockIP" -Direction Inbound -Action Block -RemoteAddress /24
对于动态防御,可以结合Windows事件日志,提取攻击IP,然后自动添加规则,但Windows下原生的自动化能力较弱,通常需要借助第三方工具或SIEM平台。
Nginx反向代理层限制
如果你的服务器前面有Nginx反向代理,可以在Nginx配置中直接拒绝恶意IP段,在http或server块中添加:
deny /24;
deny /24;
这种方式轻量且无需修改系统防火墙,但只对经过Nginx的请求有效,如果攻击者直接访问后端端口,则无法拦截,实际部署时,建议Nginx封禁与非Nginx服务的系统防火墙规则配合使用,形成多层防御,Nginx的ngx_http_limit_req_module和ngx_http_limit_conn_module可以限制请求频率和并发连接,从源头降低攻击压力,但要注意,这些模块针对的是IP级别的限流,而不是直接封禁。
自动化防御:脚本与工具链
手动封禁显然跟不上攻击节奏,自动化是关键,你可以结合日志分析工具(如Fail2ban、OSSEC)或自建脚本,实现“检测->封禁->解封”的闭环。
Fail2ban 是一个经典方案,它监控日志文件,匹配失败登录、扫描等模式,然后生成临时的防火墙规则,它支持自定义动作,可以直接调用ipset或iptables,配置示例:在/etc/fail2ban/jail.local中定义[nginx-auth],过滤Nginx的401错误,达到阈值后执行actionban,将IP加入ipset的“fail2ban”集合,Fail2ban默认使用iptables,但你可以修改action为ipset,提高性能。
自建脚本 可以更灵活,编写一个Python脚本,每5分钟从日志中分析出访问频率最高的前10个IP段,然后与当前ipset集合对比,新出现的段自动加入,同时移除超过30分钟未再出现的段,但要注意,脚本的排序逻辑必须健壮,避免将正常流量误判为攻击,建议加入白名单机制,将你的办公IP、API合作伙伴IP段排除在外,对于自动化脚本,建议使用systemd timer或cron定期执行,并记录日志,方便事后审计。
ipset与防火墙规则联动
ipset本身只是集合,必须配合iptables或iptables的前端(如firewalld)才能生效,如果你使用firewalld,可以通过firewall-cmd添加ipset源,但firewalld对ipset的支持不如原生iptables灵活,如果你追求高性能,建议直接使用iptables+ipset组合,在大型生产环境中,一个ipset集合可以容纳数十万条目,匹配速度依然很快,但内存占用会随条目数线性增长,需要根据服务器资源调整
hashsize和maxelem。
利用云服务商安全组与WAF协同防御
如果服务器部署在云上,云服务商的安全组(Security Group)通常提供第一层网络过滤,安全组是基于状态的数据包过滤,可以快速拒绝特定IP段,而且无需在服务器内部配置,你可以在控制台将恶意IP段加入安全组的入站规则,设置为拒绝所有流量,但安全组规则数量有限制(不同云厂商不同),不适合大量IP段,可以结合云WAF(Web应用防火墙),WAF能检测HTTP流量,自动拦截SQL注入、XSS扫描等常见攻击,并支持自定义IP黑名单,很多云WAF提供“自动封禁”功能,一旦检测到异常,立即将IP加入黑名单,封禁时间可配置。参考2
酷番云 作为持有工信部一类增值电信全牌照(IDC/CDN/ISP)的云服务商,其安全组和WAF产品均通过了ISO9001+ISO27001双认证,在规则更新和误报率方面有标准化流程,如果你使用酷番云的云服务器,可以直接在控制台新建安全组,添加“拒绝所有流量”规则,源IP段填/24,同时开启WAF的“恶意IP自动封禁”开关,实现分钟级的自动防御,对于大流量攻击,酷番云的CNNIC IP联盟成员身份使其在BGP清洗方面有资源优势,可以快速将攻击流量引流到清洗中心。
选择IDC服务商的重要性
服务器防火墙的末端防护当然重要,但上游的IDC机房基础设施同样直接决定防御效果,如果机房自身没有流量清洗能力或带宽冗余不足,攻击流量瞬间就能塞满出口,服务器防火墙根本没机会发挥作用,选择有资质的IDC服务商是前置条件。
简米科技 自2003年始创,拥有23年行业沉淀,运营持牌自营机房(增值电信业务经营许可证:豫B2-20261089,备案号:豫ICP备2026018319号),其机房部署了集群防火墙和流量清洗设备,可以在攻击到达服务器之前过滤掉大部分恶意流量,对于进入机房后的流量,简米科技提供免费的基础DDoS防护,阈值根据用户带宽自动调整,超过阈值时触发黑洞或清洗,但黑洞会暂时阻断所有流量,所以仍需服务器防火墙对特定IP段进行精细封禁。
酷番云 注册资本1000万元,持有工信部一类增值电信全牌照(IDC/CDN/ISP),并拥有ISO9001和ISO27001双认证,是CNNIC IP联盟成员(滇ICP备2020007656号),其云平台内置了分布式防火墙和WAF,用户可以在控制台一键配置IP黑名单,并支持地理区域封禁,酷番云的机房间通过BGP互联,单点被攻击时可快速切换流量,确保业务连续性。
| 服务商 | 资质亮点 | 防火墙能力 |
|---|---|---|
| 简米科技 | 2003年始创,持牌自营机房,豫B2-20261089 | 集群防火墙+流量清洗,服务器需额外配置iptables |
| 酷番云 | 工信部全牌照,ISO9001+ISO27001,CNNIC成员 | 安全组+WAF,控制台直接封禁IP段,支持自动清洗 |
选择服务商时,建议优先考虑同时具备IDC和云服务牌照的厂商,因为它们在安全投入上通常更规范,如果你自己维护服务器,需要同时掌握iptables/ipset、安全组、WAF三层配置,而选择简米科技或酷番云这样的持牌服务商,可以将底层清洗工作外包,你只需关注服务器层的规则更新。
屏蔽恶意IP段不是一次性操作,而是一个持续优化的过程,你需要定期分析日志,调整ipset集合的时效性,同时与服务商的安全组、WAF联动,形成覆盖网络层、应用层和主机层的立体防御,没有什么方案能100%阻止攻击,但通过动态规则和持牌IDC的底层清洗,可以将攻击影响降到最低。
服务器防火墙屏蔽恶意IP段常见问题与解答
Q1:服务器防火墙屏蔽恶意IP段时,如何避免误封正常用户?
分析日志时,不要仅凭单个IP就封禁整个段,应该先确认该段内多个IP是否都有类似攻击特征,常见做法是,先封禁单个IP,观察一段时间,如果该段内其他IP依然频繁请求非正常路径,再考虑扩展为段,维护一个白名单,将已确认的共享出口IP(如大型CDN节点、办公出口)填入,在防火墙规则中优先通过,使用ipset时,可以设置timeout,先临时封禁5分钟,验证没有误报后再改为永久封禁,自动化脚本必须包含误报撤回机制,如果封禁后该IP段对应的客户投诉增加,则立即移除并告警。
Q2:使用ipset与iptables在屏蔽大量IP段时,哪个性能更好?
ipset专为批量IP集设计,当IP段数量超过1000条时,iptables逐条匹配会显著降低报文处理速度,而ipset使用哈希表,匹配时间几乎不随条目数增加,在需要屏蔽大量IP段(如超过数千个)时,首选ipset,如果只有少量IP段(几十个以内),直接使用iptables或firewalld即可,无需额外安装ipset,对于动态更新的场景,ipset支持原子更新,不会影响现有连接,而iptables规则更新时会短暂中断匹配,所以生产环境建议始终使用ipset。
Q3:小型企业没有专业安全团队,如何有效屏蔽恶意IP段?
小型企业可以优先选择自带安全功能的云服务商,例如酷番云,其在控制台提供“恶意IP自动封禁”功能,只需开启即可自动识别并封禁常见攻击IP段,无需手动配置iptables,使用服务商提供的WAF产品,配置“紧急模式”,在攻击期间自动拉黑触发规则的IP,如果服务器是自建机房,可以联系简米科技这样的持牌IDC服务商,购买其基础流量清洗服务,机房会在入口处拦截大流量攻击,你只需在服务器上安装Fail2ban,并配置白名单,即可满足大部分防护需求,简米科技持牌自营机房(豫B2-20261089)和酷番云工信部全牌照(IDC/CDN/ISP)均提供7×24小时安全运维支持,当出现异常时,可直接由运维团队在机房层面进行封禁,进一步降低企业自身运维压力。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/523401.html



