将 IP 地址输入 EC2 安全组规则时使用啥格式?

Posted

技术标签:

【中文标题】将 IP 地址输入 EC2 安全组规则时使用啥格式?【英文标题】:What format to use when entering an IP address into an EC2 Security Group rule?将 IP 地址输入 EC2 安全组规则时使用什么格式? 【发布时间】:2017-02-17 20:30:47 【问题描述】:

我正在尝试在同一 VPC 中配置从堡垒主机(位于公共子网中)到私有 linux 实例(位于私有子网中)的安全 ssh 连接。

当我为我的私有 linux 实例添加安全组规则时,最初它显示规则为:

请注意,在添加堡垒主机的IP地址之前,水印显示“CIDR, IP or Security Group”,但是当我添加堡垒主机的IP地址时,它会抛出错误:

来源需要是 CIDR 块或安全组 ID。

为什么这里不允许我输入堡垒主机的IP地址?

【问题讨论】:

目前我正在通过将完整的 CIDR 块添加为 52.63.198.234/32 来解决它 【参考方案1】:

看来你的情况是:

您在公有子网中有一个 EC2 实例(“堡垒实例”),您可以通过 SSH 连接到它 您在私有子网中有一个 EC2 实例(“私有实例”) 您正在将与私有实例关联的安全组配置为仅允许来自 Bastion 实例的 SSH 访问

我注意到您在安全组中输入了公共 IP 地址 (52.63.198.234)。您实际上应该输入 Bastion 实例的私有 IP 地址。这样,实例之间的流量完全在 VPC 内流动,而不是离开 VPC(访问公共 IP 地址)然后再次返回。

实际上,配置此设置的推荐方式是:

为您的 Bastion 实例创建一个安全组(“Bastion-SG”) 为您的私有实例创建一个安全组(“Private-SG”) 配置 Private-SG 以允许来自 Bastion-SG 的入站 SSH 流量

通过引用安全组的名称,将自动允许来自与指定安全组关联的任何 EC2 实例(在这种情况下,与堡垒关联的任何实例)的流量-SG)。这意味着可以添加/替换实例,并且仍将根据关联的安全组允许流量,而不必更新特定的 IP 地址。

所以,回答您的问题...是的,有三种方法可以引用源代码。来自 EC2 文档Security Group Rules:

单个 IP 地址,采用 CIDR 表示法。请务必在 IP 地址后使用 /32 前缀;如果您在 IP 地址后使用 /0 前缀,这将向所有人开放端口。例如,将 IP 地址 203.0.113.1 指定为 203.0.113.1/32。 IP 地址范围,采用 CIDR 表示法(例如,203.0.113.0/24)。 安全组的名称(EC2-Classic)或 ID(EC2-Classic 或 EC2-VPC)。

因此,IP 地址实际上必须使用 CIDR 表示法,以 /32 结尾。如果您认为这与“IP”的提示不太匹配(我倾向于同意您的观点),请随时点击控制台中的 Feedback 按钮并将您的反馈提供给EC2 控制台团队。

【讨论】:

完美答案,详细解释 那么如何将多个IP地址列入白名单? @shamaseen 如果您想提供多个 IP 地址,而不是全部在一个 CIDR 块中,您可以向安全组添加多个规则

以上是关于将 IP 地址输入 EC2 安全组规则时使用啥格式?的主要内容,如果未能解决你的问题,请参考以下文章

使用 terraform 将 EC2 自己的 IP 添加为入站规则

使用 *** 混淆网络流量时,AWS CLI 脚本更改 EC2 的安全组以匹配当前分配的 IP 地址?

我允许 EC2 安全组中的哪些 IP 地址允许客户端 *** 流量通过?

无论如何,是不是可以使用 lambda 自动将新 IP 地址分配给入站规则中的安全组

使用安全组限制 ElasticBeanstalk 应用程序

仅允许 ECR 请求的安全组出口规则