Docker容器

Docker 安全加固

本文主要是介绍Docker 安全加固,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、docker安全加固

1、利用LXCFS增强docker容器隔离性和资源可见性 (proc容器与宿主机之间是共享的 没有进行隔离)

  此rpm包在真机桌面q目录中  需先传到虚拟机/root/下 在进行安装

  把宿主机 /var/lib/lxcfs/proc/目录下生成的6个文件挂接到容器内 底层用cgroup来做资源控制,通过lxcfs实现隔离 给内存256M 此时我们看到的宿主机内存也是256M

2、 设置特权级运行的容器:--privileged=true

  有的时候我们需要容器具备更多的权限,比如操作内核模块,控制swap交换分区,挂载USB磁盘,修改MAC地址等。

  root用户在容器内不能宕掉某个设备 权限受限是因为安全原因在容器内降低了root用户的权限

  加上--privileged=true 就会在容器内执行root用户的权限 就可以宕掉或开启某个设备 ( 权限全开,近乎root)

3、设置容器白名单:--cap-add

  --privileged=true 的权限非常大,接近于宿主机的权限,为了防止用户的滥用,需要增加限制,只提供给容器必须的权限。此时Docker 提供了权限白名单的机制,使用--cap-add添加必要的权限。

  capabilities手册地址:

  http://man7.org/linux/man-pages/man7/capabilities.7.html

  # docker run -it --cap-add=NET_ADMIN --name vm1 ubuntu

  # docker inspect -f {{.HostConfig.Privileged}} vm1 false

  # docker inspect -f {{.HostConfig.CapAdd}} vm1 {[NET_ADMIN]}

  如果设置特权级运行的容器:--privileged=true 可以查到磁盘设备

 

 

安全加固的思路

保证镜像的安全

使用安全的基础镜像

删除镜像中的setuid和setgid权限

启用Docker的内容信任(镜像签名)

最小安装原则 对镜像进行安全漏洞扫描,镜像安全扫描器:Clair

容器使用非root用户运行(尽量用普通用户运行)

保证容器的安全

对docker宿主机进行安全加固

限制容器之间的网络流量

配置Docker守护程序的TLS身份验证

启用用户命名空间支持(userns-remap)

限制容器的内存使用量

适当设置容器CPU优先级

docker安全的遗留问题

主要的内核子系统都没有命名空间,如:

SELinux

cgroup

在/sys下的文件系统

/proc/sys, /proc/sysrq-trigger, /proc/irq, /proc/bus

设备没有命名空间:

/dev/mem

/dev/sd*文件系统设备

内核模块



这篇关于Docker 安全加固的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!