klink0v (klink0v) wrote,
klink0v
klink0v

Запуск dante-server внутри chroot

Логическое продолжение предыдущего псто.

Итак, ради повышения безопасности мы хотим пускать dante-server не абы как, а унутри "тюрьмы". Прежде всего нам следует воссоздать минимально необходимую структуру каталогов и файлов с тем, чтобы бинарник демона смог бы найти все необходимые ему конфиги и библиотеки. В этом нам поможет утилита "ldd". Натравливаем её на ELF-файл "/usr/sbin/danted" и наблюдаем всё, с чем он динамически слинкован. К получившемуся перечню добавляем библиотеки "libnss*" (ему как-то понадобится разрешать системные имена), а также "libresolv*", если вдруг вы захотите использовать в конфиге DNS-имена вместо IP-адресов. При помощи утилиты "lsof" выясняем, что демон активно использует специальное устройство "/dev/null" и папку "/tmp". Ну и всякие log-и и pid-ы ему тоже куда-то надо складывать.

Итого, для стабильного Debian-а (Stretch) у меня получилось вот такое chroot-дерево.

Все эти файлики нужно заботливо скопировать в "новый" корень. В моём примере его роль играет "/usr/chroot/dante/". А потом не забывать копировать их заново в случае выхода в свет security-обновления какого-нибудь из них. Напомню, что устройство "null" создаётся командой "mknod /usr/chroot/dante/dev/null c 1 3". Также обратим внимание на разрешения для пресловутого "null" (0666) и "tmp" (1777). Файлы "danted.log" и "danted.pid" руками создавать не нужно.

Что касается хранилищ учётных записей "passwd" и "group", то там надо оставить только root-а, nobody и имена тех пользователей, которые по задумке будут логиниться в ваш socks-сервер. В "shadow" root-а и nobody прописывать не нужно, только пароли для "эффективных" пользователей.

Напоследок потребуется внести правки в конфиг systemd. Берём файл "/lib/systemd/system/danted.service" и переносим его в папку "/etc/systemd/system", дабы оный не перезаписывался бы APT-ом при возможных обновлениях. Редактируем сабж. Заменяем там пути к файлам: везде добавляем спереди "/usr/chroot/dante" (или какую вы там папку выбрали для chroot-а, не знаю). Также в секцию "[Service]" дописываем две строчки:

Затем делаем "systemctl daemon-reload", и можно стартовать.

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

Пынц.

Tags: debian, it, linux, manual, администрирование
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 4 comments