Многопользовательский чат

Время на прочтение

Многопользовательский чат

20 октября 2023 года администратор jabber.ru (xmpp.ru) сообщил о выявлении атаки по расшифровке трафика пользователей (MITM), проводимой в течение нескольких месяцев в сетях немецких хостинг-провайдеров Hetzner и Linode. На этих IT-ресурсах размещён сервер проекта и вспомогательные VPS-окружения. Атака была организована через перенаправление трафика на транзитный узел, подменяющий TLS-сертификат для XMPP-соединений, шифруемых с использованием расширения STARTTLS.

Неизвестные участники этой атаки выпустили отдельный SSL сертификат и проксировали коннекты к TCP:5222.

Согласно данным OpenNET, атака была обнаружена из-за ошибки её организаторов, которые не успели продлить TLS-сертификат, используемый для подмены.

16 октября администратор jabber.ru при попытке подключения к сервису получил сообщение об ошибке из-за истечения срока действия сертификата, но размещённый на сервере сертификат не был просрочен. В итоге выяснилось, что получаемый клиентом сертификат отличается от сертификата, отправляемого сервером.

Многопользовательский чат

Первый поддельный TLS-сертификат был получен 18 апреля 2023 года через сервис Let’s Encrypt, в котором атакующий, имея возможность перехватить трафик, смог подтвердить доступ к сайтам jabber.ru и xmpp.ru.

Многопользовательский чат

Вначале у администрации jabber.ru возникло предположение о компрометации сервера проекта и выполнении подмены на его стороне. Но проведённый аудит не выявил никаких следов взлома. При этом в логе на сервере было замечено кратковременное выключение и включение сетевого интерфейса (NIC Link is Down/NIC Link is Up), которое было произведено 18 июля в 12:58 и могло свидетельствовать о манипуляциях с подключением сервера к коммутатору. Примечательно, что два поддельных TLS-сертификата были сгенерированы за несколько минут до этого — 18 июля в 12:49 и 12:38.

Кроме того, подмена производилась не только в сети провайдера Hetzner, в котором размещён основной сервер, но и в сети провайдера Linode, в котором размещались VPS-окружения со вспомогательными прокси, перенаправляющими трафик с других адресов. Косвенным путём было выяснено, что трафик на 5222 сетевой порт (XMPP STARTTLS) в сетях обоих провайдеров перенаправляется через дополнительный хост, что дало основание полагать, что атака произведена лицом, имеющим доступ к инфраструктуре провайдеров.

Теоретически подмена могла производиться с 18 апреля (дата создания первого поддельного сертификата для jabber.ru), но подтверждённые случаи подмены сертификата зафиксированы только с 21 июля по 19 октября, всё это время шифрованный обмен данными с jabber.ru и xmpp.ru можно считать скомпрометированным.

Подмена сертификата прекратилась после начала разбирательства, проведения тестов и направления 18 октября запроса в службу поддержки провайдеров Hetzner и Linode. При этом дополнительный переход при маршрутизации пакетов, отправляемых на 5222 порт одного из серверов в Linode, наблюдается и ныне, но сертификат теперь не подменяется.

Командой проекта предполагается, что атака могла быть совершена с ведома провайдеров по требованию правоохранительных органов, в результате взлома инфраструктур обоих провайдеров или сотрудником, имевшим доступ к обоим провайдерам. Имея возможность перехвата и модификации XMPP-трафика, атакующий мог получить доступ ко всем связанным с учётными записями данным, таким как хранимая на сервере история обмена сообщениями, а также мог отправлять сообщения от чужого имени и вносить изменения в чужие сообщения. Сообщения, отправленные с использованием сквозного шифрования (OMEMO, OTR или PGP), можно считать не скомпрометированными, если ключи шифрования подтверждены пользователями на обеих сторонах соединения.

:/>  Какой минимальный и быстрый способ прикоснуться к большому файлу, достаточно для изменения его хеша

Пользователям jabber.ru рекомендуется сменить пароли доступа и проверить ключи OMEMO и PGP в своих PEP-хранилищах на предмет возможной подмены.

Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку

Время на прочтение

Многопользовательский чат

Процесс заказа и установки виртуального сервера на хостинге автоматизирован: ОС ставится в два клика, на выбор пользователя. Для автоматической установки доступны Debian, Ubuntu и CentOS в разных версиях. Все они способны нормально работать с 512 МБ памяти без графического интерфейса. Для Windows такого варианта нет, но это не очень-то и нужно, потому что для Windows крайне мало уникального серверного софта.

Многопользовательский чат

Для примера выберем Debian 12. Установка занимает несколько минут.

Кстати, точно так же можно накатить собственный готовый образ, который вы скопировали с сервера другого хостера при миграции (сейчас это актуальная тема).

Подключаемся к серверу через любой SSH-клиент вроде PuTTY (под Windows) или Remmina (Linux), про который мы уже рассказывали. Или вообще через консоль SSH на WebAssembly внутри браузера, как Tailscale SSH Conscole, внутри которой устанавливается SSH-тоннель к любому устройству, где установлен Tailscale. Хотя в данном случае это пока не получится (но потом можно).

Многопользовательский чат

Многопользовательский чат

Можно проверить количество RAM (мы пересоздали сервер, чтобы проверить стабильность количества выделяемой памяти):

Многопользовательский чат

Как видим, на этом VPS в юзерспейсе доступно 440 МБ, из них свободно 245 МБ. Занятую память потребляет в основном systemd и vpsguard (это служба взаимодействия с личным кабинетом на сайте, с её помощью реализован функционал генерации нового пароля и изменения конфигурации сервера).

Многопользовательский чат

Как известно, утилита free и прочие показывают не физически выделенную память, а только доступную пользователю. Остальное занято ядром системы.

Проверим скорость диска:

Многопользовательский чат

Теперь инсталлируем на сервер любое требуемое ПО, которого нет в стандартном дистрибутиве Debian 12.

Можно сразу поставить Docker на всякий случай. Дело в том, что Docker нормально работает при таком количестве памяти под Linux, в то время как под Windows требует минимум 4 ГБ.

Сейчас многий софт распространяется только в докер-контейнерах, а остальные предлагают контейнеры просто как удобную опцию установки и запуска программ. Правда, это в любом случае увеличит потребление памяти, которой и так очень мало. Так что неизвестно, хватит ли её на какой-нибудь контейнер.

# Add Docker's official GPG key:
apt-get update
apt-get install ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Или просто запустить скрипт для удобства.

:/>  Для работы с текстом, ввода спец-символов, горячие клавиши Windows

Из репозитория новые версии будут обновляться автоматически. Как вариант, можно установить пакет вручную и самостоятельно следить за обновлениями.

Теперь на сервере можно запускать контейнеры (если им хватит памяти).

▍ Какой софт устанавливать на сервер

Посмотрим, для чего подходят такие мини-серверы.

  1. . Можно хостить даже не один, а несколько статических сайтов. Кстати, 512 МБ памяти хватит для автоматической установки из маркетплейса шаблонов Joomla, Drupal и даже VMBitrix 7.4. Правда, это шаблоны с CentOS 7 и 8, а не с Debian.

    Конечно, для размещения самых простых статических сайтов подходит и бесплатный хостинг GitHub Pages, но на своём сервере гораздо больше возможностей. Здесь запускаются скрипты, приложения и т. д. Для разработчиков это идеальный вариант для демонстрации работы заказчику.

    Обычный nginx ставится без проблем.

    Многопользовательский чат

  2. или . Чтобы поднять VPN в РФ для тех, кто находится за границей, но хочет пользоваться российскими сайтами. Например, «Госуслуги», сайт налоговой, «Кинопоиск» и другие, которые запретили доступ с иностранных IP-адресов. Это вообще популярная услуга, только там она стоит восемь евро (в варианте личного сервера), а здесь 130 рублей в месяц, что гораздо дешевле.

    На Хабре писали о росте числа пользователей VPN в России. Видимо, это тоже актуальная услуга в наше время.

  3. . Например, который следит за определёнными каналами в твиттере или комментариями на Хабре — экспортирует их и форвардит вам в телеграм.
  4. (Minecraft не потянет, ему нужен 1 ГБ).
  5. Резервное копирование ценных документов, для которых 10 ГБ достаточно. По сравнению с другими сервисами, на своём хостинге проще установить передачу данных и шифрование таким способом, как вы хотите.
  6. . Например, можно поставить Dovecot / Postfix, а потом использовать родной клиент для получения свежей почты. Для доступа через браузер существуют веб-кленты вроде Snappymail (форк Rainloop), которые хорошо выглядят и на десктопе, и в мобильных устройствах (демо).

    Многопользовательский чат

  7. или для общения с друзьями и коллегами. Здесь даже встанет сервер Teamspeak для организации голосовых конференций на несколько человек (например, команды геймеров), его минимальные системные требования 128 МБ памяти.

    Как и для почтового сервера, для XMPP нужно указать доменное имя (покупается отдельно, насколько мы слышали, самые дешёвые стоят 1 евро в год).

    Мы изначально попробовали XMPP-сервер Snikkett, который устанавливается только в докер-контейнере, но ему памяти не хватило:

    Многопользовательский чат

    Однако на какой-нибудь другой сервер может хватить… Не все же программы распространяются исключительно в контейнерах.

  8. Тестирование и мониторинг сайтов и приложений. По идее, круглосуточно работающий сервер лучше подходит для этих целей, чем домашний ПК. Отчёты или логи он может присылать вам в телеграм или по почте.

    Примерно для таких же целей VPS можно использовать в системе умного дома для сбора данных и статистики о его работе.

  9. вроде FreshRSS. Хотя в сети есть ряд хороших сервисов, но свой собственный RSS-сервер иногда полезнее. Во-первых, он бесплатный. Во-вторых, может скачивать полное содержимое всех статей и сохранять их на диске, например, для полнотекстового поиска, так что они будут всегда доступны. Инструкции по установке здесь.
  10. для самохостинга. Например, для любителей кулинарии есть сервер Tandoor Recipes для хранения рецептов. Или серверы для хранения личных фотографий. Много программ для хостинга на своём сервере и использования в личных целях можно найти здесь. Хотя всё-таки для таких вещей гораздо удобнее домашний сервер, который не обязательно должен быть круглосуточно в онлайне, как VPS-сервер RUVDS. Да и памяти на всё не хватит.
  11. Кроме всего перечисленного, сервер можно использовать и прокачки самого ценного навыка в наше время — системного администратора Linux. Всегда удобно иметь свой сервер под рукой, мало ли для чего он может понадобиться.

Как видим, у каждой задачи свой софт. На мини-сервер выделено 10 ГБ места на HDD. В принципе, этого хватит на много программ, и можно установить несколько вариантов из перечисленного. Другой вопрос, что одно ядро CPU 2,2 Гц и 512 МБ RAM не потянут много задач одновременно, только несколько из них.

Многие шаблоны из маркетплейса можно установить на сервер изначально, в качестве «базы», на которую потом доустанавливать софт. Но часть шаблонов требуют минимум 1 ГБ памяти (например, шаблоны WordPress и Minecraft), а некоторым вообще нужна Windows (например, шаблон Server Core).

Многопользовательский чат

Как известно, у всех VPS неограниченный трафик. То есть можно качать что угодно и в любом количестве, круглосуточно, без дополнительной оплаты. Как сказано на сайте, все дата-центры имеют не менее трёх резервных каналов связи по 10 Гбит/с и подключены к крупнейшим узлам связи М-9 и М-10 для российских и LD-8, AMS-IX, DE-CIX для европейских ЦОДов. Это позволяет обеспечить виртуальный сервер интернет-каналом со скоростью в 100 Мбит/с.

Самые дешёвые тарифы «Старт» стоят 130 и 190 руб., они отличаются накопителем: HDD или SSD, все остальные параметры те же. За 240 или 300 руб. можно увеличить объём памяти вдвое.

Многопользовательский чат

Отметим, что на VPS всегда можно переустановить ОС в два клика, а также удалить сервер (деньги вернутся на счёт) и сразу же создать новый.

Ещё полезная информация: «Использование zRam для увеличения количества доступной памяти под Linux». Ультрадешёвый VPS идеально подходит для изучения методов оптимизации. Ну и просто интересная игрушка за пару баксов.

Скидки, итоги розыгрышей и новости о спутнике RUVDS — в нашем Telegram-канале 🚀

Многопользовательский чат