原创

谈谈 docker 的安全性

作为开发人员我很少关注服务器环境的安全性问题,我一般会比较关注我自身代码的安全问题。 现在整站上了docker容器后,其实也会比较关注服务器的安全性,我个人觉得应该是比较安全的,毕竟是在容器中运行,就算我某个服务挂了,也威胁不到我宿主机的安全。

直到某次我在网上看到了一个文章,说可以越过容器,修改宿主机文件,当下一惊,还有这种操作?后面仔细看了下,发现只要权限控制住,也不怕,具体可以看这里-Docker逃逸初探

总结该文章讲的三种情况会导致docker逃逸: 一、 配置特权模式时的逃逸情况

  1. —privileged(特权模式)这种我完全不考虑,因为我肯定不会给特权,要修改文件,我会人工确认给予权限。
  2. —cap-add与SYS_ADMIN 本身docker就是运行在root用户下了。。不过容器没有那么高权限,这种应该也不会让我环境受威胁。

二、 挂载配置不当时的逃逸情况

  • 不要让容器挂载:/var/run/目录就可以了

三、 内核级漏洞

  1. 脏牛漏洞(CVE-2016-5195)与VDSO(虚拟动态共享对象)
  2. PoC&验证环境 这两种通过修复,以及不随便运行不明的docker镜像就可以避免,生产环境一般不会,测试环境。。。

话说回来,CIS列了一个列表,说docker虽然挺安全(其实很安全),但是默认的环境下,还是需要做一些安全配置。点这里看原文- a step-by-step checklist for securing Docker 所以docker就搞了一个工具,可以检测docker中的问题(漏洞)这就是大名鼎鼎的Docker Bench,这个工具能够很快速的检测出当前docker环境的问题。 审查结束,会有三种提示信息:[info],[warn],[note],[warn]是我们要关注的。

综合这些内容看下来,好像也没啥大不了,我觉得主要控制住以下几点,即可高枕无忧:

  1. 自己做dockerfile,并且自己编译并且运行
  2. 容器只给予最小的权限,挂载最少的目录。
  3. 容器中运行的程序尽量只有一个,如果要运行多个,那就开多个容器分别运行。
  4. 设置CPU,内存,网络使用额度限制。
  5. 宿主机安全配置(SSH换端口,使用证书登录,关闭不需要的端口)

当然,我这篇文章属于闲扯,大家可以参看这篇文章,了解安全审计出现的问题,要怎么处理。点击这里-【报告解读系列二】容器环境脆弱性分析

参考来源:

  1. How To Audit Docker Host Security with Docker Bench for Security on Ubuntu 16.04
温馨提示:
本文最后更新于 2021年01月09日,已超过 757 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
正文到此结束
该篇文章的评论功能已被站长关闭
本文目录