当前位置: 首页 > 科技观察

GrayLog在实现堡垒机旁路告警时,会反映出具体违规者的姓名

时间:2023-03-13 22:27:39 科技观察

在上一篇文章【实战】GrayLog使用PrometheusAlert实现堡垒机绕过告警并推送到钉钉群中,进一步细化了GrayLog实现堡垒机绕过告警时对具体违规者的姓名描述:堡垒机本文提到的机器旁路仅针对Linux服务器。首先查看服务器/var/log/secure的原始日志详细信息。Feb1915:53:50localhostsshd[10978]:Acceptedpasswordforrootfrom192.168.31.25port52352ssh2ideasand方法如下:1.此函数需要从日志中提取IP字段字段192.168.31.25并保存为ssh_login_ip,需要使用GrayLog的extrator提取器实现。2、然后使用GrayLog的LookupTables实现IP字段字段:ssh_login_ip查询输入具体员工姓名,然后转换或添加ssh_login_user字段。3.接下来在PrometheusAlert中定义GrayLog告警模板。具体实践步骤如下:1.在输入syslog中配置extractor,先加载你要提取的日志。您可以使用Search查找原始日志的MessageID和索引来加载消息提取器以选择Regularexpression正则表达式类型。我这里的正则表达式是\]:Acceptedpasswordfor.*from(.+?)\s.?Also你可以使用下面的表达式和条件条件,你可以设置或不设置Storeas字段并将其存储为ssh_login_ip字段1,正则表达式可以用Try2预览,上面的正则表达式也可以用作下面的(?:<\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*已接受\S+for\S+from(\S+)port\d+保存这个extractor后,查询SSH密码登录成功的日志,会有ssh_login_ip2的字段,接下来可以参考配置查找的步骤员工IP和员工姓名表上一篇【实践精选】使用GrayLog下的PrometheusAlert实现堡垒机绕过报警推送到钉钉群配置后的截图可以正常查询员工姓名3.给管道添加一条规则。例如staff_ip2username_lookup规则的内容如下:让update_username=lookup_value("staff_ip2username_lookup",$message.ssh_login_ip);set_field("ssh_login_user",update_end也可以使用如下规则(注意lookup和lookup_value的区别));letupdate_username=lookup("staff_ip2username_lookup",$message.ssh_login_ip);set_field("ssh_login_ip",update_username["value"]);end在Stage1中应用这条管道规则如下图4.调整处理顺序日志消息的MessageFilterChain应该放在PipelineBeforeProcessor五、配置GraylogAlert+PrometheusAlert告警,然后会有ssh_login_user字段。接下来,您只需要配置警报即可。具体告警模板如下##[告警信息](.check_result.Event.Source)###告警描述:{{.event_definition_description}}{{range$k,$v:=.backlog}}#####告警时间:{{GetCSTtime$v.timestamp}}#####告警说明:Employee:{{$v.fields.ssh_login_user}}绕过堡垒机违反{{GetCSTtime$v.timestamp}}直接SSH进入{{$v.source}}:服务器,请处理及时提醒员工#####报警服务器名称:{{$v.source}}#####IP报警服务器:{{$v.fields.gl2_remote_ip}}#####具体违规员工姓名:{{$v.fields.ssh_login_user}}#####违规操作员工电脑IP:{{$v.fields.ssh_login_ip}}#####报警原始日志:{{$v.message}}{{end}}截图exa配置后的mple6.钉钉机器人报警效果截图如下7.总结与扩展直接使用LookupTables将IP转换为员工姓名信息还有两种方式1.在配置提取器中直接添加转换器,类型是LookupTables2,在ssh_再次提取login_ip字段,提取器选择LookupTable的类型。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。允许(这里只是举例,shell脚本语法不一定正确)