Docker — одна из наиболее часто используемых платформ контейнеризации, которую очень любят инженеры-программисты. Он поставляется с мощным инструментом CLI для управления контейнерами Docker и другими связанными задачами.
По умолчанию вам нужны привилегии root для запуска любых команд, связанных с Docker, в Linux. Конечно, вы можете изменить это для удобства и запускать команды Docker без привилегий root, но вы должны знать о последствиях для безопасности.
Что такое поверхность атаки Docker?
Поверхность атаки — это количество точек атаки, больше похожее на количество окон, которые злоумышленник может использовать, чтобы проникнуть в вашу систему и вызвать хаос. Как правило, ИТ-системы должны иметь минимальные поверхности для атак, чтобы снизить риски безопасности.
В целом, поверхность атаки Docker очень минимальна. Контейнеры работают в безопасной изолированной среде и не влияют на операционную систему хоста, если не указано иное. Кроме того, контейнеры Docker запускают только минимальные службы, что делает его более безопасным.
Вы можете настроить свою систему Linux для управления Docker без привилегий sudo. Это может быть удобно в средах разработки, но может быть серьезной уязвимостью в системе безопасности производственных систем. И вот почему вы никогда не должны запускать Docker без sudo.
1. Возможность управления контейнерами Docker
Без привилегий sudo любой, у кого есть доступ к вашей системе или серверу, может контролировать каждый аспект Docker. У них есть доступ к вашим файлам журнала Docker, и они могут останавливать и удалять контейнеры по своему желанию или случайно. Вы также можете потерять важные данные, необходимые для непрерывности бизнеса.
Если вы используете контейнеры Docker в производственных средах, простои приводят к потере бизнеса и доверия.
2. Получите контроль над каталогами хост-ОС
Docker Volumes — это мощная служба, которая позволяет вам обмениваться и сохранять данные контейнера, записывая их в указанную папку в операционной системе хоста.
Одна из самых больших угроз, которую представляет запуск Docker без sudo, заключается в том, что любой в вашей системе может получить контроль над каталогами хост-ОС, включая корневой каталог.
Все, что вам нужно сделать, это запустить образ Linux Docker, например образ Ubuntu, и смонтировать его в корневую папку с помощью следующей команды:
docker run -ti -v /:/hostproot ubuntu bash
А поскольку контейнеры Linux Docker запускаются от имени пользователя root, это, по сути, означает, что у вас есть доступ ко всей корневой папке.
Вышеупомянутая команда загрузит и запустит последний образ Ubuntu и смонтирует его в корневой каталог.
На контейнерном терминале Docker перейдите на вкладку /hostproot каталог с использованием команда компакт-диска:
CD /hostproot
Список содержимого этого каталога с помощью команды ls показывает все файлы хост-ОС, которые сейчас доступны в вашем контейнере. Теперь вы можете манипулировать файлами, просматривать секретные файлы, скрывать и отображать файлы, изменять разрешения и т. д.
3. Установить вредоносное ПО
Хорошо созданный образ Docker может работать в фоновом режиме и управлять вашей системой или собирать конфиденциальные данные. Что еще хуже, злоумышленник может распространять вредоносный код в вашей сети через контейнеры Docker.
Есть несколько практических вариантов использования контейнеров Docker, и с каждым приложением связан свой набор угроз безопасности.
Защитите свои контейнеры Docker в Linux
Docker — мощная и безопасная платформа. Запуск Docker без sudo увеличивает поверхность атаки и делает вашу систему уязвимой. В рабочих средах настоятельно рекомендуется использовать sudo с Docker.
При таком количестве пользователей в системе становится чрезвычайно сложно назначить разрешения каждому пользователю. В таких случаях соблюдение передовых методов управления доступом может помочь вам обеспечить безопасность вашей системы.