Столкнулась со случаем блокировки SSH-протокола.
У меня есть несколько зарубежных VPS, одни используются по прямому назначению - как хостинг, другие - как VPN, среди которых есть новые серверы с VLESS, и один старый сервер с OpenVPN и Shadowsocks.
Вчера случайно произвела попытку подключения по протоколу Shadowsocks (промахнулась кнопкой в клиенте). Подключение по Shadowsocks было заблокировано. Каково же было мое удивление, когда после этого я не смогла зайти на этот сервер по SSH.
Выяснилось следующее:
Предположительно, блокируется только доступ к серверам, где были замечены и ранее заблокированы детектируемые ТСПУ VPN-протоколы. Ко всем остальным серверам (VLESS и обычный хостинг) доступ имеется. Конкретно в моем случае, заблокировался только доступ к одному серверу, на котором находится OpenVPN и Shadowsocks.
Доступ блокируется только при попытке авторизации по SSH-ключу. Попытки смены ключа на другой и попытки смены типа ключа (с RSA на ED25519) результатов не дали. При этом авторизация по паролю проходит - соединение устанавливается, и в дальнейшем не разрывается (тестовое подключение провисело всю ночь).
Снятый дамп трафика показал, что в какой-то момент после определенного пакета начинают блокироваться все пакеты в обе стороны, соединение разрывается по тайм-ауту после нескольких ретрансмишнов. Каких-либо “левых” пакетов в соединение не подсовывают, просто полная блокировка.
Проблема точно в ТСПУ, а не в сервере, т.к. SSH-подключение через VPN происходит успешно.
Провайдер Билайн Москва, хостинг Scaleway, порт SSH нестандартный.
Вот скриншоты дампов с клиента и сервера. Видно, что пакет №19 отправляется сервером и не доходит до клиента, после этого никакие пакеты уже не проходят в обе стороны
Так я об этом буквально и пишу - IP был замечен в использовании OpenVPN и Shadowsocks, после чего последовала блокировка SSH.
Просто это что-то новенькое. Раньше SSH подобным образом не блокировался. К тому же это похоже на новую т.н. “сигнатурную” блокировку - блокировка наступает не при любом соединении и не сразу, а только при попытке авторизации по ключу.
Ещё летом через мобильный интернет Мегафон и МТС была заблокирована авторизация по ключу по SSH почти на все IP Scaleway и OVH. Несколько дней назад такое же было замечено уже на проводном интернете в Москве, но тут IP Scaleway не абсолютно все заблокированы.
Т.е. это вряд ли связано с Shadowsocks, т.к. блокируется SSH и на серверах, где нет никаких VPN и подобных сервисов.
Интересно. Может быть и совпадение. Однако у меня без проблем работает SSH на сервера OVH и Hetzner, где нет никакого VPN. Заблокированным оказался только сервер в Scaleway с VPN.
Никакие смены портов не помогут. Скорее всего авторизация по ключу похожа на что-то запрещённое, и поэтому блокируется. Т.е. к IP Scaleway почему-то пристальное внимание, и когда там ещё передаётся что-то похожее на запрещённое, то блокируют.
До того, как на моих тестовых устройствах на билайне начали портить любые TCP соединения, я с начала августа, то есть с момента блокировки YouTube, наблюдал на билайне разрыв TCP по паттернам.
Тестировал простым TCP клиент-сервером на Node.js. Если первые два пакета от клиента были размером больше определенного, соединение разрывалось, но только на портах отличных от 22, 80 и 443. Это до сервера в Hetzner.
Можете попробовать на каком-то из этих трех портов подключиться по ключу. Возможно, у вас такая же ситуация.
Вот клиент и сервер, которыми тестировал.
Если клиент отправлял первые два пакета размером больше 24 и 8, то подключение после них отрезалось.
Если отправлял, например, 10 и 10 байт, то всё ок. Проверял это на разных серверах в Hetzner с разными IP.
Такое поведение приводило к смешной ситуации, когда, например, через мобильный билайн нельзя было играть в Minecraft на серверах, которые расположены в Hetzner, но только на серверах новых версии, потому что в их протоколе первые пакеты стали попадать под этот «фильтр».
ну хз чем там отличается авторизация по ключу от парольной в трафике, но мен кажется у тпсу есь определённые сиганатуры типа эсэсаш 22 порт (его не над трогать(пока что)) а те кто меняет порт на нестандартный ето ссзб if u ask me
В линукс коммьюнити смена 22 порта на другой всегда считался security through obscurity и как видишь они были правы. Хакерам из ркн пофиг на каком порту, у них порт сканеры для всех
кончено ркну пофиг они прост блочат всё нестандартное вот и всё
знайю я все ети советы не работать понт рутом менять порт нани стандартный как по мне самый вредный совет так как он бесполезный и тока лиш добовляет гемора (имхо)
Смена IP-адреса VPS на другой из того же датацентра не помогла - все равно блок.
Внезапно помогла смена порта SSH с нестандартного на стандартный 22. На порту 22 блокировки нет.
Помимо этого также нет блокировки, если использовать для авторизации вместо rsa-sha2-256/rsa-sha2-512 - устаревший алгоритм ssh-rsa (отключенный по умолчанию в openssh >=8.8 и полностью выпиленный из putty/kitty последних версий)
Отступление по поводу порта 22 и security through obscurity - смена порта нужна скорее затем, чтобы системные логи не замусоривались тоннами сообщений о попытках подбора паролей. Пресекает 99% ботов.
Вы имеете ввиду с помощью чего-то типа sslh - чтобы был ssh и https на одном порту? Я думаю, не поможет, т.к. идет анализ по какой-то сигнатуре, и блочат соединение когда видят какие-то определенные пакеты.
АНАЛлиз идет по портам в первую очередь, сама же подтвердила постом выше. Через sslh мультиплексор можно засунуть сразу всё и иметь большой запас по свободным непалевным портам, если вдруг че.
Когда началась Обсуждение: Блокировка Jabber/XMPP в России я с помощью sslh вешала XMPP + HTTPS на 443 порт. Не помогло. HTTPS работал, а XMPP все равно блокировался.
Здесь скорее всего имеет место быть просто вайтлист на 22 порт.
Любопытная ситуация. Выглядит как будто обмен ключами + нестандартный порт определяется тспу как недетектируемый трафик.
Ради интереса, попробуйте ssh туннель сделать и повесить 22 порт на shadowsocks.
Либо наоборот, детектируется как ssh и целенаправленно блокируется. Но непонятен выбор критериев. Почему именно нестандартный порт + авторизация по ключам (с паролями все работает) + с использованием актуальных алгоритмов (уже упомянула, что при использовании устаревшего алгоритма ssh-rsa блокировки нет).
Но это предположение, вопрос пока открытый.