Гид по технологиям

Установка и настройка Jailkit на Debian 9

• 7 min read • Серверы • Обновлено 23 Nov 2025
Установка и настройка Jailkit на Debian 9
Установка и настройка Jailkit на Debian 9

Кратко — TL;DR

Jailkit предоставляет набор утилит для изолирования пользователей и процессов с помощью chroot. В этой инструкции показано, как скачать, собрать и установить Jailkit на Debian 9 (Stretch), создать chroot-окружение в /jail, переместить в него пользователя и добавить в джейл необходимые команды и сервисы. Включены чек-листы, рекомендации по безопасности и отладке.

Иллюстрация: сервер Debian с окружением Jail

Это подробное руководство по установке и конфигурации Jailkit на сервере Debian 9 (Stretch). Jailkit — набор утилит, упрощающий создание chroot-окружений для ограничения доступа пользователей к файловой системе и выполнению только определённых команд. С помощью Jailkit легко автоматизировать создание chroot-shell, ограниченного shell или запуска демонов в джейле.

Jailkit часто применяется в сетевых устройствах безопасности, на серверах крупных организаций и провайдеров, а также у частных администраторов для изоляции sftp, shell и daemon-процессов.

Что нужно знать коротко

  • chroot: системный вызов, изолирующий видимую файловую систему процесса.
  • Jailkit: набор утилит (jk_init, jk_jailuser, jk_cp, jk_chrootlaunch и т. д.) для создания и управления chroot-окружениями.

1 Предварительная заметка

Инструкция рассчитана на Debian 9. Убедитесь, что базовая установка сервера выполнена и у него есть статический IP. В примерах используется IP 192.168.0.100 и hostname server1.example.com — замените на ваши значения.

Важно: chroot не заменяет полноценную контейнеризацию или виртуализацию. Это инструмент уровня файловой системы для уменьшения поверхности атаки.

2 Установка Jailkit

Сначала загрузим и соберём пакет. На момент создания руководства использовалась версия 2.20 — в вашей системе возможно более новая версия. Примеры команд (выполняются от root):

cd /tmp    
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz  
tar xvfz jailkit-2.20.tar.gz  
cd jailkit-2.20

Jailkit требует набора инструментов для сборки. Установите зависимости:

apt-get install build-essential autoconf automake1.11 libtool flex bison debhelper binutils-gold python

Собираем .deb пакет и устанавливаем его:

echo 5 > debian/compat  
./debian/rules binary  
cd ..  
dpkg -i jailkit_2.20-1_amd64.deb

После установки можно очистить временные файлы:

rm -rf /tmp/jailkit*

Примечание: если вы используете другую архитектуру или новую версию Debian, подберите соответствующий deb-пакет и зависимости.

3 Создание и помещение пользователя в джейл

Добавим пользователя, которого будем изолировать (в примере - srijan):

adduser srijan

Ниже приведён пример интерактивного ввода пароля и данных пользователя (это стандартный вывод adduser). После создания можно проверить запись в /etc/passwd:

egrep srijan /etc/passwd

Пример вывода:

srijan:x:1001:1001:,,,:/home/srijan:/bin/bash

Создаём корневую директорию для chroot-окружения и инициализируем её базовым набором программ:

mkdir /jail
jk_init -v /jail netutils basicshell jk_lsh openvpn ssh sftp

Параметры jk_init задают, какие программы и библиотеки будут подготовлены в /jail. Полный список профилей можно посмотреть в конфигурационном файле:

nano /etc/jailkit/jk_init.ini

Добавляем пользователя в джейл (перемещаем домашнюю директорию и меняем shell):

jk_jailuser -m -j /jail/ srijan

Проверяем /etc/passwd — для пользователя будет указана джейл-оболочка и путь внутри /jail:

egrep srijan /etc/passwd

Пример результата:

srijan:x:1001:1001:,,,:/jail/./home/srijan:/usr/sbin/jk_chrootsh

Попытка входа по SSH под этим пользователем может завершиться сразу выходом, если в джейле нет интерактивной оболочки. Чтобы предоставить bash, отредактируйте /jail/etc/passwd и замените оболочку на /bin/bash:

nano /jail/etc/passwd

Пример строки для srijan внутри /jail/etc/passwd:

root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
#srijan:x:1001:1001:,,,:/home/srijan:/usr/sbin/jk_lsh
srijan:x:1001:1001:,,,:/home/srijan:/bin/bash

После этого повторный SSH-вход будет успешен. Список корневых директорий внутри джейла будет ограничен содержимым /jail:

ls /

Пример вывода:

bin  dev  etc  home  lib  lib64  usr

4 Запуск сервисов и команд внутри джейла

Jailkit позволяет запускать сервисы или произвольные команды внутри chroot с помощью jk_chrootlaunch:

jk_chrootlaunch -j /jail -u srijan -x 'service apache2 start'

С помощью jk_cp можно скопировать бинарные файлы с их зависимостями в джейл. Например, команда cal отсутствует в джейле:

cal

Вывод:

bash: cal: command not found

Добавляем команду в джейл:

jk_cp  -v -j /jail/ /usr/bin/cal

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

cal

Пример вывода:

April 2019

Su Mo Tu We Th Fr Sa

1 2 3 4 5 6

7 8 9 10 11 12 13

14 15 16 17 18 19 20

21 22 23 24 25 26 27

28 29 30

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

5 Отладка и проверка

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

  • Подключение по SSH: вход осуществляется и вы видите только содержимое джейла.
  • Ограничение путей: попытка доступа к /etc вне /jail должна быть невозможна.
  • Доступные команды: выполните which/cal/ls и убедитесь, что нужные бинарники присутствуют.
  • Журналы: syslog/daemon-логи на хосте могут содержать полезные сообщения о попытках доступа.

Полезные команды для проверки:

ps aux | grep jk_chroot
strace -f -e open,stat -s 200 -p    # для анализа, какие файлы открывает процесс
ls -la /jail/usr/bin
ldd /usr/bin/cal

Важно: при отладке сохраняйте права и владельцев файлов в джейле — некорректные uid/gid вызовут ошибки.

6 Рекомендации по безопасности

Основные меры усиления безопасности при использовании chroot и Jailkit:

  • Минимизируйте набор бинарников и библиотек внутри джейла. Чем меньше — тем лучше.
  • Не запускайте процессы от root внутри джейла без крайней необходимости.
  • Запрещайте или удаляйте setuid-бинарники в джейле.
  • Контролируйте /dev и монтирование: создавайте только необходимые устройства (например, /dev/null).
  • Обновляйте пакеты и следите за уязвимостями в бинарниках, попавших в джейл.
  • Рассмотрите использование дополнительных изоляций: namespaces, seccomp, AppArmor/SELinux.
  • Защитите доступ к сети через firewall (iptables/nftables), по мере необходимости ограничьте исходящие соединения из джейла.

Примерные действия при подготовке устройства /dev внутри джейла:

mkdir -p /jail/dev
mknod -m 666 /jail/dev/null c 1 3
mknod -m 666 /jail/dev/tty c 5 0

Учтите: некоторые сервисы требуют /proc и /sys. Смонтируйте их выборочно:

mount --bind /proc /jail/proc
mount --bind /sys  /jail/sys

После завершения работы размонтируйте:

umount /jail/proc
umount /jail/sys

7 Когда chroot/Jailkit не подходит и альтернативы

Когда chroot может оказаться недостаточен:

  • Нужно изолировать не только файловую систему, но и процессное/сетевая среда — используйте контейнеры.
  • Требуется более сильная безопасность и аудит — рассмотрите LXC, systemd-nspawn, Docker, Firecracker.
  • Для полноценных виртуализованных окружений — используйте гипервизор.

Короткое сравнение (качественно):

  • chroot/Jailkit: простая изоляция файловой системы, мало накладных расходов.
  • LXC / systemd-nspawn: изоляция namespaces, сеть, PID, монтирование.
  • Docker: контейнеры приложений с экосистемой образов.
  • ВМ: полная изоляция, больше ресурсов.

8 Полезные чек-листы

Операционный чек-лист администратора перед вводом в прод:

  • Обновить систему и пакеты в джейле.
  • Убедиться, что в джейле только необходимые бинарники и библиотеки.
  • Проверить права владельцев файлов (uid/gid совпадают с хостом или задумано иначе).
  • Настроить /dev и необходимые псевдофайловые системы.
  • Отключить setuid-бинарники в джейле.
  • Настроить мониторинг ресурсов (CPU, память) для процессов в джейле.

Роль-based checklist — администратор безопасности:

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

Роль-based checklist — оператор сервиса:

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

9 Методология создания джейла (короткий SOP)

  1. Подготовка: обновить сервер, резервное копирование.
  2. Установка jailkit и зависимостей.
  3. Создать /jail и инициализировать профили jk_init.
  4. Добавить пользователя jk_jailuser и скорректировать /jail/etc/passwd при необходимости.
  5. Добавить нужные бинарники через jk_cp и проверить зависимости.
  6. Настроить /dev, /proc, /sys по потребности.
  7. Ограничить права и провести базовую проверку безопасности.
  8. Тестирование: ssh, запуск сервисов, проверка логов.
  9. Ввести в эксплуатацию и настроить мониторинг.

10 Критерии приёмки

  • Пользователь после входа видит только файлы внутри /jail.
  • Отсутствие доступа к критическим файлам хоста (/etc/shadow, /root и т. п.).
  • Работоспособность необходимых команд и сервисов внутри джейла.
  • Логирование и мониторинг работают корректно.

11 Тесты и сценарии приёмки

  • Попытка доступа к /etc/passwd хоста должна не возвращать содержимое хоста.
  • Запуск отключённых команд должен выдавать “command not found”.
  • Проверка ldd для добавленных бинарников: все зависимости присутствуют в /jail.

12 Короткий словарь терминов

  • chroot: ограничение видимой корневой директории процесса.
  • jk_init: скрипт Jailkit для подготовки набора утилит в джейле.
  • jk_jailuser: утилита для переноса пользователя в джейл.
  • jk_cp: копирует бинарники и их библиотеки в джейл.
  • jk_chrootlaunch: запускает команду/демон внутри джейла.

13 Отказоустойчивость и восстановление

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

  • Верните /jail/etc/passwd к рабочему состоянию (backup всегда намного упростит задачу).
  • Убедитесь, что в джейле присутствует корректная оболочка (/bin/bash) и ее библиотеки.
  • Размонтируйте временно /jail/proc и /jail/sys, если они мешают.

14 Ссылки

Итог

Jailkit — удобный инструмент для быстрого создания chroot-окружений и ограничения пользователей на Debian 9. Он не заменяет контейнеры, но хорошо подходит для простых сценариев изоляции, когда нужно ограничить доступ к файловой системе и набору команд. Следуйте чек-листам и рекомендациям по безопасности, минимизируйте набор бинарников и контролируйте зависимости.

Важно: всегда тестируйте джейл в безопасной тестовой среде перед внедрением в прод.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро