1. 为什么需要自动化防御高危IP企业网络安全防护中最头疼的就是那些持续发起攻击的恶意IP。传统人工排查就像大海捞针——等你从日志里发现异常攻击者可能早已得手。去年我们公司就遇到过这种情况凌晨3点有境外IP尝试爆破OA系统值班人员早上8点才看到告警攻击者已经尝试了上万次登录。Zabbix深信服防火墙API的组合拳正好解决这个痛点。Zabbix的实时监控能力就像24小时值班的保安而深信服防火墙API相当于自动伸缩门发现可疑分子立即关门落锁。实测下来这套方案能把响应时间从小时级缩短到秒级我部署后成功拦截了90%以上的自动化攻击。2. 环境搭建与配置2.1 Zabbix日志监控配置首先要在Zabbix服务器开启syslog接收功能这相当于给系统装上耳朵。修改/etc/rsyslog.conf时要注意几个关键点# 启用TCP/UDP双协议支持 $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514 # 设置日志存储模板 $template RemoteLogs,/var/log/remote/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log *.* ?RemoteLogs配置完成后记得执行systemctl restart rsyslog就像重启监听设备的电源。这里有个坑如果/var/log/remote目录权限不对会导致日志无法写入。建议用这条命令一步到位mkdir -p /var/log/remote chmod 755 /var/log/remote2.2 深信服防火墙日志推送以AF8.0版本为例需要在控制台完成两个配置日志推送设置路径在[系统]-[日志设置]-[远程日志]添加Zabbix服务器的IP和端口API专用账号在[管理员]-[管理员账号]新建账号权限勾选API访问即可实测发现如果开启SSL加密传输日志延迟会增加200-300ms。对于内网环境直接用TCP明文传输反而更高效。3. 核心脚本解析3.1 日志分析模块Python脚本的getblockiplist()函数就像个智能过滤器主要做三件事识别WEB防护/IPS防护中的高危事件严重级别为高或致命只处理30分钟内的新鲜日志对重复攻击IP进行计数def getblockiplist(logname): iplist [] with open(logname,r,encodingutf-8) as f: for line in f: if 严重级别:高 in line or 严重级别:致命 in line: # 时间差计算逻辑 if time_diff timedelta(minutes30): iplist.append(attack_ip) return list(set([x for x in iplist if iplist.count(x) 1]))这里有个实用技巧用timedelta比对时间戳比字符串解析更可靠。曾经有次因为日志时区设置错误导致脚本漏掉了关键攻击后来全部改用UTC时间戳就再没出过问题。3.2 API交互模块深信服的API调用需要先获取token就像进门要刷卡。这里特别注意两点使用verifyFalse跳过证书验证仅限内网环境token有效期默认2小时需要做好错误重试机制def gettoken(): url https://防火墙IP/api/v1/namespaces/namespace/login data {name: api_user, password: your_password} response requests.post(url, jsondata, verifyFalse) return response.json()[data][loginResult][token]封锁IP时的参数设置很有讲究blockTime建议设1d24小时时间太短会被攻击者绕过srcIP支持批量提交但每次最好不要超过50个IP一定要先过滤白名单我有次误封了CEO的IP差点引发血案4. Zabbix联动配置4.1 监控项设置在zabbix_agentd.conf中添加自定义监控项UserParameterwaf_block,/usr/bin/python3 /scripts/waf.py这里有个隐藏坑点不同Zabbix版本对日志监控的处理方式不同。3.0以下版本直接用log类型而3.0版本需要配置预处理信息类型选择文本添加正则表达式预处理deny.*in shenxinfu设置触发器条件为找到匹配4.2 告警优化建议建议配置两级触发器初级告警发现单个高危IP立即通知紧急告警5分钟内出现3个以上高危IP时自动触发应急预案我们团队现在用企业微信机器人对接告警比邮件通知快得多。有次凌晨2点发现APT攻击全员秒级响应成功避免了数据泄露。5. 实战经验与避坑指南性能优化方面日志文件建议按小时轮转大文件会影响分析速度用inotify监听文件变化比定时扫描更高效API调用添加5秒超时防止网络波动导致阻塞安全加固建议脚本存放目录设置700权限API账号密码用环境变量存储定期清理30天前的日志文件遇到过最奇葩的故障是防火墙自动封禁了Zabbix服务器的IP。后来在脚本里加了自检逻辑先ping检测再执行封锁问题迎刃而解。这套系统运行半年以来平均每天拦截200次攻击。最惊险的一次是某境外组织持续发起0day攻击全靠自动化封锁争取到了补丁安装时间。现在运维同事都说终于能睡个安稳觉了
基于Zabbix与深信服防火墙API的高危IP自动化防御实践
发布时间:2026/5/18 6:19:27
1. 为什么需要自动化防御高危IP企业网络安全防护中最头疼的就是那些持续发起攻击的恶意IP。传统人工排查就像大海捞针——等你从日志里发现异常攻击者可能早已得手。去年我们公司就遇到过这种情况凌晨3点有境外IP尝试爆破OA系统值班人员早上8点才看到告警攻击者已经尝试了上万次登录。Zabbix深信服防火墙API的组合拳正好解决这个痛点。Zabbix的实时监控能力就像24小时值班的保安而深信服防火墙API相当于自动伸缩门发现可疑分子立即关门落锁。实测下来这套方案能把响应时间从小时级缩短到秒级我部署后成功拦截了90%以上的自动化攻击。2. 环境搭建与配置2.1 Zabbix日志监控配置首先要在Zabbix服务器开启syslog接收功能这相当于给系统装上耳朵。修改/etc/rsyslog.conf时要注意几个关键点# 启用TCP/UDP双协议支持 $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514 # 设置日志存储模板 $template RemoteLogs,/var/log/remote/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log *.* ?RemoteLogs配置完成后记得执行systemctl restart rsyslog就像重启监听设备的电源。这里有个坑如果/var/log/remote目录权限不对会导致日志无法写入。建议用这条命令一步到位mkdir -p /var/log/remote chmod 755 /var/log/remote2.2 深信服防火墙日志推送以AF8.0版本为例需要在控制台完成两个配置日志推送设置路径在[系统]-[日志设置]-[远程日志]添加Zabbix服务器的IP和端口API专用账号在[管理员]-[管理员账号]新建账号权限勾选API访问即可实测发现如果开启SSL加密传输日志延迟会增加200-300ms。对于内网环境直接用TCP明文传输反而更高效。3. 核心脚本解析3.1 日志分析模块Python脚本的getblockiplist()函数就像个智能过滤器主要做三件事识别WEB防护/IPS防护中的高危事件严重级别为高或致命只处理30分钟内的新鲜日志对重复攻击IP进行计数def getblockiplist(logname): iplist [] with open(logname,r,encodingutf-8) as f: for line in f: if 严重级别:高 in line or 严重级别:致命 in line: # 时间差计算逻辑 if time_diff timedelta(minutes30): iplist.append(attack_ip) return list(set([x for x in iplist if iplist.count(x) 1]))这里有个实用技巧用timedelta比对时间戳比字符串解析更可靠。曾经有次因为日志时区设置错误导致脚本漏掉了关键攻击后来全部改用UTC时间戳就再没出过问题。3.2 API交互模块深信服的API调用需要先获取token就像进门要刷卡。这里特别注意两点使用verifyFalse跳过证书验证仅限内网环境token有效期默认2小时需要做好错误重试机制def gettoken(): url https://防火墙IP/api/v1/namespaces/namespace/login data {name: api_user, password: your_password} response requests.post(url, jsondata, verifyFalse) return response.json()[data][loginResult][token]封锁IP时的参数设置很有讲究blockTime建议设1d24小时时间太短会被攻击者绕过srcIP支持批量提交但每次最好不要超过50个IP一定要先过滤白名单我有次误封了CEO的IP差点引发血案4. Zabbix联动配置4.1 监控项设置在zabbix_agentd.conf中添加自定义监控项UserParameterwaf_block,/usr/bin/python3 /scripts/waf.py这里有个隐藏坑点不同Zabbix版本对日志监控的处理方式不同。3.0以下版本直接用log类型而3.0版本需要配置预处理信息类型选择文本添加正则表达式预处理deny.*in shenxinfu设置触发器条件为找到匹配4.2 告警优化建议建议配置两级触发器初级告警发现单个高危IP立即通知紧急告警5分钟内出现3个以上高危IP时自动触发应急预案我们团队现在用企业微信机器人对接告警比邮件通知快得多。有次凌晨2点发现APT攻击全员秒级响应成功避免了数据泄露。5. 实战经验与避坑指南性能优化方面日志文件建议按小时轮转大文件会影响分析速度用inotify监听文件变化比定时扫描更高效API调用添加5秒超时防止网络波动导致阻塞安全加固建议脚本存放目录设置700权限API账号密码用环境变量存储定期清理30天前的日志文件遇到过最奇葩的故障是防火墙自动封禁了Zabbix服务器的IP。后来在脚本里加了自检逻辑先ping检测再执行封锁问题迎刃而解。这套系统运行半年以来平均每天拦截200次攻击。最惊险的一次是某境外组织持续发起0day攻击全靠自动化封锁争取到了补丁安装时间。现在运维同事都说终于能睡个安稳觉了