mcpField
S
security-hardening

security-hardening

github.com/ancoleman安全525178 次安装46 周前更新
代码仓库

关于 security-hardening

security-hardening 是面向基础设施工程师和安全团队的加固指南,涵盖操作系统、容器、云、网络与数据库。它结合 CIS 基准、最小权限原则及扫描和验证方法,支持持续降低攻击面。

主要功能

  1. 01覆盖五类基础设施层
  2. 02应用 CIS 基准与零信任原则
  3. 03提供最小权限和默认拒绝指导
  4. 04介绍扫描、监控与合规报告
  5. 05提供自动化及配置示例

适用场景

  1. 01部署前加固生产基础设施
  2. 02响应漏洞扫描结果
  3. 03准备安全审计或渗透测试
  4. 04在 CI/CD 中持续验证安全基线

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ancoleman/ai-design-components --skill security-hardening

安装后在 Claude Code 中输入/security-hardening确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

outputs.yaml
examples/kubernetes/
network-policy-hardened.yaml
pod-security-hardened.yaml
examples/linux/
ssh-hardening.conf
sysctl-hardening.conf
references/
cis-benchmark-mapping.md
cloud-hardening.md
container-hardening.md
database-hardening.md
linux-hardening.md
network-hardening.md
scripts/
harden-linux.py
scan-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 账户管理强制执行最小权限、MFAOS、云
6.1 访问控制RBAC、网络策略所有层
8.1 审计日志管理启用全面日志记录所有层
13.1 网络监控部署 IDS/IPS、流量日志网络
3.1 数据保护启用静态/传输中加密云、数据库

如需查看详细的 CIS 控制措施映射,请参阅 references/cis-benchmark-mapping.md。

容器基础镜像选择

根据安全要求和兼容性需求选择基础镜像:

用例推荐基础镜像大小CVE权衡
生产应用Chainguard Images~10MB0精简、零 CVE
精简 LinuxAlpine~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:**将加固要求映射到合规要求

应避免的反模式

❌ 仅在部署时加固

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

❌ 盲目应用所有控制措施

  • 根据风险和暴露程度确定优先级

❌ 不进行验证

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

❌ 依靠隐蔽性实现安全

  • 隐蔽不等于安全;应使用经过验证的控制措施

❌ 未经测试就进行加固

  • 测试加固变更,确保不会破坏功能

❌ 大规模手动加固

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

入门指南

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

如需逐步实施指南,请根据基础设施类型,从 references/linux-hardening.md 或 references/container-hardening.md 开始。

评论

支持 Markdown