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(六)容器安全性(图文详细解释)

一、前言

一、简介

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

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

(3)Linux内核的能力机制所带来的操作权限安全
一般容器并不需要“真正的”root权限,只需要给某几个必须的权限即可,还能实现白名单。
(4)linux的cpu,内存,磁盘等资源是有限的,合理控制分配资源使得容器能够正常的在linux系统上运行。

二、系统资源调节中心

Linux Cgroups 的全称是 Linux Control Group,在/sys/fs/cgroup中有许多的子目录,分别控制每个资源,/sys/fs/cgroup/memory/下的这些变量是是物理机全局的控制
在这里插入图片描述

二、内存Memory

一、内存的查看

内存的地址/sys/fs/cgroup/memory,下面的资源都是对内存的管理
在这里插入图片描述

运行一个docker,其进程为11716
在这里插入图片描述
/sys/fs/cgroup/memory/docker/b6639de883cc006c8c05921b708264c9429a3158ec1e753b99dfb52c5fdb8a98是针对该进程11716容器的控制

并且这些变量具有继承属性。
在这里插入图片描述

二、内存的限制

[root@server1 memory] yum install libcgroup-tools.x86_64 下载管理资源的工具
[root@server1 memory] cd /sys/fs/cgroup/memory  进入内存界面
[root@server1]memory] mkdir x1    创建x1新文件,其会继承父文件的内容
[root@server1 memory] cd x1/
[root@server1 x1]  ls    

在这里插入图片描述
设置内存为200M,内存的单位是字节,故200x1024x1024=209715200
注意此部分只限制了内存,swap不会参与进来

[root@server1 x1] echo 209715200 > memory.limit_in_bytes 设置其内存为200M  
[root@server1 x1] cd /dev/shm/   进入此界面进行测试
[root@server1 shm] cgexec -g memory:x1 dd if=/dev/zero of=bigfile bs=1M count=100  制造一个一直占用内存的进程大小为100x1
[root@server1 shm] cgexec -g memory:x1 dd if=/dev/zero of=bigfile bs=1M count=200 制造一个一直占用内存的进程大小为200x1

结果如下:当内存超过或等于200M的时候直接杀死进程
在这里插入图片描述

三、cpu的限制

一、第一种方法

在cup目录下新建下x2目录,控制cup的算力为原来的十分之一

[root@server1 ~] cd /sys/fs/cgroup/cpu
[root@server1 cpu] mkdir x2
[root@server1 cpu] cd x2               具有继承性,建立x2文件进行实验
[root@server1 x2] ls
cgroup.clone_children  cpuacct.usage_percpu  cpu.shares
cgroup.event_control   cpu.cfs_period_us     cpu.stat
cgroup.procs           cpu.cfs_quota_us      notify_on_release
cpuacct.stat           cpu.rt_period_us      tasks
cpuacct.usage          cpu.rt_runtime_us
[root@server1 x2] cat cpu.shares 
1024                                 内存大小为1024
[root@server1 x2] echo 100 > cpu.shares             给予100,约为cpu算力的百分之10

为做对比,制造出两个dd进程,将第二个进程的id写如cup控制目录
在这里插入图片描述
结果发现cup使用率约为9:1
在这里插入图片描述
结束后fg唤回程序

二、第二种方法

cpu限制为十分之二
在这里插入图片描述
方法同上

[root@server1 x2] dd if=/dev/zero of=/dev/null &
[1] 3735
[root@server1 x2] echo 3735 > tasks 
[root@server1 x2] top

在这里插入图片描述

四、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参数,速度就很快。
在这里插入图片描述

五、安全加固

一、利用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

结果显示总共只有256的内存
在这里插入图片描述

二、设置特权级运行的容器

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

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

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

四、其他安全加固的思路

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

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 08:14:35  更:2021-07-28 08:15:52 
 
开发: 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年11日历 -2024/11/25 17:26:42-

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