LXC Linux Containers часть №8. Безопасность

Оглавление

Пожалуй наиболее серьезной проблемой безопасности контейнеров LXC является то, что несмотря на разделенные пространства имён (namespace), UID 0 пользователя root так же имеет значение 0 и в хост-системе. Если каким то образом выйти из контейнера используя файловые системы proc, sys (есть проблемы их изоляции) или системные вызовы, то потенциально, можно стать супер-пользователем и на хост-системе. Эта проблема должна полностью решиться с выходом LXC 1.0. В этой версии, появляется возможность создавать непривилегированные контейнеры в пользовательском пространстве имен (user namespaces). Если совсем кратко, то всем пользователям контейнеров, а, точнее, их UID будут присваиваться особые UIDы хоста. В результате пользователь контейнера с UID 0 в случае побега, в хост-системе, будет иметь например UID 10001. Подробно, о том как это работает и как этим пользоваться уже можно почитать в интернете.

Для большей надежности, котейнеры LXC поддерживают профили AppArmor, а так же контекст SELinux. Считается, что AppArmor успешно предотвращает любую из известных сегодня попыток побега из контейнера. Поэтому не пожалейте времени на изучение этого вопроса, если критична безопасность вашей виртуально среды. Профили AppArmor и контекст SELinux задается с помощью параметров lxc.aa_profile и lxc.se_context соответственно, в конфигурационном файле для каждого экземпляра ОС.