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 安全加固的更多相关文章
- 开发漫谈:千万别说你不了解Docker!
1dotCloud到Docker:低调奢华有内涵 写在前面:放在两年前,你不认识Docker情有可原.但如果现在你还这么说,不好意思,我只能说你OUT了.你最好马上get起来,因为有可能你们公司很 ...
- docker好文收藏
深入浅出Docker(一):Docker核心技术预览 2. 核心技术预览 Docker核心是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观.我们从虚拟化方法的四个方面:隔离性.可配额/可度 ...
- 程序猿,千万别说你不了解Docker!
放在两年前,你不认识Docker情有可原.但如果现在你还这么说,不好意思,我只能说你OUT了.你最好马上get起来,因为有可能你们公司很快就会引入Docker. 今天就和大家讨论讨论这个备受好评的应用 ...
- 深入浅出Docker(一):Docker核心技术预览
Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.Docker提供了一种在安全.可 ...
- Docker生产环境实践指南
技术栈:1. 构建系统2. 镜像仓库3. 宿主机管理4. 配置管理5. 部署6. 编排7. 日志8. 监控 镜像:1. 如果用户像往常一样运行包安装命令,这些永远也用不上的缓存包文件将会永远地成为镜像 ...
- Docker Architecture、Docker Usage
目录 . 引言 - 为什么要有Docker技术 . Docker简介 . Docker安装.部署.使用 . Docker安全 . Docker底层实现 . Docker网络配置 . Dockerfil ...
- Docker其它安全特性
除了能力机制之外,还可以利用一些现有的安全机制来增强使用 Docker 的安全性,例如 TOMOYO, AppArmor, SELinux, GRSEC 等. Docker 当前默认只启用了能力机制. ...
- 从一到万的运维之路,说一说VM/Docker/Kubernetes/ServiceMesh
摘要:本文从单机真机运营的历史讲起,逐步介绍虚拟化.容器化.Docker.Kubernetes.ServiceMesh的发展历程.并重点介绍了容器化阶段之后,各项重点技术的安装.使用.运维知识.可以说 ...
- docker 安全
由于容器运行在主机上,且与主机共用一套内核,因此在容器的安全使用上会涉及到容器本身以及主机的安全加固,如针对系统调用,系统资源,远程访问等都需要进行安全方面的考量. docker官网给出了简单的一些建 ...
- Docker 快速验证 HTML 导出 PDF 高效方案
需求分析 项目中用到了 Echarts,想要把图文混排,当然包括 echarts 生成的 Canvas 图也导出 PDF. 设计和实现时,分析了 POI.iText.freemaker.world 的 ...
随机推荐
- 1.MAC获取文件路径;2.MAC使用SSH连接远程服务器,实现文件上传下载
首先来说一下如何获取文件路径 ····打开terminal,把文件拖进terminal 窗口,自动显示路径. 接下来说一下使用SSH连接远程服务器,实现文件上传下载 1. 上传本地文件到服务器 sc ...
- Java基础1-1-4—java基础语法(循环+随机数)
4.循环+随机数 4.1 循环语句-for循环 循环 特征:1.重复做某件事情 2.具有明确的开始和停止标志 for循环格式介绍 public static void main(String[] ar ...
- 让 MSYS2 Bash 像 Git Bash 一样显示 Git 分支名称
Git for Windows 的 Bash 有一个很实用的功能,如果当前目录处于 Git 仓库中,那么命令行中会显示当前 Git 分支的名称(见下图). 然而原版的 MSYS2 Bash 没有这个功 ...
- python学习第一周总结
第一周内容概要 day01 typora软件安装 markdown语法 typora软件功能介绍 网络博文编写教程 计算机的本质 计算机的五大组成部分 计算机的三大核心硬件 day02 操作系统 编程 ...
- 模拟实现strlen的三种方法
一.strlen()的工作原理 二.模拟实现strlen的三种方法 计数器方法 指针-指针 递归的方法 三.库函数实现strlen的思路 四.库函数的strlen同上面模拟实现strlen的区别 一. ...
- concurrent-map 和 sync.Map,我该选择哪个?
concurrent-map 和 sync.Map,我该选择哪个? 官方的map并不是线程安全的,如果我们在多线程中并发对一个map进行读写操作,是会引发panic的.解决方案除了使用锁来对map进行 ...
- 真·生产力「GitHub 热点速览」
这些工具真的能极大提高生产力,节约你的时间来自(摸)我(鱼)增(划)值(水).先别提 style2paints,你给它随意画个草图,就能给你一个能交付给甲方爸爸的成品插画.如果提升 30%-40% 传 ...
- 关于vue项目和内嵌iframe页面之间的通信问题
最近项目中遇到一个与内嵌iframe页面之间通信的问题,起初与原生之间通信很简单,没想到过与vue项目通信的问题,霎时间一脸懵*啊,百度了一下,原来是那么简单,这里记录下以供下次参考 //vue页面 ...
- html+css+js实现一个简易日历
0.效果预览 只实现了日历最基础的功能,当前日期红色显示,可通过上方的左右按钮查看上一月或下一月的日期. 1.HTML部分 1 <body> 2 <div id="cldF ...
- MySQL错误锦集【持续更新】
[42000][1075] Incorrect table definition; there can be only one auto column and it must be defined a ...