[系统技巧] 对于Docker使用的一些安全配置建议
作者:CC下载站 日期:2022-09-11 06:26:29 浏览:157 分类:玩电脑
介绍
相信很多开发者都默认Docker这样的容器是一种沙盒(sandbox)应用,也就是说他们可以用root权限在Docker中运行随便什么应用,而Docker有安全机制能保护宿主系统。比如,有些人觉得Docker容器里面的进程跟虚拟机里面的进程一样安全;还有的人随便找个源就下载没有验证过的Docker镜像,看都不看内容就在宿主机器上尝试、学习和研究;还有一些提供PaaS服务的公司竟然允许用户向多租户系统中提交自己定制的Docker镜像。请注意,上述行为均是不安全的。
本文将介绍Docker的隔离性和安全性,以及为什么它在隔离和安全性上不如传统的虚拟机。
何谓安全性?
单单就Docker来说,安全性可以概括为两点:
不会对主机造成影响
不会对其他容器造成影响
所以安全性问题90%以上可以归结为隔离性问题。而Docker的安全问题本质上就是容器技术的安全性问题,这包括共用内核问题以及Namespace还不够完善的限制:
/proc、/sys等未完全隔离
Top, free, iostat等命令展示的信息未隔离
Root用户未隔离
/dev设备未隔离
内核模块未隔离
SELinux、time、syslog等所有现有Namespace之外的信息都未隔离
当然,镜像本身不安全也会导致安全性问题。
真的不如虚拟机安全?
其实传统虚拟机系统也绝非100%安全,只需攻破Hypervisor便足以令整个虚拟机毁于一旦,问题是有谁能随随便便就攻破吗?如上所述,Docker的隔离性主要运用Namespace 技术。传统上Linux中的PID是唯一且独立的,在正常情况下,用户不会看见重复的PID。然而在Docker采用了Namespace,从而令相同的PID可于不同的Namespace中独立存在。举个例子,A Container 之中PID=1是A程序,而B Container之中的PID=1同样可以是A程序。虽然Docker可透过Namespace的方式分隔出看似是独立的空间,然而Linux内核(Kernel)却不能Namespace,所以即使有多个Container,所有的system call其实都是通过主机的内核处理,这便为Docker留下了不可否认的安全问题。
传统的虚拟机同样地很多操作都需要通过内核处理,但这只是虚拟机的内核,并非宿主主机内核。因此万一出现问题时,最多只影响到虚拟系统本身。当然你可以说黑客可以先Hack虚拟机的内核,然后再找寻Hypervisor的漏洞同时不能被发现,之后再攻破SELinux,然后向主机内核发动攻击。文字表达起来都嫌繁复,更何况实际执行?所以Docker是很好用,但在迁移业务系统至其上时,请务必注意安全性!
如何解决?
在接纳了“容器并不是全封闭”这种思想以后,开源社区尤其是红帽公司,连同Docker一起改进Docker的安全性,改进项主要包括保护宿主不受容器内部运行进程的入侵、防止容器之间相互破坏。开源社区在解决Docker安全性问题上的努力包括:
Audit namespace
作用:隔离审计功能
未合入原因:意义不大,而且会增加audit的复杂度,难以维护。
Syslognamespace
作用:隔离系统日志
未合入原因:很难完美的区分哪些log应该属于某个container。
Device namespace
作用:隔离设备(支持设备同时在多个容器中使用)
未合入原因:几乎要修改所有驱动,改动太大。
Time namespace
作用:使每个容器有自己的系统时间
未合入原因:一些设计细节上未达成一致,而且感觉应用场景不多。
Task count cgroup
作用:限制cgroup中的进程数,可以解决fork bomb的问题
未合入原因:不太必要,增加了复杂性,kmemlimit可以实现类似的效果。(最近可能会被合入)
隔离/proc/meminfo的信息显示
作用:在容器中看到属于自己的meminfo信息
未合入原因:cgroupfs已经导出了所有信息,/proc展现的工作可以由用户态实现,比如fuse。
不过,从08年cgroup/ns基本成型后,至今还没有新的namespace加入内核,cgroup在子系统上做了简单的补充,多数工作都是对原有subsystem的完善。内核社区对容器技术要求的隔离性,本的原则是够用就好,不能把内核搞的太复杂。
一些企业也做了很多工作,比如一些项目团队采用了层叠式的安全机制,这些可选的安全机制具体如下:
1、文件系统级防护
文件系统只读:有些Linux系统的内核文件系统必须要mount到容器环境里,否则容器里的进程就会罢工。这给恶意进程非常大的便利,但是大部分运行在容器里的App其实并不需要向文件系统写入数据。基于这种情况,开发者可以在mount时使用只读模式。比如下面几个: /sys 、/proc/sys 、/proc/sysrq-trigger 、 /proc/irq、/proc/bus
写入时复制(Copy-On-Write):Docker采用的就是这样的文件系统。所有运行的容器可以先共享一个基本文件系统镜像,一旦需要向文件系统写数据,就引导它写到与该容器相关的另一个特定文件系统中。这样的机制避免了一个容器看到另一个容器的数据,而且容器也无法通过修改文件系统的内容来影响其他容器。
2、Capability机制
Linux对Capability机制阐述的还是比较清楚的,即为了进行权限检查,传统的UNIX对进程实现了两种不同的归类,高权限进程(用户ID为0,超级用户或者root),以及低权限进程(UID不为0的)。高权限进程完全避免了各种权限检查,而低权限进程则要接受所有权限检查,会被检查如UID、GID和组清单是否有效。从2.2内核开始,Linux把原来和超级用户相关的高级权限划分成为不同的单元,称为Capability,这样就可以独立对特定的Capability进行使能或禁止。通常来讲,不合理的禁止Capability,会导致应用崩溃,因此对于Docker这样的容器,既要安全,又要保证其可用性。开发者需要从功能性、可用性以及安全性多方面综合权衡Capability的设置。目前Docker安装时默认开启的Capability列表一直是开发社区争议的焦点,作为普通开发者,可以通过命令行来改变其默认设置。
3、NameSpace机制
Docker提供的一些命名空间也从某种程度上提供了安全保护,比如PID命名空间,它会将全部未运行在开发者当前容器里的进程隐藏。如果恶意程序看都看不见这些进程,攻击起来应该也会麻烦一些。另外,如果开发者终止pid是1的进程命名空间,容器里面所有的进程就会被全部自动终止,这意味着管理员可以非常容易地关掉容器。此外还有网络命名空间,方便管理员通过路由规则和iptable来构建容器的网络环境,这样容器内部的进程就只能使用管理员许可的特定网络。如只能访问公网的、只能访问本地的和两个容器之间用于过滤内容的容器。
4、Cgroups机制
主要是针对拒绝服务攻击。恶意进程会通过占有系统全部资源来进行系统攻击。Cgroups机制可以避免这种情况的发生,如CPU的cgroups可以在一个Docker容器试图破坏CPU的时候登录并制止恶意进程。管理员需要设计更多的cgroups,用于控制那些打开过多文件或者过多子进程等资源的进程。
5、SELinux
SELinux是一个标签系统,进程有标签,每个文件、目录、系统对象都有标签。SELinux通过撰写标签进程和标签对象之间访问规则来进行安全保护。它实现的是一种叫做MAC(Mandatory Access Control)的系统,即对象的所有者不能控制别人访问对象。
安全建议
最简单的就是不要把Docker容器当成可以完全替代虚拟机的东西。跑在Docker容器中的应用在很长一段时间内都将会是选择性的,通常只跑测试系统或可信业务。
门槛再高一点,我们对系统做减法,通过各种限制来达到安全性。这也是最主流的、有效的安全加固方法,比如上一章节介绍的几种安全机制。同时一定要保证内核的安全和稳定。外部工具的监控、容错等系统也必不可少。
总之通过适配、加固的Docker容器方案,在安全性上完全可以达到商用标准。就是可能对实施人员的技术要求和门槛较高。
猜你还喜欢
- 03-23 [教程]Docker视频教程
- 09-11 [系统技巧] 全面讲解Docker容器技术的基本概念
- 09-11 [系统技巧] Docker的Dockerfile脚本基本使用指南
- 09-11 [系统技巧] 使用Device Mapper插件改变Docker容器大小的方法详解
- 09-11 [系统技巧] 在Docker中安装Kali Linux的教程
- 09-11 [系统技巧] Docker的镜像理解以及容器的备份、恢复和迁移操作
- 09-11 [系统技巧] 搭建Docker私有仓库的详细教程
- 09-11 [系统技巧] 记录一次博客迁移到Docker上的操作
- 09-11 [系统技巧] Docker中MySQL容器的创建和连接教程
- 09-11 [系统技巧] 简易的Docker版本升级方法
- 09-11 [系统技巧] 在Windows系统上安装Docker的教程
- 09-11 [系统技巧] Docker的一些基础的网络命令小结
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[电影] 《环太平洋两部合集》 4K REMUX原盘 [杜比视界] 国英双语音轨 [内封特效字幕] [133.8G]
[电影] 异人之下 The Traveller 2024✨【影版】【4K正式版/HQ超高码/DDP5.1】✚【1080高码】无水印/无压缩
[动漫] 头文字D 动漫 (1998) S01-S06季 1080P 国粤日音轨 续作 剧场版 电影
[小说] 知轩藏书全站7667册txt小说合集精心校对版
[杂志] 电脑爱好者杂志14年 超全 [PDF]
[电影] 西游记全部版本-4K高清修复-总计384G-1986+1996+1998+2002+2010浙版+西游记后传
[纪录片] 【国家地理百年纪念典藏】超经典100集全 MP4格式 (绝佳学习资料)27GB
[纪录片] B站食贫道收费纪录片 *迷失东京* [1080P] 揭露日本大家感兴趣却不为人知的秘密
[网络线报] 城通网盘福利线报解析器 - 获取直连下载地址
[福利线报] 一个「脚本」搞定六大网盘(百度/阿里/天翼/迅雷/夸克/移动)
[游戏] 《黑神话悟空》免安装学习版【全dlc整合完整版】+Steam游戏解锁+游戏修改工具!
[动画] 《名侦探柯南》名侦探柯南百万美元的五菱星 [TC] [MP4]
[电视剧集] [BT下载][黑暗城市- 清扫魔 Dark City: The Cleaner 第一季][全06集][英语无字][MKV][720P/1080P][WEB-RAW]
[涨点姿势] 男性性技宝典:14招实战驭女术——爱抚、按摩、催情、姿势、高潮全攻略
[动画] 2002《火影忍者》720集全【4K典藏版】+11部剧场版+OVA+漫画 内嵌简日字幕
[剧集] 《斯巴达克斯》1-4季合集 无删减版 1080P 内嵌简英特效字幕
[CG剧情] 《黑神话:悟空》158分钟CG完整剧情合集 4K120帧最高画质
[短剧] 被下架·禁播的羞羞短剧·午夜短剧合集
[游戏] 黑神话悟空离线完整版+修改器
[图像处理] 光影魔术手v4.6.0.578绿色版
[影视] 美国内战 4K蓝光原盘下载+高清MKV版/内战/帝国浩劫:美国内战(台)/美帝崩裂(港) 2024 Civil War 63.86G
[影视] 一命 3D 蓝光高清MKV版/切腹 / 切腹:武士之死 / Hara-Kiri: Death of a Samurai / Ichimei 2011 一命 13.6G
[影视] 爱情我你他 蓝光原盘下载+高清MKV版/你、我、他她他 2005 Me and You and Everyone We Know 23.2G
[影视] 穿越美国 蓝光原盘下载+高清MKV版/窈窕老爸 / 寻找他妈…的故事 2005 Transamerica 20.8G
[电影] 《黄飞鸿》全系列合集
[Android] 开罗游戏 ▎像素风格的模拟经营的游戏厂商安卓游戏大合集
[游戏合集] 要战便战 v0.9.107 免安装绿色中文版
[资源] 精整2023年知识星球付费文合集136篇【PDF格式】
[系统]【黑果小兵】macOS Big Sur 11.0.1 20B50 正式版 with Clover 5126 黑苹果系统镜像下载
[美图] 【经典收藏美图集合】1500多张韩国美女高清图片让你的收藏夹更加丰富多彩
- 最新评论
-
有靳东!嘻嘻奥古斯都.凯撒 评论于:10-28 流星花园是F4处女作也是4人集体搭配的唯一一部!奥古斯都.凯撒 评论于:10-28 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢AAAAA 评论于:10-26 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢password63 评论于:10-26 找了好久的资源,终于在这里找齐了!!!!blog001 评论于:10-21 找了好久的资源,终于在这里找齐了!!!!blog001 评论于:10-21 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢WillKwok 评论于:10-09 感谢分享1234123 评论于:10-07 太好了终于找到了谢谢Tom 评论于:10-07 谢谢分享loonghd 评论于:09-30
- 热门tag