Chkrootkit (Check Rootkit) — это инструмент для поиска руткитов, бэкдоров и локальных эксплойтов. Он проверяет системные бинарные файлы (ls, ps, netstat), сетевые интерфейсы (режим promiscuous) и лог-файлы на наличие известных сигнатур руткитов. Chkrootkit полезен для обнаружения скрытых процессов, скрытых файлов и модифицированных системных утилит. Главные сложности для новичка: нужно понимать, что такое ложные срабатывания (false positives), особенно для тестов bindshell (порты 31337, 1524) и suckit (процесс init), и уметь их проверять через debsums. Также важно знать, что версия из стандартного репозитория Debian (0.58b для Debian 13) может не содержать детекции для XZ Backdoor и Bootkitty — для этого нужна сборка из исходников (версия 0.59). Кроме того, инструмент полезно настроить на ежедневный автоматический запуск через cron.
💡 В этом руководстве вы установите Chkrootkit на Debian двумя способами: через APT (рекомендованный) и сборкой из исходников (если нужны новейшие сигнатуры). Вы также узнаете, как запускать сканирование, интерпретировать результаты (в том числе ложные срабатывания), настроить автоматический ежедневный запуск и решать типичные проблемы.
В этой статье вы узнаете:
- Как установить Chkrootkit через APT
- Как собрать Chkrootkit из исходников (актуальная версия)
- Как запустить полное сканирование и интерпретировать результаты
- Как отличить реальную угрозу от ложного срабатывания
- Как настроить ежедневный автоматический запуск через cron
- Как обновить source-сборку
- Как решить типичные проблемы: ошибки компиляции, ложные срабатывания
Для кого: системные администраторы, специалисты по безопасности, а также все, кто хочет регулярно проверять свои серверы на наличие руткитов на Debian 11, 12 или 13.
1. 🔧 Предварительные требования
Перед установкой убедитесь, что:
- У вас установлена Debian 11, 12 или 13
- Подключение к интернету стабильно
- У вас есть права sudo
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.
Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.
✅ Если выводит root — всё в порядке, можете продолжать.
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
1.1 Обновление системы
Перед установкой всегда обновляйте список пакетов.
sudo apt update && sudo apt upgrade -y
Что делает:
sudo— права суперпользователяapt update— обновляет список доступных пакетов из репозиториев&&— выполняет следующую команду только если предыдущая успешнаapt upgrade -y— обновляет все установленные пакеты до последних версий
Зачем: Это стандартная практика безопасности перед установкой нового ПО.
2. 📊 Сравнение способов установки Chkrootkit
В Debian есть два основных способа установки Chkrootkit. Вот их сравнение:
| Метод | Откуда | Версия | Обновления | Плюсы | Минусы |
|---|---|---|---|---|---|
| APT рекомендовано | Репозитории Debian | Debian 13: 0.58b, Debian 12: 0.57, Debian 11: 0.54 | Автоматически через apt upgrade | Простота, автоматические обновления | Может не включать детекцию для новых угроз (XZ Backdoor, Bootkitty) |
| Сборка из исходников | Официальный FTP | 0.59 (актуальная) | Вручную | Самые свежие сигнатуры, обнаружение XZ Backdoor и Bootkitty | Требует установки инструментов сборки, ручное обновление |
💡 Рекомендация: Для большинства пользователей подойдёт APT. Если вам нужна детекция самых свежих угроз (XZ Backdoor, Bootkitty, процессы, выполняющиеся из памяти), используйте сборку из исходников.
3. 📦 Способ 1: Установка Chkrootkit через APT (рекомендованный)
Этот способ подходит для большинства пользователей. Вы получаете стабильную версию, протестированную для вашего выпуска Debian.
3.1 Установка пакета
sudo apt install chkrootkit -y
Что делает: Устанавливает Chkrootkit из официальных репозиториев Debian.
3.2 Проверка версии
chkrootkit -V
✅ Ожидаемый вывод в терминале (Debian 13):
chkrootkit version 0.58b
Какие версии в разных Debian:
| Версия Debian | Версия Chkrootkit |
|---|---|
| Debian 13 (Trixie) | 0.58b |
| Debian 12 (Bookworm) | 0.57 |
| Debian 11 (Bullseye) | 0.54 |
3.3 (Опционально) Настройка ежедневного сканирования
На Debian 12 и 13 файл конфигурации находится в /etc/chkrootkit/chkrootkit.conf. Убедитесь, что ежедневное сканирование включено:
sudo nano /etc/chkrootkit/chkrootkit.conf
Найдите и установите:
RUN_DAILY="true"
На Debian 11 файла конфигурации нет, но скрипт /etc/cron.daily/chkrootkit уже существует и запускается ежедневно.
4. 🔧 Способ 2: Сборка Chkrootkit из исходников (актуальная версия)
Этот способ подходит, если вам нужна версия 0.59 с детекцией XZ Backdoor, Bootkitty и процессов, выполняющихся из памяти.
4.1 Установка инструментов сборки
sudo apt install build-essential wget -y
Что делает: Устанавливает компилятор, утилиты и wget для скачивания.
4.2 Скачивание и сборка
cd /tmp
wget ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
tar -xzf chkrootkit.tar.gz
cd chkrootkit-*/
make sense
Что делает: Скачивает последнюю версию с официального FTP, распаковывает и компилирует.
4.3 Установка в систему
sudo mkdir -p /usr/local/share/chkrootkit
sudo cp -r * /usr/local/share/chkrootkit/
sudo ln -sf /usr/local/share/chkrootkit/chkrootkit /usr/local/bin/chkrootkit
Что делает: Копирует файлы в /usr/local/share/chkrootkit и создаёт символическую ссылку в /usr/local/bin.
4.4 Проверка версии
chkrootkit -V
✅ Ожидаемый вывод в терминале:
chkrootkit version 0.59
5. 🛡️ Запуск сканирования и интерпретация результатов
5.1 Полное сканирование
sudo chkrootkit
Что делает: Запускает полную проверку системы.
✅ Ожидаемый вывод (чистая система):
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
...
5.2 Тихий режим (только проблемы)
sudo chkrootkit -q
Что делает: Выводит только строки с потенциальными проблемами. Если вывод пустой — всё хорошо.
5.3 Пропуск сетевых файловых систем
sudo chkrootkit -T
Что делает: Пропускает NFS и другие сетевые файловые системы (ускоряет сканирование).
6. ⚠️ Ложные срабатывания (false positives) и как их проверить
Chkrootkit иногда выдаёт ложные срабатывания. Это не ошибка, а особенность сигнатурного метода.
6.1 Частые ложные срабатывания
| Тест | Типичное сообщение | Вероятная причина |
|---|---|---|
bindshell | INFECTED (PORTS: 31337) | Инструменты безопасности (PortSentry), которые слушают «подозрительные» порты |
suckit | Warning: /sbin/init INFECTED | Кратковременные процессы, созданные во время сканирования |
suspicious files | .packlist, .cvsignore | Легитимные артефакты разработки |
6.2 Проверка через debsums
Чтобы проверить, не был ли изменён бинарный файл (например, ls), используйте debsums:
sudo apt install debsums -y
sudo debsums -c
Что делает: Проверяет, соответствуют ли установленные файлы оригинальным контрольным суммам из пакетов.
✅ Если вывод пустой — все файлы оригинальны, можно считать срабатывание ложным.
❌ Если вывод показывает изменённые файлы — требует немедленного расследования.
6.3 Просмотр деталей ложного срабатывания
sudo chkrootkit -x | more
Что делает: Показывает подробный вывод, включая строки, на которые ругнулся детектор.
7. 🤖 Настройка ежедневного автоматического сканирования
Для APT-установки (Debian 12/13)
Автоматическое сканирование уже настроено через /etc/cron.daily/chkrootkit. Результаты пишутся в /var/log/syslog.
Проверка логов:
sudo grep chkrootkit /var/log/syslog
Для source-сборки (создание cron-задания)
sudo crontab -e
Добавьте строку:
0 3 * * * /usr/local/bin/chkrootkit -q 2>&1 | tee -a /var/log/chkrootkit.log
Что делает: Запускает тихое сканирование каждый день в 3:00 и сохраняет результаты в /var/log/chkrootkit.log.
8. 🔄 Обновление source-сборки (скрипт)
Создайте скрипт для автоматического обновления:
nano ~/update-chkrootkit.sh
Добавьте:
#!/bin/bash
set -euo pipefail
for cmd in wget make cc; do
if ! command -v "$cmd" &>/dev/null; then
echo "Ошибка: $cmd не установлен. Установите build-essential wget"
exit 1
fi
done
INSTALL_DIR="/usr/local/share/chkrootkit"
SYMLINK="/usr/local/bin/chkrootkit"
BUILD_DIR="/tmp/chkrootkit-update-$$"
CURRENT=$("$SYMLINK" -V 2>/dev/null || echo "не установлен")
echo "Текущая версия: $CURRENT"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
wget -q ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
tar -xzf chkrootkit.tar.gz
cd chkrootkit-*/
LATEST=$(./chkrootkit -V 2>/dev/null | awk '{print $NF}')
echo "Последняя версия: $LATEST"
if [ "$CURRENT" = "$LATEST" ]; then
echo "Chkrootkit уже последней версии."
rm -rf "$BUILD_DIR"
exit 0
fi
read -rp "Обновить? (y/n) " CONFIRM
if [[ "$CONFIRM" != "y" ]]; then
echo "Отменено."
rm -rf "$BUILD_DIR"
exit 0
fi
make sense
sudo rm -rf "$INSTALL_DIR"
cd ..
sudo mv chkrootkit-*/ "$INSTALL_DIR"
sudo ln -sf "$INSTALL_DIR/chkrootkit" "$SYMLINK"
echo "Обновление завершено!"
$SYMLINK -V
rm -rf "$BUILD_DIR"
Сделайте скрипт исполняемым и запустите:
chmod +x ~/update-chkrootkit.sh
~/update-chkrootkit.sh
9. ⚠️ Решение типичных проблем
9.1 Ошибка компиляции: linux/sched.h: No such file or directory
Симптом: make sense выдаёт ошибку fatal error: linux/sched.h: No such file or directory.
Причина: Не установлены заголовочные файлы ядра.
Решение:
sudo apt install linux-headers-$(uname -r)
make sense
9.2 Ложное срабатывание bindshell (порты 31337, 1524)
Симптом: В выводе sudo chkrootkit видна строка Checking 'bindshell'... INFECTED (PORTS: 31337).
Причина: Инструменты безопасности (PortSentry) или другие программы, слушающие эти порты.
Решение: Проверьте, какой процесс слушает порт:
sudo ss -tlnp | grep 31337
Если это ваш инструмент безопасности — игнорируйте. Для проверки целостности системы используйте debsums -c.
9.3 Ложное срабатывание suckit (init INFECTED)
Симптом: Checking 'suckit'... Warning: /sbin/init INFECTED
Причина: Кратковременные процессы, созданные во время сканирования.
Решение: Это ложное срабатывание. Проверьте debsums -c, чтобы убедиться, что файлы не изменены.
9.4 Обнаружено реальное заражение (несколько бинарных файлов помечены INFECTED)
Симптом: Несколько основных утилит (ls, ps, netstat) помечены как INFECTED.
Немедленные действия:
- Отключите систему от сети.
- Смонтируйте систему с Live USB и запустите
chkrootkitс опцией-r:
chkrootkit -r /mnt
- Переустановите подозрительные пакеты.
- Рассмотрите полную переустановку системы.
10. ❌ Удаление Chkrootkit
Удаление APT-версии
sudo apt purge chkrootkit -y
sudo apt autoremove -y
Удаление source-сборки
sudo rm -rf /usr/local/share/chkrootkit
sudo rm -f /usr/local/bin/chkrootkit
Удаление cron-задания (если создавали)
sudo crontab -e
# Удалите строку с chkrootkit
Проверка удаления
chkrootkit -V
✅ Ожидаемый вывод: bash: chkrootkit: command not found
11. 📝 Чек-лист: всё готово к работе
- [ ] Система обновлена (
sudo apt update && sudo apt upgrade -y) - [ ] Выбран и выполнен один из способов установки (APT / Source)
- [ ]
chkrootkit -Vпоказывает версию - [ ]
sudo chkrootkit -qне показывает (или показывает понятные) проблемы - Настроен ежедневный запуск через cron
- [ ] (Для source-сборки) Скрипт обновления работает (
~/update-chkrootkit.sh)
Заключение
Вы установили Chkrootkit на Debian. Если вы выбрали APT — получили стабильную версию, которая будет обновляться вместе с системой. Если собрали из исходников — получили детекцию для XZ Backdoor, Bootkitty и процессов из памяти. Главное, что нужно запомнить: Chkrootkit выдаёт ложные срабатывания, особенно для bindshell и suckit. Всегда проверяйте подозрительные результаты через debsums -c. Для комплексной безопасности используйте Chkrootkit вместе с Fail2Ban, UFW и регулярными обновлениями системы.
Что дальше:
- Настройте ежедневный запуск через cron (раздел 7)
- Установите
rkhunterдля дополнительной проверки - Настройте Fail2Ban для защиты от брутфорс-атак
- Настройте unattended-upgrades для автоматических обновлений безопасности