Я собираюсь вставить последние штрихи в веб-приложение, которое позволяет пользователям запускать сеансы Docker, в которых размещаются различные приложения. Когда я рассматриваю безопасность, одна из мыслей, которая произошла со мной, заключается в том, что пользователи могут привести всю систему - все размещенные сеансы для всех пользователей - к остановке заземления, просто записав слишком много данных в файловую систему.Улучшение безопасности докеров
Чтобы избежать этой меры, я решил настроить виртуальный диск с ограниченным пространством, который используется для сопоставления (через Docker) папок, к которым пользователь может получить доступ. Точные папки, которые отображаются, зависят от того, что размещается в контейнере Docker. Например, при размещении базы данных MySQL я сопоставляю папку /var/lib/mysql
, чтобы предотвратить разрастание БД в неконтролируемом режиме.
До сих пор так хорошо, однако, я понял всего несколько часов назад, что другая, универсальная, слабая ссылка - это папка /tmp
. Поэтому я попытался сопоставить эту папку и с виртуальным диском. Наивно сначала - принадлежало www-данным и chmod'd
- 775: это быстро остановило все. Я не мог запускать контейнеры с php5, mysql, memcached или даже большинством вещей.
После ковыряться на моем «реальном» сервере я изменил отображенный /tmp
папку для принадлежащего корня и chmod'd
его до 777, который имел все снова работает.
В процессе я обнаружил кое-что еще:
- Docker использует AUFS файловую систему. Так, например, «обычная» папка
/tmp
в сеансе Docker будет находиться в AUFS. - Не проблема, которую вы могли бы сказать. Однако AUFS не обладает такими же возможностями, как, например, EXT4.
- Приведу лишь один пример: Я хотел бы использовать расширенную файловую систему атрибутов
apt-get install attr
, а затемsetfattr -n...
на некоторые из файлов, которые входят в мою/tmp
папку
Аккуратный вещь - если сопоставить объем Докер сохраняет файловую систему в папке, которая была сопоставлена. Таким образом, если я настрою свой виртуальный диск как EXT4 и нарисую на нем папку /tmp
в сеансе Docker, то папка /tmp
внутри сессии будет EXT4.
Однако все это брошено больше вопросов, чем он ответил
- Каковы точные риски, порождаемые позволяя пользователям докер сессии для записи на диск бесконтрольно?
- Открыв выпуск AUFS vs EXT4, я googl'd и нашел this в качестве первого удара. Похоже, просто место, чтобы понять все проблемы, но, как вы увидите, эта ссылка никуда не ведет.
- Что такое Право собственности и листы для папки
'/tmp
? - Я сохраняю другие проблемы картирования
/tmp
, сменив его владельца иchmod'ing
? - И, наконец, существуют ли другие папки ОС, которые могут стать жертвами злоупотреблений и достойными соперниками за сопоставление с виртуальным диском ограниченного размера?
Я должен также упомянуть:
- Все эти приключения находятся на 14.10 установки Ubuntu.
- Что происходит, когда на виртуальном диске заканчивается дисковое пространство? - Я запускаю задание CRON, которое предупреждает пользователя, когда их дисковое пространство работает на низком уровне.
Я многому научился о Docker и Linux за последние несколько месяцев, но я далек от того, чтобы быть экспертом. Я был бы наиболее обязан всем, кто мог бы заполнить пробелы здесь и ответить на некоторые из этих вопросов.
У меня нет точных ответов на ваш вопрос, потому что я все еще учусь об этих деталях сам, но я пришел, чтобы понизиться то, что я думаю, что может быть полезным. Чтение через следующий документ помогло обучить меня рискам запуска демона докеров и его конфигурации, а также конфигурации хост-машины: https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.11.0_Benchmark_v1.0.0.pdf Очевидно, что код приложения также должен быть уязвимым. – rdgd