Активное использование журналов событий

Журналы событий, Event Log, представляют собой превосходный инструмент для ведения истории системы. Но с ними связано одно неудобство: журналы постоянно приходится просматривать, чтобы узнать, не появились ли в них важные сообщения. У любого администратора Windows всегда есть в запасе история о том, как он в течение нескольких часов составлял мозаику из разрозненных деталей, пытаясь выяснить причину странного поведения системы, прежде чем кто-нибудь догадывался проверить журналы событий и ответ становился очевидным. Но давайте предположим, что некоторые события для нас особенно важны и нежелательно в случае их возникновения обращаться к журналу. Как правильно настроить систему, чтобы она немедленно и автоматически реагировала на подобные ситуации?

Выполнить такую настройку можно при помощи ловушки (триггера) событий, event trigger. Event trigger как бы говорит системе: «Когда происходит такое-то событие, запустите такую-то программу». Предположим, администратор отслеживает хакерскую активность и ему нужно получать оповещения каждый раз при возникновении события logon failure (сбой при регистрации). Event trigger в данном случае может прибегнуть к помощи Net Send для выдачи всплывающего сообщения или использовать такую программу, как Blat, для рассылки почтовых сообщений с командной строки. Но как создать триггер события? Для этого следует воспользоваться утилитой eventtriggers.exe, входящей в состав Windows Server 2003 и Windows XP.

В программе eventtriggers.exe имеется довольно богатый набор параметров. Параметры верхнего уровня — это /create, /delete и /query, которые позволяют создавать триггер (триггер остается в системе, пока его не удалят), удалить его и вывести список всех системных триггеров. Упрощенная схема синтаксиса утилиты имеет следующий вид:

eventtriggers /create /eid /tr /tk

Eventidnumber — это номер, который сообщает, какое именно событие отлавливается, например 680 — account logon или 1054 — когда Group Policy не может отыскать контроллер домена, DC, для получения файлов групповой политики. Triggername — это метка, которая идентифицирует триггер. Она нужна при чтении журналов триггеров, Event Trigger Log («Какой триггер сделал это?») или для удаления триггера. Actiontotake — команда, которая будет исполняться при возникновении определенного события с указанным Event ID; это либо команда командной строки, либо имя BAT-файла.

Перед тем как погружаться в синтаксис утилиты Eventtriggers с ее многочисленными параметрами, стоит поупражняться. Одно из событий, на котором можно экспериментировать, — Event ID 64002. Оно возникает при удалении одного из файлов с расширением .exe, .dll, .sys или .ocx, поставляемых вместе с операционной системой, из каталога system32. Чтобы появилось событие Event ID 64002, достаточно набрать:

del C:windowssystem32sol.exe

в консоли Windows 2003 или XP.

Если система установлена методом модернизации более ранней версии, Windows NT, нужно задать winnt вместо windows. Теперь в System log появится Event ID 64002. Далее, что мы хотим «услышать» при возникновении этого события? Если в системе работает служба Messenger, можно воспользоваться командой Net Send. Предположим, имя пользователя jack123, тогда команда

net send jack123 Something?s deleting system files!

приведет к появлению на экране окна с текстом сообщения: Something?s deleting system files!

Но нам нужно еще одно: контекст безопасности. По умолчанию Eventtriggers запускает Net Send (и любую другую команду) с правами учетной записи Systems; однако некоторые команды в контексте System запускать бессмысленно, в том числе команду Net Send. Поэтому мы добавим еще два параметра, /ru и /rp, чтобы предоставить для Eventtriggers контекст учетной записи пользователя, с указанием его имени и пароля, при запуске команды Net Send. Если имя пользователя — jack123, а его пароль — swordfish, тогда для триггера с именем sysalert предыдущая команда видоизменяется следующим образом:

eventtriggers /create /eid 64002 /tr sysalert
/tk «net send jack123 Something?s deleting system files!»
/ru jack123 /rp swordfish

Конечно, эта команда информирует только о том, что произошло удаление файла. Нужно отыскать того, кто это сделал, и остановить злоумышленника.

Теперь несколько слов о других простых способах работы с Eventtrigger. Получить весь список триггеров событий можно так:

eventtriggers /query /v

Чтобы удалить сразу все триггеры, следует набрать:

eventtrigger /delete /tid *

В следующей статье я расскажу о других возможностях использования команды Eventtriggers.


Редактоp Windows NT Magazine MCSE и автор книги «Mastering Windows NT Server 4.0» (издательство Sybex). С ним можно связаться по адресу: mark@minasi.com