AWS 安全组显示“UDP 端口打开”,而它应该拒绝?

sir*_*bax 0 port udp amazon-web-services aws-security-group

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

我有一个实例 vpn2-a

vpn2-a i-xxxxxxxxx 11.11.11.11
Run Code Online (Sandbox Code Playgroud)

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

    55.55.55.55/32, 66.66.66.66/32
Run Code Online (Sandbox Code Playgroud)

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

vpn_1_2-vpn12-security-group
1194    udp 55.55.55.55/32, 66.66.66.66/32
Run Code Online (Sandbox Code Playgroud)

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!
Run Code Online (Sandbox Code Playgroud)

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

RANDOM_HOST$ nc -vv 11.11.11.11 1194 -u
Connection to 11.11.11.11 1194 port [udp/openvpn] succeeded!
Run Code Online (Sandbox Code Playgroud)

^^ 怎么办????估计是被拒绝了!!!请解释一下


2、调试:

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

在 vpn2-a 实例中:

vpn2-a#  /etc/init.d/openvpn stop
Run Code Online (Sandbox Code Playgroud)

如您所见 - 端口 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
Run Code Online (Sandbox Code Playgroud)

不,现在是随机 IP 的测试

RANDOM_HOST$ nc -vv 11.11.11.11 1194 -u
Connection to 11.11.11.11 1194 port [udp/openvpn] succeeded!
Run Code Online (Sandbox Code Playgroud)

和来自 vpn1-a 55.55.55.55

vpn1-a$ $ nc -vv 11.11.11.11 1194 -u
[nothing]
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*bot 5

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

如果您将 UDP 数据包发送到目的地,并且该数据包没有被主动拒绝或无法路由,则它看起来会成功。

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

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

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

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