你必须要了解的Docker安全基线
发布时间 - 2022-01-26 00:00:00 点击率:次本篇文章给大家带来了docker中安全基线的相关知识,其中包括服务配置和文件权限以及安全审计的相关问题,希望对大家有帮助。
Docker安全基线
服务配置
1.高危-限制容器之间的网络流量
描述:
默认情况下,同一主机上的容器之间允许所有网络通信。 如果不需要,请限制所有容器间的通信。 将需要相互通信的特定容器链接在一起。默认情况下,同一主机上所有容器之间都启用了不受限制的网络流量。 因此,每个容器都有可能读取同一主机上整个容器网络上的所有数据包。 这可能会导致意外和不必要的信息泄露给其他容器。 因此,限制容器间的通信。
加固建议:
在守护程序模式下运行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
2.高危-禁止使用特权容器
描述:
使用–privileged标志将所有Linux内核功能赋予容器,从而覆盖–cap-add和–cap-drop标志。 确保不使用它。 --privileged标志为容器提供了所有功能,并且还解除了设备cgroup控制器强制执行的所有限制。 换句话说,容器可以完成主机可以做的几乎所有事情。 存在此标志是为了允许特殊用例,例如在Docker中运行Docker
加固建议:
不要使用--privileged标志运行容器
3.高危-限制容器的内存使用量
描述:
默认情况下,Docker主机上的所有容器均等地共享资源。 通过使用Docker主机的资源管理功能(例如内存限制),您可以控制容器可能消耗的内存量。 默认情况下,容器可以使用主机上的所有内存。 您可以使用内存限制机制来防止由于一个容器消耗主机的所有资源而导致的服务拒绝,从而使同一主机上的其他容器无法执行其预期的功能。 对内存没有限制可能会导致一个问题,即一个容器很容易使整个系统不稳定并因此无法使用。
加固建议
仅使用所需的内存来运行容器。 始终使用--memory参数运行容器。 您应该按以下方式启动容器:docker run --interactive --tty --memory 256m
4.高危-将容器的根文件系统挂载为只读
描述:
容器的根文件系统应被视为“黄金映像”,并且应避免对根文件系统的任何写操作。 您应该显式定义用于写入的容器卷。 您不应该在容器中写入数据。 属于容器的数据量应明确定义和管理。 在管理员控制他们希望开发人员在何处写入文件和错误的许多情况下,这很有用。
加固建议:
添加“ --read-only”标志,以允许将容器的根文件系统挂载为只读。 可以将其与卷结合使用,以强制容器的过程仅写入要保留的位置。 您应该按以下方式运行容器:
docker run --interactive --tty --read-only --volume
如果您是k8s或其他容器编排软件编排的容器,请按照相应的安全策略配置或忽略。
5.高危-设置日志记录级别
描述:
设置适当的日志级别,将Docker守护程序配置为记录您以后想要查看的事件。 基本日志级别为“ info”及更高版本将捕获除调试日志以外的所有日志。 直到且除非有必要,否则您不应在“debug”日志级别运行Docker守护程序
加固建议:
运行Docker守护程序,如下所示:
dockerd --log-level=info
若以systemctl管理docker服务则需要编辑/usr/lib/systemd/system/docker.service的ExecStart参数添加--log-level="info",并重启docker
systemctl stop docker systemctl start docker
6.高危-允许Docker对iptables进行更改
描述:
iptables用于在Linux内核中设置,维护和检查IP数据包过滤器规则表。 允许Docker守护程序对iptables进行更改。 如果您选择这样做,Docker将永远不会对您的系统iptables规则进行更改。 如果允许,Docker服务器将根据您为容器选择网络选项的方式自动对iptables进行所需的更改。 建议让Docker服务器自动对iptables进行更改,以避免网络配置错误,这可能会妨碍容器之间以及与外界的通信。 此外,每次选择运行容器或修改网络选项时,它都可以避免更新iptables的麻烦。
加固建议:
不使用’–iptables = false’参数运行Docker守护程序。 若以systemctl管理docker服务则需要编辑/usr/lib/systemd/system/docker.service的ExecStart参数删除--iptables = false, 重启docker服务
systemctl daemon-reload systemctl restart docker
7.高危-禁止使用aufs存储驱动程序
描述:
“aufs”存储驱动程序是最早的存储驱动程序。 它基于Linux内核补丁集,该补丁集不太可能合并到主要Linux内核中。 并且已知“ aufs”驱动程序会导致一些严重的内核崩溃。 'aufs’刚刚获得了Docker的支持。 最重要的是,许多使用最新Linux内核的Linux发行版都不支持’aufs’驱动程序。
加固建议:
不要明确使用“ aufs”作为存储驱动程序。 例如,请勿按以下方式启动Docker守护程序: 若以systemctl管理docker服务则需要编辑/usr/lib/systemd/system/docker.service的ExecStart参数删除--storage-driver aufs重启docker服务
systemctl daemon-reload systemctl restart docker
8.高危-禁止在容器上挂载敏感的主机系统目录
描述:
不允许将以下敏感的主机系统目录作为容器卷挂载,尤其是在读写模式下。
/boot /dev /etc /lib /proc /sys /usr
如果敏感目录以读写模式挂载,则可以对那些敏感目录中的文件进行更改。 这些更改可能会降低安全隐患或不必要的更改,这些更改可能会使Docker主机处于受损状态
如果您是k8s或其他容器编排软件编排的容器,请依照相应的安全策略配置或忽略。
加固建议:
不要在容器上挂载主机敏感目录,尤其是在读写模式下
9.高危-禁止共享主机的进程名称空间
描述
进程ID(PID)命名空间隔离了进程ID号空间,这意味着不同PID命名空间中的进程可以具有相同的PID。 这是容器和主机之间的进程级别隔离。
PID名称空间提供了流程分离。 PID命名空间删除了系统进程的视图,并允许进程ID重复使用,包括PID1。如果主机的PID命名空间与容器共享,则它将基本上允许容器内的进程查看主机上的所有进程。 系统。 这破坏了主机和容器之间的进程级别隔离的好处。 有权访问容器的人最终可以知道主机系统上正在运行的所有进程,甚至可以从容器内部杀死主机系统进程。 这可能是灾难性的。 因此,请勿与容器共享主机的进程名称空间。
加固建议:
不要使用--pid = host参数启动容器。
10.中危-为Docker启动内容信任
描述:
默认情况下禁用内容信任。 您应该启用它。 内容信任提供了将数字签名用于发送到远程Docker注册表和从远程Docker注册表接收的数据的功能。 这些签名允许客户端验证特定图像标签的完整性和发布者。 这确保了容器图像的出处
加固建议:
要在bash shell中启用内容信任,请输入以下命令:export DOCKER_CONTENT_TRUST=1 或者,在您的配置文件中设置此环境变量,以便在每次登录时启用内容信任。 内容信任目前仅适用于公共Docker Hub的用户。 当前不适用于Docker Trusted Registry或私有注册表。
文件权限
11.高危-确认docker相关文件权限适合
描述:
确保可能包含敏感参数的文件和目录的安全对确保Docker守护程序的正确和安全运行至关重要
加固建议:
执行以下命令为docker相关文件配置权限:
chown root:root /usr/lib/systemd/system/docker.service chmod 644 /usr/lib/systemd/system/docker.service chown root:root /usr/lib/systemd/system/docker.socket chmod 644 /usr/lib/systemd/system/docker.socket chown root:root /etc/docker chmod 755 /etc/docker
若文件路径与实际系统中不同可以使用以下命令获取文件路径:
systemctl show -p FragmentPath docker.socket systemctl show -p FragmentPath docker.service
12.高危-确保docker.sock不被挂载
描述:
docker.sock挂载的容器容易被获取特殊权限,一旦危险进入到docker中,严重影响了宿主机的安全.
加固建议:
按照提示查找启动的docker容器 , 以非docker挂载docker.sock的形式重新启动容器
docker stop
docker run [OPTIONS]
安全审计
13.高危-审核Docker文件和目录
描述:
除了审核常规的Linux文件系统和系统调用之外,还审核所有与Docker相关的文件和目录。 Docker守护程序以“ root”特权运行。 其行为取决于某些关键文件和目录。如 /var/lib/docker、/etc/docker、docker.service、 docker.socket、/usr/bin/docker-containerd、/usr/bin/docker-runc等文件和目录
加固建议:
在/etc/aud
it/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
然后,重新启动audit程序 service auditd restart.
推荐学习:《docker视频教程》
# docker
# 文件系统
# 情况下
# 重启
# 则需
# 您的
# 这可
# 注册表
# 是在
# 您是
# 若以
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
Laravel怎么使用artisan命令缓存配置和视图
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Laravel如何与Inertia.js和Vue/React构建现代单页应用
浅谈javascript alert和confirm的美化
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
移动端脚本框架Hammer.js
如何撰写建站申请书?关键要点有哪些?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何基于PHP生成高效IDC网络公司建站源码?
JS经典正则表达式笔试题汇总
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
大型企业网站制作流程,做网站需要注册公司吗?
轻松掌握MySQL函数中的last_insert_id()
如何在腾讯云服务器快速搭建个人网站?
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
奇安信“盘古石”团队突破 iOS 26.1 提权
在线教育网站制作平台,山西立德教育官网?
如何有效防御Web建站篡改攻击?
Python函数文档自动校验_规范解析【教程】
高防服务器租用如何选择配置与防御等级?
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
如何快速生成ASP一键建站模板并优化安全性?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
如何打造高效商业网站?建站目的决定转化率
什么是javascript作用域_全局和局部作用域有什么区别?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
Laravel怎么实现模型属性的自动加密
Laravel如何实现API资源集合?(Resource Collection教程)
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
网站建设保证美观性,需要考虑的几点问题!
如何在云指建站中生成FTP站点?
敲碗10年!Mac系列传将迎来「触控与联网」双革新
SQL查询语句优化的实用方法总结
如何用虚拟主机快速搭建网站?详细步骤解析
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
个人网站制作流程图片大全,个人网站如何注销?
北京网站制作公司哪家好一点,北京租房网站有哪些?
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
C++用Dijkstra(迪杰斯特拉)算法求最短路径
海南网站制作公司有哪些,海口网是哪家的?
Swift中循环语句中的转移语句 break 和 continue
如何快速搭建安全的FTP站点?
Laravel如何使用.env文件管理环境变量?(最佳实践)

