Information Security
May 2015 25

Печальное состояние сисадмина в эпоху контейнеров

Original author: Erich Shubert
Translation
Системное администрирование сейчас в печальном состоянии. Оно в хаосе.

Я не говорю про олдскульных админов, они знают как управлять системами и контролировать обновления.

Проблема в контейнерах, готовых виртуальных машинах (prebuilt VMs), а также в невероятном хаосе, который они создают, потому что в их концепции не хватает «доверия» и «обновлений».

Давайте взглянем на Hadoop. Судя по всему, никто не знает как собирать Hadoop с нуля; это просто огромная куча из зависимостей, необходимых версий и утилит сборки.

Ни одна из «замечательных» утилит не собирается традиционной командой make. Каждая утилита поставляется со своим собственным не переносимым и не совместимым c чем-либо «методом дня» для сборки.

И так как никто не умеет собирать вещи с нуля, то все просто скачивают бинарники со случайных веб-сайтов, часто даже без проверки цифровой подписи.

Рай для вирусов и АНБ. Больше не нужно эксплуатировать уязвимости в безопасности; достаточно просто сделать «приложение», «виртуальную машину» или «образ для Docker» и позволить людям скачать этот инфицированный код к себе в сеть.

Типичным примером будет викистраница в дебиане, посвящённая Hadoop. По существу, люди отказались от своих попыток собирать Hadoop с нуля для дебиана и предлагать качественные пакеты ещё в 2010 году.

Чтобы собрать Apache Bigtop, по-видимому, требуется сначала установить puppet3. Позвольте ему выкачать магические данные из интернета и попытаться запустить sudo puppet, чтобы включить бакдоры от АНБ (например, он скачает и установит устаревший JDK, потому что он считает вас слишком тупым, чтобы установить джаву). Ну а потом надейтесь, что gradle не выплюнет 200 строчек бесполезных ошибок.

Я не шучу, он попытается запустить такие команды как:

/bin/bash -c "wget http://www.scala-lang.org/files/archive/scala-2.10.3.deb ; dpkg -x ./scala-2.10.3.deb /" 

Заметьте, он даже не устанавливает пакет правильным образом, а лишь распаковывает его в ваш корневой каталог. Во время загрузки не проверяется никаких подписей и даже SSL-сертификатов (источник: Bigtop puppet manifests)

Даже если сборка пройдёт нормально, то всё равно она будет использовать неподписанные бинарники, скаченные из Maven'а.

Сегодня, вместо чистой модульной архитектуры везде огромная куча заблокированных зависимостей (interlocked dependencies). В последний раз, когда я видел classpath Hadoop'а, он уже состоял из более 100 jar-файлов. Готов поспорить, что сейчас там их 150, даже без использования HBaseGiraphFlumeCrunchPigHiveMahoutSolrSparkElasticsearch или ему подобных из Apache.

Stack — это новый термин, означающий «я понятия не имею, что я на самом деле использую».

Maven, ivy и sbt — это утилиты для скачивания неподписанного кода и запуска его на вашем компьютере.

С контейнерами этот хаос ещё хуже.

Когда-нибудь пробовали сделать обновление безопасности для контейнера?

По существу, подход Docker'а состоит в скачивании неподписанных бинарников, запуске их, и надежды, что они не содержат бакдоров для сети вашей компании.

Мне это напоминает shareware для винды из девяностых.

Когда появится первый Docker-образ, содержащий тулбар от Ask? Первый интернет-червь, распространяющийся через Docker?

Все эти годы дистрибутивы Linux пытались предоставлять вам надёжные операционные системы, с подписанными пакетами, собранными из сети доверия (web of trust). Некоторые даже работают над воспроизводимыми сборками.

А потом, всё стало виндофициривано. «Приложения» стали безумием, которое вы скачиваете и запускаете даже не задумываясь о безопасности или способах обновления. Потому что «мы живём лишь один раз».

Update: меня поправили, что это началось ещё до Docker'а: «Docker — это новый 'curl | sudo bash'». Это так, но сейчас стало особенно популярно скачивать и запускать недоверенное ПО в своём «датацентре». И это очень плохо.

Раньше админы прилагали все усилия, чтобы предотвратить уязвимости в безопасности; а теперь они называют себя «devops» и вводят эти дыры в свою сеть самостоятельно!
+119
79.5k 238
Comments 99
Top of the day