概述
深信服防火墙自身监控可以满足绝大部分需求,比如哪个应用占了最大带宽,哪个用户访问了哪些网站?这里我们为什么使用鸿鹄呢?因为我们要的是数据的处理和分析,比如某个用户在某个事件都做了哪些行为,这个在防火墙上去查看日志是巨大的工作量,效率低,费时长,且容易错漏。而这个恰恰是鸿鹄擅长。我们在运维中不能仅仅关注在监控上,更扩展到安全上,从而保证整个基础架构的稳定、安全运行。
监控目标
收集并保存防火墙设备的日志,满足等保要求
监控防火墙的登录安全
监控防火墙的配置安全
提供基于用户或IP或其他关键字的搜索,强化安全
安装vector
Vector作为数据采集器,可以接收设备的syslog日志,并转发鸿鹄平台。Vector配置方法参考下文:
安装Vector
查看安装后vector版本,确认安装成功
vector安装好后,直接执行vector 时,系统首先会去/usr/bin下寻找命令,如果不在这个目录中,就会找不到了。这个时候我们就需要为这些找不到的命令建立一个链接文件,链接到/usr/bin下
登录鸿鹄平台,数据管理>新建数据集
编辑数据源名称,选择数据集范围为上面创建的“switch”,此时会启用
创建syslog.toml脚本,需要调整字段
address = "0.0.0.0:514":0.0.0.0表示接收所有主机发送过来的syslog,514表示接收的端口(syslog默认为514)
mode = "udp":表示接收syslog的协议syslog默认为udp)
._target_table = "switch" : 表示上文你创建的数据集名称
address = "172.20.6.111:9092":鸿鹄的IP和相应的端口
运行修改的syslog脚本,注意保持运行状态。
登录交换机触发syslog(注:登录交换机输入命令都会自动触发syslog)。登录鸿鹄平台查看数据是否导入到switch数据集。如下图事件计数已经显示数据导入成功
查询下通过vector导入到switch数据集的数据
配置防火墙syslog
syslog配置>填写鸿鹄IP和端口号>应用
字段抽取
深信服由于是国产防火墙,防火墙日志字段很多包含中文,因此我们需要再次抽取字段。字段抽取的逻辑是,先通过sql语句创建视图,视图生成后我们就可以直接调用视图里的字段,它实际日志仍旧存放在原数据集。
我们先分析下日志格式。
通过以下两条日志我们可以看到,日志格式后半段的格式是不一样的,针对这种情况,我这里的做法是,先抽取共性字段,再单独逐个抽取不同类型的日志字段。
以该日志为例
共性字段抽取
以该日志为例
sangfor_syslog,这里是需要新建的视图名称
switch._time 脚本中由第六行开始switch均指的需要抽取数据的原数据集,这里需要根据你的数据集名称替换
where contains( switch._message, '日志类型') '日志类型'指的是你要搜索到这个写日志特定的字段,通过’日志类型‘可以限定日志里所有包含'日志类型'的日志
正则表达式如何写以及测试
访问https://regex101.com/,在REGULAR EXPRESSION里填写正则表达式,或直接在这里写
在TESTING STRING里输入日志,可以直接从鸿鹄上拷贝相关的日志
正则表达式如果是正确的,会生成对应的颜色,以及右下角会Match information里会显示抽取的字段名和字段内容
在高阶查询中运行,成功
在视图里可以查看到我们创建的sangfor_syslog的视图
我们运行搜索语句测试下,同时在红色部分可以看到我们抽取出来的字段
NAT字段抽取
以该日志为例
sangfor_nat_syslog,这里是需要新建的视图名称
switch._time 脚本中由第六行开始switch均指的需要抽取数据的原数据集,这里需要根据你的数据集名称替换
where contains( switch._message, 'NAT') '日志类型'指的是你要搜索到这个写日志特定的字段,通过NAT可以限定日志里所有包含NAT的日志
正则表达式如何写以及测试
访问https://regex101.com/,在REGULAR EXPRESSION里填写正则表达式,或直接在这里写
在TESTING STRING里输入日志,可以直接从鸿鹄上拷贝相关的日志
正则表达式如果是正确的,会生成对应的颜色,以及右下角会Match information里会显示抽取的字段名和字段内容,
注意:正则表达式写的时候抽取字段,group一定都要命名,不然就不要定义为group。比如下面的正则表达式,由于红色部分选择了抽取,确又没有定义字段名称,那么鸿鹄在抽取匹配字段时就会异常,虽然结果是成功的,但是字段都没有抽取出来。
(?\w{3}\s\d{2}\s\d{2}:\d{2}:\d{2})\s\w+\s(?\w+):\s\D{4}:(?\D{5}),\s\D{5}:(?\w+),\s\D{3}:(?\d+.\d+.\d+.\d+),\s\D{3}:(?\d+),\s\D{4}:(?\d+.\d+.\d+.\d+),\s\D{4}:(?\d+),\s\D{2}:(\d+),\s\D{6}:(?\d+.\d+.\d+.\d+),\s\D{6}:(?\d+)$
在高阶查询中运行,成功
在视图里可以查看到我们创建的sangfor_nat_syslog的视图
我们运行搜索语句测试下,同时在红色部分可以看到我们抽取出来的字段
login字段抽取
防火墙日志每个组件的日志格式各不相同,那么我们可能需要根据自己的情况进行多次字段抽取,上文已详述过字段抽取方法,这里只提供抽取字段脚本供参考
图表展示
在图表创建部分,我这边每个类型的图表只会举一个例子,但会把所有的搜索语言列出来,供大家参考。
仪表板>新建仪表板
创建完成
日志告警等级统计
新建图表>日志类别
选择图表类型:饼图
查询语句:这个语句可以先在查询里验证,确认查找的结果是想要的
时间范围:选择1天,可以根据自己的情况调整
生成图表后,可以查看各种类型的日志的统计
目的:用于统计日志总量,查看类别的统计总数。另外一点好看。
登录事件明细
新建图表>登录事件明细
选择图表类型:表格
查询语句:这个语句可以先在查询里验证,确认查找的结果是想要的
时间范围:选择1天,可以根据自己的情况调整
生成图表后,可以查看设备登录的明细,比如哪个用户,哪个时间,从哪个IP登录
目的:用于判断是否有异常登录,或密码探测行为
登录事件明细
新建图表>设备数量
选择图表类型:单值趋势图
查询语句:这个语句可以先在查询里验证,确认查找的结果是想要的
时间范围:选择30分钟,可以根据自己的情况调整
生成图表后,可以统计所有日志的发送到鸿鹄的服务器数量。
目的:用于确认当前监控的设备总计数量,便于检查错漏,主要为了图表布局的好看。
搜索语句
以下列出所有本文中的搜索语句,供参考
小提示:搜索语句命令部分会调用抽取的字符段,如果未抽取字段,会出现报错
效果图
图表创建完成后,我们选择“网格布局”对图表布局进行优化调整,最终效果图如下