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 или systemd timer.
💡 В этом руководстве вы установите Chkrootkit на Debian двумя способами: через APT (рекомендованный) и сборкой из исходников (если нужны новейшие сигнатуры). Вы также узнаете, как запускать сканирование, интерпретировать результаты (в том числе ложные срабатывания), настроить автоматический ежедневный запуск и решать типичные проблемы.
В этой статье вы узнаете:
- Как установить Chkrootkit через APT
- Как собрать Chkrootkit из исходников (актуальная версия с проверкой MD5)
- Как запустить полное сканирование и интерпретировать результаты
- Как отличить реальную угрозу от ложного срабатывания
- Как настроить ежедневный автоматический запуск через cron или systemd timer
- Как обновить 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 Проверка версии
sudo /usr/sbin/chkrootkit -V
💡 Важно: Бинарный файл находится в /usr/sbin/chkrootkit. Если команда chkrootkit -V не найдена, используйте sudo /usr/sbin/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 Проверка файлов, установленных пакетом
dpkg -L chkrootkit | grep -E '/usr/sbin/chkrootkit|/etc/chkrootkit|/etc/cron.daily/chkrootkit|chkrootkit\.(service|timer)'
Что делает: Показывает, какие файлы установил пакет (конфигурация, скрипты cron, systemd-сервисы).
3.4 (Опционально) Настройка ежедневного сканирования
На 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 Скачивание и проверка MD5
cd /tmp
wget ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
wget ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.md5
md5sum -c chkrootkit.md5
✅ Ожидаемый вывод:
chkrootkit.tar.gz: OK
Что делает: Проверяет целостность скачанного архива. Если контрольная сумма не совпадает — файл повреждён.
4.3 Распаковка и сборка
tar -xzf chkrootkit.tar.gz
cd chkrootkit-*/
make sense
Что делает: Распаковывает архив и компилирует Chkrootkit.
4.4 Установка в систему
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.5 Проверка версии
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 -n
Что делает: Пропускает NFS и другие сетевые файловые системы (ускоряет сканирование на серверах с сетевыми монтированиями).
5.4 Пропуск определённых типов файловых систем (Debian 13)
sudo chkrootkit -T nfs
sudo chkrootkit -T nfs4
Что делает: Пропускает указанный тип файловой системы (например, 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. 🤖 Настройка ежедневного автоматического сканирования
7.1 Для APT-установки (cron)
Автоматическое сканирование уже настроено через /etc/cron.daily/chkrootkit. Результаты пишутся в /var/log/syslog.
Проверка логов:
sudo grep chkrootkit /var/log/syslog
7.2 Проверка systemd-таймера (Debian 12 и 13)
На Debian 12 и 13 также может быть настроен systemd-таймер:
systemctl list-unit-files 'chkrootkit*' --no-pager
systemctl list-timers 'chkrootkit*' --all --no-pager
Если таймер активен, можно проверить его логи:
sudo journalctl -u chkrootkit.service -n 50 --no-pager
7.3 Для 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-сборки (скрипт с проверкой MD5)
Создайте скрипт для автоматического обновления:
nano ~/update-chkrootkit.sh
Добавьте:
#!/bin/bash
set -euo pipefail
INSTALL_DIR="/usr/local/share/chkrootkit"
SYMLINK="/usr/local/bin/chkrootkit"
BUILD_DIR="/tmp/chkrootkit-update-$$"
# Проверка установленных инструментов
for cmd in wget make cc; do
if ! command -v "$cmd" &>/dev/null; then
echo "Ошибка: $cmd не установлен. Установите build-essential wget"
exit 1
fi
done
CURRENT=$("$SYMLINK" -V 2>/dev/null | awk '{print $NF}' || echo "не установлен")
echo "Текущая версия: $CURRENT"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
wget -q ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
wget -q ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.md5
echo "Проверка контрольной суммы MD5..."
md5sum -c chkrootkit.md5
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 Ошибка: chkrootkit command not found после APT-установки
Симптом: chkrootkit -V возвращает command not found.
Причина: Бинарный файл находится в /usr/sbin, который может отсутствовать в PATH обычного пользователя.
Решение: Используйте полный путь:
sudo /usr/sbin/chkrootkit -V
9.2 Ошибка компиляции: 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.3 Ложное срабатывание bindshell (порты 31337, 1524)
Симптом: В выводе sudo chkrootkit видна строка Checking 'bindshell'... INFECTED (PORTS: 31337).
Причина: Инструменты безопасности (PortSentry) или другие программы, слушающие эти порты.
Решение: Проверьте, какой процесс слушает порт:
sudo ss -tlnp | grep 31337
Если это ваш инструмент безопасности — игнорируйте. Для проверки целостности системы используйте debsums -c.
9.4 Ложное срабатывание suckit (init INFECTED)
Симптом: Checking 'suckit'... Warning: /sbin/init INFECTED
Причина: Кратковременные процессы, созданные во время сканирования.
Решение: Это ложное срабатывание. Проверьте debsums -c, чтобы убедиться, что файлы не изменены.
9.5 Обнаружено реальное заражение (несколько бинарных файлов помечены 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)
- [ ]
sudo /usr/sbin/chkrootkit -V(для APT) илиchkrootkit -V(для source) показывает версию - [ ]
dpkg -L chkrootkit(для APT) показывает установленные файлы - [ ]
sudo chkrootkit -qне показывает (или показывает понятные) проблемы - [ ] Настроен ежедневный запуск через cron или systemd timer
- [ ] (Для source-сборки) Скрипт обновления работает (
~/update-chkrootkit.sh) - [ ] Проверка через
debsums -c(при подозрении) не показывает изменённых файлов
Заключение
Вы установили Chkrootkit на Debian. Если вы выбрали APT — получили стабильную версию, которая будет обновляться вместе с системой. Если собрали из исходников — получили детекцию для XZ Backdoor, Bootkitty и процессов из памяти, с проверкой MD5 для безопасности. Главное, что нужно запомнить: Chkrootkit выдаёт ложные срабатывания, особенно для bindshell и suckit. Всегда проверяйте подозрительные результаты через debsums -c. Для комплексной безопасности используйте Chkrootkit вместе с Fail2Ban, UFW и регулярными обновлениями системы. На Debian 12 и 13 также полезно проверить systemd-таймер для автоматических сканов.
Что дальше:
- Настройте ежедневный запуск через cron или systemd timer (раздел 7)
- Установите
rkhunterдля дополнительной проверки - Настройте Fail2Ban для защиты от брутфорс-атак
- Настройте
unattended-upgradesдля автоматических обновлений безопасности
Связанные статьи: