在上一篇文章【实战】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)###
