Содержание:
Итак вы получили 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.
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 произойдет обрыв сессии с сервером.