|
О проекте
Проект 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, или по списку.
|