Не про modx, а про docker, но все равно интересно.

Последнее время я много уделяю сил на изучение docker, как важного для меня инструмента.
Также я достаточно давно пользуюсь операционными системами на базе ядра linux, как на своем компе, так и на серверх.
И как опытный пользователь линкуса, я твердо выучил правило – работать из под root пользователя небезопасно.
И вот когда я начал углубленно изучать то, как устроены образы докера, что является самым базовым слоем в образе и так далее, меня очень сильно напрягал тот факт, что каждый контейнер, запускаем на основании любого образа, по умолчанию работает от root пользователя. Уж очень несекьюрно это выглядит, но пока, скажем так, эта технология на подъеме, то люди похоже просто предпочитают «не думать о плохом».
Но по факту, использование docker позволяет «взломать» любой компьютер и сегодня, решая свои задачи, я в этом убедился уже на практике.
Итак. Операционная система linux многопользовательская и по умолчанию, системные файлы имеет право редактировать только root, а каждый пользователь имеет право работать только со своими файлами (файлами в своей домашней директории)
К примеру возьмем такой важный системный файл как /etc/hosts который является первичным DNS для браузера (тоесть прежде чем отправлять запрос на внешний dns сервер ваш браузер ищет совпадения в этом файле). Редактировать этот файл может только root или пользователи из группы sudo.
Предположим я не root. Но компе (на сервере) установлен docker, Я не знаю пароля root, но немного знаю как работает docker.
Я выполняю команду
docker run -it --rm -v /etc/hosts:/hosts alpine ash
И тем самым запускаю docker контейнер с линуксом и примонтированным внутрь контейнера файлом с хоста (который я не имею права редактировать)
Теперь у меня в корне контейнера лежит файл hosts НО теперь внятри контейнера я root (ведь именно от root запускаются все контейнеры). Я могу без проблем сделать такое
echo «127.0.0.1 modx.pro’’ >> hosts
И тем самым дописать строку в файл hosts в контейнере И изменить файл hosts на хостовой машине (чего не должен иметь права делать, не зная пароля от root пользователя хоста)
Итак, не вводя ни единого пароля, а просто используя тот факт, что умеем работать с докером, мы только что взломали систему и теперь у меня сайт modx.pro не работает.
Точно так же я могу примонтировать внутри докер контейнера домашнюю директорию чужого пользователя, которую даже видеть не миею права, и внутри докер контейнера просмотреть и отредактировать его любые файлы.

Не претендую на истину в последней инстанции, и докер тоже можно использовать более менее безопасно. Существуют способы настроить запуск контейнера от имени не root, но во первых ни одна документация на любой образ на docker-hub об этом не пишет, а во вторых запустив контейнер не от рута вы получаете сразу столько проблем, что вам понадобятся знания devops инженера с 20 летним стажем, чтобы их разрулить. Поэтому никто так не делает и все пользуются запуском контейнера по умолчанию от root.
Вывод – мне технология докер контейнеризации теоретически казалась небезопасной, сегодня я убедился в этом на практике. Но я конечно могу и ошибаться, возможно я просто еще не достаточно владею этой технологий.
Александр Мельник
11 июня 2023, 10:02
modx.pro
1
373
0

Комментарии: 1

Александр Мельник
11 июня 2023, 10:48
0
Добавлю немного картинок, текст это всегда скучно)
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1