安全加固Skill security-hardening

该技能通过应用CIS基准和零信任原则,全面减少操作系统、容器、云、网络和数据库等基础设施层的攻击面。适用于生产环境加固、合规性要求满足和深度防御安全实施,关键词包括安全加固、CIS基准、零信任、攻击面减少、合规、云安全、网络安全、自动化扫描。

安全运维 0 次安装 0 次浏览 更新于 3/23/2026

name: 安全加固 description: 使用CIS基准和零信任原则,减少操作系统、容器、云、网络和数据库层的攻击面。用于强化生产基础设施、满足合规要求或实施深度防御安全。

安全加固

目的

通过系统配置加固、最小权限执行和自动化安全控制,主动减少基础设施各层的攻击面。应用行业标准的CIS基准和零信任原则到操作系统、容器、云配置、网络和数据库。

何时使用此技能

在以下情况调用此技能:

  • 部署前强化生产基础设施
  • 满足合规要求(SOC 2、PCI-DSS、HIPAA、FedRAMP)
  • 实施零信任安全架构
  • 减少容器或云配置错误风险
  • 准备安全审计或渗透测试
  • 自动化安全基线执行
  • 响应漏洞扫描发现

加固层

安全加固适用于五个基础设施层:

层1:操作系统(Linux)

  • 内核参数调优(sysctl)
  • SSH配置加固
  • 用户和组管理
  • 文件系统权限和挂载选项
  • 服务最小化
  • SELinux/AppArmor执行

层2:容器

  • 最小基础镜像(Chainguard、Distroless、Alpine)
  • 非root容器执行
  • 只读根文件系统
  • Seccomp和AppArmor配置文件
  • 资源限制和能力删除
  • Pod安全标准执行

层3:云配置

  • IAM最小权限和MFA执行
  • 网络安全组和NACL配置
  • 静态和传输中加密
  • 阻止公共访问
  • 启用日志记录和监控
  • CSPM(云安全态势管理)集成

层4:网络

  • 默认拒绝网络策略
  • 网络分段和微分段
  • TLS/mTLS执行
  • 防火墙规则最小化
  • DNS安全(DNSSEC、DNS过滤)

层5:数据库

  • 认证和授权加固
  • 连接加密(SSL/TLS)
  • 启用审计日志
  • 网络隔离和访问控制
  • 基于角色的权限与最小特权

核心加固原则

1. 默认拒绝,显式允许

从所有访问拒绝开始,仅显式允许必需操作。应用默认拒绝防火墙规则和网络策略,然后允许特定流量。

2. 最小权限访问

授予操作所需的最小权限。使用RBAC、特定资源的IAM策略和有限权限的数据库角色(除非必需,否则无DELETE或DDL)。

3. 深度防御

实施多个重叠的安全控制:网络防火墙、认证、授权、审计日志和加密协同工作。

4. 最小攻击面

移除不必要的组件、服务和权限。使用最小容器基础镜像、禁用未用服务,并删除所有Linux能力,除非必需。

5. 安全失败

错误或配置错误时,默认到安全状态。认证失败拒绝访问、缺失配置使用限制性默认值,监控失败触发即时警报。

加固优先级框架

基于暴露程度和数据敏感性优先加固工作:

关键优先级:互联网面向系统

立即应用:

  • 容器加固(最小镜像、非root、只读)
  • 网络分段(DMZ、WAF、DDoS防护)
  • TLS终止和证书管理
  • 速率限制和认证
  • 实时监控和警报

工具: Trivy、Falco、ModSecurity、Cloudflare

高优先级:含敏感数据系统

生产前应用:

  • 静态加密(AES-256、KMS管理密钥)
  • 严格访问控制(RBAC、最小权限)
  • 全面审计日志
  • 数据库连接加密
  • 定期漏洞扫描

工具: Checkov、Prowler、Lynis、OpenSCAP

标准优先级:内部系统

系统应用:

  • OS加固(CIS基准)
  • 服务最小化
  • 补丁管理自动化
  • 配置管理
  • 基本监控

工具: Ansible、Puppet、kube-bench、docker-bench-security

CIS基准集成

CIS(互联网安全中心)基准提供行业标准加固指导。

自动化CIS扫描

Docker CIS基准:

docker run --rm -it \
  --net host \
  --pid host \
  --cap-add audit_control \
  -v /var/lib:/var/lib:ro \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /etc:/etc:ro \
  docker/docker-bench-security

Kubernetes CIS基准:

kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml
kubectl logs job/kube-bench

Linux CIS基准:

# 使用Lynis
lynis audit system --quick

# 使用OpenSCAP
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_cis \
  /usr/share/xml/scap/ssg/content/ssg-ubuntu2004-ds.xml

关键CIS控制映射

CIS控制 加固行动
4.1 安全配置 应用加固基线 所有层
5.1 账户管理 执行最小权限、MFA OS、云
6.1 访问控制 RBAC、网络策略 所有层
8.1 审计日志管理 启用全面日志 所有层
13.1 网络监控 部署IDS/IPS、流日志 网络
3.1 数据保护 启用静态/传输中加密 云、数据库

详细CIS控制映射,见references/cis-benchmark-mapping.md

容器基础镜像选择

基于安全需求和兼容性选择基础镜像:

用例 推荐基础 大小 CVE 权衡
生产应用 Chainguard镜像 ~10MB 0 最小化,零CVE
最小Linux Alpine ~5MB 小,可审计
兼容性 Distroless ~20MB 无shell,调试难
调试 Debian slim ~80MB 有调试工具
遗留应用 Ubuntu ~100MB 完全兼容

生产推荐: 生产用Chainguard镜像或Distroless,开发用Alpine。

验证和审计

加固必须持续验证,不仅实施时。

自动化安全扫描

容器漏洞扫描:

# Trivy:全面漏洞和配置错误扫描器
trivy image --severity HIGH,CRITICAL myapp:latest

# Grype:快速漏洞扫描器
grype myapp:latest

基础设施即代码扫描:

# Checkov:多云IaC扫描器
checkov -d terraform/ --framework terraform

# Terrascan:策略即代码扫描器
terrascan scan -t terraform -d terraform/

Kubernetes安全扫描:

# Kubesec:安全风险分析
kubesec scan k8s/deployment.yaml

# Polaris:配置验证
polaris audit --format=pretty

# Trivy K8s扫描
trivy k8s --report summary cluster

云安全态势:

# Prowler:AWS安全评估
prowler aws --services s3 iam ec2

# ScoutSuite:多云安全审计
scout aws --services s3 iam ec2

持续验证管道

将安全扫描集成到CI/CD:

# GitHub Actions示例
name: 安全加固验证

on:
  push:
    branches: [main]
  schedule:
    - cron: '0 0 * * *'  # 每日扫描

jobs:
  container-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: 构建镜像
        run: docker build -t myapp:test .

      - name: 用Trivy扫描
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'myapp:test'
          severity: 'CRITICAL,HIGH'
          exit-code: '1'  # 有发现则失败

  iac-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: 用Checkov扫描IaC
        uses: bridgecrewio/checkov-action@master
        with:
          directory: terraform/
          framework: terraform
          soft_fail: false

合规报告

从扫描结果生成合规报告:

# 生成CIS合规报告
kube-bench run --json > cis-report.json

# 生成漏洞报告
trivy image --format json --output vuln-report.json myapp:latest

# 聚合报告用于合规仪表板
python scripts/generate-compliance-report.py \
  --cis cis-report.json \
  --vulns vuln-report.json \
  --output compliance-dashboard.html

自动化工具

加固自动化

  • Ansible/Puppet/Chef: OS加固的配置管理
  • Terraform/Pulumi: 带安全模块的基础设施即代码
  • Cloud Custodian: 云资源策略执行
  • OPA/Gatekeeper: Kubernetes策略执行
  • Kyverno: Kubernetes原生策略管理

扫描工具

  • Trivy: 通用漏洞和配置错误扫描器
  • Checkov: IaC安全和合规扫描器
  • Falco: 运行时安全监控
  • Prowler: AWS安全评估工具
  • ScoutSuite: 多云安全审计
  • Lynis: Linux安全审计
  • docker-bench-security: Docker CIS基准扫描器
  • kube-bench: Kubernetes CIS基准扫描器

监控工具

  • Falco: 容器运行时威胁检测
  • Sysdig: 容器安全和监控
  • Wazuh: 主机和端点安全监控
  • OSSEC: 基于主机的入侵检测

快速参考:常见加固任务

加固SSH访问

# 编辑 /etc/ssh/sshd_config.d/hardening.conf
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
MaxAuthTries 3
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2

# 重启SSH
systemctl restart sshd

加固容器镜像

# 使用最小基础
FROM cgr.dev/chainguard/python:latest

# 非root用户
USER nonroot

# 只读文件系统
COPY --chown=nonroot:nonroot app /app
WORKDIR /app

# 删除所有能力
ENTRYPOINT ["python", "-m", "app"]

加固Kubernetes Pod

securityContext:
  runAsNonRoot: true
  runAsUser: 65534
  seccompProfile:
    type: RuntimeDefault
  allowPrivilegeEscalation: false
  readOnlyRootFilesystem: true
  capabilities:
    drop: ["ALL"]

加固AWS S3存储桶

resource "aws_s3_bucket_public_access_block" "secure" {
  bucket = aws_s3_bucket.data.id

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

resource "aws_s3_bucket_server_side_encryption_configuration" "secure" {
  bucket = aws_s3_bucket.data.id

  rule {
    apply_server_side_encryption_by_default {
      sse_algorithm = "aws:kms"
    }
  }
}

用默认拒绝加固网络

# Kubernetes网络策略:拒绝所有入站
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
  namespace: production
spec:
  podSelector: {}
  policyTypes:
  - Ingress

加固数据库访问

-- PostgreSQL加固
REVOKE ALL ON DATABASE app FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM PUBLIC;

CREATE ROLE app_user WITH LOGIN;
GRANT CONNECT ON DATABASE app TO app_user;
GRANT SELECT, INSERT, UPDATE ON app.orders TO app_user;

-- 强制SSL连接
ALTER SYSTEM SET ssl = on;
-- 在pg_hba.conf中:hostssl all all 0.0.0.0/0 scram-sha-256

详细加固指南

层特定加固指导:

  • OS加固:references/linux-hardening.md
  • 容器加固:references/container-hardening.md
  • 云加固:references/cloud-hardening.md
  • 网络加固:references/network-hardening.md
  • 数据库加固:references/database-hardening.md

自动化脚本:

  • Python自动化:scripts/harden-linux.py
  • 容器主机设置:scripts/harden-container-host.sh
  • 合规报告:scripts/generate-compliance-report.py
  • 基础设施扫描:scripts/scan-infrastructure.sh

工作示例:

  • Linux配置:examples/linux/
  • Kubernetes清单:examples/kubernetes/
  • Terraform模块:examples/terraform/

相关技能集成

  • auth-security: 认证和授权模式补充加固
  • secret-management: 安全秘密处理对加固至关重要
  • kubernetes-operations: Pod安全和RBAC加固
  • infrastructure-as-code: IaC管道中的安全扫描
  • building-ci-pipelines: 自动化安全扫描集成
  • observability: 安全监控和警报
  • compliance-frameworks: 将加固映射到合规要求

避免的反模式

❌ 仅在部署时加固

  • 加固是持续的;定期扫描和验证

❌ 盲目应用所有控制

  • 基于风险和暴露优先

❌ 无验证

  • 始终验证加固已应用且有效

❌ 通过隐蔽性安全

  • 隐蔽性不是安全;使用已验证控制

❌ 无测试加固

  • 测试加固更改不破坏功能

❌ 大规模手动加固

  • 自动化加固以确保一致性和可重复性

开始使用

  1. 评估当前态势: 运行CIS基准扫描
  2. 优先: 互联网面向 → 敏感数据 → 内部
  3. 应用基线加固: OS、容器、云基础
  4. 自动化: 使用脚本和IaC确保一致性
  5. 持续验证: 将扫描集成到CI/CD
  6. 监控: 部署运行时安全监控
  7. 迭代: 定期审查和改进加固

分步实施,从references/linux-hardening.mdreferences/container-hardening.md开始,基于基础设施类型。