尝试在 Google SecOps (Chronicle) 中创建规则来检测未知用户和/或未知 IP 是否已成功登录服务器。如果已知用户从未知 IP 登录,则应触发检测规则。
events:
//implicit "and" between lines
//looking for user login events in auditd
$event.metadata.log_type = "AUDITD"
$event.metadata.event_type = "USER_LOGIN"
//put the user ID and IP in the event header
$userID = strings.to_lower($event.about[0].user.user_display_name)
$userIP = $event.principal.ip[0]
//looking for the sshd command
$event.principal.process.file.full_path = "/usr/sbin/sshd"
//IP needs to be populated, and not in known IPs list
($event.principal.ip[0] != "" and not ($event.principal.ip[0] in cidr %known_ips))
//successful login, there are tons of failed attempts
$event.security_result[0].action_details = "success"
//user not in the known users list
not ($userID in %known_users)
match:
$userID, $userIP over 1m
condition:
$event
如果我从known_users列表中注释掉用户ID,该规则将触发并在检测行上显示用户ID和用户IP。如果用户在列表中,并且该 IP 从known_ips 列表中删除,则规则不会检测到它。
我尝试了以下方法,但没有成功:
我什至制作了一个字符串列表,在其中放置了一个随机 IP,而不是我正在测试的 IP,这也不会触发规则。
解决了。
我把未知用户ID和未知登录IP的检测分开了。两条规则完全相同,一条规则查找不在列表中的用户 ID。另一个为不在列表中的用户IP。两者都有效!!