我的问题是关于LXC容器的安全性。
如果我在我的盒子上运行多个容器,并且给用户一个单独的ssh访问他们自己的容器,那么这些容器中的任何一个能侵入那个盒子上的其他容器或者甚至主机吗?
lxc集装箱的安全边界在哪里?
发布于 2013-09-07 01:00:41
正如我在LXC中看到的,它在/var/lib/lxc下存储容器信息和根文件系统(使用默认备份存储)。容器创建模板还倾向于将缓存的分发信息存储在/var/cache/lxc下。
因此,通常只允许访问根文件系统,除非在创建根文件时出现错误使用或配置错误的用户配置文件。
但是Ubuntu开发人员可能已经到了这个地步,他们已经在AppArmor的帮助下提供了一个安全的解决方案。
LXC附带了Apparmor配置文件,目的是防止主机在容器内意外滥用特权。例如,容器将无法写入/proc/sysrq-trigger
或大多数/sys
文件。
通过运行lxc输入usr.bin.lxc-start配置文件。此配置文件主要防止lxc-从容器根文件系统之外安装新的文件系统开始。在执行容器的init之前,LXC请求切换到容器的配置文件。默认情况下,此配置文件是在/etc/apparmor.d/lxc/lxc-default
中定义的lxc容器默认策略。此配置文件防止容器访问许多危险的路径,并无法安装大多数文件系统。
如果您发现lxc-start由于其Apparmor策略拒绝的合法访问而失败,则可以通过以下操作禁用lxc-start配置文件:
sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start
sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/
这将使lxc-start不受限制地运行,但继续限制容器本身。如果还希望禁用容器的限制,那么除了禁用usr.bin.lxc-start
配置文件外,还必须添加:
lxc.aa_profile = unconfined
容器的配置文件。如果希望在自定义配置文件中运行容器,可以在/etc/apparmor.d/lxc/
下创建新配置文件。它的名称必须以lxc开头,这样lxc才能开始转换到该配置文件。创建策略后,使用以下方法加载该策略:
sudo apparmor_parser -r /etc/apparmor.d/lxc-containers
该配置文件将在重新启动后自动加载,因为它是由文件/etc/apparmor.d/lxc-containers
提供的。最后,要使容器CN使用这个新的lxc-CN-profile
,请将以下行添加到其配置文件中:
lxc.aa_profile = lxc-CN-profile
lxc-execute
不输入Apparmor配置文件,但它生成的容器将被限制。
https://askubuntu.com/questions/342388
复制相似问题