GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

本篇进行进一步的细化GrayLog下利用PrometheusAlert实现堡垒机绕过告警推送到钉钉群相关内容。

本篇进行进一步的细化GrayLog下利用PrometheusAlert实现堡垒机绕过告警推送到钉钉群相关内容。

在上一篇文章【实践】GrayLog下利用PrometheusAlert实现堡垒机绕过告警推送到钉钉群 的基础上,进行进一步的细化

GrayLog实现堡垒机绕过告警时能体现出具体违规人员的姓名

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

说明:本文所说的堡垒机绕过只针对Linux服务器

先看服务器/var/log/secure原始日志详情

Feb 19 15:53:50 localhost sshd[10978]: Accepted password for root from 192.168.31.25 port 52352 ssh2

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

思路与方法如下

1、这个功能需要从日志提取出192.168.31.25 这个IP字段field,并存为ssh_login_ip,需要用到GrayLog
的extrator提取器来实现

2、然后再需要用GrayLog的Lookup
Tables实现IP字段field:ssh_login_ip查询到具体员工姓名,然后转换或者新增ssh_login_user这个字段

3、接下来再定义PrometheusAlert中GrayLog告警模板即可

具体实践的步骤如下

一、在syslog这个Input中配置extractor提取器

先加载你要提取的日志,可以用Search里找到要原始日志的MessageID以及index来Load message

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

提取器选择Regular expression正则表达式类型

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

我这里的正则表达式为

\]: Accepted password for .* from (.+?)\s.?

也可以用下面这个表达式 然后条件Condition你可以设置也可以不设置

Store as field并存为ssh_login_ip这个字段

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

1、正则表达式可以用Try进行预览测试

2、关于上面的正则表达式也可以用下面这个

(?:<\d+>)?(?:\d{4}-\d{1,2}-\d{1,2}T\d{1,2}:\d{1,2}:\d{1,2}.*?|\S{1,3}\s*\d{1,2}\s*\d{1,2}:\d{1,2}:\d{1,2}.*? 
)?(?:\s*\S+\s*\S+\s*)(?:/usr/sbin/)?(?:pam|sshd)(?:\S+)?(?:\(\S*?\))?\s*(?:\[\d+\]):\s*Accepted
\S+ for \S+ from (\S+) port \d+

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

保存这个提取器之后再查询SSH密码成功登录的日志就有了ssh_login_ip这个字段了

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

二、接下来配置员工IP与员工姓名的lookup Tables

这个步骤可以参考上一篇文章

【精选实践】GrayLog下利用PrometheusAlert实现堡垒机绕过告警推送到钉钉群

配置后的截图

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

能正常查询到员工姓名

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

三、创建pipeline中加一条rule 例如staff_ip2username_lookup

规则内容如下

rule "staff_ip2username_lookup"
when
has_field("ssh_login_ip")
then
//let update_username = lookup_value("staff_ip2username_lookup",$message.ssh_login_ip);
let update_username = lookup_value("staff_ip2username_lookup",$message.ssh_login_ip);
set_field("ssh_login_user",update_username);
end

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

也可以用如下规则(注意用lookup与lookup_value的区别)

rule "staff_ip2username_lookup"
when
has_field("ssh_login_ip")
then
//let update_username = lookup_value("staff_ip2username_lookup",$message.ssh_login_ip);
let update_username = lookup("staff_ip2username_lookup",$message.ssh_login_ip);
set_field("ssh_login_ip",update_username["value"]);
end

如下图所示 在Stage1中应用这个pipeline rule

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

四、调整日志消息的处理顺序

Message Filter Chain要放在Pipeline Processor之前

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

五、配置Graylog Alert+PrometheusAlert告警

这时就有了ssh_login_user这个字段了

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

接下来就只需要配置告警了

具体告警模板如下

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

## [告警信息](.check_result.Event.Source)
### <font color=#FF0000>告警描述:{{.event_definition_description}}</font>
{{ range $k,$v:=.backlog }}
##### <font color=#FF0000>告警时间</font>:{{GetCSTtime $v.timestamp}}
##### <font color=#FF0000>告警描述</font>: 员工:{{$v.fields.ssh_login_user}} 违规绕过堡垒机于{{GetCSTtime $v.timestamp}}时直接SSH登陆 {{$v.source}}:服务器,请及时处理并提醒该员工
##### <font color=#FF0000>告警服务器名称</font>:{{$v.source}}
##### <font color=#FF0000>告警服务器的IP</font>:{{$v.fields.gl2_remote_ip}}
##### <font color=#FF0000>具体违规操作员工姓名</font>: {{$v.fields.ssh_login_user}}
##### <font color=#FF0000>违规操作员工的电脑IP</font>: {{$v.fields.ssh_login_ip}}
##### <font color=#FF0000>告警原始日志</font>:{{$v.message}}
{{end}}

配置后截图示例

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

六、钉钉机器人告警效果

截图如下

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

七、总结与展开

其实还有两种方式直接利用LookupTables实现IP转换为员工姓名信息

1、在配置提取器里直接再添加一个converter,类型为Lookup Tables

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

2、在ssh_login_ip这个字段再二次提取,提取器选择Lookup Table这个类型

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

GrayLog实现堡垒机绕过告警时体现出具体违规人员的姓名

3、其实还可以进一步细化 再利用之前提到webhook工具在告警产生后进行命令执行,实现调用脚本自动触发SSH登录IP封锁或者消息推送到该员工

例如调用shell脚本

echo "sshd: $ssh_login_ip" >> /etc/hosts.deny

不过这个做法不太合理,如果配置过防堡垒机绕过的SSH访问控制策略
/etc/hosts.allow里应该是有堡垒机的IP和该员工的IP(意思是该员工有手动修改过/etc/hosts.allow文件,把自己的IP放通了)
/etc/hosts.deny里是拒绝所有,一般不让修改(白名单/黑名单,最小化原则实现控制的常见安全控制方法) 所以这时应该调用脚本去删有该员工的IP的配置
例如

sed -i ’/$ssh_login_ip/d' /etc/hosts.allow

(这里只是举例,shell脚本语法不一定对)

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月6日 20:20
下一篇 2023年5月6日 20:20

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信