之间是否有任何显着差异LXC(Linux 容器)和FreeBSD 的监狱在安全性、稳定性和性能方面?
乍一看,两种方法看起来非常相似。
答案1
无论这里使用什么奇特的名称,两者都是特定问题的解决方案:比经典 Unix 更好的隔离解决方案chroot。操作系统级虚拟化、容器、区域,甚至“chroot with steroids”都是定义用户空间分离相同概念的名称或商业名称,但具有不同的功能。
Chroot 于 1982 年 3 月 18 日推出,即发布前几个月4.2 BSD,作为测试其安装和构建系统的工具,但今天它仍然有其缺陷。由于 chroot 的首要目标只是提供新根路径中,需要隔离或控制的系统的其他方面(网络、进程视图、I/O 吞吐量)未被发现。这就是第一个容器(用户级虚拟化)出现的地方。
这两种技术(FreeBSD Jails 和 LXC)都利用用户空间隔离来提供另一层安全性。这种划分将确保确定的进程仅与同一主机上同一容器中的其他进程通信,并且如果使用任何网络资源实现“外部”通信,则所有通信都将转发到该容器分配的接口/通道有。
特征
FreeBSD 监狱:
- 被认为是稳定的技术,因为它是 FreeBSD 自 4.0 以来的一个功能;
- 它充分利用了 ZFS 文件系统,您可以克隆监狱并创建监狱模板轻松部署更多监狱。多一点ZFS 疯狂;
- 有据可查, 和不断发展的;
- 分层监狱允许您在监狱内创建监狱(我们需要更深入!)。结合起来
allow.mount.zfs
以获得更多的权力,其他变量例如children.max
定义最大儿童监狱。 - 控制中心(8)将处理监狱的资源限制(内存、CPU、磁盘……);
- FreeBSD 监狱处理 Linux用户空间;
- 网络隔离
vnet
,允许每个监狱有自己的网络堆栈、接口、寻址和路由表; nullfs
帮助将文件夹链接到位于真实服务器上的文件夹;- 埃兹贾尔帮助大规模部署和管理监狱的实用程序;
- 许多内核可调参数 (
sysctl
)。security.jail.allow.*
参数将限制该监狱的 root 用户的操作。 - 也许,FreeBSD 监狱将扩展 VPS 项目的一些功能,例如实时迁移在不久的将来。
- ZFS 和 Docker 做了一些努力一体化跑步。仍处于实验阶段。
- 自由BSD 12支持监狱内的 bhyve 和监狱内的 pf,为这些工具创建进一步的隔离
- 在过去的几年里,开发了许多有趣的工具。其中一些已索引这篇博文。
- 备择方案: FreeBSD VPS 项目
Linux 容器 (LXC):
- 新的“内核”技术,但得到了大公司(特别是 Canonical)的认可;
- 非特权容器从LXC 1.0开始,在容器内部安全方面迈出了一大步;
- 容器内的UID和GID映射;
- 内核命名空间,用于分离IPC、挂载、pid、网络和用户。这些命名空间可以以分离的方式处理,其中使用不同的网络命名空间在存储等其他方面不一定是孤立的;
- 控制组 (cgroup) 用于管理资源并对资源进行分组。CG经理是实现这一目标的人。
- Apparmor/SELinux 配置文件和内核功能,用于更好地实施容器可访问的内核功能。 Seccomp 也可用于 lxc 容器来过滤系统调用。其他安全方面这里。
正在开发实时迁移功能。真的很难说它什么时候可以投入生产使用,因为 docker/lxc 将必须处理用户空间进程暂停、快照、迁移和整合 -参考1,参考2。实时迁移工作中使用基本容器(没有设备直通,既不复杂的网络服务也不特殊的存储配置)。- API 绑定支持在 python3 和 2、lua、Go、Ruby 和 Haskell 中进行开发
- 集中的“最新消息”区域。每当您需要检查某些错误是否已修复或新功能是否已提交时,这非常有用。这里。
- 一个有趣的替代方案可能是长xd,它在底层可以与 lxc 一起使用,但是它有一些不错的功能,例如 REST api、OpenStack 集成等。
- 另一个有趣的事情是 Ubuntu 似乎正在将 zfs 作为容器的默认文件系统16.04。为了保持项目的一致性,lxd 推出了 2.0 版本,其中一些功能如下:zfs相关。
- 备择方案:开放VZ,码头工人
- 码头工人。请注意,Docker 使用名称空间、cgroup 创建“每个应用程序”/“每个软件”隔离。主要差异这里。 LXC 创建具有多个进程的容器,而 Docker 尽可能地将容器简化为单个进程,然后通过 Docker 对其进行管理。
- 将 Docker 与 SELinux 集成并减少容器内的功能以使其更加安全的努力 -Docker 和 SELinux,丹·沃尔什
- Docker、LXD 和 LXC 之间有什么区别
Docker 不再使用 lxc。他们现在有一个名为的特定库朗克它直接处理与低级内核命名空间和 cgroups 功能的集成。
这两种技术都不是安全灵丹妙药,但它们都是隔离由于混合操作系统基础架构而不需要完全虚拟化的环境的好方法。在阅读大量文档并实现这些操作系统级 virt 为您提供的内核可调参数、MAC 和隔离之后,安全性就会出现。
也可以看看:
- 手工制作的容器
- BSD Now:关于 Jails 您需要了解的一切
- ezjail – 监狱管理框架
- 容器简史:从 20 世纪 70 年代到 2017 年
- Docker 被认为是有害的- 关于容器技术安全马戏团的好文章。