适用于 RDS 的 AWS 安全组 - 出站规则

Posted

技术标签:

【中文标题】适用于 RDS 的 AWS 安全组 - 出站规则【英文标题】:AWS Security Group for RDS - Outbound rules 【发布时间】:2017-03-16 17:01:11 【问题描述】:

我有一个安全组分配给一个 RDS 实例,它允许来自我们的 EC2 实例的端口 5432 流量。

但是,此安全组为所有 IP 的所有流量启用了所有出站流量。

这是安全风险吗?理想的出站安全规则应该是什么? 在我看来,RDS 安全组的出站流量应该限制在我们 EC2 实例的 5432 端口,对吗?

【问题讨论】:

出站意味着带有 SG 的机器可以连接到特定允许端口上的任何外部机器。所以,它应该是允许的。 @hjpotter92 但它不需要与我们的 ec2 实例以外的任何东西通信。那么我应该更改允许流量到任何地方的当前出站规则吗? @ManojMJ ec2 实例有时需要修补和/或访问本地网络之外的其他存储库。如果您对允许在任何地方访问任何内容感到不舒服,只需允许出站 HTTP(端口 80)和 HTTPS(端口 443)。多年来,我一直在成功使用该配置。 【参考方案1】:

当使用 Security Goups(相对于 ACL 规则)时,所有入站流量都会自动允许进入出站流量,因此在您的情况下,出站规则可能为空。

这是安全风险吗?什么应该是理想的出境安全 规则?在我看来,RDS 安全的出站流量 组应该限制到我们的 EC2 实例的端口 5432,是这样吗? 对吧?

只有当您的 RDS 位于您的 VPC 内的公共子网中时,这才有风险。

在您的方案中,最佳做法建议在您的 Web 服务器中拥有一个公共子网,并为所有私有资源(RDS、其他私有服务等)提供一个私有子网。

如图所示,将 RDS 托管在私有子网中,无法从 VPC 外部访问它

【讨论】:

默认情况下,所有入站流量都受到限制,并且允许出站流量。【参考方案2】:

默认情况下,所有 Amazon EC2 安全组:

拒绝所有入站流量 允许所有出站流量

您必须配置安全组以允许入站流量。此类配置应限制在可能的最小范围内。也就是说,需要最少的协议和最小的 IP 地址范围。

出站访问传统上是保持开放的。这样做的原因是您通常会“信任”您自己的系统。如果他们希望访问外部资源,请让他们这样做。

始终欢迎您限制出站访问,尤其是对于敏感系统。但是,确定哪些端口保持开放可能是一个挑战。例如,实例可能想要下载操作系统更新、访问 Amazon S3 或发送电子邮件。

【讨论】:

【参考方案3】:

理想的出站安全规则应该是什么?在我看来,RDS 安全组的出站流量应该限制在我们 EC2 实例的 5432 端口,对吗?

明确控制出站连接也是一个好主意。

在您的 RDS 组中:删除所有出站规则(默认情况下,有规则允许到所有端口和 IP 的出站连接 -> 只需删除此“all-anywhere”规则)。

您的数据库将通过端口 5432 从您的 EC2 实例接收入站请求,RDS 将通过相同的连接响应您的 EC2 实例,在这种情况下根本不需要定义出站规则。

【讨论】:

以上是关于适用于 RDS 的 AWS 安全组 - 出站规则的主要内容,如果未能解决你的问题,请参考以下文章

AWS考证方向:AWS实例安全组设置

自引用 aws 安全组

登录失败,虽然我在我的 RDS 实例的安全组中指定了入站规则

一个 AWS 账户中的 Elastic Beanstalk 能否与另一个 AWS 账户中的 RDS 通信?

AWS 安全组包括另一个安全组

VSTS 部署组的 NSG 出站规则