IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 运维实操——docker容器(七)安全 -> 正文阅读

[系统运维]运维实操——docker容器(七)安全

1、Docker容器的安全

Docker容器的安全性,主要依赖于Linux系统自身,考虑Docker的安全性时,主要有:
(1)Linux内核的命名空间机制提供的容器隔离安全
启动一个容器时,Docker将在后台为容器创建一个独立的命名空间,就是隔离,但是ns(namespace)的隔离不够强,容器都是使用的同一个物理机的内核

(2)Linux控制组机制对容器资源的控制能力安全
启动容器时,Docker将在后台为容器创建一个独立的控制组策略集合Cgroups,它负责分配内存、CPU、磁盘IO等。

(3)Linux内核的能力机制所带来的操作权限安全
一般容器并不需要“真正的”root权限,只需要给某几个必须的权限即可,还能实现白名单。

2、容器资源控制

接下来分别对memory、cpu和io进行控制

(1)memory

后台运行容器,查看pid是11716
在这里插入图片描述

查看
在这里插入图片描述
在/sys/fs/cgroup中有许多的子目录,分别控制每个资源,/sys/fs/cgroup/memory/下的这些变量是是物理机全句的控制
在这里插入图片描述
/sys/fs/cgroup/memory/docker是所有容器的控制
在这里插入图片描述
/sys/fs/cgroup/memory/docker/b6639de883cc006c8c05921b708264c9429a3158ec1e753b99dfb52c5fdb8a98是针对该11716容器的控制
在这里插入图片描述
并且这些变量具有继承属性。
在这里插入图片描述
/dev/shm挂载到tmpfs 默认是内存的一半,我们可以利用这个特性测试控制memory
在这里插入图片描述

memory创建x1来测试,修改memory的最大值为200M。
在这里插入图片描述

安装libcgroup-tools工具。内存不够用的话,还有swap分区帮忙,为了不影响实验效果,先关闭swap,free可以看到已经关闭swap,100M的块使用内存时,可以成功;200M时就失败了,这是因为控制x1的内存大小是200M

cgexec -g memory:x1 dd if=/dev/zero of=bigfile bs=1M count=100
cgexec -g memory:x1 dd if=/dev/zero of=bigfile bs=1M count=200

在这里插入图片描述
就算这个容器不用swap,其他容器页可能用到swap,所以直接关掉swap不合适,再次打开swap,选择内存和swap在一起的这个选项,控制总量为200M,cgexec -g memory:x1 dd if=/dev/zero of=bigfile bs=1M count=300失败,且没有用swap
在这里插入图片描述

(2)cpu

对于cpu优先级的控制:
建立x2目录,cpu.shares 表示优先级,默认是1024,现在设置为100,大概是原来的十分之一。
在这里插入图片描述
后台运行重复的命令,改进程号是16222,top查看现在cpu使用是百分之百。并把x2子目录中的tasks中写入16222,表示对16222进行控制。
在这里插入图片描述
再开启一个进程,16365,top查看,二者的cpu占用基本是9比1。
在这里插入图片描述
对于cpu配额的控制:
cpu_period 表示总量,总数是100000; cpu_quota 表示配额,是-1时表示不控制策略,即总数是多少用多少。现在修改配额为总数的百分之二十。
在这里插入图片描述
关闭16222进程,只剩下16365,把16365导入到tasks中,top查看,只占用了百分之二十
在这里插入图片描述

(3)io

docker run -it —rm -device-write-bps /dev/vda:30MB rel7 bash,–device-write-bps限制写设备的bps速度为30M。oflag=direct表示,不通过内存到io设备,直接接入io设备,此时可以看到用了6.6秒,如果没有这个oflag=direct参数,速度就很快。
在这里插入图片描述

3、安全加固

(1)利用LXCFS增强docker容器隔离性和资源可见性

[root@server1 lxcfs]# yum install -y lxcfs-2.0.5-3.el7.centos.x86_64.rpm 		%安装插件
[root@server1 lxcfs]# lxcfs /var/lib/lxcfs & 									%运行
[root@server1 lxcfs]# docker run  -it -m 256m \			%创建容器,内存限制为256MB
  
-v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \
-v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw \
-v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \
-v /var/lib/lxcfs/proc/stat:/proc/stat:rw \
-v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw \
-v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw \
   ubuntu

在这里插入图片描述

(2)设置特权级运行的容器

不加–privileged=true这个参数,无法关闭eth0,加了–privileged=true这个参数后,就可以关闭了
在这里插入图片描述

(3)设置容器白名单:–cap-add

但是上面是权限都给,有点不放心,我们想做到需要什么给什么,而不是直接都给。
加入–cap-add=NET_ADMIN这个参数,就可以控制网络ip的添加和删除了
在这里插入图片描述
在这里插入图片描述

(4)其他安全加固的思路

使用安全的基础镜像
删除镜像中的setuid和setgid权限
启用Docker的内容信任
最小安装原则
对镜像进行安全漏洞扫描,镜像安全扫描器:Clair
容器使用非root用户运行

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:53:55  更:2021-07-24 11:54:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 5:30:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码