Jach1n/Syslog2Bot

GitHub: Jach1n/Syslog2Bot

跨平台桌面应用,接收安全设备Syslog日志并实时推送告警到钉钉机器人。

Stars: 18 | Forks: 5

# Syslog2Bot - 安全设备告警推送系统 一款跨平台的 Syslog 日志接收与告警推送系统,支持解析多种安全设备日志并推送到钉钉机器人。 ## 功能特性 - **Syslog 日志接收** - UDP 5140 端口接收日志 - **映射文档库** - 管理设备字段映射文档,支持批量导入 - **日志解析** - 支持多种解析方式,预设模板一键配置 - **筛选策略** - 灵活的日志过滤规则,支持多值匹配 - **告警推送** - 钉钉机器人消息推送 - **消息模板** - 自定义告警消息格式 - **深色/浅色主题** - iOS 风格界面 - **现代化 UI** - 透明标题栏、自定义窗口控制、流畅动画 ## 技术栈 | 组件 | 技术 | |------|------| | 后端 | Go + Wails v2 | | 前端 | Vue 3 + TypeScript + Element Plus | | 数据库 | SQLite (纯 Go 实现) | | 桌面框架 | Wails | ## 系统要求 ### Windows - Windows 10/11 (64位) - WebView2 运行时 (Windows 10+ 通常已内置) ### macOS - macOS 10.15 (Catalina) 或更高版本 - Intel 或 Apple Silicon (M1/M2/M3) ## 安装使用 ### Windows 1. 下载 `Syslog2Bot.exe` 2. 双击运行即可 ### macOS 1. 下载 `Syslog2Bot.app` 2. 首次运行:右键 → 打开 → 仍要打开 ## 从源码构建 ### 环境准备 **Windows:** # 安装 Go winget install GoLang.Go # 安装 Node.js winget install OpenJS.NodeJS.LTS # 安装 Wails go install github.com/wailsapp/wails/v2/cmd/wails@latest **macOS:** # 安装依赖 brew install go node # 安装 Wails go install github.com/wailsapp/wails/v2/cmd/wails@latest ### 编译 # 克隆仓库 git clone https://github.com/Jach1n/syslog-alert.git cd syslog-alert # Windows wails build # macOS wails build -platform darwin/universal ## 使用说明 ### 1. 配置设备 1. 进入「设备管理」模块 2. 添加安全设备信息(名称、IP地址) 3. 可选:选择解析模板关联设备 ### 2. 配置映射文档(可选) 1. 进入「映射文档库」模块 2. 添加设备的 Syslog 字段映射文档 3. 支持批量导入字段映射关系 4. 解析模板可引用映射文档自动填充字段名称 ### 3. 配置解析模板 1. 进入「日志解析」模块 2. 选择预设模板(云锁/天眼),一键配置 3. 或手动配置解析参数: - **Syslog + JSON** - 云锁等设备,Syslog头部 + JSON内容 - **纯JSON** - 纯 JSON 格式日志 - **分隔符** - 天眼等设备,使用 `|!` 分隔 - **键值对分隔** - `key:value|!key2:value2` 格式 - **正则表达式** - 非结构化日志 - **键值对** - `key=value` 格式 4. 使用实时预览测试解析效果 ### 4. 配置筛选策略 1. 进入「筛选策略」模块 2. 添加筛选规则,设置匹配条件和动作 3. 支持多条件组合匹配(AND/OR) 4. 支持的操作符: - 比较操作:`==`、`!=`、`>`、`>=`、`<`、`<=` - 字符串操作:`contains`、`not_contains`、`starts_with`、`ends_with` - 列表操作:`in`、`not_in`(多值匹配,用逗号分隔) - 正则匹配:`regex` - 存在检查:`exists`、`not_exists` ### 5. 配置告警推送 1. 进入「机器人配置」添加钉钉机器人 2. 创建输出模板定义告警消息格式 3. 添加告警策略,关联筛选策略、机器人和消息模板 ### 6. 启动服务 1. 在「系统状态」页面启动 Syslog 服务 2. 配置安全设备发送 Syslog 到本机 5140 端口 ## 支持的设备 | 设备类型 | 解析方式 | 预设模板 | 状态 | |----------|----------|----------|------| | 云锁安全 | syslog_json | ✅ 云锁 | ✅ 已支持 | | 天眼安全 | delimiter | ✅ 天眼 | ✅ 已支持 | | 椒图安全 | syslog_json | - | ✅ 已支持 | | 其他设备 | regex/json | - | 🔧 可自定义 | ## 预设模板使用 ### 云锁预设 选择"云锁"预设模板,自动配置: - 解析类型:Syslog + JSON - 头部正则:匹配 Syslog 头部 - 值转换:防护状态、处理状态自动转换 ### 天眼预设 选择"天眼"预设模板,自动配置: - 解析类型:分隔符 - 头部正则:匹配 Syslog 头部并提取告警类型 - 字段映射:根据告警类型自动映射字段名称 - `webids_alert`:网页漏洞利用告警 - `webshell_alert`:webshell上传告警 - `ips_alert`:网络攻击告警 - `ioc_alert`:威胁情报告警 - 值转换:威胁等级、攻击结果自动转换 ## 数据存储 数据库存储在用户主目录下,更新应用不会丢失数据: - **macOS/Linux**: `~/.syslog-alert/syslog.db` - **Windows**: `%USERPROFILE%\.syslog-alert\syslog.db` ## 项目结构 syslog-alert/ ├── main.go # 主入口 ├── app.go # 应用逻辑 ├── database.go # 数据库操作 ├── models.go # 数据模型 ├── parser.go # 日志解析 ├── filter.go # 日志过滤 ├── dingtalk.go # 钉钉推送 ├── syslog_service.go # Syslog 服务 ├── platform_windows.go # Windows 平台配置 ├── platform_darwin.go # macOS 平台配置 ├── frontend/ # 前端代码 │ └── src/ │ ├── views/ # 页面组件 │ │ ├── Dashboard.vue # 系统状态 │ │ ├── Devices.vue # 设备管理 │ │ ├── FieldMappingDocs.vue # 映射文档库 │ │ ├── ParseTemplates.vue # 解析模板 │ │ ├── FilterPolicies.vue # 筛选策略 │ │ ├── Robots.vue # 机器人配置 │ │ ├── Logs.vue # 日志查看 │ │ └── Settings.vue # 系统设置 │ ├── components/ # 通用组件 │ ├── stores/ # 状态管理 │ └── router/ # 路由配置 └── build/ # 构建输出 ## 开发计划 - [x] 映射文档库管理 - [x] 多值筛选(in/not_in) - [x] 嵌套 JSON 字段扁平化 - [x] 天眼设备支持 - [x] 预设解析模板 - [x] 数据库持久化存储 - [ ] 支持更多安全设备 - [ ] 企业微信机器人支持 - [ ] 飞书机器人支持 - [ ] 邮件告警支持 - [ ] 日志统计分析 - [ ] 告警聚合功能 ## 文档 - [用户手册](README.md) - 安装和使用指南 - [开发者文档](DEVELOPMENT.md) - 架构设计、API 参考和扩展开发 ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request!
标签:Go, HTTP/HTTPS抓包, PB级数据处理, Ruby工具, SecOps, SQLite, Syslog, Vue3, Wails, 云安全架构, 告警推送, 字段映射, 安全设备管理, 安全运维, 态势感知, 日志审计, 日志解析, 桌面应用, 消息通知, 自动化告警, 规则过滤, 证书伪造, 钉钉机器人, 防火墙日志