Die „und“-Logik von NxLog

Die „und“-Logik von NxLog

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(); 
        ^                     ^

verwandte Informationen