# BlueService **Repository Path**: nekokami0527/BlueService ## Basic Information - **Project Name**: BlueService - **Description**: HVV期间写的整合各类安全设备的高可定制化安全监测服务,提供日志获取、日志分析、自动安全响应、安全事件推送等各类功能,并将设备接口标准化,可根据需要扩充对应厂商的接口脚本,部署迅速,在2022年国护中效果显著 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-08-25 - **Last Updated**: 2022-09-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 特点 ## 整合抽象各类安全设备,便于二次开发 ## 支持SYSLOG协议 ## 快速可调的响应处理流程(说白了封IP快) ## 24小时无人值守 ## 详细的消息推送机制 ## 高可定制化事件处理 ## 等等(show me code) # 效果图 ## 主程序运行图 ![running1](README/running1.png) ## 控制台 ![image-20220825220143871](README/image-20220825220143871.png) ## 微信消息自动推送 ![image-20220825214015765](README/image-20220825214015765.png) ![image-20220825214029638](README/image-20220825214029638.png) # 脚本结构介绍 ![image-20220825214054295](README/image-20220825214054295.png) ​ 脚本整体结构由主程序和插件构成,其中configs目录下存储各类安全设备的配置文件,configs/config.py中存储账号密码。devices目录下存储各类设备驱动,fillter目录下存储自定义的规则脚本,pusher目录下存储消息推送服务接口,utils目录下是各类组件,一般不用修改。主服务脚本为BleuService.py脚本,其中包含对各个其他脚本的加载,调用等,terminal.py是对主服务脚本的封装,一般只需运行terminial.py即可。 ## 配置文件 ![image-20220825214423180](README/image-20220825214423180.png) config.py中填写各类安全设备的登陆密码,用于自动加载设备 ## 设备驱动 ![image-20220825214505891](README/image-20220825214505891.png) ​ device中包含各类安全设备的驱动类,其中需要开发者手动封装并实现必要接口 ### 日志获取设备 **日志获取设备只需要包含以下三个接口即可** ![image-20220825215618433](README/image-20220825215618433.png) ### 应急响应设备 **应急响应设备着重需要半酣bandIp这一接口,当出现安全事件时,主服务将会自动调用此接口进行相应操作** ![image-20220825214607252](README/image-20220825214607252.png) ## 过滤器 ![image-20220825214628274](README/image-20220825214628274.png) ​ 过滤器中需要开发者手动针对其他情况实现对主服务下发的事件进行分析过滤的代码,本来想用表达式就实现,但是想到不同场景下会存在不同的要求,用代码来实现过滤操作反而会更加方便,快捷,并且可读性、可操作性更强。 ​ 在此处开发者需要在self._filter_list中注册过滤代码,主服务将会依次调用,并根据返回结构中的option(是否封禁),push(是否推送)执行想用的操作。 ## 推送器 现在系统使用的是本人的公众号,大家可以免费试用,公众号名称***嗷呜科技服务*** ![image-20220825215016020](README/image-20220825215016020.png) 推送器需要开发者实现上述接口,其中pushData中的msg结构如下所示,开发者可直接调用utils.tools.newAlertData()生成如下结构 ``` { "uuid": str(uuid.uuid1()), "time":"", "device":"", "level":"", "src_ip":"", "src_port":0, "dst_ip":"", "dst_port":0, "info":"", "status":"" } ``` ## 主程序 ![image-20220825215239492](README/image-20220825215239492.png) 当写好设备驱动后,即可在terminial.py中使用对应接口将设备注册进主服务中,上图中,22至42行是对各类安全设备驱动的初始化操作,45至59行是将安全设备、应急响应设备、消息推送设备、过滤器等注册进主服务中。