![Логика «и» NxLog](https://rvso.com/image/696989/%D0%9B%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0%20%C2%AB%D0%B8%C2%BB%20NxLog.png)
В настоящее время у меня запущен NxLog на различных контроллерах домена, который извлекает события входа/выхода из системы.
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 {}
Хотя конфигурация выше работает нормально, в том, что она игнорирует имена пользователей с $ в нем, а также те, которые я указал, я хочу игнорировать только идентификатор события 4624 с этими именами пользователей в нем, чтобы я все еще мог видеть неудачные входы. Я думал, что следующая конфигурация будет работать, но я продолжаю получать синтаксические ошибки.
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 {}
Любая помощь будет высоко оценена.
Редактировать:Для полноты картины ниже представлена моя окончательная конфигурация для исключения имен пользователей, содержащих символ $, а также успешных/пресеченных событий для различных учетных записей, которые были активны и которые меня не интересовали.
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 {}
решение1
Причина синтаксической ошибки в том, что ваши скобки не правильно парные. Должно быть так:
Exec if ($EventID == 4624 ... ) drop();
^ ^