config: restricted-ssh

AWS Config rules

假设,你的安全组织不允许公网开放的SSH端口。你的安全团队希望你检测任何开放的SSH端口,并且尽快关闭。

为了检测开放的SSH 端口,你可以创建一个AWS Config rule。

  1. 打开 AWS Config 控制台,选择 Rules,然后选择 Add rule。

  2. Specify rule type,选择 Add AWS managed rule。

  3. AWS Managed Rules, 检索和选择 restricted-ssh, 然后选择 Next. 后面都选择Next直到完成。

Figure 2: Specify the rule type for restricted-ssh

测试AWS Config Rule检测效果

现在,为了测试规则的效果,创建一个安全组开放SSH。

  1. 在EC2 控制台左边的菜单中,选择 安全组, 然后选择 创建安全组。

  2. 创建安全组, 输入以下信息,

    • 安全组名称 中输入 PublicSSH.

    • 入站规则 , 选择 添加规则。类型使用 SSH. 来源选择 Anywhere.

安全组创建好以后,记录下安全组的ID,后面会需要使用。

几分钟后返回到 AWS Config 控制台,可以看到刚才创建的安全组不合规。

AWS Config rule 自动修复

我们来看看如何通过自动化修复这个问题。

首先,创建一个 IAM policy 和 role 给自动修复工具。下面的策略包含了所需的所有的能力和权限。

创建一个IAM 策略

  1. 在 IAM 控制台左侧菜单,选择 Policies, 然后选择 Create policy.

  2. 选择 JSON 页签,然后复制以下的内容到策略中,替换 111111111111 成你的 AWS account ID。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ssmAutomation",
            "Effect": "Allow",
            "Action": [
                "ec2:*",
                "ssm:*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ssmAutomation2",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111111111111:role/ConfigAutoRemediation"
        }
    ]
} 
  1. 策略名称设置为ConfigAutoRemediation

创建一个角色

  1. 在左边的菜单中,选择 Roles, 然后选择 Create role.

  2. Select type of trusted entity, 选择 AWS service, 然后选择 Systems Manager.

  3. Select your use case, 选择 Systems Manager.

  4. 选择 Next: Permissions.

  5. 检索 ConfigAutoRemediation, 勾选后点击下一步

  6. 名称填写:ConfigAutoRemediation

  7. 选择 Next:Tags.

  8. 选择 Next: Review.

完成创建角色。选择查看角色的详情,拷贝role ARN留着备用。

验证SSM脚本是否能够自动修复

  1. 打开 Systems Manager 控制台左边菜单栏中的 Automation 自动化, 然后选择 Execute Automation 执行自动化。

  2. 检索并选择 AWS-DisablePublicAccessForSecurityGroup 文档,然后选择 执行自动化

  3. 执行类型中选择 Simple execution简单执行.

  4. 输入安全组ID, 对于 AutomationAssumeRole, 选择刚才创建的角色 ConfigAutoRemediation, 然后选择 Execute.

  5. 查看执行的结果。IPv6 和 RDP 可能会失败,但是这是OK的,因为DisableSSHFromIpV4 步骤会成功。

  6. 验证自动执行的结果,返回到 EC2 控制台,查看安全组是否没有公开的SSH规则了。

现在你有自动化的方法可以自动修复不合规的安全组,可以关联到AWS Config上,只要Config检查到不合规的资源就可以触发这个脚本自动进行修复。

在AWS Config配置自动修复

AWS Config rule识别到不合规的资源,触发自动删除开放的SSH访问安全组入站规则。

  1. 打开AWS Config 控制台的左边菜单,选择 Rules, 然后选择 restricted-ssh。

  2. Actions, 选择 Manage remediation.

  3. Edit: Remediation Action, 选择 Automatic Remediation, 然后选择 AWS-DisablePublicAccessForSecurityGroup

  4. Parameters, 选择 GroupID 作为 资源 ID 参数。 这会将已更改的安全组映射到自动化文档中的 GroupID 参数。

  5. 对于 AutomationAssumeRole 参数,使用 ConfigAutoRemediation 角色的ARN。

  6. 你可以将 IpAddressToBlock 参数留空。

  7. 选择 Save changes.

测试效果可以将之前的安全组再添加一次可以从任意IP访问SSH端口的入站规则,几分钟后,查看入站规则是否被删除了。

参考资料

[blogs]Implement AWS Config rule remediation with Systems Manager Change Manager

最后更新于