容器安全威胁来袭,云端安全如何防护?

根据2019年《云威胁风险报告》显示,容器技术的采用加大了数据泄露的机会:研究团队发现超过40000个连接互联网的容器平台采用了默认配置,使用最简单的搜索词就能发现,
·23354个Docker容器,其中中国内地共有6015个Docker容器暴露于互联网上,在所有国家和地区中排名第一。
·20353个Kubernetes容器,美国共有11425个Kubernetes容器暴露于互联网上,在所有国家和地区中排名第一。

容器安全威胁来袭,云端安全如何防护?

云的复杂性决定了其最容易受到:在过去的18个月中,被披露的网络安全事件有65%是由配置错误造成的,数据泄露已经成为云基础设施受到后的第一大后果。
恶意软件开始向云伸出魔爪:目前发现有28%的组织正在与加密货币挖矿恶意软件C2的域名通信,而这一域名为威胁组织Rocke所操控。研究团队曾严密监控过此组织并发现了其使用的独特战术、技术和过程,可令基于代理的云安全工具失效或卸载。
Docker容器安全如何加固?
1)文件系统级防护
文件系统只读:有些Linux系统的内核文件系统必须要mount到容器环境里,否则容器里的进程就会罢工。这给恶意进程非常大的便利,但是大部分运行在容器里的App其实并不需要向文件系统写入数据。基于这种情况,开发者可以在mount时使用只读模式。
2)Capability机制
Linux对Capability机制阐述的还是比较清楚的,即为了进行权限检查,传统的UNIX对进程实现了两种不同的归类,高权限进程(用户ID为0,超级用户或者root),以及低权限进程(UID不为0的)。高权限进程完全避免了各种权限检查,而低权限进程则要接受所有权限检查,会被检查如UID、GID和组清单是否有效。从2.2内核开始,Linux把原来和超级用户相关的高级权限划分成为不同的单元,称为Capability,这样就可以独立对特定的Capability进行使能或禁止。
通常来讲,不合理的禁止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)的系统,即对象的所有者不能控制别人访问对象。
6)Docker安全要依靠其他的辅助机制
如果坚持要root权限使用 Docker Engine ,系统的安全性可能会受到一系列众所周知的内核安全漏洞的影响。因此特别建议:
· 在运行 Docker Engine 的系统中同时运行 AppArmor 或者 SELinux。
· 将机器分成不同的组,相互信任的容器划在一组。
· 不要以 root 权限运行任何不受信任的应用程序。
· 保障机制。
要不停地轮序去检测,要能够发现可疑的行为,并且对任何可疑的行为要有反应。比如进程A并未给root权限,但是后来通过检测机制发现它变成了root权限,我们就可以怀疑它是进行了非法提权的操作。也就是说,我们允许你逃逸,但是我们也能够在最短的时间内发现你的逃逸行为,并且制止你。
此外,Docker在安全方面还存在亟待加固的几点:login过程使用明文传输用户名和密码,Image分发认证、Docker对Host的逃逸(已公布的那个漏洞)、Docker内给租户的root账号能否提供、Docker的配额限制(磁盘、网络)、Docker内万一提权后的限制(SELinux/AppArmor/GRSecurity)、出入Docker流量的监控和审计、AUFS存在的点。
当然,绝大多数的Docker安全问题都是出现在被用于公有云环境下的,如果Docker被使用在私有云环境中,那么它所带来的好处要远远多于其带来的问题。

猜你喜欢

转载自blog.51cto.com/1086869/2453216