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: 将加固映射到合规要求
避免的反模式
❌ 仅在部署时加固
- 加固是持续的;定期扫描和验证
❌ 盲目应用所有控制
- 基于风险和暴露优先
❌ 无验证
- 始终验证加固已应用且有效
❌ 通过隐蔽性安全
- 隐蔽性不是安全;使用已验证控制
❌ 无测试加固
- 测试加固更改不破坏功能
❌ 大规模手动加固
- 自动化加固以确保一致性和可重复性
开始使用
- 评估当前态势: 运行CIS基准扫描
- 优先: 互联网面向 → 敏感数据 → 内部
- 应用基线加固: OS、容器、云基础
- 自动化: 使用脚本和IaC确保一致性
- 持续验证: 将扫描集成到CI/CD
- 监控: 部署运行时安全监控
- 迭代: 定期审查和改进加固
分步实施,从references/linux-hardening.md或references/container-hardening.md开始,基于基础设施类型。