震撼首发!!!Syslog2Bot一款轻量级安全设备告警推送工具

admin 2026-03-19 00:08:28 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档介绍Syslog2Bot,一款轻量级安全告警推送工具。该工具解决设备缺乏实时推送及告警噪声痛点,支持Syslog接收、多格式解析、筛选去重及钉钉推送。内容详述部署与解析策略,提供GitHub地址,能有效提升安全运营响应效率。 综合评分: 85 文章分类: 安全工具,安全运营,解决方案


cover_image

震撼首发!!!Syslog2Bot 一款轻量级安全设备告警推送工具

原创

Jach1n Jach1n

迷人安全

2026年3月16日 16:54 浙江

一、工具简介

1.1 背景与痛点

在政务、企业内网等安全运营环境中,部分安全设备(如防火墙、IDS、WAF、主机安全等)每天产生大量告警信息,但这些设备普遍缺乏实时告警推送能力,导致安全团队面临以下核心问题:

  • 安全设备缺乏告警推送功能:部分安全设备,只提供本地日志存储,无法直接对接即时通讯工具(如钉钉、企业微信),运维人员需要频繁登录设备查看,响应滞后。
  • 重保期间告警响应慢:重大活动保障期间,需要7×24小时盯着设备告警,稍有疏忽就可能漏掉关键告警
  • 外发告警噪声严重:由于外发日志无法进行筛选和去重,相同事件反复推送,导致消息列表过长运营人员检索起来困难。

1.2 解决方案

Syslog2Bot 是一款跨平台的 Syslog 日志接收与告警推送系统,核心功能:

| 功能 | 说明 | | — | — | | 📡 Syslog接收 | UDP/TCP 5140端口接收日志,兼容标准Syslog协议 | | 🔧 灵活解析 | 支持JSON、分隔符、正则等多种解析方式 | | 🎯 精准筛选 | 多条件组合筛选,支持告警去重 | | 📱 钉钉推送 | 实时推送告警到钉钉群机器人 | | 💾 本地存储 | SQLite数据库存储,支持日志清理策略 |

1.3 技术栈

| 组件 | 技术 | | — | — | | 后端 | Go + Wails v2 | | 前端 | Vue 3 + TypeScript + Element Plus | | 数据库 | SQLite (纯 Go 实现) | | 桌面框架 | Wails |


二、使用方法

2.1 快速部署

Windows系统

  1. 下载 Syslog2Bot.exe
  2. 双击运行即可,无需安装

macOS系统

  1. 下载 Syslog2Bot.app
  2. 首次运行:右键 → 打开 → 仍要打开
  3. 如果提示”已损坏,无法打开”,执行以下命令:
   xattr -cr /Applications/Syslog2Bot.app

2.2 配置流程

第一步:添加设备

进入「设备管理」,添加安全设备信息(名称、IP地址),用于标识日志来源。

第二步:配置解析模板

进入「日志解析」,选择预设模板或手动配置解析参数。系统提供云锁、天眼等预设模板,一键配置即可使用。

第三步:配置筛选策略

进入「筛选策略」,设置告警过滤规则。可以按威胁等级、攻击类型、目标IP等条件筛选,避免告警风暴。

第四步:配置钉钉机器人

  1. 在钉钉群中添加自定义机器人,获取Webhook地址
  2. 进入「机器人配置」,添加机器人信息

第五步:创建告警策略

进入「数据推送」,创建告警策略,关联筛选策略、机器人和消息模板。

第六步:启动服务

在「系统状态」页面启动Syslog服务,配置安全设备发送Syslog到本机5140端口。


三、日志解析与筛选策略详解

3.1 Syslog + JSON 解析

适用场景:日志格式为 Syslog头部 + JSON内容

日志示例

<142>Mar &nbsp;5 14:41:44 hostname SyslogWriter[123]: {"attackIp":"192.168.1.100","threatType":"暴力破解","level":3,"description":"SSH暴力破解攻击"}

配置方法

| 配置项 | 说明 | | — | — | | 解析类型 | Syslog + JSON | | 头部正则 | <(?P<priority>\d+)>(?P<timestamp>\w+\s+\d+\s+[\d:]+) | | 字段映射 | 自动提取JSON中的字段 |

解析结果

{&nbsp;&nbsp;"priority":&nbsp;"142",&nbsp;&nbsp;"timestamp":&nbsp;"Mar &nbsp;5 14:41:44",&nbsp;&nbsp;"attackIp":&nbsp;"192.168.1.100",&nbsp;&nbsp;"threatType":&nbsp;"暴力破解",&nbsp;&nbsp;"level":&nbsp;3,&nbsp;&nbsp;"description":&nbsp;"SSH暴力破解攻击"}

值转换功能:可以将数字代码转换为可读文本

{&nbsp;&nbsp;"level": {&nbsp; &nbsp;&nbsp;"1":&nbsp;"低危",&nbsp; &nbsp;&nbsp;"2":&nbsp;"中危",&nbsp; &nbsp;&nbsp;"3":&nbsp;"高危",&nbsp; &nbsp;&nbsp;"4":&nbsp;"危急"&nbsp; }}

3.2 分隔符解析(智能分隔符)

适用场景:日志使用特殊分隔符,且同一设备有多种告警类型

日志示例

<142>Mar &nbsp;5 16:28:31 hostname SyslogWriter[123]: webids_alert|!serial001|!rule_123|!SQL注入攻击|!...

配置方法

| 配置项 | 说明 | | — | — | | 解析类型 | 智能分隔符 | | 分隔符 | \|! | | 类型字段位置 | 0(第一个字段标识告警类型) | | 跳过头部 | 开启(跳过Syslog头部) |

解析逻辑说明

天眼设备的Syslog日志包含多种告警类型(webids_alert、ips_alert、ioc_alert、webshell_alert),每种类型的字段排列顺序不同。智能分隔符解析通过以下逻辑处理:

  1. 识别告警类型:根据类型字段位置(默认第0个字段)识别当前日志属于哪种告警类型
  2. 选择子模板:根据告警类型自动选择对应的子模板配置,每个子模板定义了关键字段的位置索引
  3. 字段映射处理
  • 原始字段按分隔符切分后,根据子模板中定义的位置索引提取对应值
  • 将提取的值存入统一的标准化字段名(alertName、attackIP、victimIP、alertTime、severity、attackResult)

子模板配置示例

{&nbsp;&nbsp;"webids_alert": {&nbsp; &nbsp;&nbsp;"alertNameField":&nbsp;3,&nbsp; &nbsp;&nbsp;"attackIPField":&nbsp;6,&nbsp; &nbsp;&nbsp;"victimIPField":&nbsp;8,&nbsp; &nbsp;&nbsp;"alertTimeField":&nbsp;4,&nbsp; &nbsp;&nbsp;"severityField":&nbsp;10,&nbsp; &nbsp;&nbsp;"attackResultField":&nbsp;26&nbsp; },&nbsp;&nbsp;"ips_alert": {&nbsp; &nbsp;&nbsp;"alertNameField":&nbsp;3,&nbsp; &nbsp;&nbsp;"attackIPField":&nbsp;6,&nbsp; &nbsp;&nbsp;"victimIPField":&nbsp;8,&nbsp; &nbsp;&nbsp;"alertTimeField":&nbsp;4,&nbsp; &nbsp;&nbsp;"severityField":&nbsp;10,&nbsp; &nbsp;&nbsp;"attackResultField":&nbsp;24&nbsp; },&nbsp;&nbsp;"ioc_alert": {&nbsp; &nbsp;&nbsp;"alertNameField":&nbsp;18,&nbsp; &nbsp;&nbsp;"attackIPField":&nbsp;6,&nbsp; &nbsp;&nbsp;"victimIPField":&nbsp;8,&nbsp; &nbsp;&nbsp;"alertTimeField":&nbsp;10,&nbsp; &nbsp;&nbsp;"severityField":&nbsp;12,&nbsp; &nbsp;&nbsp;"attackResultField":&nbsp;-1&nbsp; }}

处理流程示意

原始日志: webids_alert|!field_1|!field_2|!SQL注入|!field_4|!...|!192.168.1.100|!...&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ↓识别类型: webids_alert&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ↓选择子模板: webids_alert配置&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ↓字段提取映射:&nbsp; field_3 &nbsp;→ alertName &nbsp;= "SQL注入"&nbsp; field_6 &nbsp;→ attackIP &nbsp; = "192.168.1.100"&nbsp; field_8 &nbsp;→ victimIP &nbsp; = "目标IP"&nbsp; field_4 &nbsp;→ alertTime &nbsp;= "告警时间"&nbsp; field_10 → severity &nbsp; = "威胁等级"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ↓输出标准化字段供筛选和推送使用

支持的告警类型

  • webids_alert:网页漏洞利用告警
  • ips_alert:入侵防御告警
  • ioc_alert:威胁情报告警
  • webshell_alert:Webshell告警

3.3 筛选策略详解

为什么需要筛选策略?

安全设备每天可能产生成千上万条日志,如果全部推送会造成告警疲劳。筛选策略可以精准过滤,只推送需要关注的告警。

支持的操作符

| 操作符 | 说明 | 示例 | | — | — | — | | == | 等于 | level == 3 | | != | 不等于 | status != "normal" | | contains | 包含 | message contains "SQL注入" | | in | 在列表中 | severity in "高危,危急" | | regex | 正则匹配 | ip regex "^192\.168\." | | >``>=``<``<= | 数值比较 | count > 100 |

实战配置示例

场景1:只推送高危及以上告警

字段:level操作符:in值:高危,危急

场景2:过滤内网IP攻击

字段:attackIp操作符:regex值:^(?!10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.).*

场景3:多条件组合

条件1:level in "高危,危急"条件2:attackResult == "成功"逻辑:AND

告警去重功能

同一攻击在短时间内可能产生大量重复告警,开启去重后,在指定时间窗口内相同告警只推送一次。

| 配置项 | 说明 | 默认值 | | — | — | — | | 去重开关 | 是否启用去重 | 开启 | | 去重窗口 | 去重时间范围(秒) | 60秒 |

去重依据:设备ID + 策略ID + 攻击IP + 威胁类型 + 事件描述


四、实战效果

告警推送效果

钉钉消息示例

🚨 安全告警告警时间:2024-03-15 10:30:00设备名称:云锁-生产服务器威胁类型:SSH暴力破解攻击者IP:203.0.113.50威胁等级:高危攻击结果:失败描述:检测到SSH暴力破解攻击,已自动拦截

五、意见反馈

项目地址

GitHub:https://github.com/Jach1n/Syslog2Bot

欢迎 Star ⭐ 支持!

问题反馈

使用过程中遇到问题,欢迎提交 Issue:

  • 功能建议
  • Bug反馈
  • 设备适配需求

后续规划

  • 多平台告警支持(企业微信、飞书、邮件)
  • 日志统计分析
  • 告警聚合功能
  • 支持更多安全设备

作者:Jach1n

本工具仅供学习交流使用,请勿用于任何非法用途。在使用过程中,用户需自行确保数据处理和传输符合当地数据出入相关要求和法律法规。作者不对任何不当使用行为承担法律责任。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:迷人安全 Jach1n Jach1n《震撼首发!!!Syslog2Bot 一款轻量级安全设备告警推送工具》

新年新福气 网络安全文章

新年新福气

文章总结: 该文档发布于2026年3月,标题为新年新福气,来源为白给信安。正文部分主要由多个图片占位符构成,未包含任何实质性文本内容或技术细节,推测可能是一则节
评论:0   参与:  0