使用 AppArmor 包含 Docker 引擎

使用 AppArmor 包含 Docker 引擎

面对提醒Docker Engine 应该在 AppArmor 或 SELinux 中运行,如何在 Ubuntu 14.04 上的 AppArmor 下运行 Docker?

Docker 安全文档LXC 文档提到 Ubuntu 附带了用于 LXC 的 AppArmor 模板。要怎么做才能利用它?

假设有一个默认的 Ubuntu Server 14.04 主机,并且安装了 Docker curl -s https://get.docker.io/ubuntu/ | sudo sh,那么接下来要做什么才能在运行容器时,Docker 引擎本身包含在 AppArmor 之下?

答案1

嗯,这是使用 Ubuntu 存储库之外的软件包时出现的问题。您需要让 Docker Engine 开发人员为您编写 apparmor 配置文件,或者自己编写。selinux 配置文件也一样。

现在您将开始获得选项,是否应该使用 LXC、apparmor、selinux 等。

例如,Docker 开发人员认为您需要更新 -http://blog.docker.com/这无疑是处理局势的一种方法。

Apparmor 和 selinux 可以(潜在地)保护您免受零日漏洞的攻击,但漏洞可以通过更新来修复。

apparmor 的优点是比较容易学习,缺点是你必须自己编写配置文件。

请参阅 apparmor 文档

https://help.ubuntu.com/community/AppArmor#Profile_customization

https://wiki.ubuntu.com/AppArmor

或者,对于一个实际的例子,使用一个相当简单的程序,参见http://blog.bodhizazen.com/linux/apparmor-privoxy-profile/

只要我们有意见……

与 Ubuntu 相比,RHEL 和 Fedora 在虚拟化方面略胜一筹。RHEL 正在与 Docker 合作提供支持,包括 selinux

http://www.redhat.com/about/news/press-archive/2014/4/red-hat-docker-expand-collaboration

我不太清楚 Fedora 和 Docker 的情况,但 Fedora 使用 selinux 和 virtmanager 来管理 LXC -http://major.io/2014/04/21/launch-secure-lxc-containers-on-fedora-20-using-selinux-and-svirt/

最终,您必须审查这些意见并选择最适合您的解决方案。

答案2

docker-engine 的当前版本是 1.10.2-cs1,以下是 Docker 提供的用于运行容器的默认 AppArmor 配置文件https://docs.docker.com/engine/security/apparmor/

#include <tunables/global>


profile docker-default flags=(attach_disconnected,mediate_deleted) {

  #include <abstractions/base>


  network,
  capability,
  file,
  umount,

  deny @{PROC}/{*,**^[0-9*],sys/kernel/shm*} wkx,
  deny @{PROC}/sysrq-trigger rwklx,
  deny @{PROC}/mem rwklx,
  deny @{PROC}/kmem rwklx,
  deny @{PROC}/kcore rwklx,

  deny mount,

  deny /sys/[^f]*/** wklx,
  deny /sys/f[^s]*/** wklx,
  deny /sys/fs/[^c]*/** wklx,
  deny /sys/fs/c[^g]*/** wklx,
  deny /sys/fs/cg[^r]*/** wklx,
  deny /sys/firmware/efi/efivars/** rwklx,
  deny /sys/kernel/security/** rwklx,
}

要将新的配置文件加载到 AppArmor 中: $ apparmor_parser -r -W /path/to/your_profile

运行容器时,它会使用 docker-default 策略,除非您使用 security-opt 选项覆盖它。例如,以下内容明确指定了不同的 docker 策略:

$ docker run --rm -it --security-opt apparmor:docker-different hello-world

相关内容