0

安全组“显示 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 的方法,使其在安全组中定义时显示“端口已关闭”。

4

1 回答 1

4

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

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

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

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

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

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

于 2016-04-19T03:10:36.190 回答