0

我需要创建一个 AWS 服务控制策略来限制通过安全组为具有公共访问权限的 ssh 创建入站规则。
我已经尝试过使用下面的 JSON 脚本,但我搞砸了。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": [
                "ec2:RevokeSecurityGroupIngress",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:UpdateSecurityGroupRuleDescriptionsEgress",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:UpdateSecurityGroupRuleDescriptionsIngress"
            ],
            "Resource": "arn:aws:ec2:*:352571213128:security-group/*",
            "Condition": {
                "ForAnyValue:NotIpAddress": {
                    "aws:SourceIp": [
                        "192.0.2.0/24",
                        "203.0.113.0/24"
                    ]
                }
            }
        }
    ]
}

不过,可以创建 0.0.0.0/0 的入站规则。需要:我只需要 ssh 协议。

4

2 回答 2

1

可以创建 0.0.0.0/0 的入站规则。

据我所知,SourceIp 表示创建资源 (sg) 的调用 aws 客户端的 IP,而不是资源中的值

我不确定您是否可以使用策略在 SG 中强制执行值。

通过安全组限制为具有公共访问权限的 ssh 创建入站规则

我相信您可以使用 AWS Config 检查公共 ssh 组(然后您可以使用 lambda 来删除或更新 sg)

已经有一个 aws config “restricted-ssh” 托管规则,尽管它仅适用于 ipv4,因此您可能需要创建自己的规则以确保特定值或 ipv6 支持

于 2020-04-16T06:03:04.137 回答
1

通常,您将使用自动化脚本来执行此操作,例如使用 CloudFormation 或 Terraform,您可以通过它们传递已经存在/创建的安全组,该安全组将具有给定 IP 的端口 22 限制。如果没有,您将首先创建安全组,然后将其附加到新创建的 EC2 实例。

如果您手动执行此操作,那么在创建 EC2 实例之后,您需要将安全组附加到它并手动将 IP 范围从 0.0.0.0/0 更改为您的特定 IP 范围。

于 2020-04-16T07:49:48.537 回答