Как установить rkhunter в ubuntu

Обновлено: 02.07.2024

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

Одной из потенциальных опасностей являются руткиты (rootkits)- тайно установленное ​​злоумышленником программное обеспечение, открывающее ему доступ к серверу и скрывающее последствия взлома. Это чрезвычайно актуальная проблема, поскольку руткит позволяет злоумышленнику входить на сервер даже после фиксации вектора входа пользователя в систему.

Данное руководство описывает установку и настройку rkhunter для защиты Ubuntu 12.04 VPS.

Установка rkhunter из исходного кода

Репозитории Ubuntu содержат устаревшую версию rkhunter с неисправленной уязвимостью. Потому устанавливать данную программу лучше из исходного кода.

Перейдите в домашний каталог и скачайте файлы. На данный момент последней доступной версией программы является 1.4.0 (чтобы уточнить эту информацию, посетите страницу проекта)

После завершения загрузки файлов извлеките их и перейдите в итоговый каталог:

tar xzvf rkhunter*
cd rkhunter*

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

sudo ./installer.sh --layout /usr --install

Это установит программу и конфигурационные файлы.

Теперь нужно установить некоторые утилиты, позволяющие использовать полный функционал rkhunter. Их можно получить из репозиториев Ubuntu:

sudo apt-get update
sudo apt-get install binutils libreadline5 libruby1.8 ruby ruby1.8 ssl-cert unhide.rb mailutils

При локальной установке почтового сервера ему можно дать любое имя. В противном случае не забудьте использовать полное доменное имя.

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

Тестовый запуск rkhunter

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

Для начала нужно убедиться, что установленная версия rkhunter достаточно современна. Если архив был получен с сайта проекта, этого делать не нужно; в противном случае лучше проверить:

sudo rkhunter --versioncheck
[ Rootkit Hunter version 1.4.0 ] Checking rkhunter version.
This version : 1.4.0
Latest version: 1.4.0

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

sudo rkhunter --update

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

sudo rkhunter --propupd
File created: searched for 167 files, found 136

Теперь можно выполнить первый запуск программы, что выведет некоторые предупреждения. Это поведение предсказуемо, поскольку универсальные настройки rkhunter немного расходятся с ожидаемыми настройками по умолчанию для Ubuntu.

sudo rkhunter -c --enable all --disable none

Это действие запустит часть проверок, а затем попросит нажать enter для продолжения. Предупреждения можно просмотреть еще в ходе проверки, но впоследствии можно будет получить более подробную информацию. Нажимайте enter, пока все проверки не запустятся.

Теперь нужно просмотреть журналы и проверить все предупреждения, выведенные в результате проверок.

sudo nano /var/log/rkhunter.log

Некоторые изменения (как, например, в файле passwd) выведены только потому, что они были внесены вспомогательными утилитами, загруженными ранее с помощью apt. Эти файлы имеют более поздние метки времени, чем базы данных rkhunter (они исчезнут при следующем запуске).

sudo rkhunter -c --enable all --disable none --rwo

Затем можно скопировать информацию и вставить ее в какой-нибудь файл, чтобы с ее помощью отредактировать конфигурационный файл.

Настройка rkhunter (основанная на заведомо исправный значениях)

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

Откройте конфигурационный файл rkhunter с привилегиями root:

sudo nano /etc/rkhunter.conf

Настройка уведомлений

Если почтовый сервер установлен локально, можно получать почту, войдя в систему как root:

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

Данная строка определяет программу и параметры отправки почты:

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

Белый список известных файлов

Теперь нужно устранить предупреждения, сообщающие о том, что некоторые бинарные пакеты системы были заменены скриптами. Некоторые дистрибутивы (в том числе и Ubuntu) используют скриптовые версии файлов вместо их двоичных аналогов.

Приведенные ниже четыре файла были выведены в результате проверки rkhunter; их нужно внести в белый список с помощью параметра SCRIPTWHITELIST, чтобы rkhunter знал, что эти файлы безвредны:

SCRIPTWHITELIST="/usr/sbin/adduser"
SCRIPTWHITELIST="/usr/bin/ldd"
SCRIPTWHITELIST="/usr/bin/unhide.rb"
SCRIPTWHITELIST="/bin/which"

Это позволит предотвратить ложные срабатывания при всех последующих проверках. Обратите внимание: эти белые списки необходимы только для определенных тестов; потому нужно отметить, что эти файлы не должны быть двоичными. Другие же изменения могут вызвать предупреждения (что является правильной работой программы).

Белый список файлов каталога /dev

Определенные файлы каталога /dev вызывают предупреждения rkhunter. Эти файлы содержат детали реализации, которые фактически не указывают на какие-либо нарушения. Они необходимы и поддерживаются дистрибутивом.

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

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

Добавьте эти строки, чтобы внести эти файлы в белый список

ALLOWHIDDENFILE="/dev/.blkid.tab"
ALLOWHIDDENFILE="/dev/.blkid.tab.old"
ALLOWHIDDENFILE="/dev/.initramfs"

Разрешение Root SSH-подключения

Сохраните изменения и закройте файл.

Проверка настроек

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

Для начала нужно убедиться, что сам конфигурационный файл является действительным. Для этого запустите rkhunter, чтобы увидеть, принял ли он заданные значения.

sudo rkhunter -C

Если были выведены какие-либо предупреждения, вернитесь в конфигурационный файл и устраните их.

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

sudo rkhunter -c --enable all --disable none --rwo

При этом должно появиться одно предупреждение (поскольку был изменен сам конфигурационный файл rkhunter):

Warning: The file properties have changed:
File: /etc/rkhunter.conf
Current hash: fa8ad80a18100e669be507e69d0cbb88348fc07d
Stored hash : f9015108a2f6d8044126351cf16235c55993ff7a
Current inode: 2098189 Stored inode: 2100424
Current size: 37607 Stored size: 37359
Current file modification time: 1388443781 (30-Dec-2013 17:49:41)
Stored file modification time : 1388442019 (30-Dec-2013 17:20:19)

Свойства файла должны были быть обновлены после внесения в него изменений. Сделайте это сейчас, набрав:

sudo rkhunter --propupd

Завершив, снова запустите проверку; на этот раз предупреждений быть не должно.

Закрыть почту можно при помощи:

Автоматизация проверок с помощью Cron

Настроив rkhunter и убедившись в том, что он работает должным образом, автоматизируйте его работу. Данное руководство показывает, как настроить ежедневный автоматический запуск rkhunter.

Лучше указать свой постоянный почтовый адрес, чтобы иметь возможность своевременно проверять отчеты rkhunter. Для этого измените значение параметра MAIL-ON-WARNING в файле /etc/rkhunter.conf.

Запустите rkhunter с привилегиями root, чтобы иметь возможность внести его в crontab пользователя root. Обратите внимание: внеся rkhunter в системный crontab, вы рискуете потерять данные настройки при обновлении системы.

Для начала нужно убедиться, что у root-пользователя уже есть crontab, набрав:

Если при этом был выведен crontab, создайте его резервную копию на случай необходимости восстановить его:

sudo crontab -l > crontab.bak

Затем отредактируйте crontab root-пользователя, выполнив команду:

Если эта команда запущена впервые, она спросит, какой редактор нужно использовать; в данном руководстве используется надежный nano.

Затем будет открыт текстовый редактор; файл будет предварительно заполнен некоторыми комментариями, объясняющими, как написать crontab.

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

Для автоматизации запуска команды используется формат:

минуты часы * * * команда

Часы должны указываться в 24-часовом формате. Команда, которую нужно автоматизировать, выглядит так:

/usr/bin/rkhunter --cronjob --update --quiet.

Чтобы запускать ее в 04: 15, внесите в конец файла:

15 04 * * * /usr/bin/rkhunter --cronjob --update --quiet

Итак, теперь cron будет запускать данную команду в 04.15, а при наличии каких-либо изменений rkhunter отправит извещение на почту.

Итоги

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

Как уже было сказано, rkhunter ссылается на заведомо исправные значения и состояния системы, установленные пользователем; потому эту программу рекомендуется установить и настроить сразу после настройки большей части программного обеспечения. Установка этой программы перед настройкой программного обеспечения приведет к большому количеству ложных срабатываний. Запомните также: слишком долгое откладывание установки rkhunter может привести к тайному вторжению на сервер.

На хабре не раз было упомянуто приложение под названием rkhunter. Хотелось бы остановиться на нем по подробней.

Rkhunter — это сканер различных видов локальных (потенциальных) уязвимостей (бэкдоров, эксплоитов и руткитов) со своей регулярно обновляемой базой.
Он написан на bash и perl, поэтому будет работать под любой серверной ОС на базе unix без каких-либо проблем.

  • Centos: yum install rkhunter
  • Debian/Ubuntu: apt-get install rkhunter
  • FreeBSD: make all install clean -C /usr/ports/security/rkhunter или pkg install rkhunter

Первый запуск и подготовка
Первый запуск требуется для проверки системы на предмет совместимости и корректности установки самого rkhunter.

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

rkhunter --versioncheck

Появится такая информация, по которой можно судить об актуальности версии
[ Rootkit Hunter version 1.4.2 ]

Checking rkhunter version…
This version: 1.4.2
Latest version: 1.4.2

Для поддержания актуальности инструмента для поиска уязвимостей на сервере следует запускать rkhunter с ключом --update

rkhunter --update
[ Rootkit Hunter version 1.4.2 ]

Checking rkhunter data files…
Checking file mirrors.dat [ No update ]
Checking file programs_bad.dat [ No update ]
Checking file backdoorports.dat [ No update ]
Checking file suspscan.dat [ Updated ]
Checking file i18n/cn [ No update ]
Checking file i18n/de [ Updated ]
Checking file i18n/en [ No update ]
Checking file i18n/tr [ Updated ]
Checking file i18n/tr.utf8 [ Updated ]
Checking file i18n/zh [ Updated ]
Checking file i18n/zh.utf8 [ Updated ]

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

[ Rootkit Hunter version 1.4.2 ]
File created: searched for 171 files, found 139

Итак, база обновлена и теперь мы готовы сделать первый запуск rkhunter для сканирования.
rkhunter -c --enable all --disable none

File properties checks…
Files checked: 139
Suspect files: 23

Rootkit checks…
Rootkits checked: 381
Possible rootkits: 0

Applications checks…
Applications checked: 3
Suspect applications: 0

The system checks took: 2 minutes and 39 seconds

All results have been written to the log file: /var/log/rkhunter/rkhunter.log

One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter/rkhunter.log)

Обратите внимание на то, что rkhunter ведет лог-файл и в нем можно увидеть и те данные, которые отображались на экране в ходе проверки.

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

Настройка rkhunter
Файл конфигурации rkhunter может находиться в /etc/rkhunter.conf или /usr/local/etc/rkhunter.conf в зависимости от ОС и дистрибутива.
В первую очередь настроим оповещение на адрес электронной почты в параметре
MAIL-ON-WARNING=«почтовый@ящик»
В случае ложного срабатывания на файлы типа /bin/which можно воспользоваться параметром SCRIPTWHITELIST и добавить в него файлы, которые не требуется проверять/сигнализировать о проблеме. Добавлять следует по одному в параметр на строчке:
SCRIPTWHITELIST="/usr/sbin/adduser"
SCRIPTWHITELIST /img/image-loader.svg" data-src="https://habrastorage.org/files/8d4/2b6/743/8d42b674301741a1a7a22314ca83c32c.jpg"/>


В ISPmanager5 это пункт меню “Планировщик” в разделе “Система”

В качестве заключения хочу напомнить. Не забывайте запускать rkhunter --propupd после каждого изменения конфигурационных файлов или обновления ОС. Этим вы избежите ложных срабатываний.

На хабре не раз было упомянуто приложение под названием rkhunter. Хотелось бы остановиться на нем по подробней.

Rkhunter — это сканер различных видов локальных (потенциальных) уязвимостей (бэкдоров, эксплоитов и руткитов) со своей регулярно обновляемой базой.
Он написан на bash и perl, поэтому будет работать под любой серверной ОС на базе unix без каких-либо проблем.

  • Centos: yum install rkhunter
  • Debian/Ubuntu: apt-get install rkhunter
  • FreeBSD: make all install clean -C /usr/ports/security/rkhunter или pkg install rkhunter

Первый запуск и подготовка
Первый запуск требуется для проверки системы на предмет совместимости и корректности установки самого rkhunter.

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

rkhunter --versioncheck

Появится такая информация, по которой можно судить об актуальности версии
[ Rootkit Hunter version 1.4.2 ]

Checking rkhunter version…
This version: 1.4.2
Latest version: 1.4.2

Для поддержания актуальности инструмента для поиска уязвимостей на сервере следует запускать rkhunter с ключом --update

rkhunter --update
[ Rootkit Hunter version 1.4.2 ]

Checking rkhunter data files…
Checking file mirrors.dat [ No update ]
Checking file programs_bad.dat [ No update ]
Checking file backdoorports.dat [ No update ]
Checking file suspscan.dat [ Updated ]
Checking file i18n/cn [ No update ]
Checking file i18n/de [ Updated ]
Checking file i18n/en [ No update ]
Checking file i18n/tr [ Updated ]
Checking file i18n/tr.utf8 [ Updated ]
Checking file i18n/zh [ Updated ]
Checking file i18n/zh.utf8 [ Updated ]

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

[ Rootkit Hunter version 1.4.2 ]
File created: searched for 171 files, found 139

Итак, база обновлена и теперь мы готовы сделать первый запуск rkhunter для сканирования.
rkhunter -c --enable all --disable none

File properties checks…
Files checked: 139
Suspect files: 23

Rootkit checks…
Rootkits checked: 381
Possible rootkits: 0

Applications checks…
Applications checked: 3
Suspect applications: 0

The system checks took: 2 minutes and 39 seconds

All results have been written to the log file: /var/log/rkhunter/rkhunter.log

One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter/rkhunter.log)

Обратите внимание на то, что rkhunter ведет лог-файл и в нем можно увидеть и те данные, которые отображались на экране в ходе проверки.

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

Настройка rkhunter
Файл конфигурации rkhunter может находиться в /etc/rkhunter.conf или /usr/local/etc/rkhunter.conf в зависимости от ОС и дистрибутива.
В первую очередь настроим оповещение на адрес электронной почты в параметре
MAIL-ON-WARNING=«почтовый@ящик»
В случае ложного срабатывания на файлы типа /bin/which можно воспользоваться параметром SCRIPTWHITELIST и добавить в него файлы, которые не требуется проверять/сигнализировать о проблеме. Добавлять следует по одному в параметр на строчке:
SCRIPTWHITELIST="/usr/sbin/adduser"
SCRIPTWHITELIST /img/image-loader.svg" data-src="https://habrastorage.org/files/8d4/2b6/743/8d42b674301741a1a7a22314ca83c32c.jpg"/>


В ISPmanager5 это пункт меню “Планировщик” в разделе “Система”

В качестве заключения хочу напомнить. Не забывайте запускать rkhunter --propupd после каждого изменения конфигурационных файлов или обновления ОС. Этим вы избежите ложных срабатываний.

Раньше мы уже говорили о вирусах в Linux. Большинство людей считают, что вирусов в Linux нет и кое в чем они правы. Ведь вредоносных программ, которые сами могли бы распространятся по системе и заряжать другие компьютеры в сети минимум. Известные широкой общественности программы такого рода для Linux можно сосчитать на пальцах. Но есть и другой тип угроз, более характерный для Linux. Это руткиты, программы которые устанавливаются вручную и скрывают свою деятельность в системе.

Эти программы могут предоставлять установившему их человеку полный доступ к вашей системе, вычислительным ресурсам и данным. Не стоит недооценивать эту опасность. Если ваш компьютер подключен к интернет без использования локальной сети (роутера) и без технологии NAT, то обратится к нему может любой человек из сети провайдера. Для этого даже не обязательно знать ваш IP адрес. Злоумышленник может просто перебирать все адреса в своей подсети и если на вашем компьютере или сервере окажется искомая им уязвимость, например слабый пароль ssh или любая другая уязвимость в системном сервисе программная или недостаток настройки - ваш компьютер будет взломан.

Проверка Linux на вирусы

Чтобы понять не подключался ли кто к вашему компьютеру, вы можете посмотреть содержимое файла /var/log/audit.log или /var/log/secure.

tail -f /var/log/secure

Здесь фиксируются все события в системе, в том числе неудачные попытки входа по ssh. Я был удивлен когда увидел что мой пароль пытались подобрать. Также можно посмотреть логи сервиса sshd с помощью journalctl:

sudo journalctl _SYSTEMD_UNIT=sshd.service


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

Для поиска руткитов мы будем использовать утилиту rkhunter или RootkitHunter, а также chkrootkit. Мы рассмотрим как ее установить и настроить для правильной проверки. Вообще, я больше склоняюсь к первой, она новее и имеет больше функций.

Поиск вирусов с помощью RkHunter

RkHunter (Rootkit Hunter) - это инструмент для сканирования системы Linux / Unix с открытым исходным кодом, выпущенный под лицензией GPL. Утилита выполняет сканирование Linux на предмет руткитов, бекдоров, локальных эксплойтов и уязвимостей. На данный момент известно 349 руткитов, и всех их программа может найти, если они были установлены в вашей системе. Программа - всего лишь скрипт, позволяющий проверить локальные файлы, и обнаружить известные руткиты. Также выполняется проверка изменения системных команд, файлов запуска, а также проверка сетевых интерфейсов, на предмет прослушивания определенных портов.

Установить программу в Ubuntu можно командой:

sudo apt install rkhunter

В CentOS надо выполнить такую команду:

sudo yum install rkhunter


Если у вас другой дистрибутив, вы всегда скачать установочный скрипт на SourceForge:

tar -xvf rkhunter-1.4.2.tar.gz

cd rkhunter-1.4.2
./installer.sh --layout default --install

Перед тем как будет выполнена проверка linux на вирусы, необходимо обновить базу данных утилиты. Для этого выполните:


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

Обновление желательно выполнять регулярно, поэтому давайте создадим специальный скрипт и будем запускать его с помощью cron каждый день. Для этого создайте файл скрипта в папке /etc/cron.daily:

Теперь осталось только дать программе права на выполнение:

chmod 755 /etc/cron.daily/rkhunter.sh

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

  • --verbose-logging - максимально подробный вывод
  • --quiet - минимум информации в выводе
  • -l, --logfile - записать лог программы в свой файл
  • --cronjob - не интерактивный режим проверки, используется для запуска с помощью cron, отсюда и название.
  • --list - позволяет посмотреть какие возможности проддерживает программа, можно передать несколько параметров, test - тесты, lang - языки, rootkits - руткиты.
  • --unlock - удаляет файл блокировки базы данных, может быть полезна если предыдущий сеанс работы с программой был завершен некорректно.
  • --check - проверка системы
  • --update - обновление баз руткитов
  • --versioncheck - обновление программы
  • --propupd - создать базу данных файлов

Например, чтобы посмотреть все руткиты, которые может найти программа выполните:

sudo rkhunter --list rootkits

Для того чтобы проверить Linux на вирусы всю систему выполните от суперпользователя:

Программа кроме вывода информации на экран, создаст лог проверки. На информацию выводимую во время проверки не обращайте большого внимания, она немного урезана все станет более понятнее при просмотре лога.

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

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

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


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


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


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

Дальше будет выполнена проверка Linux на вирусы с поиском известных руткитов:


Обычно, если в этом разделе что-то обнаружено, то это значит, что в системе есть руткит и с этим нужно что-то делать, но обычно мы видим строки Not found (не найдено):

Дальше будет запущен поиск нежелательного программного обеспечения:

Проверка опасных портов:


На этапе проверки конфигурационных файлов мы тоже получаем предупреждение:

Но здесь видно, что проблема не в вирусе, а в том, что программе просто нет с чем сравнивать.

Дальше выполняется проверка настроек системы, и здесь тоже программе не все нравится:


А именно две вещи - разрешенный root доступ по ssh и возможность использовать протокол первой версии для подключения к ssh. И она права, это очень небезопасно.

Дальше будет выполнено сканирование файловой системы:


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

sudo lsof | grep /адрес/файла

Осталась проверка приложений:

[12:16:25] Info: Starting test name 'apps'
[12:16:25] Checking application versions..

И небольшой отчет о найденных проблемах:


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

sudo cat /var/log/rkhunter.log | grep -A5 "\[ Warning \]"

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

Теперь давайте рассмотрим еще одну программу с помощью которой может быть выполнена проверка Linux на руткиты. Это chkrootkit. Она мнение функциональна, но тоже хорошо делает свое дело.

Поиск вирусов с помощью Chkrootkit

Chkrootkit - это классический инструмент позволяющий не только искать руткиты Linux, но и проверять систему на признаки чужого присутствия. Программа просканирует ваш компьютер или сервер на наличие подозрительных процессов, руткитов и проверит список известных руткитов. Функциональность программы очень похожа на Rkhunter.

Программа состоит из нескольких отдельных утилит:

  • chkrootkit - скрипт для проверки системы;
  • ifpromisc - сканирование интерфейсов на предмет неразборчивого режима;
  • chklastlog - проверить лог lastlog на предмет удаления записей;
  • chkwtmp - проверка лога wtmp на предмет удаления записей;
  • chkproc - поиск троянских программ и скрытых файлов в подсистеме proc.

Установить программу в Ubuntu можно с помощью команды:

sudo apt install chkrootkit

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

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

yum install gcc-c++ glibc-static

Команды выполняются без параметров. Достаточно запустить нужную утилиту чтобы найти руткиты linux:


Лог программы немного похож на предыдущую, поэтому мы не будем его отдельно разбирать. Здесь сначала выполняется проверка системных команд, более ограниченная чем в rkhunter, затем поиск руткитов linux.

Аналогично вы можете выполнить другую утилиту, чтобы проверить на модификацию lastlog:

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

Выводы

Lynis – это открытое приложение для аудита безопасности на основе хоста, которое может оценить профиль безопасности и средства защиты Linux и других UNIX-подобных операционных систем.

Данное руководство поможет установить Lynis и провести аудит безопасности на сервере Ubuntu 16.04. Ознакомившись с результатом, вы сможете убрать тесты, которые не соответствуют потребностям сервера.

Приложение Lynis не настраивает безопасность системы автоматически, оно вносит предложения и предлагает подсказки, с помощью которых вы можете самостоятельно защитить систему. Следовательно, в дальнейшем вам понадобятся базовые знания о безопасности Linux. Также необходимо ознакомиться с сервисами машины, на которой вы планируете проводить аудит: с веб-серверами, базами данных и другими сервисами, которые Lynis будет сканировать по умолчанию. Это поможет вам определить те аспекты, которые вы сможете спокойно удалить из проверки.

Примечание: Проведение аудита безопасности требует времени и терпения. Возможно, лучше прочитать статью целиком, прежде чем устанавливать Lynis и начинать аудит сервера.

Требования

  • Сервер Ubuntu 16.04.
  • Пользователь с доступом к sudo.
  • Настроенный брандмауэр.

Все необходимые инструкции вы найдёте здесь.

1: Установка Lynis

Существует несколько способов установить Lynis. Можно скомпилировать приложение из исходного кода, загрузить и скопировать бинарный файл в соответствующее место в системе или установить его с помощью диспетчера пакетов. Менеджер пакетов – это самый простой способ установки Lynis (и дальнейшего обновления приложения), поэтому в руководстве используется этот метод.

Однако репозиторий Ubuntu 16.04 предоставляет несколько устаревшую версию приложения. Потому вместо стандартного репозитория системы рекомендуется использовать официальный репозиторий Lynis, чтобы загрузить более новую версию приложения.

Status: install ok installed

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

Теперь можно приступать к установке Lynis. Сначала добавьте ключ репозитория:

Если ключ добавлен успешно, вы увидите:

Executing: /tmp/tmp.AnVzwb6Mq8/gpg.1.sh --keyserver
keyserver.ubuntu.com
--recv-keys
C80E383C3DE9F082E01391A0366C67DE91CA5D5F
gpg: requesting key 91CA5D5F from hkp server keyserver.ubuntu.com
gpg: key 91CA5D5F: public key "CISOfy Software (signed software packages) <software@cisofy.com>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)

Добавьте репозиторий Lynis в список доступных репозиториев пакетного менеджера:

sudo add-apt-repository "deb [arch=amd64] https://packages.cisofy.com/community/lynis/deb/ xenial main"

Обновите индекс пакетов:

sudo apt-get update

sudo apt-get install lynis

После этого у вас появится доступ к командам и подкомандам lynis.

2: Проведение аудита безопасности

Теперь вы можете провести аудит безопасности системы с помощью Lynis. Для начала просмотрите список доступных функций Lynis.

lynis show commands
Commands:
lynis audit
lynis configure
lynis show
lynis update
lynis upload-only

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

Перед выполнением аудита всегда полезно проверить, доступна ли новая версия Lynis: так вы получите доступ к новым функциям и соберёте больше информации. Выполните следующую команду, чтобы проверить наличие обновлений:

lynis update info

Если вы получили такой вывод, вы используете последнюю версию Lynis

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

lynis update check

Она вернёт одну строку:

Если версия требует обновления, используйте диспетчер пакетов.

Для запуска аудита системы используйте команду lynis audit system. Вы можете запустить Lynis в привилегированном и непривилегированном (pentest) режиме. В последнем режиме пропускаются некоторые тесты, требующие привилегий суперпользователя. С помощью sudo вы можете запустить аудит в привилегированном режиме. Выполните эту команду для запуска первой проверки:

sudo lynis audit system

После аутентификации Lynis проведет тесты и выведет результаты на экран. Аудит Lynis обычно занимает около минуты.

Во время аудита приложение Lynis проводит несколько тестов, разделенных на категории. После каждого этапа в стандартный вывод (на экран) выводятся результаты тестов, отладочная информация и предложения по защите системы. Более подробная информация записывается в /var/log/lynis.log, а данные отчета сохраняются в /var/log/lynis-report.dat. Отчеты содержат общую информацию о сервере и самом приложении, поэтому особое внимание лучше уделить лог-файлу. Лог очищается (перезаписывается) при каждой проверке, потому результаты предыдущей проверки не сохраняются.

По завершении проверки вы можете просмотреть результаты, предупреждения и предложения, а затем воспользоваться советами Lynis.

Давайте ознакомимся с результатами аудита Lynis.

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

Первая важная часть вывода аудита Lynis имеет чисто информационный характер. Она сообщает результат каждого теста по категориям в форме ключевых слов: NONE, WEAK, DONE, FOUND, NOT_FOUND, OK и WARNING.

[+] Boot and services
------------------------------------
- Service Manager [ systemd ] - Checking UEFI boot [ DISABLED ] - Checking presence GRUB [ OK ] - Checking presence GRUB2 [ FOUND ] - Checking for password protection [ WARNING ] ..
[+] File systems
------------------------------------
- Checking mount points
- Checking /home mount point [ SUGGESTION ] - Checking /tmp mount point [ SUGGESTION ] - Checking /var mount point [ OK ] - Query swap partitions (fstab) [ NONE ] - Testing swap partitions [ OK ] - Testing /proc mount (hidepid) [ SUGGESTION ] - Checking for old files in /tmp [ OK ] - Checking /tmp sticky bit [ OK ] - ACL support root file system [ ENABLED ] - Mount options of / [ OK ] - Checking Locate database [ FOUND ] - Disable kernel support of some filesystems
- Discovered kernel modules: udf
.
[+] Hardening
------------------------------------
- Installed compiler(s) [ FOUND ] - Installed malware scanner [ NOT FOUND ] - Installed malware scanner [ NOT FOUND ] .
[+] Printers and Spools
------------------------------------
- Checking cups daemon [ NOT FOUND ] - Checking lp daemon [ NOT RUNNING ]

Lynis «из коробки» выполняет более 200 тестов, однако далеко не все они необходимы каждой системе. Но как определить, какие тесты необходимы, а какие нет? Здесь вам и пригодятся знания о том, что должно выполняться на сервере. Например, если вы проверите типичный результат аудита Lynis, вы обнаружите два теста в категории Printers and Spools:

[+] Printers and Spools
------------------------------------
- Checking cups daemon [ NOT FOUND ] - Checking lp daemon [ NOT RUNNING ]

Вы действительно используете сервер печати на Ubuntu 16.04? Если нет, вам не нужно проводить этот тест.

К сожалению, другие тесты, которые можно исключить из аудита, не всегда столь очевидны. Для примера можно рассмотреть этот раздел:

[+] Insecure services
------------------------------------
- Checking inetd status [ NOT ACTIVE ]

Этот вывод говорит, что демон inetd неактивен, но на сервере Ubuntu 16.04 это нормально, потому что система Ubuntu использует вместо него systemd. Зная это, вы можете исключить этот тест из аудита Lynis.

Ознакомившись со всеми результатами аудита, вы получите довольно длинный список лишних и ненужных тестов. С его помощью вы можете отладить настройки Lynis и исключить все эти тесты из будущих аудитов. Подробнее об этом – в разделе 5.

В следующих разделах подробно рассматриваются различные части и фрагменты результата аудита Lynis.

3: Предупреждения Lynis

Результаты аудита в Lynis не всегда содержат раздел предупреждений, но если это случилось, вы должны знать, как устранить возникшие проблемы.

Предупреждения перечислены после результатов. Каждое предупреждение начинается с текста предупреждения, рядом в скобках указывается тест, который его сгенерировал. Следующая строка содержит предлагаемое решение проблемы, если оно существует. Последняя строка – это URL-адрес, по которому вы сможете найти дополнительные рекомендации по устранению возникшей проблемы. К сожалению, URL-адрес не всегда предоставляет полезные инструкции, поэтому иногда вам придётся самостоятельно проводить дополнительные исследования.

Рассмотрим следующий пример предупреждений:

Первое предупреждение сообщает о том, что приложение Lynis необходимо обновить. Это также означает, что аудит проведён с помощью устаревшей версии Lynis, поэтому результаты могут быть неполными. Этого можно было бы избежать, если бы перед запуском аудита была проведена проверка обновлений (как показано в разделе 3). Устранить ошибку очень просто: достаточно обновить Lynis.

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

Если какое-либо предупреждение или результат тестирования вызывает у вас сомнения, вы можете получить больше информации, запросив id теста Lynis. Эта команда использует следующий формат:

sudo lynis show details test-id

Например, чтобы получить больше информации о втором предупреждении, id которого KRNL-5830, нужно запустить:

sudo lynis show details KRNL-5830

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

2017-03-21 01:50:03 Performing test ID KRNL-5830 (Checking if system is running on the latest installed kernel)
2017-03-21 01:50:04 Test: Checking presence /var/run/reboot-required.pkgs
2017-03-21 01:50:04 Result: file /var/run/reboot-required.pkgs exists
2017-03-21 01:50:04 Result: reboot is needed, related to 5 packages
2017-03-21 01:50:04 Package: 5
2017-03-21 01:50:04 Result: /boot exists, performing more tests from here
2017-03-21 01:50:04 Result: /boot/vmlinuz not on disk, trying to find /boot/vmlinuz*
2017-03-21 01:50:04 Result: using 4.4.0.64 as my kernel version (stripped)
2017-03-21 01:50:04 Result: found /boot/vmlinuz-4.4.0-64-generic
2017-03-21 01:50:04 Result: found /boot/vmlinuz-4.4.0-65-generic
2017-03-21 01:50:04 Result: found /boot/vmlinuz-4.4.0-66-generic
2017-03-21 01:50:04 Action: checking relevant kernels
2017-03-21 01:50:04 Output: 4.4.0.64 4.4.0.65 4.4.0.66
2017-03-21 01:50:04 Result: Found 4.4.0.64 (= our kernel)
2017-03-21 01:50:04 Result: found a kernel (4.4.0.65) later than running one (4.4.0.64)
2017-03-21 01:50:04 Result: Found 4.4.0.65
2017-03-21 01:50:04 Result: found a kernel (4.4.0.66) later than running one (4.4.0.64)
2017-03-21 01:50:04 Result: Found 4.4.0.66
2017-03-21 01:50:04 Warning: Reboot of system is most likely needed [test:KRNL-5830] [details:] [solution:text:reboot] 2017-03-21 01:50:04 Hardening: assigned partial number of hardening points (0 of 5). Currently having 7 points (out of 14)
2017-03-21 01:50:04 Checking permissions of /usr/share/lynis/include/tests_memory_processes
2017-03-21 01:50:04 File permissions are OK
2017-03-21 01:50:04 ===---------------------------------------------------------------===

Третье предупреждение (с id PKGS-7392) сообщает об уязвимых пакетах. Запросите подробности:

sudo lynis show details PKGS-7392

Вывод даёт больше информации о пакетах, которые необходимо обновить:

2017-03-21 01:39:53 Performing test ID PKGS-7392 (Check for Debian/Ubuntu security updates)
2017-03-21 01:39:53 Action: updating repository with apt-get
2017-03-21 01:40:03 Result: apt-get finished
2017-03-21 01:40:03 Test: Checking if /usr/lib/update-notifier/apt-check exists
2017-03-21 01:40:03 Result: found /usr/lib/update-notifier/apt-check
2017-03-21 01:40:03 Test: checking if any of the updates contain security updates
2017-03-21 01:40:04 Result: found 7 security updates via apt-check
2017-03-21 01:40:04 Hardening: assigned partial number of hardening points (0 of 25). Currently having 96 points (out of 149)
2017-03-21 01:40:05 Result: found vulnerable package(s) via apt-get (-security channel)
2017-03-21 01:40:05 Found vulnerable package: libc-bin
2017-03-21 01:40:05 Found vulnerable package: libc-dev-bin
2017-03-21 01:40:05 Found vulnerable package: libc6
2017-03-21 01:40:05 Found vulnerable package: libc6-dev
2017-03-21 01:40:05 Found vulnerable package: libfreetype6
2017-03-21 01:40:05 Found vulnerable package: locales
2017-03-21 01:40:05 Found vulnerable package: multiarch-support
2017-03-21 01:40:05 Warning: Found one or more vulnerable packages. [test:PKGS-7392] [details:-] [solution:-] 2017-03-21 01:40:05 Suggestion: Update your system with apt-get update, apt-get upgrade, apt-get dist-upgrade and/or unattended-upgrades [test:PKGS-7392] [details:-] [solution:-] 2017-03-21 01:40:05 ===---------------------------------------------------------------===

Решением подобной проблемы является обновление базы данных пакетов и обновление системы.

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

4: Рекомендации Lynis по безопасности системы

После раздела предупреждений вы увидите ряд предложений, которые, если они будут реализованы, могут сделать ваш сервер менее уязвимым к атакам и вредоносному ПО. В этом разделе вы узнаете, как реализовать некоторые предложения, сгенерированные Lynis после аудита сервера Ubuntu 16.04.

После текста совета идёт ID теста. В зависимости от теста, в следующей строке будут указаны изменения, которые рекомендуется внести в конфигурационный файл уязвимого сервиса. Последняя строка – это URL-адрес, по которому вы можете найти дополнительную информацию по теме.

Рассмотрим такой результат аудита Lynis, содержащий предложения по защите SSH:

В зависимости от среды все эти предложения можно реализовать без риска для безопасности. Однако вы должны знать, что означает каждая директива. Поскольку рекомендации относятся к серверу SSH, все изменения нужно внести в конфигурационный файл SSH, /etc/ssh/sshd_config. Если у вас есть какие-либо сомнения в отношении рекомендаций Lynis, откройте мануал директивы с помощью команды man sshd_config. Также можно поискать информацию в Интернете.

К примеру, Lynis предлагает изменить стандартный SSH-порт 22. Если вы хотите внести это изменение, сначала проверьте состояние брандмауэра; если он включен, обязательно добавьте правило для доступа к SSH по новому порту.

Больше информации о предложении Lynis можно получить с помощью id теста и следующей команды:

sudo lynis show details test-id

Иногда Lynis требует установить дополнительное программное обеспечение на сервер. Например:

Однако просто установить OSSEC недостаточно, чтобы пройти этот тест. Для этого можно установить chkrootkit. Это еще один случай, когда вам придётся самостоятельно проводить дополнительные исследования.

Рассмотрим другой пример; это предложение, которое выдаёт тест целостности файла.

В этом предложении не упоминается ранее предложенный сервис OSSEC. Но установки OSSEC будет достаточно, чтобы пройти тест при последующем аудите. Это связано с тем, что OSSEC – довольно хороший инструмент для мониторинга целостности файлов.

Вы можете игнорировать некоторые предложения. Вот пример:

Основные файловые системы Linux (/home, /tmp, /var и /usr) монтировались в отдельный раздел, чтобы минимизировать воздействие на сервер, если у них заканчивается свободное дисковое пространство. Но сегодня этот подход редко используется, особенно на облачных серверах. Теперь эти файловые системы просто монтируются как каталог в корневом разделе. Но если вы выполняете аудит Lynis в такой системе, вы получите пару предложений по оптимизации файловых систем (как показано выше). Эти рекомендации можно проигнорировать и просто исключить из аудита Lynis тест, вызвавший их.

5: Пользовательская настройка аудита Lynis

Этот раздел научит вас создавать пользовательские списки тестов аудита Lynis и исключать ненужные тесты.

Профили, которые управляют аудитом, определяются в файлах с расширением .prf в каталоге /etc/lynis. Профиль по умолчанию называется default.prf. Не редактируйте этот профиль по умолчанию напрямую. Любые изменения, которые вы хотите внести в аудит, добавляются в файл custom.prf в том же каталоге.

Создайте файл /etc/lynis/custom.prf:

sudo nano /etc/lynis/custom.prf

В этом файле можно определить список тестов, которые нужно исключить из аудита Lynis. Например:

Чтобы исключить тест, используйте директиву skip-test и укажите ID теста. Добавьте в файл custom.prf такие строки:

Сохраните и закройте файл.

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

Также файл /etc/lynis/custom.prf позволяет переопределять параметры стандартного профиля. Для этого нужно скопировать параметр из /etc/lynis/default.prf в /etc/lynis/custom.prf и присвоить ему новое значение. Однако такая необходимость возникает очень редко.

6: Индекс безопасности системы

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

Этот результат показывает количество пройденных тестов и индекс безопасности системы – это число, с помощью которого Lynis оценивает уровень безопасности сервера. Индекс безопасности изменяется в зависимости от количества исправленных предупреждений и реализованных рекомендаций Lynis. Приведённый выше пример, в котором индекс безопасности системы равен 64, был получен после первого аудита Lynis на новом сервере Ubuntu 16.04.

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

Индекс безопасности – не точная оценка защиты сервера, а всего лишь показатель того, насколько хорошо настроен сервер согласно результатам тестов Lynis. Чем выше индекс, тем лучше.

Заключение

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

Аудит займет немного больше времени и сил, но безопасность машины стоит усилий.

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

Читайте также: