Zostałem poproszony o sprawdzenie, kiedy użytkownik zalogował się do systemu w ostatnim tygodniu. Teraz dzienniki kontroli w systemie Windows powinny zawierać wszystkie potrzebne informacje. Myślę, że jeśli szukam zdarzenia o identyfikatorze 4624 (sukces logowania) z konkretnym użytkownikiem AD i logowaniem typu 2 (logowanie interaktywne), powinien on dostarczyć mi potrzebnych informacji, ale przez całe życie nie jestem w stanie wymyślić, jak faktycznie filtrować dziennik zdarzeń, aby uzyskać te informacje. Czy jest to możliwe w Podglądzie zdarzeń, czy potrzebujesz zewnętrznego narzędzia, aby parsować je do tego poziomu?
Znalazłem http://nerdsknowbest.blogspot.com.au/2013/03/filter-security-event-logs-by-user-in.html, który wydawał się być częścią tego, czego potrzebowałem. Zmodyfikowałem go nieco, aby dać mi tylko ostatnie 7 dni. Poniżej znajduje się XML, którego wypróbowałem.
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[System[(EventID=4624) and TimeCreated[timediff(@SystemTime) <= 604800000]]]</Select>
<Select Path="Security">*[EventData[Data[@Name='Logon Type']='2']]</Select>
<Select Path="Security">*[EventData[Data[@Name='subjectUsername']='Domain\Username']]</Select>
</Query>
</QueryList>
Dało mi to tylko ostatnie 7 dni, ale reszta nie zadziałała.
Czy ktoś może mi w tym pomóc?
EDYTOWAĆ
Dzięki sugestiom Szczęśliwego Łukasza robię postępy. Poniżej znajduje się moje aktualne zapytanie, chociaż, jak wyjaśnię, nie zwraca żadnych wyników.
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID='4624')]
and
System[TimeCreated[timediff(@SystemTime) <= 604800000]]
and
EventData[Data[@Name='TargetUserName']='john.doe']
and
EventData[Data[@Name='LogonType']='2']
]
</Select>
</Query>
</QueryList>
Jak wspomniałem, nie zwrócił żadnych wyników, więc trochę z tym popsułem. Mogę go uzyskać, aby wyświetlał wyniki poprawnie, dopóki nie dodam w wierszu LogonType. Po tym nie zwraca żadnych wyników. Wiesz, dlaczego to może być?
EDYCJA 2
Zaktualizowałem wiersz LogonType do następującego:
EventData[Data[@Name='LogonType'] and (Data='2' or Data='7')]
To powinno przechwycić dane logowania do stacji roboczej, a także odblokowania stacji roboczej, ale nadal nic nie dostaję. Następnie modyfikuję go, aby wyszukiwać inne typy logowania, takie jak 3 lub 8, których jest dużo. To prowadzi mnie do przekonania, że zapytanie działa poprawnie, ale z jakiegoś powodu w dziennikach zdarzeń nie ma wpisów o typie logowania równym 2 i to nie ma dla mnie sensu. Czy można to wyłączyć?