19.8.9 安全测试与持续加固流程

安全测试与持续加固流程应覆盖平台、主机、容器、应用与中间件全栈,形成“发现—评估—修复—验证—复盘”的闭环,确保漏洞可追踪、可度量、可验证,最终降低暴露面、缩短修复周期、减少重复问题并保障业务连续性。

流程原理草图(闭环)

文章图片

测试范围与频率
- 主机与基础设施:OS基线、内核/组件漏洞、端口暴露、弱口令与配置缺陷。
- 中间件:MySQL/Nginx/Redis/Nacos/Kafka/ZooKeeper/Keepalived/HAProxy/ProxySQL 安全配置、版本漏洞、权限隔离。
- 容器与编排:Docker镜像依赖漏洞、K8s API安全、RBAC、Admission 控制、运行时防护。
- 平台与业务:SSO、API、管理后台、配置中心、发布系统、监控平台鉴权与审计。
- 频率:日常自动扫描 + 季度深度渗透测试 + 重大变更前后验证。


1. 资产识别与自动化扫描(含安装与命令)#

1)主机基线扫描(Lynis)
安装与执行:

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y lynis

# 扫描并生成报告
sudo lynis audit system --quick --report-file /var/log/lynis-report.dat

# 查看高危建议
grep -n "warning" /var/log/lynis-report.dat | head

预期效果:生成主机基线建议与扣分项,形成修复清单。

2)端口与弱口令排查(Nmap)

# 扫描常见端口与服务版本
sudo nmap -sS -sV -O -p 1-1024 10.0.0.10 -oN /var/log/nmap-host.txt

# 针对暴露的管理端口进行复核
grep "open" /var/log/nmap-host.txt

3)容器与镜像漏洞扫描(Trivy)
安装与扫描:

# 安装(Linux)
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh
sudo mv ./bin/trivy /usr/local/bin/

# 扫描镜像(示例)
trivy image --severity HIGH,CRITICAL --format table nginx:1.20

# 扫描本地文件系统依赖(SCA)
trivy fs --severity HIGH,CRITICAL /srv/app

预期效果:输出高危/严重漏洞及CVE列表。

4)K8s 基线检查(kube-bench)

# 安装(Docker方式)
docker run --rm -v /etc:/etc -v /var:/var \
  --net host --pid host --user root \
  aquasec/kube-bench:latest --version 1.25

# 输出结果包含PASS/FAIL/INFO

2. 人工验证与风险分级(示例)#

高危项复现流程(示例:Redis 未授权)

# 远程尝试连接
redis-cli -h 10.0.0.20 -p 6379 ping

# 若返回 PONG 则存在未授权风险
# 评估影响:是否能写入恶意数据、是否外网可达

风险分级建议
- 严重:可直接拿到数据/权限(CVSS ≥ 9.0)
- 高危:可远程利用或影响核心业务
- 中低危:配置缺陷/信息泄露但影响有限


3. 修复与加固(含配置示例)#

1)Linux SSH 加固

# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers ops admin

# 生效
sudo systemctl restart sshd

预期效果:禁止root直登、关闭密码认证、限定用户。

2)MySQL 权限与远程访问限制

-- 禁止root远程访问,仅允许本机
UPDATE mysql.user SET Host='localhost' WHERE User='root';
FLUSH PRIVILEGES;

-- 创建最小权限账户
CREATE USER 'appuser'@'10.0.%' IDENTIFIED BY 'StrongPass!2024';
GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO 'appuser'@'10.0.%';

3)Nginx 管理接口隔离与TLS加固

# /etc/nginx/conf.d/admin.conf
server {
  listen 443 ssl;
  server_name admin.example.com;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers HIGH:!aNULL:!MD5;

  location / {
    allow 10.0.0.0/24;
    deny all;
    proxy_pass http://127.0.0.1:8080;
  }
}

重载:

sudo nginx -t && sudo systemctl reload nginx

4)K8s RBAC 约束(示例)

# /etc/k8s/rbac-readonly.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: prod
  name: readonly
rules:
- apiGroups: ["", "apps"]
  resources: ["pods","deployments","services"]
  verbs: ["get","list","watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: readonly-bind
  namespace: prod
subjects:
- kind: User
  name: devuser
roleRef:
  kind: Role
  name: readonly
  apiGroup: rbac.authorization.k8s.io

应用:

kubectl apply -f /etc/k8s/rbac-readonly.yaml

4. 验证与回归(含命令)#

复测示例:端口与权限

# 复扫端口
nmap -sS -p 1-1024 10.0.0.10 -oN /var/log/nmap-retest.txt

# 验证SSH禁止root与密码登录
ssh root@10.0.0.10
# 预期:拒绝登录

# 验证MySQL权限
mysql -u appuser -p -h 10.0.0.30 -e "SHOW DATABASES;"
# 预期:仅能访问授权库

5. CI/CD 安全门禁示例(Jenkins Pipeline)#

pipeline {
  agent any
  stages {
    stage('Build') { steps { sh 'docker build -t app:1.0 .' } }
    stage('Scan') {
      steps {
        sh 'trivy image --exit-code 1 --severity HIGH,CRITICAL app:1.0'
      }
    }
    stage('Deploy') { steps { sh 'kubectl apply -f k8s/deploy.yaml' } }
  }
}

预期效果:若出现高危漏洞,流水线失败并阻断发布。


6. 常见故障与排错#

1)Trivy 扫描失败(DB更新错误)
排错:

# 手动更新数据库
trivy --download-db-only

# 设置代理
export HTTPS_PROXY=http://proxy:3128

2)kube-bench 报错“Not a master node”
排错:

# 指定版本与模式
docker run --rm --net host aquasec/kube-bench:latest --version 1.25 --benchmark cis-1.6

3)SSH 加固后无法登录
排错步骤:
1. 保留一个已登录会话
2. 检查 /etc/ssh/sshd_config 配置
3. 使用 sshd -T 验证配置

sshd -T | grep -E "permitrootlogin|passwordauthentication"

7. 练习与验收#

练习
1. 使用 Lynis 扫描一台主机并输出前三条高危建议。
2. 通过 Trivy 扫描一个镜像并修复一个高危 CVE。
3. 为 K8s 创建只读角色并验证权限限制。

验收指标
- 漏洞修复 SLA 达标率、误报率、复现率、重复问题占比
- 关键系统高危漏洞清零时长、发布门禁拦截率
- 合规检查覆盖率与基线一致性

通过标准化流程、自动化测试与持续加固,形成可持续、可审计的安全能力。