Скажи логам нет! Докучаев Дмитрий aka Forb Xakep, номер #069, стр. 069-080-2 * pututline() – процедура, которую можно увидеть в каждом логвайпере. Именно она подменяет найденную строку произвольными данными. Хотя чаще логклинер не изменяет запись в журнале, а просто удаляет ее. Вот и все функции, которые вызываются в процессе обработки бинарных логов. Теперь настало время посмотреть на практическую работу известных чистильщиков. В качестве подопытных программ я буду рассматривать три утилиты: vanish2, grlogwipe и zap2 под SunOS. Vanish без кипячения! Логвайпер с красноречивым названием Vanish (http://nsd.ru/soft/1/vanish2.gz) используется для чистки не только бинарных, но и текстовых логов. Однако последние нас пока не особенно интересуют, поэтому я акцентирую твое внимание только на обработке бинарных журналов. Итак, особенность Vanish заключается в том, что он не работает напрямую с логом. Это и хорошо, и плохо одновременно. Минус заключается в том, что если wtmp не обрабатывается утилитой logrotate (то бишь не запаковывается в архив каждый месяц), копирование 100-мегабайтного файла может затянуться на долгие минуты. С другой стороны, если к логу обратятся сразу два процесса (те же sshd и pptpd, например), произойдет ошибка, из-за которой журнал будет некорректно заполнен. Вторая особенность Vanish – чистка лога происходит с самого начала. Это также не совсем хорошо и сказывается на скорости при большом объеме файла. Если посмотреть код логвайпера, можно увидеть следующий алгоритм работы: 1. Копирование журнала в текущий каталог с расширением .hm. 2. Поиск нужной строки с использованием спец-структуры utmp. Для поиска вызывается стандартная функция read, считывающая одну строку из бинарного файла. 3. Если эта строка содержит имя искомого юзера (а также хоста, если обрабатывается wtmp), происходит обнуление всех полей структуры utmp с последующим занесением в лог. 4. Закрытие файла и перенос его на исходное место. Несмотря на немногочисленные отрицательные моменты, Vanish оправдал мои ожидания. Он стабильно работает на всех пингвинах, без проблем вычищая бинарные записи. К сожалению, на фряхе логклинер вообще не компилится, поэтому там приходится юзать другую софтину под названием grlogwipe. Grlogwipe – и все чисто Этот логвайпер намного продуманнее, чем Vanish, хотя профиль его работы – только бинарные логи. Grlogwipe (http://nsd.ru/soft/1/grlogwipe.tar.tar) компилится на всех системах и имеет ряд преимуществ перед Ванишем. Во-первых, этот чистильщик снабжен туевой хучей опций. Логклинер способен не только удалять, но и изменять записи в wtmp, превращая логин хакера в аккаунт администратора, либо модифицировать записанный хост и время. Во-вторых, утилита начинает просмотр бинарного файла не с начала, а с конца. Это оправданно, поскольку чаще всего нужные записи находятся именно в конце журнала. Соответственно и выигрыш в скорости будет огромным (несмотря на большой размер лога, операция по его очистке займет пару секунд). В остальном Grlogwipe похож на Vanish. Он использует ту же структуру utmp и похожие функции. Не веришь? Зацени исходник :). |