攻击防护
这些规则针对容器内的常见渗透手法进行防护,例如缓解容器信息泄露、禁用敏感行为等。
缓解信息泄露
mitigate-sa-leak
缓解 ServiceAccount 泄露。
此规则禁止容器进程读取 ServiceAccount 相关的敏感信息,包括 token、namespace、ca 证书。避免 default SA 泄漏、错误配置的 SA 泄漏带来的安全风险,攻击者通过 RCE 漏洞获取 k8s 容器内的权限后,常倾向于通过泄漏其 SA 信息来进行进一步的渗透入侵活动。
在大部分用户场景中,并不需要使用 SA 与 API Server 进行通信。而默认情况下,k8s 会为不需要与 API Server 通信的 Pod 设置 default SA。
禁止 ServiceAccount 文件的读操作。
- AppArmor
- BPF
mitigate-disk-device-number-leak
缓解宿主机磁盘设备号泄露。
攻击者可能会通过读取容器进程的挂载信息来获取宿主机磁盘设备的设备号,从而用于后续的容器逃逸。
禁止容器进程读取 /proc/[PID]/mountinfo
, /proc/partitions
。
- AppArmor
- BPF
mitigate-overlayfs-leak
缓解容器 overlayfs 路径泄露。
攻击者可能会通过获取容器进程的挂载信息来获取容器进程 rootfs 在宿主机中的 overlayfs 路径,从而用于 后续的容器逃逸。
禁止读取 /proc/mounts
、/proc/[PID]/mounts
、/proc/[PID]/mountinfo
文件。
此规则可能会影响容器内 mount 命令的部分功能。
- AppArmor
- BPF
mitigate-host-ip-leak
缓解宿主机 IP 泄露。
攻击者通过 RCE 漏洞获取 k8s 容器内的权限后,会尝试进一步的网络渗透攻击。因此,限制攻击者借此获取宿主机 IP、MAC 地址、网段等敏感信息,可增加攻击者进行网络渗透的难度和成本。
禁止容器进程读取 ARP 地址解析表(/proc/net/arp
、/proc/[PID]/net/arp
等),从而获取宿主机 IP 和 Mac 地址等敏感信息。
- AppArmor
- BPF
disallow-metadata-service
禁止访问云服务器的 metadata service。
攻击者获取容器内的代码执行权限后,会尝试访问云服务器的 Metadata Service 来进行信息泄露。在某些场景下,攻击者可能会获取敏感信息,从而进行权限提升、横向渗透。
此规则禁止容器进程访问云服务器的 Instance Metadata Service。包含两个本地链接保留地址:100.96.0.96 和 169.254.169.254。
禁止连接 Instance Metadata Services 的 IP 地址。
- BPF
禁止敏感操作
disable-write-etc
禁止写入 /etc 目录。
攻击者可能会通过修改 /etc 目录中的敏感文件来实施权限提升,例如修改 /etc/bash.bashrc 等实施水坑攻击、修改 /etc/passwd 和 /etc/shadow 添加用户进行持久化、修改 nginx.conf 或 /etc/ssh/ssh_config 进行持久化等。
禁止写入 /etc 目录。
- AppArmor
- BPF
disable-busybox
禁止执行 busybox 命令。
某些应用服务会以 busybox, alpine 等作为基础镜像进行打包,而这些镜像一般会使用 busybox 工具箱作为基础命令行工具的可执行程序。这也给攻击者提供了很多便利,攻击者可以利用 busybox 执行命令辅助攻击。
禁止 busybox 执行。
若容器内服务依赖 busybox 或相关 bash 命令,开启此策略会导致运行出错。
- AppArmor
- BPF
disable-shell
禁止创建 Unix Shell。
攻击者通过 RCE 漏洞获取服务的远程代码执行权限后,通常会借助 reverse shell 获取容器内任意命令执行能力。
此规则禁止容器进程创建新的 Unix shell,从而实施反弹 shell 等攻击手段。
禁止 Unix Shell 执行。
有些基础镜像会动态链接 sh 到 /bin/busybox
,此情况下还需配合 disable-busybox 策略使用。
- AppArmor
- BPF
disable-wget
禁止通过 wget 命令下载文件。
攻击者通常会借助 wget 命令从外部下载攻击程序进行随后的攻击(驻留、权限提升、网络扫描、挖矿等)。
此规则通过禁止执行 wget 命令来限制文件下载。
禁止 wget 执行。
有些基础镜像会动态链接 wget 到 /bin/busybox
,此情况下还需配合 disable-busybox 策略使用。
- AppArmor
- BPF
disable-curl
禁止通过 curl 命令下载文件。
攻击者通常会借助 curl 命令发起网络访问、从外部下载攻击程序进行随后的攻击(驻留、权限提升、网络扫描、挖矿等)。
此规则禁止容器进程通过 curl 命令访问网络。
禁止 curl 执行。
- AppArmor
- BPF
disable-chmod
禁止通过 chmod 修改文件权限。
当攻击者通过漏洞获取容器内的控制权后,通常会尝试下载其他攻击代码、工具到容器内实施进一步的攻击(权限提升、横向渗透、挖矿等)。在这个攻击链路中,攻击者通常会利用 chmod 命令修改文件的执行权限。
禁止 chmod 执行。
有些基础镜像会动态链接 chmod 到 /bin/busybox,此情况下还需配合 disable-busybox 策略使用。
- AppArmor
- BPF
disable-chmod-x-bit
禁止设置文件的可执行属性。
当攻击者通过漏洞获取容器内的控制权后,通常会尝试下载其他攻击代码、工具到容器内实施进一步的攻击(权限提升、横向渗透、挖矿等)。在这个攻击链路中,攻击者通常会调用 chmod 相关系统调用。
禁止通过 chmod 相关系统调用(chmod
、fchmod
、fchmodat
、fchmodat2
),设置文件的 execute/search 权限。
- Seccomp
disable-chmod-s-bit
禁止设置文件的 SUID/SGID 属性。
在某些场景下,攻击者可能会尝试调用 chmod 系列的系统调用(chmod/fchmod/fchmodat/fchmodat2),通过设置文件的 s 标记位(set-user-ID, set-group-ID)来实施权限提升攻击。
禁止通过 chmod 相关系统调用(chmod
、fchmod
、fchmodat
、fchmodat2
),设置文件的 set-user-ID/set-group-ID 属性。
- Seccomp
disable-su-sudo
禁止执行 sudo、su 命令。
当容器内的进程以非 root 用户运行时,攻击者需要先提权至 root 用户进行后续攻击。而 sudo/su 命令是本地提权的常见途径之一。
禁止 sudo、su 执行。
有些基础镜像会动态链接 su 到 /bin/busybox
,此情况下还需配合 disable-busybox 策略使用。
- AppArmor
- BPF
其他
disable-network
禁止所有网络访问。
您可以使用此规则禁止容器访问网络。
- AppArmor
- BPF