Сканирование на вредоносное ПО и руткиты: rkhunter и ClamAV
Защитите Linux-сервер от вредоносного ПО и руткитов. Установка rkhunter и ClamAV, настройка сканирования, интерпретация результатов, планирование сканирований и реагирование на инциденты.
Содержание
Сканирование на вредоносное ПО и руткиты: rkhunter и ClamAV
Хотя Linux-серверы атакуются реже, чем Windows-системы, они не застрахованы от атак вредоносного ПО и руткитов. Регулярное сканирование безопасности критически важно, особенно для серверов, доступных из интернета. В этом руководстве вы создадите комплексную инфраструктуру сканирования безопасности с использованием rkhunter и ClamAV.
Что такое rkhunter?
rkhunter (Rootkit Hunter) — это инструмент безопасности с открытым исходным кодом для обнаружения руткитов, бэкдоров и локальных эксплойтов в Linux-системах. Он проверяет хэш-значения, права доступа и известные сигнатуры руткитов системных файлов.
Установка rkhunter
# Ubuntu/Debian
sudo apt update
sudo apt install rkhunter -y
# CentOS/AlmaLinux/Rocky Linux
sudo dnf install rkhunter -y
# или из репозитория EPEL:
sudo dnf install epel-release -y
sudo dnf install rkhunter -y
Обновление базы данных rkhunter
# Обновить базу данных сигнатур
sudo rkhunter --update
# Записать начальные хэш-значения системных файлов
# Выполните это на чистой системе!
sudo rkhunter --propupd
Запускайте --propupd только когда уверены, что система чистая. Эта команда сохраняет текущие хэши файлов как эталонные значения.
Запуск сканирования rkhunter
# Полное сканирование системы
sudo rkhunter --check
# Неинтерактивный режим (для cron)
sudo rkhunter --check --skip-keypress
# Показывать только предупреждения
sudo rkhunter --check --rwo
# Подробный вывод
sudo rkhunter --check --verbose-logging
# Просмотр файла журнала
sudo cat /var/log/rkhunter.log
Конфигурация rkhunter
sudo nano /etc/rkhunter.conf
# /etc/rkhunter.conf важные настройки
# Уведомление по электронной почте
MAIL-ON-WARNING=admin@example.com
MAIL_CMD=mail -s "[rkhunter] Предупреждение - $(hostname)"
# Ежедневное обновление
AUTO_X_DETECT=1
UPDATE_MIRRORS=1
MIRRORS_MODE=0
# Белый список - известные безопасные файлы
SCRIPTWHITELIST=/usr/bin/egrep
SCRIPTWHITELIST=/usr/bin/fgrep
SCRIPTWHITELIST=/usr/bin/which
# Проверка скрытых директорий
ALLOW_HIDDEN_SYS_FILELIST=0
# Проверка SSH root-входа
ALLOW_SSH_ROOT_USER=no
ALLOW_SSH_PROT_V1=0
Интерпретация результатов rkhunter
Вывод rkhunter показывает три состояния:
- OK (Зелёный): Файл или настройка безопасны
- Warning (Жёлтый): Подозрительное состояние, требуется ручная проверка
- Not found (Белый): Инструмент или файл отсутствует в системе
# Фильтровать только предупреждения
sudo grep -i warning /var/log/rkhunter.log
# Просмотр сводного отчёта
sudo tail -50 /var/log/rkhunter.log
Некоторые предупреждения могут быть ложными срабатываниями. Пользовательские скомпилированные инструменты или изменённые системные файлы могут вызывать предупреждения. Проверяйте каждое предупреждение вручную.
Что такое ClamAV?
ClamAV — антивирусный движок с открытым исходным кодом. Широко используется на Linux-серверах для сканирования файлов, проверки вложений электронной почты и сканирования веб-контента.
Установка ClamAV
# Ubuntu/Debian
sudo apt update
sudo apt install clamav clamav-daemon -y
# CentOS/AlmaLinux
sudo dnf install clamav clamd clamav-update -y
Обновление вирусной базы данных
# Остановить службу ClamAV (для обновления)
sudo systemctl stop clamav-freshclam
# Обновить базу данных вручную
sudo freshclam
# Перезапустить службу
sudo systemctl start clamav-freshclam
sudo systemctl enable clamav-freshclam
Сканирование с ClamAV
# Сканирование одной директории
sudo clamscan -r /home
# Полное сканирование системы (может быть медленным)
sudo clamscan -r / --exclude-dir="^/sys" --exclude-dir="^/proc" --exclude-dir="^/dev"
# Показывать только заражённые файлы
sudo clamscan -r /var/www --infected
# Переместить заражённые файлы в карантин
sudo clamscan -r /home --infected --move=/quarantine
# Сохранить результаты сканирования в файл
sudo clamscan -r / --log=/var/log/clamav-scan.log --exclude-dir="^/sys" --exclude-dir="^/proc"
Настройка запланированных сканирований
Автоматизированное сканирование с Cron
# Создать файл cron
sudo nano /etc/cron.d/security-scan
# /etc/cron.d/security-scan
# Сканирование rkhunter каждую ночь в 02:00
0 2 * * * root /usr/bin/rkhunter --check --skip-keypress --report-warnings-only 2>&1 | mail -s "[rkhunter] $(hostname) Ежедневный отчёт" admin@example.com
# Полное сканирование ClamAV каждое воскресенье в 03:00
0 3 * * 0 root /usr/bin/clamscan -r / --exclude-dir="^/sys" --exclude-dir="^/proc" --exclude-dir="^/dev" --infected --log=/var/log/clamav-weekly.log
# Ежедневное обновление базы данных ClamAV
0 1 * * * root /usr/bin/freshclam --quiet
Реагирование на инциденты
Если при сканировании обнаружена угроза:
1. Изолировать систему
# Проверить сетевые соединения
sudo ss -tlnp
# Найти подозрительные соединения
sudo ss -anp | grep ESTABLISHED
# При необходимости ограничить сетевой доступ
sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow ssh # Сохранить SSH-доступ
2. Собрать доказательства
# Сохранить запущенные процессы
ps aux > /tmp/processes_$(date +%Y%m%d).txt
# Найти недавно изменённые файлы
find / -mtime -1 -type f 2>/dev/null | grep -v proc | grep -v sys
3. Очистка и восстановление
# Поместить подозрительные файлы в карантин
mkdir -p /quarantine
mv /path/to/suspicious/file /quarantine/
# Проверить системные файлы
sudo debsums -c # Debian/Ubuntu
sudo rpm -Va # CentOS/RHEL
При обнаружении серьёзного заражения руткитом самым безопасным решением является переустановка сервера с нуля. Поскольку руткиты могут изменять системные инструменты, очистка не всегда надёжна.
Заключение
Регулярное сканирование на вредоносное ПО и руткиты является фундаментальным компонентом безопасности сервера. Совместное использование rkhunter и ClamAV создаёт комплексный уровень защиты. Запланированные сканирования и уведомления по электронной почте позволяют обнаруживать угрозы безопасности на ранних стадиях.
Связанные статьи
Настройка Fail2Ban: Защита SSH от брутфорс-атак
Защитите сервер от SSH брутфорс-атак с помощью Fail2Ban. Установка, настройка jail.local, джейлы для Nginx/Apache, белый список IP, мониторинг блокировок и email-уведомления.
Настройка VPN-сервера WireGuard: пошаговое руководство
Настройте VPN-сервер WireGuard: генерация ключей, конфигурация сервера и клиента, IP-пересылка, правила брандмауэра и настройка клиентов Windows/Linux/Android.
Сетевая безопасность Zero Trust: руководство по базовой настройке
Принципы сетевой безопасности Zero Trust и практическая реализация: никогда не доверяй всегда проверяй, микросегментация, доступ на основе идентификации и реализация с существующими инструментами Linux.