一.安全加固
- 安全加固的思路
保证镜像的安全
1.使用安全的基础镜像
2.删除镜像中的setuid和setgid权限
3.启用Docker的内容信任
4.最小安装原则
5.对镜像进行安全漏洞扫描,镜像安全扫描器:Clair
6.容器使用非root用户运行 - 保证容器的安全
1.对docker宿主机进行安全加固
2.限制容器之间的网络流量
3.配置Docker守护程序的TLS身份验证
4.启用用户命名空间支持
5.限制容器的内存使用量
6.适当设置容器CPU优先级 - Docker安全遗留问题
- 主要的内核子系统都没有命名空间,如:SELinux,cgroup,在/sys下的文件系统,/proc/sys, /proc/sysrq-trigger, /proc/irq, /proc/bus
设备没有命名空间:/dev/mem,/dev/sd*文件系统设备,内核模块
二.利用LXCFS增强docker容器隔离性和资源可见性
- Linux利用Cgroup实现了对容器的资源限制,但在容器内部依然缺省挂载了宿主机上的procfs的/proc目录,其包含如:meminfo, cpuinfo,stat, uptime等资源信息。一些监控工具如free/top或遗留应用还依赖上述文件内容获取资源配置和使用情况。当它们在容器中运行时,就会把宿主机的资源状态读取出来,引起错误和不便。社区中常见的做法是利用 lxcfs来提供容器中的资源可见性。lxcfs 是一个开源的FUSE(用户态文件系统)实现来支持LXC容器,它也可以支持Docker容器。
- 如果默认建立容器,那么容器中看到的内存信息是主机的,这是不合理的,但是在主机中,我们又控制了资源,可是却无法显示,本实验要做的是在容器中资源也将被限制,显示被限制后的资源
- LXCFS通过用户态文件系统,在容器中提供下列 procfs 的文件。
/proc/cpuinfo
/proc/diskstats
/proc/meminfo
/proc/stat
/proc/swaps
/proc/