![Lógica 'y' de NxLog](https://rvso.com/image/696989/L%C3%B3gica%20'y'%20de%20NxLog.png)
Actualmente tengo NxLog ejecutándose en varios controladores de dominio extrayendo eventos de inicio y cierre de sesión.
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 {}
Si bien la configuración anterior funciona bien, en el hecho de que ignora los nombres de usuario con $ y también los que especifiqué, solo quiero ignorar el ID de evento 4624 con esos nombres de usuario para poder ver los inicios de sesión fallidos. Pensé que la siguiente configuración funcionaría pero sigo recibiendo errores de sintaxis.
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 {}
Cualquier ayuda sería muy apreciada.
Editar:Para completar, a continuación se muestra mi configuración final para descartar nombres de usuario con $ y luego eventos exitosos/Kerb en varias cuentas que hablaban y que no me importaban.
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 {}
Respuesta1
La causa del error de sintaxis es que los corchetes no están emparejados correctamente. Debería ser así:
Exec if ($EventID == 4624 ... ) drop();
^ ^