Docker安全基线检查需要修复的一些问题

一、可能出现的漏洞

限制容器之间的网络流量
限制容器的内存使用量
为Docker启用内容信任
将容器的根文件系统挂载为只读
审核Docker文件和目录
 

默认情况下,同一主机上的容器之间允许所有网络通信。 如果不需要,请限制所有容器间的通信。 将需要相互通信的特定容器链接在一起。默认情况下,同一主机上所有容器之间都启用了不受限制的网络流量。 因此,每个容器都有可能读取同一主机上整个容器网络上的所有数据包。 这可能会导致意外和不必要的信息泄露给其他容器。 因此,限制容器间的通信。

 
"默认情况下,Docker主机上的所有容器均等地共享资源。 通过使用Docker主机的资源管理功能(例如内存限制),您可以控制容器可能消耗的内存量。


默认情况下,容器可以使用主机上的所有内存。 您可以使用内存限制机制来防止由于一个容器消耗主机的所有资源而导致的服务拒绝,从而使同一主机上的其他容器无法执行其预期的功能。 对内存没有限制可能会导致一个问题,即一个容器很容易使整个系统不稳定并因此无法使用。"


"默认情况下禁用内容信任。 您应该启用它。
内容信任提供了将数字签名用于发送到远程Docker注册表和从远程Docker注册表接收的数据的功能。 这些签名允许客户端验证特定图像标签的完整性和发布者。 这确保了容器图像的出处"
"容器的根文件系统应被视为“黄金映像”,并且应避免对根文件系统的任何写操作。 您应该显式定义用于写入的容器卷。


您不应该在容器中写入数据。 属于容器的数据量应明确定义和管理。 在管理员控制他们希望开发人员在何处写入文件和错误的许多情况下,这很有用。"
除了审核常规的Linux文件系统和系统调用之外,还审核所有与Docker相关的文件和目录。 Docker守护程序以“ root”特权运行。 其行为取决于某些关键文件和目录。如 /var/lib/docker、/etc/docker、docker.service、 docker.socket、/usr/bin/docker-containerd、/usr/bin/docker-runc等文件和目录

二、修复建议:

在守护程序模式下运行docker并传递'--icc = false'作为参数。
例如,
```
/usr/bin/dockerd --icc=false
```
若使用systemctl管理docker服务则需要编辑
```
/usr/lib/systemd/system/docker.service
```
文件中的`ExecStart`参数添加 `--icc=false`选项
然后重启docker服务
```
systemctl daemon-reload
systemctl restart docker
```"
"仅使用所需的内存来运行容器。 始终使用'--memory'参数运行容器。 您应该按以下方式启动容器:
```
docker run --interactive --tty --memory 256m <Container Image Name or ID>
```"
"要在bash shell中启用内容信任,请输入以下命令:`export DOCKER_CONTENT_TRUST=1`
或者,在您的配置文件中(/etc/profile或/etc/profile.d/docker.sh)设置此环境变量,以便在每次登录时启用内容信任。
内容信任目前仅适用于公共Docker Hub的用户。 当前不适用于Docker Trusted Registry或私有注册表。"
"添加“ --read-only”标志,以允许将容器的根文件系统挂载为只读。 可以将其与卷结合使用,以强制容器的过程仅写入要保留的位置。
您应该按以下方式运行容器:
```
docker run --interactive --tty --read-only --volume <writable-volume> <Container Image Name or ID> <Command>
```
如果您是k8s或其他容器编排软件编排的容器,请按照相应的安全策略配置或忽略。"
"找到/etc/audit/audit.rules与/etc/audit/rules.d/audit.rules文件(若没有则先确认是否已安装auditd服务),
在文件中添加以下行:
```
-w /var/lib/docker -k docker
-w /etc/docker -k docker
-w /usr/lib/systemd/system/docker.service -k docker
-w /usr/lib/systemd/system/docker.socket -k docker
-w /usr/bin/docker-containerd -k docker
-w /usr/bin/docker-runc -k docker
-w /usr/bin/containerd -k docker
```
然后,重新启动audit程序。 例如
```
service auditd restart
```"
 

三、修复样例:

一、限制容器之间的网络流量

vim  /etc/docker/daemon.json
添加以下内容到 daemon.json 文件中:

{
    "icc": false
}
 
 

sudo service docker restart

docker restart apollo-configservice 
docker restart apollo-portal
docker restart  apollo-adminservice

docker restart  ctg-eureka 
docker restart  nginx
systemctl start docker

二、限制容器的内存使用量
 

docker stats {container_id/container_name}
 
docker stats  apollo-portal
docker stats apollo-configservice 
docker stats apollo-adminservice


docker stats ctg-eureka
docker stats nginx
 

docker update --memory 1GiB --memory-swap -1 apollo-portal
docker update --memory 1GiB --memory-swap -1 apollo-configservice 
docker update --memory 1GiB --memory-swap -1 apollo-adminservice


docker update --memory 10GiB --memory-swap -1 ctg-eureka
docker update --memory 10GiB --memory-swap -1 nginx


三、为Docker启用内容信任

 vim  /etc/profile

export DOCKER_CONTENT_TRUST=1

source  /etc/profile


四 、将容器的根文件系统挂载为只读

docker run --interactive --tty --read-only --volume <writable-volume> <Container Image Name or ID> 

docker run --interactive --tty --read-only --volume  /home/docker/apps/eureka/ ctg-eureka

docker run --interactive --tty --read-only --volume  /home/docker/apps/nginx/ nginx

例子:
 docker run --read-only -v /icanwrite busybox touch /icanwrite/here

五、审核Docker文件和目录

在/etc/audit/audit.rules与/etc/audit/rules.d/audit.rules文件中添加以下行:

-w /var/lib/docker -k docker
-w /etc/docker -k docker
-w /usr/lib/systemd/system/docker.service -k docker
-w /usr/lib/systemd/system/docker.socket -k docker
-w /usr/bin/docker-containerd -k docker
-w /usr/bin/docker-runc -k docker

vim  /etc/audit/audit.rules
vim  /etc/audit/rules.d/audit.rules

-w /var/lib/docker -k docker
-w /etc/docker -k docker
-w /usr/lib/systemd/system/docker.service -k docker
-w /usr/lib/systemd/system/docker.socket -k docker
-w /usr/bin/docker-containerd -k docker
-w /usr/bin/docker-runc -k docker


service auditd restart


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/331570.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

运筹说 第95期 | 非线性规划奠基人——库恩与塔克

经过之前的学习&#xff0c;相信大家已经对运筹学的网络计划的内容有了一定的了解&#xff0c;接下来小编将带你学习新一章——非线性规划的内容&#xff0c;让我们先来了解一下非线性规划的诞生和发展历程&#xff0c;然后共同走近非线性规划领域的代表人物——库恩和塔克&…

深度学习记录--归—化输入特征

归化 归化输入(normalizing inputs),对特征值进行一定的处理&#xff0c;可以加速神经网络训练速度 步骤 零均值化 通过x值更新让均值稳定在零附近&#xff0c;即为零均值化 归化方差 适当减小变量方差 解释 归化可以让原本狭长的数据图像变得规整&#xff0c;梯度下降的…

WSL2 git clone命令无法克隆远程仓库

问题描述 最近在往WSL2里拉取git仓库的时候&#xff0c;突然出现了这个问题&#xff0c;WSL2无法连接到git服务器&#xff0c;导致代码无法拉取下来&#xff0c;可能是因为我最近不小心修改了windows的防火墙设置&#xff0c;导致出现了这个问题。 解决办法 在查阅了很多篇…

在uni-app中使用sku插件,实现商品详情页规格展示和交互。

商品详情 - SKU 模块 学会使用插件市场&#xff0c;下载并使用 SKU 组件&#xff0c;实现商品详情页规格展示和交互。 存货单位&#xff08;SKU&#xff09; SKU 概念 存货单位&#xff08;Stock Keeping Unit&#xff09;&#xff0c;库存管理的最小可用单元&#xff0c;通…

uniapp踩坑之项目:canvas第一次保存是空白图片

在ctx.draw()回调生成图片&#xff0c;参考canvasToTempFilePath接口文档 // data imgFilePath: null,// 缓存二维码图片canvas路径//js // 首先在draw&#xff08;&#xff09;里进行本地存储 ...... ctx.draw(false, () >{uni.canvasToTempFilePath({ // 把画布转化成临时…

群晖Drive搭建云同步服务器结合内网穿透实现Obsidian笔记文件远程多端同步

文章目录 一、简介软件特色演示&#xff1a; 二、使用免费群晖虚拟机搭建群晖Synology Drive服务&#xff0c;实现局域网同步1 安装并设置Synology Drive套件2 局域网内同步文件测试 三、内网穿透群晖Synology Drive&#xff0c;实现异地多端同步Windows 安装 Cpolar步骤&#…

flutter 五点一:MaterialApp Theme

ThemeData factory ThemeData({bool? applyElevationOverlayColor, //material2的darkTheme下 增加一个半透明遮罩 来凸显阴影效果 material3下无效 貌似没啥用NoDefaultCupertinoThemeData? cupertinoOverrideTheme, //ios组件样式 Iterable<ThemeExtension<dyn…

计算机网络——运输层(1)暨小程送书

计算机网络——运输层&#xff08;1&#xff09;暨小程送书 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 运输层概述两个主要协议运输层和网络层的关系网络层运输层总结 多路复用与多路分解多路复用多路分解不同的技术实现时分复用&#xff08;TDM&#xff09;频分复…

Proxmox VE 8安装OpenSuse和部署JumpServer

作者&#xff1a;田逸&#xff08;formyz&#xff09; 跳板服务器Jumpserver部署起来非常容易&#xff0c;但由于其组件多&#xff0c;组件之间关联复杂&#xff0c;一旦出现故障&#xff0c;恢复起来就比较费事。为了解决这个麻烦&#xff0c;本人通常是将Jumpserver部署到Pro…

5. UE5 RPG使用GAS技能系统

之前也介绍过GAS的使用&#xff1a; UE 5 GAS Gameplay Ability System UE 5 GAS 在项目中处理AttributeSet相关 UE 5 GAS 在项目中通过数据初始化 基础的讲解这里不再诉说&#xff0c;有兴趣的可以翻我之前的博客。 接下来&#xff0c;在RPG游戏中实现GAS系统的使用。 GAS系统…

笔记本电脑如何连接显示屏?

目录 1.按下快捷键 winP,选择扩展 2.连接显示器&#xff0c;连好接线 3.笔记本驱动有问题&#xff0c;显示错误如下&#xff1a; 4.驱动已经下载完成&#xff0c; 按下快捷键&#xff0c;还是显示第3步中的错误 5.驱动已经下载完成&#xff0c; 按下快捷键&#xff0c;参照…

Redis:原理速成+项目实战——Redis实战13(GEO实现附近商铺、滚动分页查询)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis实战12&#xff08;好友关注、Feed流&#xff08;关注推送&#xff09;、滚动分页查…

拼多多无货源中转仓项目真的靠谱吗?发展前景如何?

阿阳最近一直在关注无货源电商这一块&#xff0c;尤其是拼多多无货源中转仓&#xff0c; 现如今也有了自己的运营团队和交付团队&#xff0c;整体来看这个项目还算不错&#xff01; 说实话&#xff0c;在考察这个项目的时候&#xff0c;看到市面上很多人在做&#xff0c;包括我…

JAVA基础-----认识异常

文章目录 1. 异常的概念与体系结构1.1 异常的概念1.2 异常的体系结构1.3 异常的分类 2. 异常的处理2.1 防御式编程2.2 异常的抛出2.3 异常的捕获2.3.1 异常声明throws2.3.2 try-catch捕获并处理2.3.3 finally 2.4 异常的处理流程 3. 自定义异常类 1. 异常的概念与体系结构 1.1…

C/C++ 基本数据类型的范围

一、常见的数据类型及其范围 数据类型Size(64位)范围int4Byteunsigned int4Bytelong4Byteunsigned long4Bytelong long8Byteunsigned long long8Byte 查询Size代码&#xff1a;sizeof(类型) 查询范围代码&#xff1a;numeric_limits<类型>::max和numeric_limits<类…

使用 mybatis-plus 的mybaits的一对多时, total和record的不匹配问题

应该是框架的问题&#xff0c;去官方仓库提了个issues&#xff0c;等回复 https://github.com/baomidou/mybatis-plus/issues/5923 回复来了&#xff1a; 背景 发现 record是两条&#xff0c;但是total显示3 使用resultMap一对多时&#xff0c;三条数据会变成两条&#xff0…

redis原理(四)redis命令

目录 一、字符串命令&#xff1a; 二、列表命令&#xff1a; 三、集合命令&#xff1a; 四、散列命令&#xff1a; 五、有序集合命令&#xff1a; 六、redis发布与订阅命令&#xff1a; 七、事务命令 八、其他命令 1、排序&#xff1a;SORT 2、键的过期时间&#xff…

代码随想录算法训练营Day23 | 455.分发饼干、376.摆动子序列、53.最大子数组和

LeetCode 455 分发饼干 本题思路&#xff1a;分发饼干的时候&#xff0c;外层循环是胃口&#xff0c;内层是饼干&#xff0c;按照大饼干满足大胃口的思维来投递饼干。 需要将 两个数组&#xff0c;一开始就进行排序处理。 class Solution {public int findContentChildren(int…

java转义字符

//转义字符的使用 public class ChangeChar{//编写一个main方法public static void main(String[] args){// \t :一个制表位&#xff0c;实现对齐的功能System.out.println("北京\t天津\t上海");// \n :换行符&#xff0c;实现换行System.out.println("jack\nsm…

SSH隧道技术

SSH隧道 简介 SSH隧道是一种通过SSH协议在两个网络节点之间建立安全通信的技术。它可以用于多种用途&#xff0c;包括加密和保护敏感数据传输、绕过防火墙限制、远程访问内部服务等。 应用&#xff1a; 端口转发&#xff1a;SSH隧道可以将本地端口转发到远程主机上&#xf…