![Die „und“-Logik von NxLog](https://rvso.com/image/696989/Die%20%E2%80%9Eund%E2%80%9C-Logik%20von%20NxLog.png)
Ich habe derzeit NxLog auf verschiedenen Domänencontrollern laufen, das Anmelde-/Abmeldeereignisse extrahiert.
Exec if $TargetUserName =~ /(\S+\$|user1|user2|user3|user4)/ drop(); \
else if ($EventID == 4624 or $EventID == 4625 or $EventID == 4648 or $EventID == 4768) $raw_event = "Time:" + $EventTime + ", EventID:" + $EventID + ", Keyword:" + $Status + ", LogonType:" + $LogonType + ", User:" + $TargetDomainName + "\\" + $TargetUserName + ", IPAddr:" + $IPAddress; \
else if $raw_event =~ /^(.+)(Detailed Authentication Information:|Additional Information:)/ $raw_event = $1; if $raw_event =~ s/\t/ /g {}
Während die obige Konfiguration einwandfrei funktioniert, da sie Benutzernamen mit $ darin und auch die von mir angegebenen ignoriert, möchte ich nur die Ereignis-ID 4624 mit diesen Benutzernamen darin ignorieren, damit ich weiterhin fehlgeschlagene Anmeldungen sehen kann. Ich dachte, die folgende Konfiguration würde funktionieren, aber ich erhalte immer wieder Syntaxfehler.
Exec if ($EventID == 4624 and $TargetUserName =~ /(\S+\$|user1|user2|user3|user4)/ drop(); \
else if ($EventID == 4624 or $EventID == 4625 or $EventID == 4648 or $EventID == 4768) $raw_event = "Time:" + $EventTime + ", EventID:" + $EventID + ", Keyword:" + $Status + ", LogonType:" + $LogonType + ", User:" + $TargetDomainName + "\\" + $TargetUserName + ", IPAddr:" + $IPAddress; \
else if $raw_event =~ /^(.+)(Detailed Authentication Information:|Additional Information:)/ $raw_event = $1; if $raw_event =~ s/\t/ /g {}
Für jede Hilfe wäre ich sehr dankbar.
Bearbeiten:Der Vollständigkeit halber war unten meine endgültige Konfiguration aufgeführt, um Benutzernamen mit dem Zeichen „$“ darin und dann erfolgreiche/Kerb-Ereignisse bei verschiedenen Konten auszuschließen, bei denen es sich um einen gesprächigen Account handelte, der mich nicht interessierte.
Exec if $TargetUserName =~ /(\S+\$)/ drop(); \
else if ($EventID == 4624 and $TargetUserName =~ /(user1|user2|user3|user4)/) drop(); \
else if ($EventID == 4648 and $TargetUserName =~ /(user1|user2|user3|user4)/) drop(); \
else if ($EventID == 4624 or $EventID == 4625 or $EventID == 4648 or $EventID == 4768) $raw_event = "Time:" + $EventTime + ", EventID:" + $EventID + ", Keyword:" + $Status + ", LogonType:" + $LogonType + ", User:" + $TargetDomainName + "\\" + $TargetUserName + ", IPAddr:" + $IPAddress; \
else if $raw_event =~ /^(.+)(Detailed Authentication Information:|Additional Information:)/ $raw_event = $1; if $raw_event =~ s/\t/ /g {}
Antwort1
Der Grund für den Syntaxfehler liegt darin, dass Ihre Klammern nicht richtig gepaart sind. Es sollte so aussehen:
Exec if ($EventID == 4624 ... ) drop();
^ ^