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

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

我在 DigitalOcean 上有一个启用了 IPv4 和 IPv6 的 droplet。该 droplet 位于 Digital Ocean 网络防火墙后面,防火墙规则如下:

入站:

  • 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

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

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

在此处输入图片描述

会不会是 DigitalOcean 的网络防火墙坏了?

我错过了什么?

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

答案1

服务正在侦听某个端口,例如默认情况下 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 的网络防火墙坏了?

这是不太可能的。

答案2

首先,你的 ssh 守护进程没有监听除 22 之外的任何端口。因此,没有人可以通过除 22 端口以外的端口连接它。要成功建立连接,必须得到防火墙的允许,必须有某个东西在等待接收数据包——用技术术语来说就是监听端口。

此外,防火墙可能不会查看数据包内部的内容。它只根据端口号进行检查,而 22 是 ssh 的保留端口,因此它表明它允许 ssh。

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

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

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

相关内容