跳转至

03系统强化

考试大纲

系统强化:15%

  • 最小化主机操作系统的大小(减少攻击面)
  • 最小化 IAM 角色
  • 最小化对网络的外部访问
  • 适当使用内核强化工具,如 AppArmor, seccomp

Sysdig & falco

题目描述:

  • 使用运行时检测工具来检测 Pod redis123 单个容器中频发生成和执行的异常进程。

有两种工具可供使用:

  • sysdig
  • falco

注: 这些工具只预装在 cluster 的工作节点 node02 上,不在 master 节点。

使用工具至少分析 30 秒 ,使用过滤器检查生成和执行的进程,将事件写到 /opt/KSR00101/incidents/summary 文件中,

其中包含检测的事件, 格式如下:

timestamp,uid/username,processName

保持工具的原始时间戳格式不变。

注: 确保事件文件存储在集群的工作节点上。

以下示例显示了格式正确的事件文件:

010201:40:19.601363716,root,init
01:40:20.606013716,nobody,bash
01:40:21.137163716,1000,tar

参考解答:

# user.name
sysdig -M 30 -p "%evt.time,%user.name,%proc.name" container.id=46183d7281e15 >> /opt/KSRS00101/events/details

# user.uid
sysdig -M 30 -p "%evt.time,%user.uid,%proc.name" container.id=46183d7281e15 >> /opt/KSRS00101/events/details

AppArmor

题目描述:

  • 在 cluster 的工作节点 node02 上,实施位于 /etc/apparmor.d/nginx_apparmor 的现有 APPArmor 配置文件。

编辑位于 /cks/KSSH00401/nginx-deploy.yaml 的现有清单文件以应用 AppArmor 配置文件。

最后,应用清单文件并创建其中指定的 Pod

注意:考试时,考题里已表明 APPArmor 在工作节点上,所以你需要 ssh 到开头写的工作节点上。

官方文档:

参考解答:

切换到 node02 的 root 下

ssh node02
sudo -i

切换到 apparmor 的目录

cd /etc/apparmor.d/
cat nginx_apparmor #其中 profile nginx-profile-3 flags=(attach_disconnected) { 这一行的第二个单词 nginx-profile-3 就是这个配置文件的名字。

执行 apparmor 策略模块

# 加载启用这个配置文件
apparmor_parser /etc/apparmor.d/nginx_apparmor

# 检查是否成功
apparmor_status | grep nginx-profile-3

配置 Pod 使用策略

apiVersion: v1
kind: Pod
metadata:
  name: hello-apparmor
  annotations:
    # 告知 Kubernetes 去应用 AppArmor 配置 "k8s-apparmor-example-deny-write"。
    # 请注意,如果节点上运行的 Kubernetes 不是 1.4 或更高版本,此注解将被忽略。
    container.apparmor.security.beta.kubernetes.io/hello: localhost/nginx-profile-3
spec:
  containers:
  - name: hello
    image: busybox:1.28
    command: [ "sh", "-c", "echo 'Hello AppArmor!' && sleep 1h" ]

检验

candidate@node01:~$ kubectl exec podx -- touch /tmp/test
touch: /tmp/test: Permission denied
command terminated with exit code 1