Меня попросили узнать, входил ли пользователь в систему за последнюю неделю. Теперь журналы аудита в Windows должны содержать всю необходимую мне информацию. Я думаю, что если я буду искать событие с кодом 4624 (успешный вход в систему) с конкретным пользователем AD и типом входа 2 (интерактивный вход), он должен предоставить мне необходимую мне информацию, но на всю жизнь я не могу понять, как на самом деле фильтровать журнал событий, чтобы получить эту информацию. Возможно ли это внутри средства просмотра событий или вам нужно использовать внешний инструмент, чтобы проанализировать его до этого уровня?
я нашел http://nerdsknowbest.blogspot.com.au/2013/03/filter-security-event-logs-by-user-in.html что, казалось, было частью того, что мне было нужно. Я немного изменил его, чтобы получить информацию только за последние 7 дней. Ниже представлен XML, который я пробовал.
<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>
Он дал мне только последние 7 дней, а остальное не сработало.
Кто-нибудь может мне с этим помочь?
РЕДАКТИРОВАТЬ
Благодаря предложениям Lucky Luke я добился прогресса. Ниже приведен мой текущий запрос, хотя, как я объясню, он не возвращает никаких результатов.
<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>
Как я уже упоминал, он не возвращал никаких результатов, поэтому я немного повозился с ним. Я могу заставить его правильно отображать результаты, пока не добавлю строку LogonType. После этого он не возвращает никаких результатов. Есть идеи, почему это может быть?
РЕДАКТИРОВАТЬ 2
Я обновил строку LogonType следующим образом:
EventData[Data[@Name='LogonType'] and (Data='2' or Data='7')]
Это должно фиксировать входы в систему и разблокировку рабочей станции, но я все равно ничего не получаю. Затем я изменяю его для поиска других типов входа в систему, таких как 3 или 8, которых он находит в большом количестве. Это наводит меня на мысль, что запрос работает правильно, но по какой-то причине в журналах событий нет записей с типом входа, равным 2, и для меня это не имеет смысла. Можно ли это отключить?
Вы на правильном пути - одна из ошибок в вашем запросе - это пробел в поле «Тип входа», он должен быть просто «Тип входа».
Я вставил ниже запрос, работы которого я только что проверил. Это немного упрощено, но идею вы поняли. Он показывает вам все 4624 события с типом входа 2 от пользователя john.doe.
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[
EventData[Data[@Name='LogonType']='2']
and
EventData[Data[@Name='TargetUserName']='john.doe']
and
System[(EventID='4624')]
]
</Select>
</Query>
</QueryList>
Подробнее об XML-запросах в средстве просмотра событий можно узнать здесь: http://blogs.technet.com/b/askds/archive/2011/09/26/advanced-xml-filtering-in-the-windows-event-viewer.aspx.
Вы можете запрашивать события из командной строки с помощью wevtutil.exe: http://technet.microsoft.com/en-us/magazine/dd310329.aspx.
Я нашел этот вопрос, и мне пришлось немного поработать, чтобы проанализировать контент из принятого ответа и обновлений вопросов, чтобы получить функциональное решение. Я решил опубликовать здесь полный рабочий синтаксис запроса для справок в будущем:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4624)
and
TimeCreated[timediff(@SystemTime) <= 2592000000]]
and
EventData[Data[@Name='TargetUserName'] and (Data='john.doe')]
and
EventData[Data[@Name='LogonType'] and (Data='10')]]
</Select>
</Query>
</QueryList>
Вышеупомянутый запрос должен работать, чтобы сузить список событий по следующим параметрам:
Вы можете изменить LogonTypes в фильтре, изменив (Data='10')
в приведенном выше коде. Например, вы можете захотеть сделать (Data='2')
или (Data='10' or Data='2')
.