Сетевой брандмауэр DigitalOcean, разрешающий SSH-подключения только на портах 22

Сетевой брандмауэр DigitalOcean, разрешающий SSH-подключения только на портах 22

У меня есть дроплет на DigitalOcean с включенными IPv4 и IPv6. Дроплет находится за сетевым брандмауэром 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

Я понимаю и ожидаю, что это заблокирует все попытки ssh на портах, отличных от порта 22. Однако при проверке sshd-юнита в журнале systemd я вижу следующие записи:

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

и многие другие подобные строки, которые означают, что брандмауэр не блокирует SSH-подключения на портах, отличных от 22.

На следующем графике показано количество ssh-подключений к портам, отличным от 22, за последний час. Подключения уменьшаются при включении сетевого фильтра, но не уменьшаются.

введите описание изображения здесь

Может ли быть, что сетевой брандмауэр 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, это номер порта на стороне клиента, а не на вашем сервере.

Может ли быть, что сетевой брандмауэр DigitalOcean сломан?

Это очень маловероятно.

решение2

Прежде всего, ваш демон ssh не прослушивает никакой другой порт, кроме 22. Поэтому никто не может подключиться к нему через порт, отличный от порта 22. Чтобы соединение было успешным, оно должно быть разрешено брандмауэром,ичто-то должно ждать приема пакета — говоря техническим языком, прослушивать порт.

Более того, брандмауэр, вероятно, не смотрит на то, что внутри пакетов. Он идет только по номерам портов, а 22 — это зарезервированный порт для ssh, так что он показывает, что он разрешает ssh.

TCP-соединение состоит из четырех идентификаторов:

  1. Исходный IP-адрес
  2. Исходный порт
  3. IP-адрес назначения
  4. Порт назначения

Порты и IP, показанные в ваших журналах, — это исходный IP и исходный порт. Это так называемыеэфемерные порты, который случайным образом назначается процессу, желающему установить исходящее соединение.

Связанный контент