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. 练习与实操#
- 绘制你的运维平台数据流图,标出信任边界与关键资产。
- 为三台主机编写审计规则并验证审计日志是否产生。
- 为运维账号配置最小 sudo 权限,验证禁止执行非授权命令。
- 设计一条“配置投毒”攻击路径并制定控制措施与验证点。
通过以上示例与实操,建立可验证的安全架构与威胁建模闭环,将“设计—控制—监测—验证”形成可落地的持续治理流程。