rkhunter - скрипт, предназначенный для командной оболочки (таких как bash и т.д.), который выполняет различные проверки на локальной системе для обнаружения известных ему rootkits и malware.
Он также проводит проверки и выявление изменений в установленных программах, в системных файлах запуска и различные проверки для приложений, которые “слушают” на сетевых интерфейсах сервера. По сути - антишпион (антивирус - как будет угодно) для Linux. И, в целях улучшения безопасности, его использовать стоит.
Установка rkhunter
Простая, как 5 копеек, т.к. присутствует в хранилищах большинства дистрибутивов.
Для CentOS
yum
install rkhunter
Для Ubuntu, Linux Mint и иже с ними
sudo
apt-get
install rkhunter
Настройка rkhunter
Для начала зайдите в конф. файл
nano /etc/rkhunter.conf
и поставьте ваш почтовый адрес, чтобы предупреждения сыпались на почту и мешали спокойно спать. То есть исправьте строку:
MAIL-ON-WARNING="root"
в файле /etc/rkhunter.conf. Вместо root укажите свой адрес.
Далее, нужно сделать “слепок” того, что есть сейчас. Это делается буквально с помощью команды:
rkhunter --propupd
Далее давайте обновим базу:
rkhunter --update
Проверка с помощью rkhunter
Итак, система настроена и обновлена, теперь давайте попробуем прогнать первый раз проверку:
rkhunter -c --update --noappend-log --vl
Придется немного посидеть перед монитором, т.к. система несколько раз предложит нажать ENTER. При этом можно будет сразу обратить внимание на варнинги (ошибки или как угодно их назовите). Их мы перечислим после. Но сначала:
Добавление rkhunter в cron
Например, нам надо сканировать систему раз в сутки в 23.00. Зададим такую команду:
0 23 * * * /usr/bin/rkhunter --update; /usr/bin/rkhunter -c --createlogfile --cronjob
Сначала будет проходить обновление, потом - проверка. Будьте внимательны относительно пути к rkhunter! Данный пример приведен для CentOS 5.5.
Warnings! Ошибки, выдаваемые rkhunter
При сканировании могут на ранних этапах появится ошибки, которых на самом деле нет. Например:
Checking if SSH root access is allowed [ Warning ]
Более чем странная ошибка, если root в SSH запрещен. Для начала все-таки проверьте доступ пользователя ROOT по SSH. Можно с помощью команды
less
/etc/
ssh
/
sshd
_config |
grep
Root
Должно появится: PermitRootLogin no. Если стоит yes - запрещаем входить root
на сервер (что правильно!) и рестартуем SSHD
/etc/init.d/sshd restart
Если же всё-таки стоит ”no” - лечится просто заменой ”yes” на ”no” в конфиге /etc/rkhunter.conf в параметре ALLOW_SSH_ROOT_USER`
Checking for passwd file changes [ Warning ] или Checking for group file changes [ Warning ]
В данном случае вы, скорее всего, забыли сделать первоначальный “слепок” командой rkhunter –propupd
Если возникают какие-либо еще ошибки - прошу в студию.. :)
Если у вас появились какие-либо еще ошибки и вы их решили - напишите мне о них, я добавлю с указанием авторства. Почта есть на главной странице, данные IRC там же.
Что ещё можно или нужно сделать
- Пусть сервер сообщает нам, что кто-то залогинился по SSH - в целях безопасности будет не лишне получить письмо, где будет указано, под каким именем зашёл пользователь и с какого IP.
- Как разрешить удалённый вход root только по ключам - тем самым можно обеспечить работу под администратором на удалённой системе, но и не позволить получить доступ методом перебора.