Russian Fedora

cообщество русскоязычных участников
международного проекта Fedora

Опять о SELinux и безопасности

В который раз SELinux успешно блокировал очередную уязвимость. Вы же не настолько наивны, что его выключаете, следуя протухшим хаутушкам и советам самозваных форумных линукс-гуру? Если выключаете, то прежде, чем читать дальше, немедленно его включите обратно. В этот раз уязвимость была в Docker, в котором вообще проблем с безопасностью хватает, и если б не наши коллеги, то было бы еще больше.

Забавно, что когда наши коллеги указали, что стандартная инсталляция RHEL или Fedora, со включенным SELinux неуязвима для эксплойта, то у представителей Docker Inc., как это говорится, бомбануло. Неясно, связана ли такая враждебность с тем, что Red Hat зарабатывает на Docker больше, чем Docker Inc.? Скорее всего, нет. Просто так злятся.

Вообще, с контейнерами (т.е. просто cgroups + namespaces) надо быть осторожными. Мы уже предупреждали вас, что контейнеры не ограничивают приложения так, как бы это хотелось. Наши коллеги из CoreOS, например, в довесок к SELinux добавили специальный функционал в свой конкурирующий с Docker продукт, rkt. Они даже сделали безопасность и изоляцию основными отличительными чертами нового релиза rkt 1.14.

Мы идем своим путем, выстраивая систему безопасности с самого низа до верха. Внизу находится загрузчик с UEFI и SecureBoot, который позволяет, например, блокировать ядро от изменения из userspace. В самом ядре, в дополнение в namespaces и cgroups, наши колеги постоянно добавляют новый функционал. Недавно Daniel Mack предложил механизм фильтрации трафика в зависимости от cgroups, основанный на eBPF, что теоретически позволит очень гибко управлять трафиком контейнеров. На этом же уровне реализован SELinux.

Выше идет система инициализации системы и/или запуска контейнеров, тот же systemd, Kubernetes, rkt, Docker, fleet. Например, помимо использования SELinux, мы можем эффективно ограничивать возможности демонов благодаря функционалу systemd. Сам systemd уже нравится не только нам, но и, например, Facebook, и очень странно, что еще остались упирающиеся.

Из-за одной уязвимости, к тому же остановленной SELinux, мы, конечно, не призываем бойкотировать Docker, как другие. Просто оглянитесь вокруг - возможно вам будет удобнее управлять контейнерами используя другие механизмы (systemd, Kubernetes, rkt).