开启集群防护后,CGS shield以daemonset插件方式安装在每个集群节点上,对容器集群节点中的容器运行状态进行监控,并对异常事件进行告警和提供解决方案。
运行时安全监测包括:逃逸检测、高危系统调用、异常进程检测、文件异常检测、容器环境检测。
检测周期
容器安全服务实时监控容器集群中运行的容器,用户可随时查看容器异常事件详情。
检测原理
表1 运行时安全漏洞检测原理说明
检测项 |
原理说明 |
逃逸检测 |
|
高危系统调用 |
Linux系统调用是用户进程进入内核执行任务的请求通道。CGS监控容器进程,如果发现进程使用了危险系统调用(例如:“open_by_handle_at”、“ptrace”、“setns”、“reboot”等),触发高危系统调用告警。 |
异常进程检测 |
- 容器恶意程序
CGS监控容器内启动的容器进程的行为特征和进程文件指纹,如果特征与已定义的恶意程序吻合则触发容器恶意程序告警。
- 容器异常进程
容器业务通常比较单一。如果用户能够确定容器内只会运行某些特定进程,可以在CGS控制台配置安全策略设置进程白名单并将策略关联容器镜像。
对于已关联的容器镜像启动的容器,CGS只允许白名单进程启动,如果容器内存在非白名单进程,触发容器异常程序告警。
|
文件异常检测 |
CGS监控容器内已配置文件保护策略的容器镜像文件状态。如果发生文件修改事件则触发文件异常告警。 |
容器环境检测 |
CGS监控新启动的容器,对容器启动配置选项进行检测,当发现容器权限过高存在风险时触发告警。容器环境检测触发的告警只是提醒容器启动风险,并不是发生实际攻击。如果黑客利用容器配置风险执行了真实攻击,仍然会触发CGS运行时监控的其他检测告警。
CGS支持以下容器环境检测:
- 禁止启动特权容器(privileged:true)
特权容器是指容器以最大权限启动,类似与操作系统的root权限,拥有最大能力。docker run启动容器时携带“ –privileged=true”参数,或者kubernates POD配置中容器的“securityContext”配置了“privileged:true”,此时容器会以特权容器方式启动。
CGS告警内容中提示:“privileged:true”,表示该容器以特权容器模式启动。
- 需要限制容器能力集(capabilities:[xxx])
Linux系统将系统权限做了分类,通过授予特定的权限集合,能控制容器进程的操作范围,避免出现严重问题。容器启动时默认开启了一些常用能力,通过修改启动配置可以放开所有系统权限。
CGS告警内容中提示:“capabilities:[xxx]”,表示该容器启动时拥有所有能力集过大,存在风险。
- 建议启用seccomp(seccomp=unconfined)
Seccomp(secure computing mode)是Linux的一种内核特性,用于限制进程能够调用的系统调用,减少内核的攻击面。如果容器启动时设置“seccomp=unconfined”,将不会对容器内的系统调用执行限制。
CGS告警内容中提示:“seccomp=unconfined”,表示该容器启动时没有启动seccomp,存在风险。
说明:
启用seccomp后,由于每次系统调用Linux内核都需要执行权限校验,如果容器业务场景会频繁使用系统调用,开启seccomp对性能会有一定影响。具体影响建议在实际业务场景测试分析。
- 限制容器获取新的权限(no-new-privileges:false)
进程可以通过程序的suid位或者sgid位获取附加权限,通过sudo提权执行更高权限的操作。容器默认配置限制不允许进行权限提升。
如果容器启动时指定了“ –no-new-privileges=false”,则该容器拥有权限提升的能力。
CGS告警内容中提示:“no-new-privileges:false”,表示该容器关闭了提权限制,存在风险。
- 危险目录映射(mounts:[...])
容器启动时可以将宿主机目录映射到容器内,方便容器内业务直接读写宿主机上的资源。这是一种存在风险的使用方式,如果容器启动时映射了宿主机操作系统关键目录,容易造成从容器内破坏宿主机系统的事件。
CGS监控到容器启动时mount了宿主机危险路径时触发告警,CGS定义的宿主机危险目录包括:“/boot”,“ /dev”,“/etc”,“/sys”,“/var/run”等。
CGS告警内容中提示:“mounts:[{"source":"xxx","destination":"yyy"...]”,表示该容器映射的文件路径存在风险。
说明:
对于docker容器常用的需要访问的宿主文件如“ /etc/hosts”、“/etc/resolv.conf”不会触发告警。
|
操作步骤
- 登录管理控制台。
- 在页面上方选择“区域”后,单击,选择,进入“防护列表”界面。
- 在左侧导航树中,选择“运行时安全”,进入“运行时安全”界面。
- 选择不同页签(“逃逸检测”、“高危系统调用”、“异常程序检测”、“文件异常检测”、“容器环境检测”),查看容器异常监控趋势图和异常事件列表。
图1 容器异常监控趋势图
图2 容器异常事件列表
- 容器异常监控趋势图呈现“最近1个月”的异常监控信息。
- 异常事件列表您可以查看“最近1天”、“最近3天”、“最近7天”的异常情况,并根据解决方案处理异常事件。