The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

Подготовка chroot-окружения в Debian или Ubuntu
Для создания 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 -
 
19.10.2009 , Источник: https://wiki.ubuntu.com/Debootstrap...
Ключи: chroot, jail, linux, debian, ubuntu, limit / Лицензия: CC-BY
Раздел:    Корень / Безопасность / Помещение программ в chroot

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Nicknnn (ok), 11:14, 19/10/2009 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    Ещё неплохо создать /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 короче


     
     
  • 2.2, pavel_simple (ok), 13:21, 19/10/2009 [^] [ответить]    [к модератору]
  • +/
    >Ещё неплохо создать /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'а для изоляции всё-равно остаётся очень плохой идеей.

     
     
  • 3.4, pavlinux (ok), 18:23, 19/10/2009 [^] [ответить]    [к модератору]
  • +/
    users = webuser
    groups = sbuild

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

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

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

     
     
  • 4.5, Pilat (ok), 19:00, 19/10/2009 [^] [ответить]    [к модератору]
  • +/
    А чем плоха, к примеру, виртуалка под OpenVZ? chroot хорош для мелких задач, а тут практически вся система.
     
     
  • 5.6, pavlinux (ok), 19:54, 19/10/2009 [^] [ответить]    [к модератору]
  • +/
    >А чем плоха, к примеру, виртуалка под 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 бэкдором не многие умеют пользоваться).

     
     
  • 6.7, Pilat (ok), 20:15, 19/10/2009 [^] [ответить]    [к модератору]  
  • +/
    Не думаю что всё тка плохо. OpenVZ держать не очень накладно, там расходы копеечные.

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

     
     
  • 7.8, pavlinux (ok), 20:55, 19/10/2009 [^] [ответить]    [к модератору]  
  • +/
    >Не думаю что всё тка плохо. 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
    }

    ну и так далее

     
     
  • 8.9, Pilat (ok), 22:34, 19/10/2009 [^] [ответить]    [к модератору]  
  • +/
    >Правильный chroot это runtime chroot, т.е. по мере  необходимости...
    >Пришёл коннект, родил chroot и перенаправил туда.

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

     
     
  • 9.10, pavlinux (ok), 00:49, 20/10/2009 [^] [ответить]    [к модератору]  
  • +/
    >>Правильный chroot это runtime chroot, т.е. по мере  необходимости...
    >>Пришёл коннект, родил chroot и перенаправил туда.
    >
    >В идеальном мире да. А в реальном?

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

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

     
     
  • 10.11, Pilat (ok), 02:22, 20/10/2009 [^] [ответить]    [к модератору]  
  • +/
    >Написать гибрид xinetd+fork+chroot не долго.

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

     
  • 8.14, shutdown now (?), 22:30, 21/10/2009 [^] [ответить]    [к модератору]  
  • +/
    есть такой апач: Apache 2 ITK MPM и Peruser MPM, но всё не так просто, как кажется, в результате он медленнее и  ресурсов ему больше нужно
     
  • 6.15, User294 (ok), 05:36, 23/10/2009 [^] [ответить]    [к модератору]  
  • +/
    > OpenVZ, как и любую другую виртуаль, очень накладно держать для каждого
    > сервиса раздельно.

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

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

     
  • 1.12, mma (?), 07:56, 20/10/2009 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    А зачем создавать полное окружение - нужно все-голишь чтобы сервис умел запускаться в чруте (стартует рутом, после того как все модели загрузит) переходит в чрут. Апач это умеет, в openbsd так работает без проблем даже с mod_php.
     
     
  • 2.13, mma (?), 07:58, 20/10/2009 [^] [ответить]    [к модератору]  
  • +/
    но при этом чрут сам посебе не назовешь полноценной изоляцией, нужно как минимум запретить чрутитьтся всем кроме root (ну и еще какие то мелочи не помню), поэтому без grsecurity или selinux  чрут сам по себе только усложняет жизнь взломщику но не предотращает взлом
     
     
  • 3.16, sjinks (?), 15:44, 23/10/2009 [^] [ответить]    [к модератору]  
  • +/
    > нужно как минимум запретить чрутитьтся всем кроме root

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

     
     
  • 4.17, mma (?), 19:12, 23/10/2009 [^] [ответить]    [к модератору]  
  • +/
    я не правильно выразился, но суть думаю понятна как можно выйти за пределы chroot и почему он не особо полезен без подсистем безопасности?
     
     
  • 5.18, sjinks (?), 17:11, 24/10/2009 [^] [ответить]    [к модератору]  
  • +/
    >я не правильно выразился, но суть думаю понятна как можно выйти за
    >пределы chroot

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

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

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

     
     
  • 6.19, mma (?), 19:36, 24/10/2009 [^] [ответить]    [к модератору]  
  • +/
    chroot в chroot  и fchdir

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

     
     
  • 7.20, sjinks (?), 20:02, 24/10/2009 [^] [ответить]    [к модератору]  
  • +/
    >chroot в chroot и fchdir
    >
    >От этого ведб стандартными способами не защитишся

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

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

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

     
  • 1.21, jura12 (??), 04:14, 13/11/2009 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    вы не написали зачем все это надо, какие преимущества и недостатки. вкрадце вводную надо было дать.
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor