AWS Config 记录安全组不合规并使用补救措施进行补救

一、创建 AWS Config

1.1 选择资源类型和角色

image-20230507153437356

1.2 选择存放位置

image-20230507153501339

1.3 跳过配置规则

image-20230507153544211

1.4 审核并创建

image-20230507153601917

二、配置规则

2.1 查看安全组资源

image-20230507160304458

2.2 配置 restricted-ssh 规则

该规则检测所有 ssh 的源地址为 0.0.0.0/0 的安全组规则为不合规

image-20230507160436664

当资源发生更改时触发

image-20230507160634020

2.3 Review

image-20230507160650900

2.4 查看安全组合规状态

image-20230507160821836

2.5 更改相应安全组规则,查看变化

将 sg-0863d82aa8bcf75a1 - compliance-sg Compliant 的安全组 ssh 入站规则的 My IP更改为段(不会检测为不合规),以让他不合规。

将 sg-089a3beb47c3a39b9 - launch-wizard-1 的 ssh 入站规则更改为 My IP,以让他合规。

image-20230507163650358
  • sg-089a3beb47c3a39b9 - launch-wizard-1 已合规

image-20230507162304763
  • sg-0863d82aa8bcf75a1 - compliance-sg 不合规了

image-20230507163604265

三、创建自动化文档所需角色

3.1 创建一个 IAM 角色并授予允许 SSM 代表您调用 AWS 服务的权限。

image-20230507165159961

3.2 添加 AmazonSSMAutomationRole 权限

image-20230507165238160

3.3 角色命名为 SSMAutomationRoleForConfig

image-20230507165437389

3.4 在此之后附加一个内联策略,以授予角色访问权限以删除安全组

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:RevokeSecurityGroupIngress",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": "*"
        }
    ]
}

image-20230507165639808

3.5 命名规则为 DeleteSecurityGroupInboundRules

image-20230507165646702

3.6 最后角色以及权限如下

image-20230507165738553

四、为相应资源添加补救措施

4.1 切换到 Rules,选择 Manage remediation

image-20230507163727836

4.2 选择补救方法为自动化,重试次数为一分钟 5 次

image-20230507164011936

4.3 选择补救动作为 AWS-DisablePublicAccessForSecurityGroup

https://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/automation-aws-disablepublicaccessforsecuritygroup.html

禁用对所有 IP 地址开放的默认 SSH 和 RDP 端口。

image-20230507163859660
image-20230507163932060

4.4 配置 Resource ID parameter 和 Parameters

在资源 ID 参数中,选择SecurityGroupIds(或者您可以通过选择依赖于资源类型的参数将不合规资源的资源 ID 传递给补救操作。)。但在这里我们想为所有安全组做这件事。

image-20230507170145641
image-20230507170245287

五、验证是否工作

5.1 手动对 sg-045ba0639ac1d0945 执行补救措施

image-20230507170744934

5.2 可以看到执行成功了

image-20230507170825286

5.3 Tileline 检查 Events 可以看到 ssh 规则被移除

image-20230507171505096

5.4 有一点不好的是,因为规则配置的是当资源发生更改时触发,所以之前已经检测为不合规的资源无法自动处理,就需要手动去执行补救措施。

当我们把 sg-089a3beb47c3a39b9 - launch-wizard-1 的 ssh 入站规则改为 0.0.0.0/0,看看会有什么变化。

image-20230507171703752
image-20230507172048771

5.5 解决办法就是需要规则下执行重新评估

image-20230507172329109
image-20230507172306773
image-20230507172234230

5.6 System Manager Automation 查看执行情况

image-20230507173109627
image-20230507173157020

六、清理

  1. 删除 Rules

  2. 删除存储桶

image-20230507173507275

七、深入学习的点

  1. 需要知道常用场景的 AWS Config 托管规则含义并如何使用

    https://docs.aws.amazon.com/zh_cn/config/latest/developerguide/managed-rules-by-aws-config.html

  2. 需要知道常用场景 System Manager Documents 中 AWS 自动化文档

  3. 可以自定义 AWS Config 托管规则

  4. 可以自定义 Automation

参考文档

https://dev.to/aws-builders/automating-the-deletion-of-specifc-inbound-rules-from-any-security-groups-in-aws-via-config-21lb

Last updated