19.8.1 安全架构与威胁模型

安全架构与威胁模型围绕“资产—边界—身份—数据—控制—监测”六要素建立纵深防御闭环。资产包括主机、容器、集群、网络设备、数据库与中间件;边界包括公网入口、内网分区、东西向流量与管理平面;身份贯穿人/服务/机器账号;数据覆盖配置、密钥、日志与业务数据;控制与监测对应策略执行、审计与告警。

文章图片

威胁模型采用 STRIDE + 攻防路径。常见威胁:伪造身份/越权访问、配置投毒与供应链风险、敏感数据泄露、拒绝服务、持久化控制与横向移动。重点攻击面:管理入口、自动化执行链路、配置下发通道、镜像与制品仓库、备份链路、监控与日志系统。

1. 原理与流程示例(STRIDE + 资产数据流)#

输出物:资产清单、数据流图、风险矩阵、控制映射表。

资产清单(示例)
- 主机: bastion-01, api-01
- 集群: k8s-prod
- 中间件: mysql-prod, redis-prod
- 仓库: harbor-01
- 关键数据: /etc/ansible/secret.yml, s3://backup-prod

2. 安全架构草图(管理入口与控制链路)#

文章图片

3. 关键命令与配置示例(安装、验证、排错)#

3.1 基础安全工具安装(以 Ubuntu 为例)#

# 安装审计与入侵检测工具
sudo apt update
sudo apt install -y auditd audispd-plugins fail2ban

# 启动并设置开机自启
sudo systemctl enable --now auditd fail2ban

# 验证服务状态
systemctl status auditd --no-pager
systemctl status fail2ban --no-pager

3.2 审计规则示例(记录关键文件与权限变更)#

文件路径:/etc/audit/rules.d/10-hardening.rules

# 记录关键配置与密钥访问
-w /etc/ssh/sshd_config -p wa -k sshd_config
-w /etc/sudoers -p wa -k sudoers
-w /etc/ansible/secret.yml -p rwxa -k ansible_secret

# 记录身份与权限相关变更
-w /etc/passwd -p wa -k user_change
-w /etc/group -p wa -k group_change

应用与验证:

sudo augenrules --load
sudo auditctl -l
# 查询审计事件
sudo ausearch -k ansible_secret -i | tail -n 5

3.3 边界控制示例(最小暴露端口)#

# 仅允许管理网段访问 22/443
sudo ufw default deny incoming
sudo ufw allow from 10.10.0.0/16 to any port 22 proto tcp
sudo ufw allow from 10.10.0.0/16 to any port 443 proto tcp
sudo ufw enable
sudo ufw status numbered

3.4 最小权限示例(sudo 精细化)#

文件路径:/etc/sudoers.d/ops

# 允许 ops 组执行特定命令,避免 ALL
%ops ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/journalctl -u nginx

3.5 自动化执行链路保护示例(Ansible)#

清单文件:/etc/ansible/hosts

[web]
web-01 ansible_host=10.10.1.10
web-02 ansible_host=10.10.1.11

任务文件:/etc/ansible/harden.yml

- name: apply hardening
  hosts: web
  become: true
  tasks:
    - name: disable root ssh
      lineinfile:
        path: /etc/ssh/sshd_config
        regexp: '^PermitRootLogin'
        line: 'PermitRootLogin no'
      notify: restart ssh

  handlers:
    - name: restart ssh
      service:
        name: ssh
        state: restarted

执行与预期效果:

ansible-playbook -i /etc/ansible/hosts /etc/ansible/harden.yml
# 预期:SSH 禁用 root 登录,运维变更可审计

4. 威胁模型落地:风险矩阵示例#

风险矩阵(示例)
威胁: 伪造身份
攻击面: 统一登录入口
影响: 高
可能性: 中
控制: MFA + 设备指纹 + 异常登录告警

威胁: 配置投毒
攻击面: 配置中心/自动化执行
影响: 高
可能性: 中
控制: 配置签名、审批流程、灰度发布

5. 排错与验证清单#

  • 审计未生效:检查 auditd 是否运行、规则文件权限是否为 600。
  • 登录失败无告警:检查 fail2ban 规则是否启用、日志路径是否正确。
  • 自动化执行异常:核查 SSH 免密权限、Ansible 变更是否触发回滚。
# 排错命令示例
sudo systemctl status auditd
sudo journalctl -u auditd -n 50
sudo fail2ban-client status sshd

6. 练习与实操#

  1. 绘制你的运维平台数据流图,标出信任边界与关键资产。
  2. 为三台主机编写审计规则并验证审计日志是否产生。
  3. 为运维账号配置最小 sudo 权限,验证禁止执行非授权命令。
  4. 设计一条“配置投毒”攻击路径并制定控制措施与验证点。

通过以上示例与实操,建立可验证的安全架构与威胁建模闭环,将“设计—控制—监测—验证”形成可落地的持续治理流程。