关于 security-hardening
security-hardening 是面向基础设施工程师和安全团队的加固指南,涵盖操作系统、容器、云、网络与数据库。它结合 CIS 基准、最小权限原则及扫描和验证方法,支持持续降低攻击面。
主要功能
- 01覆盖五类基础设施层
- 02应用 CIS 基准与零信任原则
- 03提供最小权限和默认拒绝指导
- 04介绍扫描、监控与合规报告
- 05提供自动化及配置示例
适用场景
- 01部署前加固生产基础设施
- 02响应漏洞扫描结果
- 03准备安全审计或渗透测试
- 04在 CI/CD 中持续验证安全基线
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ancoleman/ ai-design-components --skill security-hardening安装后在 Claude Code 中输入/security-hardening确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
outputs.yamlexamples/kubernetes/network-policy-hardened.yamlpod-security-hardened.yamlexamples/linux/ssh-hardening.confsysctl-hardening.confreferences/cis-benchmark-mapping.mdcloud-hardening.mdcontainer-hardening.mddatabase-hardening.mdlinux-hardening.mdnetwork-hardening.mdscripts/harden-linux.pyscan-infrastructure.sh详细介绍
安全加固
目的
通过系统化配置加固、强制执行最小权限原则和自动化安全控制,主动缩小各基础设施层的攻击面。将行业标准 CIS 基准和零信任原则应用于操作系统、容器、云配置、网络和数据库。
何时使用此技能
在以下情况下调用此技能:
- 部署前加固生产基础设施
- 满足合规要求(SOC 2、PCI-DSS、HIPAA、FedRAMP)
- 实施零信任安全架构
- 降低容器或云配置错误带来的风险
- 为安全审计或渗透测试做准备
- 自动化执行安全基线
- 响应漏洞扫描结果
加固层
安全加固适用于以下五个基础设施层:
第 1 层:操作系统(Linux)
- 调整内核参数(sysctl)
- 加固 SSH 配置
- 用户和组管理
- 文件系统权限和挂载选项
- 精简服务
- 强制启用 SELinux/AppArmor
第 2 层:容器
- 使用最小化基础镜像(Chainguard、Distroless、Alpine)
- 以非 root 用户运行容器
- 使用只读根文件系统
- 配置 Seccomp 和 AppArmor 配置文件
- 设置资源限制并移除 capabilities
- 强制执行 Pod 安全标准
第 3 层:云配置
- IAM 最小权限和强制启用 MFA
- 配置网络安全组和 NACL
- 加密静态数据和传输中的数据
- 阻止公开访问
- 启用日志记录和监控
- 集成 CSPM(云安全态势管理)
第 4 层:网络
- 默认拒绝网络策略
- 网络分段和微分段
- 强制使用 TLS/mTLS
- 尽量精简防火墙规则
- DNS 安全(DNSSEC、DNS 过滤)
第 5 层:数据库
- 加固身份验证和授权
- 加密连接(SSL/TLS)
- 启用审计日志
- 网络隔离和访问控制
- 使用遵循最小权限原则的基于角色的权限
核心加固原则
1. 默认拒绝,显式允许
从拒绝所有访问开始,仅显式允许必需的操作。应用默认拒绝的防火墙规则和网络策略,然后放行特定流量。
2. 最小权限访问
仅授予运行所需的最低权限。使用 RBAC、针对特定资源的 IAM 策略,以及权限受限的数据库角色(除非必需,否则不授予 DELETE 或 DDL 权限)。
3. 深度防御
实施多层相互配合的安全控制:网络防火墙、身份验证、授权、审计日志和加密。
4. 最小化攻击面
移除不必要的组件、服务和权限。使用最小化容器基础镜像,禁用未使用的服务,除非必需,否则移除所有 Linux capabilities。
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 基准:
# Using Lynis
lynis audit system --quick
# Using 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 Images | ~10MB | 0 | 精简、零 CVE |
| 精简 Linux | Alpine | ~5MB | 很少 | 体积小、可审计 |
| 兼容性 | Distroless | ~20MB | 很少 | 无 shell,调试更困难 |
| 调试 | Debian slim | ~80MB | 更多 | 包含调试工具 |
| 旧版应用 | Ubuntu | ~100MB | 很多 | 完全兼容 |
生产环境建议: 生产环境使用 Chainguard Images 或 Distroless,开发环境使用 Alpine。
验证与审计
必须持续验证加固效果,而不只是实施时验证。
自动化安全扫描
容器漏洞扫描:
# Trivy: Comprehensive vulnerability and misconfiguration scanner
trivy image --severity HIGH,CRITICAL myapp:latest
# Grype: Fast vulnerability scanner
grype myapp:latest
基础设施即代码扫描:
# Checkov: Multi-cloud IaC scanner
checkov -d terraform/ --framework terraform
# Terrascan: Policy-as-code scanner
terrascan scan -t terraform -d terraform/
Kubernetes 安全扫描:
# Kubesec: Security risk analysis
kubesec scan k8s/deployment.yaml
# Polaris: Configuration validation
polaris audit --format=pretty
# Trivy K8s scanning
trivy k8s --report summary cluster
云安全态势:
# Prowler: AWS security assessment
prowler aws --services s3 iam ec2
# ScoutSuite: Multi-cloud security audit
scout aws --services s3 iam ec2
持续验证流水线
将安全扫描集成到 CI/CD 中:
# GitHub Actions example
name: Security Hardening Verification
on:
push:
branches: [main]
schedule:
- cron: '0 0 * * *' # Daily scan
jobs:
container-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build image
run: docker build -t myapp:test .
- name: Scan with Trivy
uses: aquasecurity/trivy-action@master
with:
image-ref: 'myapp:test'
severity: 'CRITICAL,HIGH'
exit-code: '1' # Fail on findings
iac-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Scan IaC with Checkov
uses: bridgecrewio/checkov-action@master
with:
directory: terraform/
framework: terraform
soft_fail: false
合规报告
根据扫描结果生成合规报告:
# Generate CIS compliance report
kube-bench run --json > cis-report.json
# Generate vulnerability report
trivy image --format json --output vuln-report.json myapp:latest
# Aggregate reports for compliance dashboard
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 访问
# Edit /etc/ssh/sshd_config.d/hardening.conf
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
MaxAuthTries 3
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
# Restart SSH
systemctl restart sshd
加固容器镜像
# Use minimal base
FROM cgr.dev/chainguard/python:latest
# Non-root user
USER nonroot
# Read-only filesystem
COPY --chown=nonroot:nonroot app /app
WORKDIR /app
# Drop all capabilities
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 NetworkPolicy: deny all ingress
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
加固数据库访问
-- PostgreSQL hardening
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;
-- Force SSL connections
ALTER SYSTEM SET ssl = on;
-- In 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 开始。