Проверка системы на наличие нежелательных элементов

Posted by

Было время я показывал, как можно проверять систему на предмет различных видов нежелательных элементов в системе применительно  к Ubuntu 10.10, но время использования данной системы у меня прошло, я перешел на долговременные релизы и ничуть не жалею, а наоборот многое познал. Но сейчас речь не об этом.

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

И так в моем распоряжении: Ubuntu 12.04.5 Server amd64 в минимальной конфигурации.

Устанавливаю пакет rkhunter из репозитариев:

ekzorchik@srv-mon:~$ sudo apt-get update --fix-missing

ekzorchik@srv-mon:~$ sudo apt-cache show rkhunter | grep Version

Version: 1.3.8-10

ekzorchik@srv-mon:~$ sudo apt-get install rkhunter -y

При установке настройку почтовой системы не будут делать пока во всяком случае:

General type of mail configuration: No configuration OK

Активируем в утилите rkhunter автоматическое обновление каждый день, каждую неделю и обновление базы:

ekzorchik@srv-mon:~$ sudo dpkg-reconfigure rkhunter

Activate daily run of rkhunter? YES

Activate weekly update of rkhunter’s databases? YES

Automatically update rkhunter’s file properties database? YES

Далее проверим наличие обновления по части установленной версии:

ekzorchik@srv-mon:~$ sudo rkhunter --versioncheck

[ Rootkit Hunter version 1.3.8 ]

Checking rkhunter version…

This version : 1.3.8

Latest version: 1.4.2

Update available

Чтобы обновить установленную версию до актуальной, следует:

ekzorchik@srv-mon:~$ sudo rkhunter --update

[ Rootkit Hunter version 1.3.8 ]

Checking rkhunter data files…

Checking file mirrors.dat [ No update ]

Checking file programs_bad.dat [ Updated ]

Checking file backdoorports.dat [ No update ]

Checking file suspscan.dat [ No update ]

Checking file i18n versions [ Update failed ]

Please check the log file (/var/log/rkhunter.log)

Разбираю, почему не могу произвести обновление до последней версии чтением сформированного лога:

ekzorchik@srv-mon:~$ sudo tail -f /var/log/rkhunter.log

[03:50:28] Checking file backdoorports.dat [ No update ]

[03:50:29] Info: Executing download command ‘/usr/bin/wget -q -O /var/lib/rkhunter/tmp/rkhunter.upd.85yGuAvTQ0 http://rkhunter.sourceforge.net/1.3/suspscan.dat 2>/dev/null’

[03:50:29] Info: This version : 2009112901

[03:50:29] Info: Latest version: 2009112901

[03:50:29] Checking file suspscan.dat [ No update ]

[03:50:29] Info: Executing download command ‘/usr/bin/wget -q -O /var/lib/rkhunter/tmp/rkhunter.upd.85yGuAvTQ0 http://rkhunter.sourceforge.net/1.3/i18n/1.3.8/i18n.ver 2>/dev/null’

[03:50:29] Checking file i18n versions [ Update failed ]

[03:50:29] Warning: Download of ‘i18n.ver’ failed: Unable to determine the latest version number.

[03:50:29]

[03:50:29] Info: End date is Tue Nov 11 03:50:29 EST 2014

, ага: если я правильно понимаю данный лог, то невозможно скачать файл обновления, ссылка уже неактуальна, поэтому, посмотрю, что предлагает по этому репозитарии применительно к релизу Ubuntu 12.04 precise через сайт: packages.ubuntu.com

Последняя версия rkhunter для Ubuntu 12.04 = 1.3.8

Вот тебе на, репозитарии остановились на версии 1.3.8-10 для текущего релиза, а для Ubuntu 14.04.1 доступна: 1.4.0-3, что тоже не очень то и хорошо, раз программа сама определила, что последняя версия: 1.4.2, поэтому схожу на официальный сайт и посмотрю, как произвести установку самой последней версии данной утилиты в систему:

Скачиваю последнюю версию с официального сайта:

ekzorchik@srv-mon:~$ wget -c http://cznic.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.2/rkhunter-1.4.2.tar.gz

Распаковываю скачанный архив:

ekzorchik@srv-mon:~$ tar -zxvf rkhunter-1.4.2.tar.gz

ekzorchik@srv-mon:~$ cd rkhunter-1.4.2/

Устанавливаю:

ekzorchik@srv-mon:~/rkhunter-1.4.2$ sudo ./installer.sh –install

Update complete

ekzorchik@srv-mon:~/rkhunter-1.4.2$ cd ~/

Местонахождение установленной утилиты можно найти так:

ekzorchik@srv-mon:~$ whereis rkhunter

rkhunter: /usr/bin/rkhunter /etc/rkhunter.conf /usr/local/bin/rkhunter /usr/local/lib/rkhunter /usr/share/rkhunter /usr/share/man/man8/rkhunter.8.gz

  • первый путь: (утилита установлена из репозитариев)

ekzorchik@srv-mon:~$ /usr/bin/rkhunter -V | grep Rootkit

Rootkit Hunter 1.3.8

  • Второй путь: (утилита установлена из исходников)

ekzorchik@srv-mon:~$ sudo /usr/local/bin/rkhunter -V | grep Rootkit

Rootkit Hunter 1.4.2

Но раз для моего релиза Ubuntu 12.04.5 Server amd64 не получается обновить версию утилиты rkhunter установленной из репозитариев, но держать обе версии на системе это излишне, поэтому удаляю версию: rkhunter – 1.3.8

Но сперва, сохраню каталог: /usr/share/rkhunter/, он понадобиться потом.

ekzorchik@srv-mon:~$ sudo tar cvf usr_share_rkhunter.tar /usr/share/rkhunter/*

tar: Removing leading `/’ from member names

/usr/share/rkhunter/

/usr/share/rkhunter/default.conf

/usr/share/rkhunter/scripts/

/usr/share/rkhunter/scripts/rkhupd.sh

/usr/share/rkhunter/scripts/readlink.sh

/usr/share/rkhunter/scripts/stat.pl

/usr/share/rkhunter/scripts/filehashsha.pl

/usr/share/rkhunter/scripts/check_modules.pl

Ошибка: tar: Removing leading `/’ from member names – это уведомление, что в архивах могут быть только относительные пути, поэтому tar предупреждает, что символ «/» в начале пути игнорируется, поэтому бекап каталога должен быть с указанием ключа «P»:

ekzorchik@srv-mon:~$ sudo tar -cPvf usr_share_rkhunter.tar /usr/share/rkhunter/*

Чтобы проверить, что содержит архив:

ekzorchik@srv-mon:~$ sudo tar -tPf usr_share_rkhunter.tar

/usr/share/rkhunter/default.conf

/usr/share/rkhunter/scripts/

/usr/share/rkhunter/scripts/rkhupd.sh

/usr/share/rkhunter/scripts/readlink.sh

/usr/share/rkhunter/scripts/stat.pl

/usr/share/rkhunter/scripts/filehashsha.pl

/usr/share/rkhunter/scripts/check_modules.pl

Удаляю rkhunter установленный посредством репозитариев:

ekzorchik@srv-mon:~$ sudo apt-get remove rkhunter –y

Чтобы была возможность вызывать утилиту из командной строки нужно добавить в переменную PATH путь: /usr/local/bin/

ekzorchik@srv-mon:~$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

, у меня этот путь уже доступен, если у Вас в выводе нет такого путя, то его можно добавить в данный файл:

ekzorchik@srv-mon:~$ sudo nano /etc/environment

, но после обнаружил еще одну проблему не могу в консоли, как было обычно с использование автодополнения вызвать утилиту rkhunter

Ввожу:

ekzorchik@srv-mon:~$ rk нажимаю TAB TAB TAB и ничего не происходит.

Чтобы поправить работу автодополнения воспользуюсь своей заметкой:

ekzorchik@srv-mon:~$ sudo apt-get install bash bash-completion –y

ekzorchik@srv-mon:~$ sudo nano /etc/skel/.bashrc

if ! shopt -oq posix; then

if [ -f /usr/share/bash-completion/bash_completion ]; then

. /usr/share/bash-completion/bash_completion

elif [ -f /etc/bash_completion ]; then

. /etc/bash_completion

fi

fi

Сохраняем внесенные изменения и перечитываем внесенные изменения.

ekzorchik@srv-mon:~$ source /etc/skel/.bashrc

Пробуем вызвать утилиту rkhunter из консоли:

Через TAB все также не работает, а если указать полный путь, то почти работает

ekzorchik@srv-mon:~$ /usr/local/bin/rkhunter

-bash: /usr/local/bin/rkhunter: Permission denied

Не хватает прав:

ekzorchik@srv-mon:~$ ls -l /usr/local/bin/rkhunter

-rwxr-x— 1 root root 535034 Nov 11 04:02 /usr/local/bin/rkhunter

Даю права:

ekzorchik@srv-mon:~$ sudo chmod 755 /usr/local/bin/rkhunter

ekzorchik@srv-mon:~$ rk нажимаю TAB TAB TAB и выводится список утилит начинающийся с rk и в этом списке присутствует необходимая мне утилита.

rk rkhunter

и начинает работать.

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

Ладно, перехожу собственно к самой системе и решению поставленной задачи перед этой утилитой:

Проверяю актуальность уже установленной версии:

ekzorchik@srv-mon:~$ sudo rkhunter --versioncheck

Invalid SCRIPTDIR configuration option: Non-existent pathname: /usr/share/rkhunter/scripts

А помните выше, я сохранил данный каталог, который отсутствует сейчас, разархивирую его по пути который требуется:

ekzorchik@srv-mon:~$ sudo tar -xPvf usr_share_rkhunter.tar -C /usr/share/

/usr/share/rkhunter/default.conf

/usr/share/rkhunter/scripts/

/usr/share/rkhunter/scripts/rkhupd.sh

/usr/share/rkhunter/scripts/readlink.sh

/usr/share/rkhunter/scripts/stat.pl

/usr/share/rkhunter/scripts/filehashsha.pl

/usr/share/rkhunter/scripts/check_modules.pl

Теперь снова проверяю актуальность уже установленной версии:

ekzorchik@srv-mon:~$ sudo rkhunter --versioncheck

The English language file must be present: /var/lib/rkhunter/db/i18n/en

If it has been deleted, then you will need to run ‘rkhunter —update’ with no other options.

Обновляю:

ekzorchik@srv-mon:~$ sudo rkhunter -update

ekzorchik@srv-mon:~$ sudo rkhunter --versioncheck

[ Rootkit Hunter version 1.4.2 ]

Checking rkhunter version…

This version : 1.4.2

Latest version: 1.4.2

Вот то, что мне и нужно было:

ВАЖНО: после каждого внесенного изменения в /etc/rkhunter.conf необходимо создавать снимок, через sudo rkhunterpropupd

Вторым шагом будет создание снимка состояния установленной системы для rkhunter командой:

ekzorchik@srv-mon:~$ sudo rkhunter --propupd

Invalid SCRIPTWHITELIST configuration option: Non-existent pathname: /usr/bin/lwp-request

Invalid SCRIPTWHITELIST configuration option: Non-existent pathname: /usr/sbin/prelink

У меня этих утилит в системе нет, поэтому доустанавливаю:

ekzorchik@srv-mon:~$ sudo apt-get install libwww-perl –y

ekzorchik@srv-mon:~$ apt-cache search prelink

prelink — ELF prelinking utility to speed up dynamic linking

ekzorchik@srv-mon:~$ sudo apt-get install prelink –y

Создаю слепок того, что есть сейчас.

ekzorchik@srv-mon:~$ sudo rkhunter —propupd

[ Rootkit Hunter version 1.4.2 ]

File updated: searched for 172 files, found 139

Этими действиями я произвел обновление базы и теперь готов совершить первый запуск утилиты rkhunter на сканирование системы: — мастер автоматически по каждой части/этапу проведет тестирование системы

-c, --check Check the local system

--enable all Default is to enable all tests

--disable none (Default is to disable no tests

ekzorchik@srv-mon:~$ sudo rkhunter -c —enable all —disable none

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

ekzorchik@srv-mon:~$ sudo cat /var/log/rkhunter.log | grep «Warning»

[05:23:02] Checking running processes for deleted files [ Warning ]

[05:23:02] Warning: The following processes are using deleted files:

[05:23:14] Checking for packet capturing applications [ Warning ]

[05:23:14] Warning: Process ‘/sbin/dhclient’ (PID 663) is listening on the network.

[05:23:15] Checking if SSH root access is allowed [ Warning ]

[05:23:15] Warning: The SSH and rkhunter configuration options should be the same:

[05:23:18] Checking /dev for suspicious file types [ Warning ]

[05:23:18] Warning: Suspicious file types found in /dev:

[05:23:18] Checking for hidden files and directories [ Warning ]

[05:23:18] Warning: Hidden directory found: /dev/.udev

[05:23:18] Warning: Hidden file found: /dev/.initramfs: symbolic link to `/run/initramfs’

Предупреждения о наличии скрытых файлов убираем только после тщательной проверки:

ekzorchik@srv-mon:~$ sudo nano /etc/rkhunter.conf

ALLOWHIDDENDIR="/dev/.initramfs"

ALLOWHIDDENDIR="/dev/.udev"

Сохраняем внесенные изменения.

Теперь Я знаю по своей системе чуточку больше и знаю что нужно исправить.

Теперь немного настрою файл конфигурации rkhunter месторасположение которого в системе Ubuntu — /etc/rkhunter.conf

ekzorchik@srv-mon:~$ sudo nano /etc/rkhunter.conf

# оповещение на почту

MAIL-ON-WARNING=ekzorchik@ekzorchik.ru

# добавим файлы которые не нужно проверять для исключения ложного срабатывания к уже существующим:

SCRIPTWHITELIST=/bin/egrep

SCRIPTWHITELIST=/bin/fgrep

SCRIPTWHITELIST=/bin/which

SCRIPTWHITELIST=/usr/bin/groups

SCRIPTWHITELIST=/usr/bin/ldd

SCRIPTWHITELIST=/usr/bin/lwp-request

SCRIPTWHITELIST=/usr/sbin/adduser

SCRIPTWHITELIST=/usr/sbin/prelink

# если в системе используется доступ к SSH (sshd.conf = PermitRootLogin) от имени учетной записи root, то (я же ставлю всегда значение no)

ALLOW_SSH_ROOT_USER=no

# месторасположение лог файла

LOGFILE=/var/log/rkhunter.log

# протокол подключения к серверу SSH версии 1 или версии 2

ALLOW_SSH_PROT_V1=2

# Чтобы скрипт не ругался на старые версии программ добавьте параметр с разрешенными версиями программ:

APP_WHITELIST=""

# Разрешить использование конкретный портов

PORT_WHITELIST="/home/user1/abc /opt/xyz TCP:2001 UDP:32011"

Сохраняем внесенные изменения и проверяем его корректность:

ekzorchik@srv-mon:~$ sudo rkhunter -C

[sudo] password for ekzorchik:

Invalid MAIL_CMD configuration option: command is non-existent or not executable: mail

ООО, забыл:

ekzorchik@srv-mon:~$ sudo nano /etc/rkhunter.conf

MAIL_CMD=mail -s "[rkhunter] Warnings found for ${HOST_NAME}"

И ставлю пакет для отправки почты через консоль:

ekzorchik@srv-mon:~$ sudo apt-get install mailutils –y

Теперь ошибок в конфиге нет:

ekzorchik@srv-mon:~$ sudo rkhunter –C

Иногда может понадобиться проверять систему, но выводить только предупреждения:

ekzorchik@srv-mon:~$ sudo rkhunter -c --enable all --disable none --rwo

Warning: The file ‘/usr/bin/mail’ exists on the system, but it is not present in the ‘rkhunter.dat’ file.

Warning: The file ‘/usr/bin/mail.mailutils’ exists on the system, but it is not present in the ‘rkhunter.dat’ file.

Warning: The following processes are using deleted files:

Process: /bin/bash PID: 1120 File: /bin/bash

Process: /bin/bash PID: 21383 File: /bin/bash

Warning: Process ‘/sbin/dhclient’ (PID 663) is listening on the network.

Warning: The SSH and rkhunter configuration options should be the same:

SSH configuration option ‘PermitRootLogin’: yes

Rkhunter configuration option ‘ALLOW_SSH_ROOT_USER’: no

Warning: The SSH and rkhunter configuration options should be the same:

SSH configuration option ‘Protocol’: 2

Rkhunter configuration option ‘ALLOW_SSH_PROT_V1’: 2

Warning: Suspicious file types found in /dev:

/dev/.udev/rules.d/root.rules: ASCII text

Warning: Hidden directory found: /dev/.udev

Warning: Hidden file found: /dev/.initramfs: symbolic link to `/run/initramfs’

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

Далее добавлю задание в cron для ежедневного сканирования и обновления базы в 9 вечера:

ekzorchik@srv-mon:~$ sudo crontab –e

0 21 * * * /usr/local/bin/rkhunter --update ; /usr/local/bin/rkhunter -c --enable all --disable none –-rwo

Сохраняю внесенные изменения.

Важно:Изменить поведение системы можно отдельно настроить периодические задачи таки как:

  1. Обновление
  2. проверка
  3. отчеты

В файле: ekzorchik@srv-mon:~$ sudo nano /etc/default/rkhunter

Теперь займемся настройкой почты, для этого я вместо почтового агента postfix буду использовать ssmtp

ekzorchik@srv-mon:~$ sudo apt-get remove postfix –y

ekzorchik@srv-mon:~$ sudo apt-get install ssmtp -y

ekzorchik@srv-mon:~$ sudo nano /etc/ssmtp/ssmtp.conf

mailhub = smtp.yandex.ru:465

AuthUser=ekzorchik@ekzorchik.ru

AuthPass=<мой_пароль_на_почтовый_ящик>

rewriteDomain=ekzorchik.ru

UseTLS=YES

FromLineOvveride=YES

# почтовый адрес postmaster домена ekzorchik.ru Должен существовать

Root=postmaster

Пропишем, каким локальным пользователям разрешено использовать отправку почты:

ekzorchik@srv-mon:~$ sudo nano /etc/ssmtp/revaliases

root:ekzorchik@ekzorchik.ru:smtp.yandex.ru:465

ekzorchik:ekzorchik@ekzorchik.ru:smtp.yandex.ru:465

Сохраняем внесенные изменения

Проверим, что почта отправляется:

(так как пакет mailutils удалился, когда я удалял postfix, то ставлю его еще раз)

ekzorchik@srv-mon:~$ sudo apt-get install mailutils -y

ekzorchik@srv-mon:~$ echo "" | ssmtp -v -s Hello ekzorchik@ekzorchik.ru

[<-] 220 smtp4o.mail.yandex.net ESMTP (Want to use Yandex.Mail for your domain? Visit http://pdd.yandex.ru)

[->] EHLO srv-mon

[<-] 250 ENHANCEDSTATUSCODES

[->] AUTH LOGIN

[<-] 334 VXNlcm5hbWU6

[->] ZWt6b3JjaGlrQGVrem9yY2hpay5ydQ==

[<-] 334 UGFzc3dvcmQ6

[<-] 235 2.7.0 Authentication successful.

[->] MAIL FROM:<ekzorchik@ekzorchik.ru>

[<-] 250 2.1.0 <ekzorchik@ekzorchik.ru> ok

[->] RCPT TO:<Hello@ekzorchik.ru>

[<-] 250 2.1.5 <Hello@ekzorchik.ru> recipient ok

[->] RCPT TO:<ekzorchik@ekzorchik.ru>

[<-] 250 2.1.5 <ekzorchik@ekzorchik.ru> recipient ok

[->] DATA

[<-] 354 Enter mail, end with «.» on a line by itself

[->] Received: by srv-mon (sSMTP sendmail emulation); Tue, 11 Nov 2014 06:18:28 -0500

[->] From: «ekzorchik» <ekzorchik@ekzorchik.ru>

[->] Date: Tue, 11 Nov 2014 06:18:28 -0500

[->]

[->]

[->] .

[<-] 250 2.0.0 Ok: queued on smtp4o.mail.yandex.net as t7gdxenf4I-ISIWHCXL

[->] QUIT

[<-] 221 2.0.0 Closing connection.

Из полученного лога отправки видно, что почта отправляется.

Сделаем, чтобы после проверки системы rkhunter тоже отправил лог мне на почту:

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

Вот тело письма сейчас:

Первичный отчет rkhunter после проверки на почту не содержащий ничего

А чтобы получать детализированные отчеты, то:

ekzorchik@srv-mon:~$ sudo nano /etc/rkhunter.conf

# MAIL-ON-WARNING=ekzorchik@ekzorchik.ru

#MAIL_CMD=mail -s "[rkhunter] Warnings found for ${HOST_NAME}"

ekzorchik@srv-mon:~$ sudo rkhunter -C

ekzorchik@srv-mon:~$ sudo rkhunter --propupd

[ Rootkit Hunter version 1.4.2 ]

File updated: searched for 173 files, found 141

ekzorchik@srv-mon:~$ sudo nano /etc/default/rkhunter

REPORT_EMAIL="”

ekzorchik@srv-mon:~$ sudo rkhunter --cronjob --rwo | mail -s "rkhunter report from hostname srv-mon" ekzorchik@ekzorchik.ru

и теперь на почту уже приходит деталлированный отчет который мне и нужен был:

Rkhunter и полный отчет на почту

Вот теперь уже лучше, значит почему-то у меня встроенные возможности утилиты rkhunter вовсе не отправляют полную информацию посредством отчета на почту. Ну ничего, работает по другому ну и ладно. Главное ведь работает.

Поправлю также задание для cron’а:

ekzorchik@srv-mon:~$ sudo crontab –e

0 21 * * * /usr/local/bin/rkhunter --update ; /usr/local/bin/rkhunter --cronjob -c --enable all --disable none --rwo | mail -s "rkhunter report from hostname srv-mon" ekzorchik@ekzorchik.ru

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

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

15 − 3 =