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ć?
Odpowiedzi:
Jesteś na dobrej drodze - jednym z błędów w zapytaniu jest spacja w „Typie logowania”, powinna to być po prostu „LogonType”.
Wkleiłem poniżej zapytanie, które właśnie zweryfikowałem. Jest to trochę uproszczone, ale masz pomysł. Pokazuje wszystkie 4624 zdarzenia z logowaniem typu 2, od użytkownika „jan.doe”.
Więcej informacji na temat zapytań XML można znaleźć w przeglądarce zdarzeń tutaj: http://blogs.technet.com/b/askds/archive/2011/09/26/advanced-xml-filtering-in-the-windows-event- viewer.aspx .
Możesz wyszukiwać zdarzenia z wiersza poleceń za pomocą wevtutil.exe: http://technet.microsoft.com/en-us/magazine/dd310329.aspx .
źródło
Znalazłem to pytanie i musiałem trochę popracować, aby przeanalizować zawartość, od zaakceptowanej odpowiedzi i aktualizacji pytania, aby uzyskać funkcjonalne rozwiązanie. Doszedłem do wniosku, że opublikuję tutaj pełną, działającą składnię zapytań, do wykorzystania w przyszłości:
Powyższe zapytanie powinno działać w celu zawężenia zdarzeń zgodnie z następującymi parametrami:
Możesz zmienić LogonTypes w filtrze, zmieniając
(Data='10')
powyższy kod. Na przykład możesz chcieć zrobić(Data='2')
lub(Data='10' or Data='2')
.źródło