URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 60069
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Подготовка chroot-окружения в Debia..."

Отправлено auto_tips , 19-Окт-09 11:14 
Для создания chroot-окружения в Debian или Ubuntu можно использовать пакет debootstrap, а для управления - schroot.

  apt-get install debootstrap

Создадим минимальный chroot в Ubuntu:

  debootstrap --variant=buildd --arch i386 hardy /home/chroot_web http://archive.ubuntu.com/ubuntu/

в Debian:

  debootstrap --arch i386 lenny /home/chroot_web http://ftp.us.debian.org/debian

при этом в Ubuntu можно создавать chroot на базе Debian и наоборот.

Для последующей установки пакетов из chroot копируем файлы конфигурации APT и резолвера:

  cp /etc/resolv.conf /home/chroot_web/etc/resolv.conf
  cp /etc/apt/sources.list /home/chroot_web/etc/apt/

Заходим в chroot-окружение:

  sudo chroot /home/chroot_web

Устанавливаем в нем apache:

apt-get update
apt-get install apache2

Устанавливаем необходимые для работы и сборки пакетов составляющие:

  apt-get --no-install-recommends install wget debconf devscripts gnupg
  apt-get update

Конфигурируем локаль:

  apt-get install locales dialog
  locale-gen ru_RU.UTF-8
  tzselect; TZ='Europe/Moscow';

Пробрасываем в chroot системные псевдо ФС, в /etc/fstab основной системы добавляем:

   /proc /home/chroot_web/proc none rbind 0 0
   /dev /home/chroot_web/dev none rbind 0 0
   /sys /home/chroot_web/sys none rbind 0 0

Запускаем сервис:
   chroot /home/chroot_web /etc/init.d/apache2 start

Когда chroot-окружений много или внутри chroot запускается несколько сервисов для управления удобно использовать schroot

   apt-get install schroot

Создаем /etc/schroot/schroot.conf:

   [hardy]
   description=Apache Chroot
   location=/home/chroot_web
   priority=3
   users=webuser
   groups=sbuild
   root-groups=root

Запускаем все chroot-окружения и определенные в них сервисы:

   schroot --all -- su -c /etc/init.d/rc\ 2 -


URL: https://wiki.ubuntu.com/DebootstrapChroot
Обсуждается: http://www.opennet.me/tips/info/2192.shtml


Содержание

Сообщения в этом обсуждении
"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено Nicknnn , 19-Окт-09 11:14 
Ещё неплохо создать /etc/hosts
sys и proc нужно просто монтирвать без rbind
а также примонтировать devpts

proc /home/chroot_web/proc proc defaults 0 0
sys /home/chroot_web/sys sysfs defaults 0 0
/dev /home/chroot_web/dev none bind 0 0
devpts /home/chroot_web/dev/pts defaults,gid=5,mode=620 0 0

man debootstrap короче



"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено pavel_simple , 19-Окт-09 13:21 
>Ещё неплохо создать /etc/hosts
>sys и proc нужно просто монтирвать без rbind
>а также примонтировать devpts
>
>proc /home/chroot_web/proc proc defaults 0 0
>sys /home/chroot_web/sys sysfs defaults 0 0
>/dev /home/chroot_web/dev none bind 0 0
>devpts /home/chroot_web/dev/pts defaults,gid=5,mode=620 0 0
>
>man debootstrap короче

итак, допустим apache таки ломанули

у нас dev есть? конечно, а даже если и нет, то мы себе сами сможем создать.

берем /dev/[sh]daXXX , монтируем его куда-нибудь, и из chroot'а пругаем chroot'ом в root.


зачем использовать полные слепки системы для изоляции сервисов ровным счётом не понятно.


к предыдущей заметке по RedHat-based системам критика такая-же.

(если виртуализация по тем или иным причинам не может быть использованна)
1. для изоляции сервисов нужно создавать минимальное окружение
2. использование chroot'а для изоляции всё-равно остаётся очень плохой идеей.


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено pavlinux , 19-Окт-09 18:23 
users = webuser
groups = sbuild

Апач, уж 100 лет как, без рута умеет работать.

Для сумневающихся - http://www.grsecurity.net/

А нужно это для того, чтоб не плдоить виртуалки.


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено Pilat , 19-Окт-09 19:00 
А чем плоха, к примеру, виртуалка под OpenVZ? chroot хорош для мелких задач, а тут практически вся система.

"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено pavlinux , 19-Окт-09 19:54 
>А чем плоха, к примеру, виртуалка под OpenVZ? chroot хорош для мелких
>задач, а тут практически вся система.

  В применение изолированных сред, само название говорит за себя....
В изоляции должно сужествовать только то, что нужно, и не байта больше.
Приложение + Shared Objects (.so) и R/O данные.
  Данные для записи складываются в SQL/CIFS/NFS итп, но в другом chroot.
База или каталоги для записи хранится на RAID1/5/10 c hourly/daily
incremental снапшотами и weekly TAPE/DVD-R/BD-R бакапом.

OpenVZ, как и любую другую виртуаль, очень накладно держать для каждого сервиса раздельно.

У виртуалок есть два приемущества - быстырый бэкап, и полная изоляция (SMM бэкдором не многие умеют пользоваться).


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено Pilat , 19-Окт-09 20:15 
Не думаю что всё тка плохо. OpenVZ держать не очень накладно, там расходы копеечные.

Вопрос про chroot: а как обновлять в нём софт, если только библиотеки? В нашем примере там не только библиотеки - там всё.


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено pavlinux , 19-Окт-09 20:55 
>Не думаю что всё тка плохо. OpenVZ держать не очень накладно, там расходы копеечные.
>
>Вопрос про chroot: а как обновлять в нём софт, если только библиотеки?

Правильный chroot это runtime chroot, т.е. по мере  необходимости...
Пришёл коннект, родил chroot и перенаправил туда.

LIMIT_PER_ONE_SERVER = 1024;
CONNECTIONS = 0;

EXTERN CONNECT();

MASTER_CONNECT(char *user) {

  WHILE (ONLINE) {

     IF ( CONNECTIONS % LIMIT_PER_ONE_SERVER == 0 )
      {
       THEN
             FORK_IN_CHROOT_NEW_SERVER(CONNECT());
             REDIRECT_TO_NEW_SERVER(user);
        ELSE
             REDIRECT_TO_NONBUSY_SERVER(user);
     }
    CONNECTIONS++
  } // while
}

ну и так далее


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено Pilat , 19-Окт-09 22:34 
>Правильный chroot это runtime chroot, т.е. по мере  необходимости...
>Пришёл коннект, родил chroot и перенаправил туда.

В идеальном мире да. А в реальном?


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено pavlinux , 20-Окт-09 00:49 
>>Правильный chroot это runtime chroot, т.е. по мере  необходимости...
>>Пришёл коннект, родил chroot и перенаправил туда.
>
>В идеальном мире да. А в реальном?

Никому не нужно :)

Написать гибрид xinetd+fork+chroot не долго.


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено Pilat , 20-Окт-09 02:22 
>Написать гибрид xinetd+fork+chroot не долго.

Ну и нафига такой пример?


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено shutdown now , 21-Окт-09 22:30 
есть такой апач: Apache 2 ITK MPM и Peruser MPM, но всё не так просто, как кажется, в результате он медленнее и  ресурсов ему больше нужно

"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено User294 , 23-Окт-09 05:36 
> OpenVZ, как и любую другую виртуаль, очень накладно держать для каждого
> сервиса раздельно.

И в чем эта накладность состоит? Оно не виртуаль в общем то, а просто резатель ресурсов крутой. Тот же чрут но только сильно более правильный. Поэтому просадка скорости от опенвзы - не больно какая заметная. А вот интересные фенечки оно зато умеет. Ну и можно содержать систему с 5 процессами - один из которых инит а второй sshd к тому же будет.Как раз по контейнеру на сервис. Нифига оно не накладно, строго говоря. Если задаться целью его минимизировать - это можно.Скажем нафиг в контейнере стандартные утилсы и прочая, если оно может жить на ФС хоста и управляться оттуда?Как бонус - если хакер сломает что-то, он попадет в вроде как машину но какую-то сильно неудобную и неполноценную, где вредительствовать особо не дают :)

Из плюсов - хаксор не сможет грузить модули ядра даже будучи рутом (вза сие отшивает) и дуракозащищенность - повыше.Например недавний сплойт повышающий права до рута на взе вообще не работал, что тоже некий плюс.


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено mma , 20-Окт-09 07:56 
А зачем создавать полное окружение - нужно все-голишь чтобы сервис умел запускаться в чруте (стартует рутом, после того как все модели загрузит) переходит в чрут. Апач это умеет, в openbsd так работает без проблем даже с mod_php.

"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено mma , 20-Окт-09 07:58 
но при этом чрут сам посебе не назовешь полноценной изоляцией, нужно как минимум запретить чрутитьтся всем кроме root (ну и еще какие то мелочи не помню), поэтому без grsecurity или selinux  чрут сам по себе только усложняет жизнь взломщику но не предотращает взлом

"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено sjinks , 23-Окт-09 15:44 
> нужно как минимум запретить чрутитьтся всем кроме root

А с каких пор CAP_SYS_CHROOT есть у кого-то, кроме рута?


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено mma , 23-Окт-09 19:12 
я не правильно выразился, но суть думаю понятна как можно выйти за пределы chroot и почему он не особо полезен без подсистем безопасности?

"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено sjinks , 24-Окт-09 17:11 
>я не правильно выразился, но суть думаю понятна как можно выйти за
>пределы chroot

Без рутовых привилегий и при условии, что у демона нет открытых файлов/каталогов вне chroot это всё же проблематично.

>и почему он не особо полезен без подсистем безопасности?

chroot изначально не проектировался как средство безопасности. Тем не менее, chroot() + chdir() + setuid() = неплохой дополнительный барьер для хакера.


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено mma , 24-Окт-09 19:36 
chroot в chroot  и fchdir

От этого ведб стандартными способами не защитишся


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено sjinks , 24-Окт-09 20:02 
>chroot в chroot и fchdir
>
>От этого ведб стандартными способами не защитишся

Да, только второй chroot() можно сделать, если у демона есть CAP_SYS_CHROOT (т.е. если демон под рутом сидит).

Обычный пользователь делать chroot() не умеет.

http://linux.die.net/man/2/chroot


"Подготовка chroot-окружения в Debian или Ubuntu"
Отправлено jura12 , 13-Ноя-09 04:14 
вы не написали зачем все это надо, какие преимущества и недостатки. вкрадце вводную надо было дать.