《【韦伟】vArmor-云原生安全加固实战.pdf》由会员分享,可在线阅读,更多相关《【韦伟】vArmor-云原生安全加固实战.pdf(33页珍藏版)》请在三个皮匠报告上搜索。
1、vArmor:云原生安全加固实战韦 伟 火山引擎云安全背景介绍01安装使用03基本原理0204 典型应用韦 伟毕业于北京理工大学,就职于字节跳动安全与风控-云安全部门。长期从事容器&云原生等基础设施攻防研究及方案落地。主导字节生产网和火山引擎的云原生安全防护、安全治理等多个方面的项目建设。曾作为安全研究员获得国外多家知名厂商致谢,并在国际知名安全会议上进行过演讲。背景介绍一个开源云原生容器沙箱系统,它借助 Linux 的 LSM 技术(AppArmor&BPF)实现强制访问控制器,从而对 Linux 容器进行安全加固。它可以用于增强容器隔离性、减少内核攻击面、增加容器逃逸或横行移动攻击的难度与
2、成本。基于 Kubernetes Operator 设计模式,使用户可以通过操作 CRD API 对特定的 Workloads 进行加固。从而以更贴近业务的视角,对容器化微服务的进行沙箱加固。此外 vArmor 还包含多种内置规则和自定义接口,具备开箱即用的特性。背景介绍一个开源云原生容器沙箱系统,它借助 Linux 的 LSM 技术(AppArmor&BPF)实现强制访问控制器,从而对 Linux 容器进行安全加固。它可以用于增强容器隔离性、减少内核攻击面、增加容器逃逸或横行移动攻击的难度与成本。基于 Kubernetes Operator 设计模式,使用户可以通过操作 CRD API 对特
3、定的 Workloads 进行加固。从而以更贴近业务的视角,对容器化微服务的进行沙箱加固。此外 vArmor 还包含多种内置规则和自定义接口,具备开箱即用的特性。背景介绍更高的资源利用率更高的研发效率广泛且大量运用但隔离性不足一个开源云原生容器沙箱系统,它借助 Linux 的 LSM 技术(AppArmor&BPF)实现强制访问控制器,从而对 Linux 容器进行安全加固。它可以用于增强容器隔离性、减少内核攻击面、增加容器逃逸或横行移动攻击的难度与成本。基于 Kubernetes Operator 设计模式,使用户可以通过操作 CRD API 对特定的 Workloads 进行加固。从而以更贴
4、近业务的视角,对容器化微服务的进行沙箱加固。此外 vArmor 还包含多种内置规则和自定义接口,具备开箱即用的特性。背景介绍云原生架构引入新的攻击面错误配置和漏洞频现攻击者关注度不断增加一个开源云原生容器沙箱系统,它借助 Linux 的 LSM 技术(AppArmor&BPF)实现强制访问控制器,从而对 Linux 容器进行安全加固。它可以用于增强容器隔离性、减少内核攻击面、增加容器逃逸或横行移动攻击的难度与成本。基于 Kubernetes Operator 设计模式,使用户可以通过操作 CRD API 对特定的 Workloads 进行加固。从而以更贴近业务的视角,对容器化微服务的进行沙箱加
5、固。此外 vArmor 还包含多种内置规则和自定义接口,具备开箱即用的特性。背景介绍云原生标准化接口应用发布与运维视角降低理解成本一个开源云原生容器沙箱系统,它借助 Linux 的 LSM 技术(AppArmor&BPF)实现强制访问控制器,从而对 Linux 容器进行安全加固。它可以用于增强容器隔离性、减少内核攻击面、增加容器逃逸或横行移动攻击的难度与成本。基于 Kubernetes Operator 设计模式,使用户可以通过操作 CRD API 对特定的 Workloads 进行加固。从而以更贴近业务的视角,对容器化微服务的进行沙箱加固。此外 vArmor 还包含多种内置规则和自定义接口,
6、具备开箱即用的特性。背景介绍降低安全策略的门槛云原生化部署和使用基本原理使用 AppArmor 和 BPF 两种Linux Security Module,在内核中对 Linux 容器进程进行强制访问控制。AppArmor LSM由 LKM 和 tools 构成需系统支持并启用(Debian,Ubuntu,OpenSUSE.)Kubernetes v1.4 开始支持Runtime 使用默认 Profile 对非特权容器加固默认 Profile 粒度较粗Profile 编写、调试、管理存在门槛BPF LSMLinux v5.7 引入需系统支持并启用(CONFIG_BPF_LSM=y 和 lsm=
7、bpf)Kubernetes、Runtime 无原生支持无法使用进程安全上下文标识进程需自行实现并管理 BPF Program能力受 BPF Verifier 限制强制访问控制器前置条件主要区别当前支持的环境AppArmor EnforcerLinux Kernel 4.15 及以上版本系统需开启 AppArmor LSM支持对指定的可执行文件及子进程进行强制访问控制仅支持在 Domain,Type,Protocol 维度进行网络访问控制GKE with Container-Optimized OSAKS with Ubuntu 22.04 LTSVKE with veLinuxDebian
8、10 及以上版本Ubuntu 18.04.0 LTS 及以上版本veLinux 1.0 等BPF EnforcerLinux Kernel 5.7 及以上版本containerd v1.6.0 及以上版本系统需开启 BPF LSM路径匹配语法有限制不支持对指定的可执行文件及子进程进行强制访问控制支持在 CIDR,IP,Port 维度进行网络访问控制EKS with Amazon Linux 2GKE with Container-Optimized OSAKS with Ubuntu 22.04 LTS*ACK with Alibaba Cloud Linux 3*OpenSUSE 15.4*
9、Debian 11*veLinux 1.0 with 5.10Fedora 37 等*需手动开启节点的 BPF LSM安装使用安装 helm 3.7+拉取 chart 包安装helm pull oci:/elkeid-cn- 0.5.4helm install varmor varmor-0.5.4.tgz-namespace varmor-create-namespace-set image.registry=”elkeid-cn-”Helm 配置项说明-set appArmorLsmEnforcer.enabled=false默认开启。主动关闭 AppArmor enforcer。当系统不
10、支持 AppArmor LSM 时,可通过此选项关闭。-set bpfLsmEnforcer.enabled=true默认关闭。当系统支持 BPF LSM 时,可通过此选项开启。-set bpfExclusiveMode.enabled=true默认关闭。开启后,若 Policy 使用 BPF enforcer,将主动关闭目标容器的默认 AppArmor 防护。-set restartExistWorkloads.enabled=true默认关闭。开启后,当创建或删除 Policy 时,自动对符合条件的 Workloads 滚动重启,从而自动开启或关闭防护。-set manager.args=
11、-webhookMatchLabel=KEY=VALUE默认值为:sandbox.varmor.org/enable=true。即目标 Workloads 必须包含此标签。可使用-set manager.args=-webhookMatchLabel=关闭此特性。EnhanceProtectRuntimeDefaultAlwaysAllow三种运行模式RuntimeDefault使用运行时组件的默认策略EnhanceProtect默认在 RuntimeDefault 基础上进行防护模式支持三类内置规则、自定义接口可动态切换模式和规则Hardening-减少攻击面的规则阻断特权容器的常见逃逸向量
12、禁用 capabilities阻断部分内核漏洞利用向量Attack Protection-针对渗透手法的规则缓解容器信息泄露禁止执行敏感行为Vulnerability Mitigation-针对特定漏洞的规则三类内置规则 procfs core_pattern 逃逸 remount procfs 逃逸 cgroupfs release_agent 逃逸 debug disk device 逃逸 滥用 procfs root 滥用 user namespace 访问云主机 metadata service 访问 ServiceAccount token.丰富的使用场景通过 CRD API 定义策
13、略VarmorPolicyVarmorClusterPolicy支持自定义规则支持对“特权容器”进行加固apiVersion:crd.varmor.org/v1beta1kind:VarmorClusterPolicymetadata:name:nginx-policyspec:target:kind:Deployment selector:matchLabels:app:nginx policy:enforcer:BPF mode:EnhanceProtect enhanceProtect:hardeningRules:-disable-cap-privileged attackProtec
14、tionRules:-rules:-disallow-metadata-servicebpfRawRules:network:egresses:-ipBlock:172.16.0.0/11app:nginxapp:nginxapp:nginxapp:nginxInstanceMetadata Service典型应用 加固特权容器 缓解内核提权 缓解横向渗透 一些特殊场景加固特权容器特权容器 拥有“特权”的容器privileged containersensitive capabilitiessensitive mountsshared namespacessensitive RBAC perm
15、issions部分 Infra 组件需要特殊业务场景需要加固特权容器特权容器 拥有“特权”的容器privileged containersensitive capabilitiessensitive mountsshared namespacessensitive RBAC permissions部分 Infra 组件需要特殊业务场景需要存在多种已知的利用手法云原生场景中,容易被当作攻击跳板应配合安全治理、加固、检测进行纵深防御加固特权容器以 CAP_SYS_ADMIN 为例mountbpfunsharecloneperf_event_openfanotify_init.加固特权容器以 CAP
16、_SYS_ADMIN 为例利用 core_pattern 逃逸容器 mount new procfs bind mount procfs remount procfs move mount procfs#mount new procfsmkdir/tmp/procmount-t proc tmpproc/tmp/procecho xxx /tmp/proc/sys/kernel/core_pattern#bind mount procfsmount-bind/proc/sys/tmp/procmount-o remount,rw/tmp/proc/tmp/procecho xxx /tmp/p
17、roc/sys/kernel/core_pattern加固特权容器以 CAP_SYS_ADMIN 为例利用 core_pattern 逃逸容器对 mount 权限进行细粒度控制:policy:enforcer:BPFmode:EnhanceProtectenhanceProtect:hardeningRules:-disallow-mount-procfsprivileged:true#optional缓解内核提权主要通过减少内核攻击面来实现sensitive capabilities(sys_admin,net_admin.)sensitive syscall(mount,unshare.)
18、sensitive files(uid_map,gid_map.)缓解内核提权以 user namespace 为例可借助其触达更多内核代码此类漏洞近年来频发缓解内核提权以 user namespace 为例可借助其触达更多内核代码此类漏洞近年来频发缓解横向渗透利用 vArmor 限制容器进程的行为内置针对云原生渗透手法的规则缓解横向渗透以 vulnerable app demo 为例/livez/about/readToken/cmd缓解横向渗透以 vulnerable app demo 为例/livez/about/readToken/cmd一些特殊场景特定可执行程序限制(仅限 AppAr
19、mor Enforcer)policy:enforcer:AppArmormode:EnhanceProtectenhanceProtect:attackProtectionRules:-rules:-mitigate-sa-leaktargets:-/bin/bash一些特殊场景特定漏洞应急止血Pre-exploitation DefensePost-exploitation Mitigation根据漏洞类型和利用方式定义缓解策略小 结云原生环境容器加固计算隔离:硬件虚拟化容器、沙箱、安全配置网络隔离:CNI NetworkPolicyvArmor 基于 Linux 的 LSM 等技术进行容器加固基于成本与安全需求选择合适的加固方案小 结下一步计划e2e 测试、可观测性、安全性、兼容性提升Seccomp 集成丰富完善内置策略Policy Advisor欢迎试用、bug 反馈、参与建设更多原理介绍请参见 KCon 2023 议题THANKS