Установка Chkrootkit на Debian 13, 12, 11: подробное руководство

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 Частые ложные срабатывания

ТестТипичное сообщениеВероятная причина
bindshellINFECTED (PORTS: 31337)Инструменты безопасности
(PortSentry), которые слушают
«подозрительные» порты
suckitWarning: /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.

Немедленные действия:

  1. Отключите систему от сети.
  2. Смонтируйте систему с Live USB и запустите chkrootkit с опцией -r:
   chkrootkit -r /mnt
  1. Переустановите подозрительные пакеты.
  2. Рассмотрите полную переустановку системы.

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 для автоматических обновлений безопасности