DigitalOcean 网络防火墙仅允许 22 端口以外的端口上的 SSH 连接

Ous*_*uss 2 security firewall ssh network-security digital-ocean

我在 DigitalOcean 上有一个启用了 IPv4 和 IPv6 的 Droplet。该液滴位于数字海洋网络防火墙后面,具有以下规则:

入境:

  • SSH TCP 22 所有 IPv4、所有 IPv6
  • HTTP TCP 80 所有 IPv4、所有 IPv6
  • HTTP TCP 443 所有 IPv4、所有 IPv6

出境:

  • ICMP ICMP 所有 IPv4 所有 IPv6
  • 所有 TCP TCP 所有端口 所有 IPv4 所有 IPv6
  • 所有 UDP UDP 所有端口 所有 IPv4

我的理解和期望是,这将阻止端口 22 以外的端口上的所有 ssh 尝试。但是,在检查 systemd 日志中的 sshd 单元时。我看到以下条目:

2022-12-29 03:00:32 Disconnected from invalid user antonio 43.153.179.44 port 45614 [preauth]
2022-12-29 03:00:32 Received disconnect from 43.153.179.44 port 45614:11: Bye Bye [preauth]
2022-12-29 03:00:31 Invalid user antonio from 43.153.179.44 port 45614
2022-12-29 02:58:37 Disconnected from invalid user desliga 190.129.122.3 port 1199 [preauth]
2022-12-29 02:58:37 Received disconnect from 190.129.122.3 port 1199:11: Bye Bye [preauth]
2022-12-29 02:58:37 Invalid user desliga from 190.129.122.3 port 1199
Run Code Online (Sandbox Code Playgroud)

还有更多这样的行,这意味着防火墙不会阻止 22 以外的端口上的 ssh 连接。

下图显示了过去一小时内除 22 之外的端口的 ssh 连接数。启用网络过滤器后,连接会减少,但不会减少。

在此输入图像描述

难道是DigitalOcean的网络防火墙坏了?

我缺少什么?

有人在他们的基础设施上看到同样的情况吗?

小智 10

服务正在侦听某个端口,例如默认情况下 sshd 在端口 22 上。这意味着如果有 ssh 客户端请求在 22 以外的端口上建立连接,则 sshd 服务根本不会听到它。sshd 的日志文件中不会记录此请求的任何痕迹。在本例中,请求实际上来自端口 22。这Invalid user antonio from 43.153.179.44 port 45614实际上意味着什么?

  1. 有 ssh 客户端请求以用户身份连接antonio,该用户在系统上不存在
  2. 请求来自IP地址43.153.179.44
  3. 用于连接的 ssh 客户端的端口号是45614,它是客户端的端口号,而不是您的 Droplet 上的端口号。

难道是DigitalOcean的网络防火墙坏了?

这是不太可能的。


vid*_*rlo 7

首先,您的 ssh 守护进程不会侦听除 22 之外的任何端口。因此,没有人可以在与端口 22 不同的端口上连接到它。要使连接成功,必须得到防火墙的允许,并且必须等待一些东西接收数据包 - 用技术术语来说是在端口上监听。

此外,防火墙可能不会查看数据包内部的内容。它仅通过端口号,22 是 ssh 的保留端口,因此它表明它允许 ssh。

TCP 连接由四个标识符组成:

  1. 源IP
  2. 源端口
  3. 目的IP
  4. 目的端口

日志中显示的端口和 IP 是源 IP 和源端口。这些是所谓的临时端口,它们被随机分配给想要建立传出连接的进程。