Джессика Фразили (Jessica Frazelle), работающая в компании Docker inc, опубликовала (https://blog.jessfraz.com/posts/docker-containers-on-the-des...) подборку docker-контейнеров (http://github.com/jfrazelle/dockerfiles) для запуска популярных консольных и графических пользовательских приложений в режиме изоляции от основной системы. Готовые контейнеры доступны для установки через hub.docker.com (http://hub.docker.com/u/jess). Среди приложений: Skype, Chrome, Spotify, Gparted, Tor Browser,Для организации ввода и вывода на экран осуществляется проброс сокета X11 в контейнер ("-v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY"), для сохранения файлов в основной системе применяется bind-монтирование директорий ("-v $HOME/Downloads:/root/Downloads"). Организация вывода звука пока требует запуска контейнера в привилегированном режиме ("-v /dev/snd:/dev/snd --privileged"), что ставит вопрос о безопасности предложенного метода, так как выполнение в контейнере кода с правами root открывает дополнительные возможности по организации доступа к ресурсам основного хоста (например, в прошлом году была исправлена (http://www.opennet.me/opennews/art.shtml?num=40046) уязвимость, позволяющая обращаться в внешним файлам через прямой доступ к inode). В следующем выпуске Docker для проброса звука можно будет использовать "--device /dev/snd". При запуске Gparted используется полный проброс в контейнер блочного устройства ("--device /dev/sda:/dev/sda"), что делает бессмысленным использования контейнера в этом случае.
Александр Ларсон (Alexander Larsson), известный разработчик GNOME, развивающий собственную систему контейнеров (http://www.opennet.me/opennews/art.shtml?num=41514) для запуска графических приложений, выступил (https://news.ycombinator.com/item?id=9087293) с критикой предложенного подхода, указав на то, что это не изоляция, а способ предоставления приложениям root-доступа. Основные аргументы сводятся к небезопасности X11: приложение запускается в изолированном контейнере, но по-прежнему имеет полный доступ ко всем X11-клиентам, что позволяет атакующему воспользоваться техниками перехвата (https://github.com/magcius/keylog) событий ввода или подстановки ввода в терминал. Второй проблемой является выполнение управляющего демона docker с правами root, что даёт пользователю, имеющему доступ к запуску контейнеров, получить широкие возможности по манипуляции системными данными (например, можно запустить контейнер "docker run -v /:/tmp ubuntu rм -rf /tmp/*", который удалит все файлы в системе).
URL: https://news.ycombinator.com/item?id=9086751
Новость: http://www.opennet.me/opennews/art.shtml?num=41709
контейнеры, но с дырочками.
cgroups никогда не предназначались для полной изоляции. Хочется нормальной безопасности - используйте OpenVZ/Virtuozzo.
тогда почему хипсторы так радостно взялись использовать именно докер для изоляции сервисов? чтобы анб порадовать?
Дык название "прикольное", молодёжное, а не эти ваши аббревиатуры из рекурсивных акронимов.
> Дык название "прикольное", молодёжное, а не эти ваши аббревиатуры из рекурсивных акронимов.Докерищи когда (хоть половину) закроют?
Контейнерная виртаулизация давным давно была придумана, а сейчас сделали обертку, чтобы смогли школьники разобраться. Далее прошел пиар, на всяких хабрах, лорах, опеннетах, и вот, молодёжь ссытся, что появилось, что то, якобы которого не было.
Откуда мне знать, почему они это делают. Я ведь не хипстер. Могу лишь отметить, что у OpenVZ есть свои недостатки, а большинство предпочитает удобство безопасности.
> лишь отметить, что у OpenVZ есть свои недостатки,При том абсолютно фатальный для десктопа - требует кастомное ядро. Доисторическое.
При этом уже пофигу какая там безопасность: это ядро мое железо не поддерживает.
Ничего что новые OpenVZ уже вполне себе на ванильных ядрах работают с небольшими ограничениями?
С разморозкой
> Откуда мне знать, почему они это делают. Я ведь не хипстер.Я тоже. Но я ффтыкнул отчего такой hype :)
Они его юзают как инсталлер 8-0
Ну то есть воткнул контейнер с софтиной, поигрался, не пошло - выкинул. Без последствий для базовой системы. А на безопасности у них прибор лежит что с Docker-ом что без :)
Потому что хипсторы. Орешки кешью, узкие джинсы, борода, очки, айфончик, systemd, теперь вот docker.
Рэпчик забыл)). Названия прочих публикаций просто кричат об этом.
>> узкие джинсы
> Рэпчикды вы что, ребят? что-то тут не так
поясняю специально для экспертов-нехипсторов: запуск контейнеров по дефолту требует прав рута. И если вы привыкли раздавать их всем подряд, то вы ССЗБ
> поясняю специально для экспертов-нехипсторов: запуск контейнеров по дефолту требует прав
> рута. И если вы привыкли раздавать их всем подряд, то вы
> ССЗБа ещё месяц назад была новость, что подписывается в докеровом репозитории не сам образ контейнера, а его описание, так что с правами рута хипстор запускает радость какира
>тогда почему хипсторы так радостно взялись
>использовать именно докер для изоляции сервисов?
>чтобы анб порадовать?докер делается не для безопасности, он позволяет легко развёртывать приложения. Например нужно устанвить джумлу:
1 установить бд, задать пароль администратора, пользователя
2 установить апч
3 устанвить джумлу прописать пароль к бдс докером всё сводится к одному шагу - установить джумлу с зависимостями
cgroups ограничивает ресурсы, а изоляцией занимается namespaces
> cgroups ограничивает ресурсы, а изоляцией занимается namespacesНет. Все это уровни абстракции. А изоляцией занимается ядро.
> Нет. Все это уровни абстракции. А изоляцией занимается ядро.А cgroups и namespaces - это интерфейсы ядра, ВНЕЗАПНО. Но в ванили для 100% изоляции некоторых вещей не хватает, вот потому для ovz в нормальнмо виде и надо кастомное патченое ядро, где дополнительно запатчены лазейки из ванили.
>> Нет. Все это уровни абстракции. А изоляцией занимается ядро.
> А cgroups и namespaces - это интерфейсы ядра, ВНЕЗАПНО. Но в ванили
> для 100% изоляции некоторых вещей не хватает, вот потому для ovz
> в нормальнмо виде и надо кастомное патченое ядро, где дополнительно запатчены
> лазейки из ванили.Не спорю (по многим причинам). У них в разработке ядра своя кухня, и свой веник есть ;)
>> Нет. Все это уровни абстракции. А изоляцией занимается ядро.
> А cgroups и namespaces - это интерфейсы ядра, ВНЕЗАПНО. Но в ванили
> для 100% изоляции некоторых вещей не хватает, вот потому для ovz
> в нормальнмо виде и надо кастомное патченое ядро, где дополнительно запатчены
> лазейки из ванили.сказки не будем рассказывать ?:) хоть бы код посмотрели, а не верили в маркетинг.
> cgroups никогда не предназначались для полной изоляции.Вообще-то namespaces, ламо. И таки для именно этого они и предназначаются, только недопилены пока.
а чем openvz отличается от cgroups ? тем что оно на них основано ?:)
> контейнеры, но с дырочками.Забавно смотрится /root/Downloads. Нормальное такое размещение диры...
Ага, друшлак :)
Дуршлякер
> контейнеры, но с дырочками.А ты как хотел?
Сейчас даже ложки дырявые в моде.
Как ламер спрашиваю - как создать свой докер контейнер с нуля? Не предлагайте скачать от доброжелателей.
гугли 'creating docker base image'. Вообще, частный случай для дебиана, например, это debootstrap.
Когда хипстеров это останавливало? https://www.youtube.com/watch?v=j2n0d7AZNug
> Организация вывода звука пока требует запуска контейнера в привилегированном режиме ("-v /dev/snd:/dev/snd --privileged"),Бред они какой-то написали. Рут ради /dev/snd?? Нужно пробрасывать сокет pulse и ключ для dbus: "-v /run/user/${UID}/pulse:/run/user/${UID}/pulse -v /dev/shm:/dev/shm -v /etc/machine-id:/etc/machine-id" - работает идеально и никаких лишних прав не требуется.
> При запуске Gparted используется полный проброс в контейнер блочного устройства ("--device /dev/sda:/dev/sda"), что делает бессмысленным использования контейнера в этом случае.При чём тут sda ? Может я sdb хочу разметмть?
врядли я стал бы использовать gparted ... Но всё равно -- где тут небезопасность?
>где тут небезопасность?Везде тут небезопасность!
наверное sdb будет в следующей версии хипстоинноваций, когда эппл запатентует sdb, и его станет модно размечать
>При запуске Gparted используется полный проброс в контейнер блочного устройства ("--device /dev/sda:/dev/sda"), что делает бессмысленным использования контейнера в этом случае.не совсем. если вдруг какой-то параноик захочет разметить один диск, а при этом боится, что gparted сольёт порн^W важную информацию в АНБ/MI-6/ZoG с другого, то докер поможет. хотя лично я считаю, что в этом случае следует бороться с причиной, а не со следствиями, т.е. лечить паранойю
Контейнеры ради контейнеров, отсутствие безопасности и лишние неудобства.
> "docker run -v /:/tmp ubuntu rм -rf /tmp/*"Какой автор заботливый, комманда "rм" явно не отработает ))
>Среди приложений: Skype, Chrome, Spotify, Gparted, Tor Browser,т.е. я не должен доверять всем этим приложениям, а запускать от рута контейнеры с бугра, собранные непонятно кем - это Ъ-way?
Верить, в наше время, нельзя никому. Порой даже, самому себе. Мне - можно. (с)
Эти контейнеры на самом деле нужны для узкого круга задач. Во всяком случае в таком виде, в котором они есть сейчас.
Наркоманы. А как же насчет "Docker not about security in production" или как там их главный недавно вещал?
найдите в словах Skype Spotify и Tor browser хоть одну букву из слова продакшн
> При запуске Gparted используется полный проброс в контейнер блочного устройства ("--device /dev/sda:/dev/sda"), что делает бессмысленным использования контейнера в этом случае.На хрена тогда контейнер было делать? Чего же не сделали ещё контейнер, внутри первого?
Контейнеры GNOME это статически собранный бинарник c конфигом SELinux?
Чудовищно. Давно есть вменяемые средства дря запуска "всего и вся" в изоляции друг от друга. Нахрена этот баян? Ну для хостера да, я согласен. Но взрывать мозг хомякам каким-то скайпом в какойм-то докере? Очень мило.
Вполне нормальный кейс, не связанный с безопасностью:развернуть кучу проектов с конфликтующими зависимостями;
писать
port = 1048
вместо
port = portAllocator.reservedRangeXXFor(currentProjectId).from + 44