static void Init() { logName = "Security"; redisConnectionString = Properties.Settings.Default["RedisServers"].ToString(); domain = Properties.Settings.Default["WindowsDomainRegex"].ToString(); int.TryParse(Properties.Settings.Default["RedisTTL"].ToString(), out redisTTL); var os_version = Environment.OSVersion.Version; IEventLogger consoleLogger = new ConsoleReplacementStringsLogger(); if (os_version.Major > 5) { remote_network_address_index = 18; username_index = 5; } else { remote_network_address_index = 13; krb_client_addr_index = 6; username_index = 0; } //IEventLogger redisLogger = new RedisEventLogger(redisConnectionString, remote_network_address_index, username_index, false, redisTTL); IEventFilter usernameFilter = new NOT_EventFilter(new ReplacementStringFilter(new Dictionary <int, string>() { { username_index, @"^.*\$.*$" } })); /*handler = NetworkLogonEventsHandlerFactory.Build(os_version.Major, domain); * handler.RegisterFilter(usernameFilter); * handler.RegisterLogger(consoleLogger); * handler.RegisterLogger(redisLogger); * handler.SetExceptionLogger(logger);*/ //Kerberos Ticket Request Event Handler kerberosEventsHandler = NetworkLogonEventsHandlerFactory.Build(os_version.Major, domain, NetworkLogonEventSources.KERBEROS); kerberosEventsHandler.RegisterFilter(usernameFilter); kerberosEventsHandler.RegisterLogger(consoleLogger); }
public static EventLogHandler Build(int os_version, string domain_name = @".*", NetworkLogonEventSources source = NetworkLogonEventSources.LOGON) { long[] valid_logon_events; int domain_index; EventLogHandler handler = new EventLogHandler(); IEventFilter idFilter, domainFilter; switch (source) { case NetworkLogonEventSources.LOGON: if (os_version > 5) { valid_logon_events = new long[1] { 4624 }; domain_index = 6; } else { valid_logon_events = new long[1] { 540 }; domain_index = 1; } break; case NetworkLogonEventSources.KERBEROS: if (os_version > 5) { throw new System.Exception(@"Unsupported OS version for Kerberos source"); } else { valid_logon_events = new long[2] { 672, 673 }; domain_index = 1; } break; default: throw new System.Exception(@"Unknown source provided"); } idFilter = new EventCodeFilter(valid_logon_events); domainFilter = new ReplacementStringFilter(new Dictionary <int, string>() { { domain_index, domain_name } }); handler.RegisterFilter(idFilter); handler.RegisterFilter(domainFilter); handler.RegisterFilter(new ReplacementStringFilter(new Dictionary <int, string>() { { 6, @"-" } }, 672)); handler.RegisterFilter(new ReplacementStringFilter(new Dictionary <int, string>() { { 7, @"-" } }, 673)); handler.SetFilterStrategy(new AllMustMatch()); return(handler); }