【问题标题】:ec2 service policy to restrict the creation of inbound ssh public accessec2 服务策略限制创建入站 ssh 公共访问
【发布时间】:2020-04-16 15:49:48
【问题描述】:

我需要创建 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 协议。

【问题讨论】:

    标签: json amazon-web-services amazon-ec2 aws-security-group aws-policies


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-02
        • 1970-01-01
        • 1970-01-01
        • 2017-02-01
        • 2021-03-10
        • 1970-01-01
        • 2016-09-19
        相关资源
        最近更新 更多