Dsvolk > > Oracle > > Dba > > Logsurfer My Blog | Search | About
(Not Logged In)
[ welcome! ] [ news ] [ install ] [ jump-jet ] [ app ] [ rac ] [ papers ] [ dba ] [ dvp ] [ racdd4d ] [ oem ] [ statspack ] [ education ] [ tuning ] [ ias ] [ backup ] [ dataprotection ] [ security ] [ oid ] [ options ] [ integration ] [ sales ] [ sun ] [ linux ] [ consulting ] [ faq ]

Logsurfer

Соглашение о материалах на этом сайте

Мой oracle blog
true dsvolk!
автоматическое уведомление о врагах  

О проекте

Проект mlogsurfer основан на проекте logsurfer:  ttp://www.cert.dfn.de/eng/logsurf/. Аналитического плана статья о том как ставить и использовать logsurfer. 

Зачем все это вообще нужно ? Затем, что следить вручную за многочисленными возникающими сообщениями в самых разных частях файловой системы труд крайне не благодарный. Но нужный. И поручить его нужно разумной программе. И очень хотелось бы чтобы эта программа умела не только наблюдать за syslog, но и за логами любимой СУБД. Почему их просто не сложить в БД ? Да, когда они в БД, их удобнее обрабатывать с помощью запросов, но тогда теряется оперативность реакции на атаку. Так что, если Вы хотите иметь шанс предотвратить атаку, единственный способ - сохранять логи БД в файловой системе и построить единую систему оповещения.

Отличие mlogsurfer от своего прародителя такое - он поддерживает функциональность logsurfer для указанной маске файлов в указанной директории. Это полезно, когда Вам нужно отслеживать сообщения во вновь возникающих файлах, как например trc файлах в директории background_dump_dest, или директории audit_file_dest. 

В части работы с  файлом правил, работой с регулярными выражениями все осталось по прежнему, и описано в man файлах logsurfer.conf.4 и logsurfer.1 из оригинальной поставки logsurfer. Посмотреть их можно с помощью nroff: 

nroff -man logsurfer.1 | less

Разработчик mlogsurfer'а -  Максим Патласов. Архив с выполняемым файлом для Solaris 8 и примерами конфигурации здесь.

Посмотрим на ключи mlogsurfer'а: 

 # /usr/local/bin/mlogsurfer 
warning: mlogsurfer started as root
usage: mlogsurfer [-c configfile] [-d dumpfile] [-p pidfile] [-e] [-t] [dir_name] [file_mask]
This is logsurfer version 2.0

-c - путь к config файлу logsurfer,a

-p - сохранить свой pid в файле pidfile

-e - встать на конец файла. Это полезно скажем после некорректного завершения работы хоста

-t - держать файлы открытыми. Только для alert.log или ему подобных. Всего их не может быть более 50. См. здесь

dir_name - имя директории 

file_mask - маска файлов 

Я поместил исполняемый файл mlogsurfer в директорию /usr/local/bin, конфигурационные файлы в директорию /usr/local/etc/

Особенности национальной охоты за сообщениями

-t - держать файлы открытыми. Это полезный режим, который позволяет вам безопасно осуществлять rotate наблюдаемых фалов. Рассмотрим для примера alert.log. Нам захотелось произвести его rotate (описание и пример этой процедуры). Мы перемещаем старый alert.log в сторону, скажем с именем aler.log.old. При этом Oracle сам вновь создаст alert.log. Так вот, mlogsurfer, будучи запущен с ключем -t сохранит контекст от alert.log.old и сам начнет мониторить сообщения в alert.log.  

-e встать на конец файла. Этот режим позволяет mlogsurfer не обрабатывать заново все файлы сообщений после старта. Предполагается следующий алгоритм размещения стартующих - киляющих скриптов:

/etc/init.d/oracle /etc/rc2.d/S99oracle

/etc/init.d/oracle /etc/rc2.d/S120logsurf

/etc/init.d/oracle /etc/rc0.d/K01logsurfer

/etc/init.d/oracle /etc/rc0.d/K02oracle

ln -s /etc/init.d/logsurfer  /etc/rc2.d/S99oracle

(см. также установка Oracle )

Т.е. mlogsurfer должен гаситься после СУБД и стартовать до.

Настройки системы

Я предполагаю наблюдать за следующими событиями:

alert.log - отправка сообщения администратору .

аудит файлы - перекладывание их для боле глубокого наблюдения с помощью подсистемы Intruder Alert.

Конфигурационный файл

Field Explanation
1. match_regex This field determines what lines match the context.
2. not_match_regex Unless this field is specified as "-", it is considered to be a regular expression that excludes any line matched by match_regex.
3. line_limit This value defines the maximum number of lines that are to be stored within the context. It is always useful to define a limit to avoid denial of service attacks.
4. timeout_abs This value in seconds defines how long the context is considered active before the default action is executed.
5. timeout_rel In addition to the absolute timeout, the default action is executed if a relative timeout (in seconds) is defined and no new log message is added to the context within that time period.
6. default_action The specified action is carried out whenever the maximum number of lines, or the absolute or relative timeout is reached. All actions except open, delete, and rule are available.

Запускаем все вместе

В конфигурационном файле conf описаны правила наблюдения за директорией /opt/oracle/audit и вся информация почерпнутая из этих файлов поступает в /tmp/audit.log

Отдельные сообщения отделяются в этом логе символом "======". Так выглядит примерное сообщение:

Tue Apr 15 11:30:01 2003
SESSIONID: "204" ENTRYID: "1" STATEMENT: "1" USERID: "SCOTT" TERMINAL: "pts/11" ACTION: "100" 
RETURNCODE: "0" COMMENT$TEXT: "Authenticated by: DATABASE" OS$USERID: "oracle" PRIV$USED: 5

Понять что случилось можно по полю ACTION. Перевести коды в описание можно по таблице audit_actions, или по списку.

Dsvolk > > Oracle > > Dba > > Logsurfer Last Modified: 21-04-2003 17:00