Docker安全设置

2023-11-17

Docker安全

Linux内核的命名空间机制提供的容器隔离安全。
Linux控制组机制对容器资源的控制能力安全。
Linux内核的能力机制所带来的操作权限安全
Docker程序(特别是服务端)本身的抗攻击性。
其他安全增强机制对容器安全性的影响。

docker与系统共享内核,在宿主机上产生相应的进程 (Pid参数)
Linux Cgroups 限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。
Linux Cgroups 给用户暴露出来的操作接口是文件系统。
它以文件和目录的方式组织在操作系统的 /sys/fs/cgroup 路径下。

Docker进行CPU限额
cpu_period 和 cpu_quota 这两个参数需要组合使用,用来限制进程在长度为 cpu_period 的一段时间内,只能被分配到总量为 cpu_quota 的CPU 时间,以上设置表示20%的cpu时间。

--cpu-period=100000 设定CPU时间的大小
--cpu-quota=20000   以上CPU时间内,本进程占用的CPU时间(20000/100000)
/sys/fs/cgroup/cpu/cpu.cfs_period_us
/sys/fs/cgroup/cpu/cpu.cfs_quota_us
/sys/fs/cgroup/cpu/tasks:记录本目录下的限制的进程PID

创建新的测试目录(自动复制上层目录限制文件)
在这里插入图片描述
设置CPU限制(总时间为20000)

echo "20000" > cpu.cfs_quota_us

创建容器,将pid放入tasks中

docker run -it --name vm1 --cpu-quota 20000 ubuntu
在容器中执行以下测试命令
dd if=/dev/zero of=/dev/null &

在这里插入图片描述
ctrl+pq后台运行
添加Pid至tasks文件

echo "1566" > tasks

查看结果
在这里插入图片描述
删除测试目录

cgdelete cpu:test

Docker进行memory(内存)限额
memory+swap

yum  install  -y 	libcgroup-tools.x86_64 

参数

指定内存		--memory 200M 
指定swap分区	--memory-swap=200M
内存 	/sys/fs/cgroup/memory/test/memory.limit_in_bytes	设置内存限制
swap 	/sys/fs/cgroup/memory/test/memory.memsw.limit_in_bytes  设置SWAP限制

查看参数内存信息
在这里插入图片描述
进入目录/sys/fs/cgroup/memory/,限制内存最大使用为300M

echo "314572800" > memory.limit_in_bytes 

测试

cgexec -g memory:test dd if=/dev/zero of=test bs=1M count=400   

发现swap被使用了100M
在这里插入图片描述
限制可用SWAP也为300M,再次创建,失败
在这里插入图片描述
设置对应的docker容器下的memory的内存相应的操作权限 (cgred服务)
新建用户student
设置其限制参数

systemctl start cgred.service 

编辑 /etc/cgrules.conf

student memory test/

在这里插入图片描述
重新启动服务

systemctl restart cgred.service 

切换至用户student
进入/dev/shm目录,开始写入
测试

dd if=/dev/zero of=/dev/shm/test bs=1M count=298M成功
大于298M全部失败,内存被限制在了300M左右

限制读写速度(/sys/fs/cgroup/blkio/)

--device-read-bps list            以byte为单位限制读速度
--device-read-iops list           以IO效率为单位限制读速度
--device-write-bps list           以byte为单位限制写速度
--device-write-iops list          以IO效率为单位限制读速度

设置限制

docker run  -it --name vm3 --device-write-bps /dev/sda:10M ubuntu

测试

dd if=/dev/zero of=file bs=1M count=30 oflag=direct

在这里插入图片描述
利用文件冻结和启动文件
在这里插入图片描述
文件
在这里插入图片描述
利用LXCFS增强docker容器隔离性和资源可见性
原因:在运行容器时指定了容器的相应的内存大小及其相应的swap分区大小,但是在容器内查看时发现其使用率相应大小还是与宿主机相同,因此容器的隔离性不好

安装lxcfs,并指定目录

yum install lxcfs-2.0.5-3.el7.centos.x86_64.rpm -y
lxcfs /var/lib/lxcfs/ &

查看生成的文件

ll /var/lib/lxcfs/

在这里插入图片描述
指定参数生成容器

docker run -it -m 300m \
-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 \
--name ubuntu \
ubuntu 

此时参数被严格限制
在这里插入图片描述
设置特权级运行的容器:–privileged=true
有的时候我们需要容器具备更多的权限,比如操作内核模块,控制swap交换分区,挂载USB磁盘,修改MAC地址等。

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

安全加固:
镜像:
安全的基础镜像
删除镜像中的SUID,SGID权限
启用Dokcer的内容信任
最小安装原则
使用Clair进行镜像安全扫描
使用非root用户运行容器

容器:
Docker主机进行安全加固
限制容器之间网络流量
配置Docker守护程序的TLS身份
启用用户命名空间的支持(userns-remap)
限制容器的内存使用量
适当设置CPU的优先级

Dokcer工具:
Docker Bench for Security
Clair
Cilium
Anchore

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker安全设置 的相关文章

随机推荐

  • = 1.0.1ubuntu2.13)' is not installed' aria-label='The required dependency 'apt (>= 1.0.1ubuntu2.13)' is not installed'> The required dependency 'apt (>= 1.0.1ubuntu2.13)' is not installed

    使用Ubuntu系统的时候 系统提示升级 从14 04升级到16 04时 提示 The required dependency apt gt 1 0 1ubuntu2 13 is not installed 该提示指的是没有安装所需的依赖
  • Django实现教育平台---个人用户中心管理

    修改用户头像 django文件 上传 下面的html的样式省去 上传文件一定要定义enctype
  • ElasticSearch6.x 之IK 分词

    IK分词器介绍 elasticsearch analysis ik git地址 https github com medcl elasticsearch analysis ik 分词方式 Analyzer ik smart ik max w
  • pycharm 有些库(函数)没有代码提示的解决办法

    问题描述 如图 输入变量im 后没有关于第三方库相应的函数或其他提示 当然 此文档的前提是有相关的函数说明以及已有相关设置等 解决方案 python是动态强类型语言 IDE无法判断Image open Me jpg 的返回值类型 无法根据参
  • Git密钥配置

    一 下载并安装Git 官网下载地址点击这里 二 打开git bash 选择一个空文件夹 右键选择 Git Bash Here 三 配置密钥 在Git Bash界面输入git命令 初始化自己的用户名和邮箱 git config global
  • C# string类型(引用类型)

    C string类型 引用类型 2016年03月31日 10 34 45 阅读数 966 sing类型 引用类型 名称 CTS类型 说明 string System String Unicode字符串 string str1 hello s
  • Python教程:类的继承——深入理解继承的概念和用法

    Python教程 类的继承 深入理解继承的概念和用法 类的继承是面向对象编程中的重要概念 它允许我们定义一个新的类 并从现有的类中继承属性和方法 这种继承关系可以让我们在代码中实现代码重用 提高代码的可维护性和可扩展性 在本文中 我们将深入
  • k8s非高可用环境搭建

    k8s非高可用环境搭建 文章目录 k8s非高可用环境搭建 环境准备 集群信息 1 节点规划 2 修改hostname 3 添加hosts解析 4 调整系统配置 5 安装docker 部署kubernetes 1 安装kubernetes k
  • Python 一篇入门

    目录 Python 的简介与特点 Python支持多种编程风格 解释运行 跨平台 可扩展强 可嵌入 丰富的库 Python版本选择 Python开发环境搭建 认识Python解释器 快速入门 变量和赋值 动态类型 变量命名规则 认识 数字
  • Android DataStore 使用详解

    转载请标明出处 http blog csdn net zhaoyanjun6 article details 127358235 本文出自 赵彦军的博客 文章目录 概述 使用 DataStore 本地数据 查看DataStore 文件 Ke
  • Eclipse中JUnit的安装及初始使用

    JUnit的下载 安装 1 下载 http www junit org JUnit软件包 版本很多 可以自行选择 2 在eclipse中添加junit jar包 打开eclipse gt 菜单栏点击project gt properties
  • ubuntu pip intall出现“设备上没有空间”的解决办法

    原因 空间问题呗 东西太多了 tmp盘不够大 pip install的时候文件包会预先下载到tmp盘 步骤1 在home目录下新建一个tmp文件夹 用来取代系统根目录的tmp文件夹 步骤2 设置环境变量TMPDIR export TMPDI
  • [LeetCode-02]-Add Two Numbers-性能极好

    文章目录 题目相关 Solution 1 错误的解法 2 正确解法 3 几个用例 后记 每周完成一个ARTS Algorithm Review Tip Share ARTS Algorithm 每周至少做一个 leetcode 的算法题 R
  • 强化学习打卡班第四五章

    强化学习打卡班第四五章 第四章 Policy Gradient梯度策略 例子 贝叶斯公式补充 奖励函数 reward function 最大化方法 梯度上升 PPO算法 从 On policy 到 Off policy 第四章 Policy
  • Linux 使用wget 命令下载JDK的方法

    Oracle官网上下载jdk 需要点击accept licence的才能下载 使用下面的命令 直接可以下载 wget no check certificate no cookies header Cookie oraclelicense a
  • DeBlurGANv2图像去模糊 训练自己的数据集

    之前在有位博主的DeblurGANv2教程的页面下留了言 很多小伙伴来私信我 config yaml怎么调参数 predict py和train py需要怎么修改 之前只跑了predict 有些问题也没办法解答 最近自己跑了一下train
  • MTU 和 MSS 区别

    MTU Maximum Transmit Unit 最大传输单元 即物理接口 数据链路层 提供给其上层 通常是IP层 最大一次传输数据的大小 以普遍使用的以太网接口为例 缺省MTU 1500 Byte 这是以太网接口对IP层的约束 如果IP
  • HPE Microserver GEN10升级BIOS

    到手的机子BIOS版本还是ZA10A290 非常有必要升级 便从HPE官网下载了最新的版本 ZA10A360 选择UEFI Shell方式更新 官网下载地址 https support hpe com hpesc public km pro
  • Cutter - Web视频剪辑工具原理浅析

    大厂技术 坚持周更 精选好文 最近一直在开发 web视频剪辑工具 cutter 这个工具可以方便老师们编辑拍摄好的视频 这是一个挺有意思的项目 预计分多章和大家分享介绍 本期主要介绍下其大体流程 方便大家对其原理有一个简单认知 Cutter
  • Docker安全设置

    Docker安全 Linux内核的命名空间机制提供的容器隔离安全 Linux控制组机制对容器资源的控制能力安全 Linux内核的能力机制所带来的操作权限安全 Docker程序 特别是服务端 本身的抗攻击性 其他安全增强机制对容器安全性的影响