Логи для умных the_Shadow Спецвыпуск: Хакер, номер #047, стр. 047-084-3 Получив логи, отвечающие должным требованиям, не стоит забывать об их обслуживании. Обслуживание логов Как правило, рекомендации "лучших собаководов" сводятся к тому, что необходимо поставить некий софт, отвечающий за работу с логами. Все верно. Но это должен быть софт, написанный тобой лично. Тут поможет Perl, писавшийся, между прочим, специально для этих целей. Лог представляет собой некую последовательность форматированных строк, которые удобно просматривать программным кодом. «Что искать», - спросишь ты? Все подозрительное: некорректные входы в систему, отказы в аутентификации пользователя, строки login/password etc. Как пример, многие win-пользователи привыкли к тому, что при входе в систему имя пользователя уже введено и остается только вбить пароль. В *nix это не так. В результате, в логе вполне могут оказаться актуальные пароли, вбитые как имя пользователя. Система, конечно же, не пропустила, но в лог записала. Если это повторится, то пора с данным юзером профилактическую беседу проводить. Особое внимание стоит уделить поиску строк типа /bin/sh. В этом случае, если строчка чередуется с "мусором", вполне логично предположить, что тебя пытались поломать (и ты видишь shell-код). Кроме того, при логировании сетевых служб следует искать некорректные входы в систему, попытки подбора пароля. Здесь самое главное - опыт админа. Чутье ищейки и знание того, что же ты должен увидеть, понимание, как тот или иной механизм должен работать. Я подчеркиваю, это важно как при конфигурации системы протоколирования, так и при анализе результатов ее работы. Логи должны храниться в течение некоторого разумного времени (к примеру, в течение недели). В особенных случаях можно писать логи на CD и хранить их столько, сколько нужно. Для этих целей есть фича logrotate. Идея такова: прописать в /etc/logrotate.conf, как и что хранить (пересылать ли на e-mail, копировать, сжимать, обрезать размер до нуля - см. man logrotate), а затем через cron раз в какой-то период запускать этого хозяйство. Важно то, что ты сам можешь настроить механизм замены логов так, как это нужно. К примеру, все отладочные сообщения просто и без затей уничтожать, доступ к HTTP - хранить и т.д. На этом все! Если возникли вопросы, то читай маны, рой сеть и только потом пиши мне :). Учимся писать логи Сначала добавляем к сорцу хидер <syslog.h> . Открываем подсистему логов из приложения с помощью функции openlog, прототип которой можно найти в хидере. На этом этапе можно писать лог с помощью функции syslog(уровень_серьезности, сообщение) или vsyslog(), которая работает с форматированным выводом, как и printf. В конце закрываем подсистему: closelog(). Для программного доступа к буферу ядра есть функция (man klogctl), которая очень похожа на syslog(). По идеям. По релизу - разберешься. |