【问题标题】:AWS Security Group show 'UDP Port open' while it should deny?AWS 安全组显示“UDP 端口打开”而它应该拒绝?
【发布时间】:2016-04-20 06:15:25
【问题描述】:

安全组“显示 UDP 端口已打开”,但它应该拒绝连接。

我有一个实例 vpn2-a

vpn2-a i-xxxxxxxxx 11.11.11.11

我想限制对该实例的 UDP 端口 1194 的访问,以接受来自以下私有 IP 地址的连接:

    55.55.55.55/32, 66.66.66.66/32

我已创建 SG 并附加到实例 vpn2-a

vpn_1_2-vpn12-security-group
1194    udp 55.55.55.55/32, 66.66.66.66/32

1.测试它是否工作:

我确实从 允许 vpn1-a 55.55.55.55

执行了一些“端口打开”测试
vpn1-a$ $ nc -vv 11.11.11.11 1194 -u
Connection to 11.11.11.11 1194 port [udp/openvpn] succeeded!

太好了,现在让我们看看,端口是否被 随机 IP 阻止:

RANDOM_HOST$ nc -vv 11.11.11.11 1194 -u
Connection to 11.11.11.11 1194 port [udp/openvpn] succeeded!

^^ 怎么样????应该是拒绝!!! 请解释一下


2。调试:

这让我很困惑,但我确实做了一些测试:

在 vpn2-a 实例上:

vpn2-a#  /etc/init.d/openvpn stop

如您所见 - 端口 1194 上没有任何监听

vpn2-a## netstat -unpa
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
udp        0      0 0.0.0.0:747             0.0.0.0:*                           7356/rpcbind
udp        0      0 0.0.0.0:31885           0.0.0.0:*                           587/dhclient
udp        0      0 0.0.0.0:68              0.0.0.0:*                           587/dhclient
udp        0      0 0.0.0.0:111             0.0.0.0:*                           7356/rpcbind
udp        0      0 10.118.0.152:123        0.0.0.0:*                           5434/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           5434/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           5434/ntpd
udp6       0      0 :::747                  :::*                                7356/rpcbind
udp6       0      0 :::1082                 :::*                                587/dhclient
udp6       0      0 :::111                  :::*                                7356/rpcbind
udp6       0      0 fe80::41:123        :::*                                5434/ntpd
udp6       0      0 ::1:123                 :::*                                5434/ntpd
udp6       0      0 :::123                  :::*                                5434/ntpd

现在不行,来自随机 IP 的测试

RANDOM_HOST$ nc -vv 11.11.11.11 1194 -u
Connection to 11.11.11.11 1194 port [udp/openvpn] succeeded!

从 vpn1-a 55.55.55.55

vpn1-a$ $ nc -vv 11.11.11.11 1194 -u
[nothing]

所以 - 我只能猜测,1194 连接在 AWS“防火墙代理”上以某种方式打开,首先打开端口,然后检查安全组? 请提供解释或修复 SG 的方法,使其在安全组中定义时显示“端口已关闭”。

【问题讨论】:

  • 请检查您的路由表。没有奇迹。请记住,您不能使用任何 VPC 子网的前 4 个 IP。检查您的跟踪路由。

标签: amazon-web-services udp port aws-security-group


【解决方案1】:

原因很简单:UDP 是无连接的。没有确认,所以“成功”和进入黑洞的数据包是无法区分的。

如果您将 UDP 数据包发送到目的地,并且它未被主动拒绝或无法路由,它将看似成功。

这可能是一种错觉。 UDP 没有指示实际成功的机制,因此succeeded! 消息只是告诉您没有检测到活动失败。

AWS 中的安全组不会主动拒绝未经授权的流量——他们默默地丢弃它。如果我尝试发送 ping(ICMP 回显请求)或与您的实例建立 TCP 连接,如果您的安全组不允许我会收到“请求超时”或“连接超时”。但是使用 UDP,发送方无法检测数据包是转发还是丢弃。

简而言之,您看到的是正常行为,并不意味着流量实际上被允许通过。您应该能够通过您尝试访问的机器上的数据包嗅探器来确认这一点......流量被阻止然后您将看不到它,除非您通过安全组允许它。

但是请注意,安全组是有状态的。如果已经允许出站流量,您实际上不必提供传入的 UDP 映射以在固定的点对点配置上运行 openvpn,因为当服务器 A 将 UDP 数据包发送到目标服务器 B 上的端口 1194 时,网络基础设施将“记住”几分钟(直到没有流量),如果服务器 B 使用与它联系的相同 UDP 端口响应服务器 A,则网络允许它通过,假设 A 不会除非应该授权回复,否则将流量发送到 B...DNS 查询响应是此类行为的常见示例...因此,如果通过 UDP 的点对点 openvpn 工作,即使没有入站安全组规则允许,这是也是预期的行为,并不意味着安全组没有做它的工作。

【讨论】:

  • 我猜是这种情况,但没有时间研究安全组正在做什么。好答案
猜你喜欢
  • 2020-12-10
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
相关资源
最近更新 更多