25 февраля, 2021

Чистка логов Linux

Итак вы получили bash-шелл! Поздравляю!

Первое, что нам необходимо сделать это отключить логирование команд:

HISTFILE=/dev/null или unset HISTFILE

Далее нужно заглянуть в крон. Т.к. минимальное время повтора задач в кроне — 1 минута, возможно у нас еще есть в запасе несколько секунд чтобы отключить этот демон, ведь в задачах могут стоять скрипты чекающие логи на авторизацию или еще что-либо интересное:

crontab -l

Или

/etc/init.d/crond stop

last лог

Далее нужно подчистить last лог, так как в любой момент может зайти админ и увидев неизвестный ip адрес с последней авторизации, он тут же испытает не самые приятные ощущения. Мы конечно же люди добрые и травмировать психику админов не собираемся, поэтому воспользуемся лог клинером типа whitecat или vanish.

./whitecat -u root -a 127.0.0.1

Но доверять на 100% этим клинерам конечно же не стоит и желательно чистить логи дополнительными командами:

MYIP=$(echo $SSH_CLIENT | awk ‘{ print $1}’); IPLOGS=$(grep -lr $MYIP /var/log);for L in $IPLOGS;do rm -f /tmp/tmplog; cp -f $L /tmp/tmplog; sed -i «/$MYIP/,+3d» /tmp/tmplog; cat /tmp/tmplog > $L;done;rm -f /tmp/tmplog

Данный набор команд ищет все файлы в папке /var/log в которых присутствует наш ip адрес и удаляет в этих файлах строчки с ip + еще 3 строки после.
Также хочу отметить еще один важный нюанс:

Например $SSH_CLIENT нам показывает ip 124.31.21.45 и мы по инструкции запускаем whitecat с параметрами -u root -a 124.31.21.45, однако это может не сработать в случае если в last лог у нас попал не ip а домен. Поэтому желательно также делать -u root -a domain.cc и проверять last лог до и после чистки командой last.

Читать также:  Лучшие приложения для родительского контроля на iPhone и Android

syslogd

В linux за ведение логов отвечает демон syslogd. Файл его конфигурации обычно находится по этому адресу /etc/syslog.conf. Сюда также стоит заглянуть на всякий случай. Там мы можем обнаружить нестандартные места хранения логов или даже параллельную отправку логов на удаленный email o_O.

cron.* /var/log/cron @hostname

Слева пишется категория и привилегия события, а справа — файл куда это событие заносится:

катeгория.приоритет адрес_лог_файла

Звездочка, означает все категории или все приоритеты.

В примере выше cron у нас катeгория, тк приоритет там не установлен, в лог файл /var/log/cron попадают все сообщения демона крон.

@hostname — означает, что все сообщения будут дублироваться демону syslogd на удаленном сервере.

*.crit | mail -s “critical message” root

В этом примере все сообщения, приоритет которых выше или равен crit, будут отправлены по электронной почте пользователю root.

Как вы уже наверно догадались, с помощью конвеера можно передать данные другому демону.

Временные файлы

После работы на сервере, в частности после исполльзования таких программ, как vim или mc, следует также подчистить логи этих программ, которые хранятся в домашней директории: ~/.viminfo и ~/.mc/history .

Ну и в завершение последний штрих — контрольный bash history clean:

kill -9 $$

Этой командой мы убиваем текущий процесс оболочки, тем самым не даем ей скинуть в файл .bash_history историю наших команд в случае если команда HISTFILE=/dev/null не сработала.

Альтернативный метод подключения

Вероятно вы уже не раз работали в этом режиме, ведь именно в нем работают наши бекконекты с шеллов. Речь идет о псевдотерминалах.

Использовать данный метод можно следующим образом:

ssh -T hostname

Ключ -T запускает псевдотерминал на удаленном hostname. В данном случае мы не попадаем в last лог и .bash_history. Однако в этом режиме работы есть некоторые ограничения, например невозможность запуска mc, редактирования файлов в редакторах, а также при попытке завершить какую-либо команду через cntrl+c произойдет обрыв сессии с сервером.

Читать также:  Intel показала, как песок превращается в процессор 10 нм

Добавить комментарий