Журналы windows - один из самых аццких адов в этой ОС. Чтобы вычленить необходимые сообщения, проще пересылать их трапами в нормальную ОС и там уже исследовать.
Настройка windows для посылки трапов описана здесь, кратко изложу:
Настройка windows для посылки трапов описана здесь, кратко изложу:
- события, которые мы хотим регистрировать, должны отображаться в журналах (напр. по умолчанию в Windows 2003 аудит частично выключен)
- на вкладке Службы - Служба SNMP - Ловушки указываем имя сообщества (традиционно public) и адрес, куда будем слать трапы
- в утилитке evntwin.exe выбираем регистрируемые события
- надо установить пакет net-snmp, в котором есть нужный нам snmptrapd, в его файл конфигурации /etc/snmp/snmptrapd.conf напишем о ненужности авторизации и какой скрипт будет обрабатывать какие трапы
- можно и иначе написать, как здесь
- в этот момент трапы уже регистрируются в /var/log/messages, где можно посмотреть, что приходит. Кстати, текст трапа там в quoted-printable и в нём удалены переводы строк. Чтобы увидеть, что в реальности получает трапоприёмник, можно использовать скрипт типа:
disableAuthorization yes
traphandle SNMPv2-SMI::enterprises.311.1.13.1.8.* /usr/local/bin/snmptrap.logon.sh
traphandle SNMPv2-SMI::enterprises.311.1.13.1.11.* /usr/local/bin/snmptrap.kms.sh
#!/bin/sh
while read fld
do echo $line >> /var/log/snmptrap
done
- и пример скрипта, регистрирующего логоны:
#!/bin/shи теперь получаемый файл /var/log/snmptrap.logon можно изучать со всей мощью средств линукса.
while read fld
do
dt=$(date +"%F %T")
rfld=${fld/SNMPv2-SMI::enterprises.311.1.13.1.9999.2.0/}
if test "$fld" != "$rfld"
then
username2003=$(echo $rfld|tr -d " "|tr -d "\""|sed -e "s/C0E4ECE8EDE8F1F2F0E0F2EEF0/Администратор/" -e "s/F1E8F1F2E5ECE0/система/" -e "s/C0CDCECDC8CCCDDBC920C2D5CEC4/АНОНИМНЫЙ ВХОД/")
read fld
fi
rfld=${fld/SNMPv2-SMI::enterprises.311.1.13.1.9999.3.0/}
if test "$fld" != "$rfld"
then
hostname2003=$(echo $rfld|tr -d " "|tr -d "\"")
if test $username2003 != "Unknown"
then
printstr2003="$dt $hostname2003 $username2003"
echo "$printstr2003" >> /var/log/snmptrap.logon
printstr2003=""
hostname2003=""
username2003=""
fi
fi
rfld=${fld/SNMPv2-SMI::enterprises.311.1.13.1.9999.11.0/}
if test "$fld" != "$rfld"
then
username2008r2=$(echo $rfld|tr -d " "|tr -d "\""|sed -e "s/C0E4ECE8EDE8F1F2F0E0F2EEF0/Администратор/" -e "s/F1E8F1F2E5ECE0/система/" -e "s/C0CDCECDC8CCCDDBC920C2D5CEC4/АНОНИМНЫЙ ВХОД/")
if test $username2003 = "Unknown" && test "${username2008r2/$/}" = $username2008r2 && test $username2008r2 != "система" && test $username2008r2 != "АНОНИМНЫЙ ВХОД"
then
printstr2008r2="$dt $hostname2003 $username2008r2"
hostname2003=""
username2008r2=""
fi
fi
rfld=${fld/SNMPv2-SMI::enterprises.311.1.13.1.9999.14.0/}
if test "$fld" != "$rfld"
then
sess=$(echo $rfld|tr -d " "|tr -d "\"")
if test "$sess" = "10"
then
echo "$printstr2008r2" >> /var/log/snmptrap.logon
printstr2008r2=""
fi
fi
done