Amazon web services AWS NACL-仅当传入和传出规则中允许0.0.0.0/0时才起作用

Amazon web services AWS NACL-仅当传入和传出规则中允许0.0.0.0/0时才起作用,amazon-web-services,Amazon Web Services,又被氯化钠咬伤了。我正在尝试使用ssh从内部部署的网络,站点到站点的VPN连接,到VPC中与传输网关关联的实例。这是我的权限,以使其工作: Source : 10.0.12.0/28 [VPN] Target : 10.114.1.0/28 [VPC] ------------------------------ Security Group: inbound => SSH | TCP | 22 | 10.0.12.0/28 o

又被氯化钠咬伤了。我正在尝试使用ssh从内部部署的网络,站点到站点的VPN连接,到VPC中与
传输网关关联的实例。这是我的权限,以使其工作:

Source : 10.0.12.0/28    [VPN]
Target : 10.114.1.0/28   [VPC]
------------------------------
Security Group:
        inbound  => SSH         | TCP | 22  | 10.0.12.0/28
        outbound => All traffic | All | All | 0.0.0.0/0
Network ACL:
      inbound:
         101 | SSH (22)   | TCP (6)      | 22            | 10.0.12.0/28 | ALLOW
         111 | Custom TCP | Rule TCP (6) | 32768 - 65535 | 0.0.0.0/0    | ALLOW
      outbound:
         101 | Custom TCP | Rule TCP (6) | 0 - 65535 | 0.0.0.0/0    | ALLOW
我理解临时端口范围的要求,但不理解为什么它必须仅为
0.0.0.0/0
。此外,对于出站规则,它只允许整个端口范围。我的问题是:我做得对吗?这是它应该工作的方式吗?安全性不允许我使用,但可以使用特定的源/目标地址。任何人有什么建议吗


-S

一般来说,没有理由修改网络ACL(NACL)。默认情况下,它允许双向的所有通信。只有非常特定的用例才值得更改NACL,例如创建网络DMZ、阻止滥用IP地址或锁定子网以实现极端安全

安全组略有不同。默认情况下,出站设置全部打开。这是基于这样的假设,即在您控制下的系统正在“做正确的事情”。如果他们需要访问资源,那么就让他们访问。但是,当您希望提高安全性时,您可能希望限制出站安全组。但是,您通常应该有这样做的理由

安全组上的入站规则应始终尽可能少。运行web服务器?然后打开80和/或443,可能是互联网上的任何人(
0.0.0.0/0
)。允许SSH访问?然后打开端口22,但仅限于您自己的IP地址,以限制潜在的攻击范围

安全组是有状态的,这意味着允许通过安全组进行响应。因此,如果某台服务器上的端口8080建立了出站连接,则允许响应返回,即使该端口未列在入站规则列表中

因此,看看您的配置:

Security Group:
        inbound  => SSH         | TCP | 22  | 10.0.12.0/28
        outbound => All traffic | All | All | 0.0.0.0/0
  • 您正在明智地限制端口22上的SSH访问
  • 出站配置很好,特别是如果您希望实例上的软件(或操作系统)访问Internet(例如下载软件更新)
  • 默认规则已经允许所有流量,因此无需为SSH添加额外规则。(一旦找到匹配规则,流量即被允许/拒绝。)
  • 您的入站NACL规则现在拒绝低于
    32768
    (SSH除外)的所有流量,因此这意味着整个子网无法在端口(如80、443、8080、3306(MySQL)等)上访问。这可能会导致您在该子网中运行的服务出现问题。如果您没有明确排除此类端口的理由,我建议您将NACL重置为默认的“允许所有”设置

    • 以下是两条可行的建议:

    • 临时港口

      临时端口从1024到65535。 为了允许SSH返回流量,必须允许所有这些端口

      有关临时端口的更多信息:


    • 源IP地址范围
    • 允许的范围只能限于允许SSH的子网

      假设SSH客户机位于192.168.1.0/24的网络中,则 在NACL中,0.0.0/0可替换为192.168.1.0/24


      这将确保只有来自192.168.1.0/24网络的客户端可以对VPC主机执行ssh。

      好的,回答我自己的问题:它确实与我使用的
      传输网关相关。当连接流经TGW时,需要另一个NACL(删除默认NACL规则),将TGW使用的子网与以下规则关联:

      inbound:
          500 | Custom TCP | Rule TCP (6) | 32768 - 61000 | 0.0.0.0/0    | ALLOW
      outbound:
          500 | Custom TCP | Rule TCP (6) | 0 - 65535     | 0.0.0.0/0    | ALLOW
      
      在那之后一切都很好。在与专用子网关联的NACL中,不需要允许入站临时端口规则(例如,我的原始帖子中的111)。 又一个教训


      -S

      我理解你想说的话,但我真的很担心有人采用“允许一切”的笼统规则。这是一个非常高安全性的环境,没有通配符连接,并且可以控制输入/输出。我知道我到底需要允许什么,这也是每个子网的基础。没有默认的SG或NACL-所有自定义配置。不管怎么说,我唯一关心的是对NACL使用'0.0.0.0/0',以及为什么它只适用于向世界开放。如果你知道我如何把它限制在最低限度,那会有很大帮助。谢谢当你说“它只起作用”时,你指的是哪种服务?这纯粹是SSH连接吗?你指的是出站规则吗?是的,我指的是SSH,在这种情况下。我指的是入站和出站连接。只有当我将
      0.0.0.0/0
      作为临时端口入站连接和出站连接的源,打开整个端口范围时,SSH连接才起作用。对于出界规则,即使在1024-65535范围内,它也不起作用。这也是我的理解,但如果我对临时端口(入站或出站)使用除
      0.0.0/0
      以外的任何东西,它对我来说都不起作用。如果我没有在上面分配整个端口范围,SSH也会停止工作。这正是我丢失的地方。这意味着客户端的源IP地址和端口正在被企业网络中的防火墙/NAT路由器转换。因此,AWS的NACL看到的源IP与客户端计算机上可见的源IP不同。哼哼。。。。。。。。也考虑过了,但是如果您查看即将到来的规则,端口
      22
      仅允许从
      10.0.12.0/28
      作为源,这正是客户端计算机所在的位置。或者您指的是其他什么。我开始想这是否与运输有关
      inbound:
          500 | Custom TCP | Rule TCP (6) | 32768 - 61000 | 0.0.0.0/0    | ALLOW
      outbound:
          500 | Custom TCP | Rule TCP (6) | 0 - 65535     | 0.0.0.0/0    | ALLOW