侧边栏壁纸
  • 累计撰写 154 篇文章
  • 累计收到 0 条评论

开源堡垒机JumpServer的日志接入到Graylog并实现钉钉机器人告警

2025-4-27 / 0 评论 / 5 阅读

关于JumpServer的日志如何进行Syslog外发参考如下两个链接

https://docs.jumpserver.org/zh/v3/guide/storages/?h=syslog#31-syslog
https://kb.fit2cloud.com/?p=123

(图片点击放大查看)

一、Graylog日志接入配置简单介绍

1、新建用于存JumpServer日志的Indices索引

(图片点击放大查看)

(图片点击放大查看)

2、新建Syslog UDP类型的Inputs

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)


firewall-cmd --permanent --znotallow=public --add-port=2514/udp
firewall-cmd --reload

3、创建JumpServer单独的Stream

  • Index Set要选上面创建的存JumpServer日志的Indices索引

要勾选Remove matches from ‘Default Stream’ 

(图片点击放大查看)

  • Stream Rules

选择Type为 match input 

(图片点击放大查看)

(图片点击放大查看)

二、JumpServer后台开启Syslog

1、修改 JumpServer 的配置文件

JumpServer 的配置文件的默认存储位置位于:/opt/jumpserver/config/config.txt

JumpServer 中需要添加的配置项如下所示:

#配置 syslog
SYSLOG_ENABLE=true
SYSLOG_ADDR=192.168.31.194:2514  # Syslog 服务器的IP以及端口
SYSLOG_FACILITY=local2  #根据 Syslog 配置文件的配置

2、重启 JumpServer

修改 JumpServer 配置文件后需要重启 JumpServer 以加载配置项。

jmsctl restart

3、登录 JumpServer 服务生成一条登录日志,查看 Syslog 服务器中是否有输出

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)

三、配置Graylog Extractor实现字段提取

1、在Stream日志查询界面,message右键Create Extractor

类型可以为Split&Index

Split by 设置为 - {

Target Index 1

Store as field :jumpserver_log_type 

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)


(图片点击放大查看)

(图片点击放大查看)

2、同样再创建一个Split&Index类型的Extractor

用于提取后半段json格式日志

(图片点击放大查看)

效果如下

(图片点击放大查看)

3、接下来针对提取到的日志进行json格式的提取

jumpserver_log_jsonmessage字段进行json提取

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)

效果如下 

(图片点击放大查看)

(图片点击放大查看)

四、配合PrometheusAlert实现钉钉告警

场景如下:例如执行rm -rf 这样的命令虽然已经堡垒机使用命令过滤的方式拦截掉了,这时如果能钉钉告警通知运维管理人员这样更高效 运维管理员不用实时去审计台查看命令审计情况 

(图片点击放大查看)

配置步骤就不详细截图了

PrometheusAlert上的告警模板内容,可以参考解决
## [堡垒机告警信息](.check_result.Event.Source)
### <font color=#FF0000>告警描述:{{.event_definition_description}}</font>
{{ range $k,$v:=.backlog }}
##### <font color=#67C23A>告警产生时间</font>:{{GetCSTtime $v.timestamp}}
##### <font color=#67C23A>告警详细描述</font>:<font color=#FF0000>堡垒机账号:{{$v.fields.user}} </font>登录服务器<font color=#FF0000>{{$v.fields.asset}}</font>执行了可能为高危的命令,若为正常操作,请忽略此条告警!
##### <font color=#67C23A>用户登录IP</font>:<font color=#FF0000>{{$v.fields.remote_addr}}</font>
##### <font color=#67C23A>具体操作命令</font>:<font color=#FF0000>{{$v.fields.input}}</font>
##### <font color=#67C23A>堡垒机采取的动作</font>:<font color=#FF0000>{{$v.fields.risk_level_label}}</font>
##### <font color=#67C23A>告警服务器名称</font>:<font color=#FF0000>{{$v.fields.asset}}</font>
##### <font color=#67C23A>告警原始日志</font>:{{$v.fields.jumpserver_log_jsonmessage}}
{{end}}

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)

最终钉钉机器人的告警效果如下

(图片点击放大查看)