[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Как правильно выполнить chroot?



On 2016-04-13, Max Dmitrichenko wrote:

> 12 апреля 2016 г., 10:47 пользователь Oleksandr Gavenko <gavenkoa@gmail.com> написал:
>
>       desktop:/# ps -e
>       ...
>    
>     и увидел все пользователькие процесы вне chroot.
>
> И совершенно справедливо, потому chroot - это не jail какой-нибудь и не
> контейнер. Это просто возможность исключить определенную область файловой
> иерархии из видимости процесса. Не самая секьюрная вещь, если честно. Больше
> подходит для разработки, где вам надо что-то проверить в чистом окружении,
> например.
>
> А всё остальное как: возможность видеть и посылать сигналы другим процессам,
> открывать соединения, слушать порты и прочим образом мешать не чрутованной
> части системы - всё это остаётся доступным.  
>
Уже почитал chroot(2), но от schroot(1) ожидал большего.

Правильно ли я понимаю что выполднять от root недоверенное приложение в
chroot нельзя?

> Если хочется более серьезной изоляции, то нужно капать в сторону cgroups,
> namespaces, containers, virtualization (как-то в порядке возрастания
> overhead, на моё ИМХО).

Я почитал про lxc, namespaces(7). Образы предоставляют проекты:

* http://images.linuxcontainers.org/
* https://www.flockport.com/store/

Если нет к ним доверия, то можно изучить скрипты из /usr/share/lxc/templates.
Для Debian берется обычный debootstrap. Хотя я полагаю Debian слишком
"толстым":

  bash# sudo debootstrap --variant=minbase stable minbase/
  bash# sudo du -s -m ./minbase/                                                                                                                                                                                                                                             204     ./minbase/

lxc идет со скриптом для развертывания alpine, у меня вышло:

  $ sudo du -s -m /var/lib/lxc/alpine
  9	alpine

против:

  $ sudo du -s -m /var/lib/lxc/debian
  287 debian

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

На btrfs lxc умеет делать снапшоты.

Я не понял будет ли клонирование контейнера отжирать место на ext4. Кажись да.

================================================================

Мне совсем не ясна изолирующая сила cgroups + namespaces.

В отличии от openvz у меня есть ощущение что chroot + cgroups + namespaces
создавалось для изоляции а не для безопасности. Т.е. руткиты скорее всего
будут вырываться из контейнера и без виртуализации не обойтись.

В итоге только доверенный код можно выполнять в контейнере chroot + cgroups +
namespaces.

================================================================

Почитал критику про Docker и CoreOS. В общем для хобби и для себя стоит
разбираться с lxc.

Docker и CoreOS предназначены для зарабатывания денег и тянут за собою
политики/соглашения и перозитории.

По отзывам использование Docker чревато протискиванием вызовов их API в
прикладной код. А CoreOS наверно скоро наймут Поттеринга, т.к. systemd -
сердце их продукта (для экономии времени вместо своей реализации
восмользовались всем арсеналом сервисов из зонтика systemd).

Вот пример как запуститься в изолированом namespaces:

  $ sudo ip netns exec test unshare -fp --mount-proc chroot rootfs /bin/bash -c "mount -t proc proc /proc && /bin/bash"

  https://www.flockport.com/how-linux-containers-work/

Это делает с разной степенью автоматизации lxctl, Docker, rkt.

================================================================

Что то не понял заявление что LXC гарантировано будет поддерживаться 5 лет (с
2014 по 2019, на wikipedia). Потом что то новое придет?

-- 
http://defun.work/


Reply to: