All streams
Search
Write a publication
Pull to refresh

Comments 73

Делать альтернативу и упирается вот в это:

Далее нам нужен домен для работы сервера, XMPP работает через TLS со всеми вытекающими, без домена никак. В принципе, можно использовать и бесплатный домен с какого-нибудь dynu.com, freedns.afraid.org, или даже sslip.io, но тут все упирается в доверие к сервису - кто владеет доменом, тот имеет доступ ко всему (если только вы не сделаете certificate pinning).

Немного неосмотрительно мягко говоря, а если доступ к домену будет по какой то причине утерян? Если нарушится связность с некоторыми сегментами интернет? Не будет доступа к ДНС и/или к серверу сертификации? Если уж желаете неубиваемую болталку, то она должна быть способна работать хоть в локальной сети на два устройства + сервер, а в идеале вообще без сервера в режиме точка-точка + меш из многих точек, но это уже разумеется уровень железа и каналов затрагивает уже. А пока это песочная "крепость" на пляже. Но это разумеется мое имхо...

UFO landed and left these words here

Наверное это стоило написать, а ещё лучше описать настройку прямо в статье?

UFO landed and left these words here

И кстати зачем этим всем заниматься если вы не параноик реалист? Всегда же есть "прекрасная альтернатива" этим вашим враждебным сервисам! ;)

UFO landed and left these words here

МаКсимально пафосный троллинг просто

А ориентировочно в конце этого года можно будет у LE получать валидные сертификаты для IP-адресов.

Это не решает вопроса с доступностью самого LE в определенный момент с определенного сегмента сети.

Не параноики.

Во-первых, выставлять что-то без крайней необходимости в интернет на публичные адреса в наше время весьма попрочная практика. Уязвимостей в таком комплексном софте настолько много, что взлом - дело времени. И хорошо, если что-то лайтовое зальют - там ведь могут начать цопе распространять, или пропаганду запрещ енки вести - а отбрехиваться от товарища майора вам потом.

Во-вторых, сервисы "для себя и компании" часто сидят на приватном TLD типа ".lan" внутри локалки, куда доступ через ipsec (или другой впн). Это наиболее безопасное и взломостойкое решение... Там как ни крути, но серты самому делать, поскольку на приватный TLD получить нормальный серт нереально...

UFO landed and left these words here

VPN может быть достаточно лёгким и простым как по настройке, так и для конечного пользователя, например ssh туннель. В одном скрипте запустить туннель и клиент следом. Просто и без затей так говорится и достаточно надёжно в плане перехвата траффика. Все крутится внутри сервера, наружу только один порт и один сервис - красота же!

Правда тогда ssl для сервера вроде как и не нужен уже, шифровать внутри зашифрованного туннеля несколько излишне...

UFO landed and left these words here

И? Что именно вас смущает? На Андроиде к примеру с этим проблем точно нет, на яблоках возможно... Даже скорее всего! Но тут как бы я не помощник:)

UFO landed and left these words here

Ну почему же? На самом деле можно, но пользоваться этим будет не особо удобно... В 16-м Андроиде обещали завезти нативно запуск Линукс приложений, ну а для более ранних версий - termux.

Не напомните, когда вышел 16-й Андроид? Если не помните, я могу сказать точно: полтора месяца назад, то есть 10 июня 2025 года, до массовых аппаратов, которые стоят не как боинг или хотя бы крыло от него, он доберётся через год-полтора. А до тех пор всё так, как было описано выше. Я пытался поднимать такой туннель. Да, можно, но это многошаговые пляски с бубнами по поводу запуска программы программы, которой нужен туннель. В крайнем случае - можно, в качестве постоянного рецепта - ну его нафиг. Это при том, что Android Studio не умеет собирать маленькие программы, раздувая каждую до размеров чуть ли не отдельной операционки. Даже если программи делает примерно ничего. А тут приходится запускать программу с графическим интерфейсом, без которого запустить её никак не получится, да и интерфейс развесистый, потому что её же настраивать надо.

Jabber живее всех живых , а вот с клиентами так себе - большинство не умеет otr ( кроме как раз той классики )

UFO landed and left these words here

Насколько я помню/знаю они очень похожи ( otr и omemo) не возьмусь сказать лучше или хуже. Имею в контакт листе людей общающихся исключительно с otr , по этому проблема поиска клиента с его поддержкой знакома.

OMEMO является эталоном на текущий момент, он лучше OTR большей стабильностью, возможностью отправки сообщений в оффлайн и поддержкой множества устройств одновременно

Что вы имеете ввиду под большей стабильностью?

Нет проблем с совместимостью, обновлением ключей и внезапной потерей сессии. Дело конечно в реализации, но насколько я помню, она всегда хромала.

На сколько я помню у отра ключ 128 бит. В современных реалиях не слишком секурно.

А там разве размер ключа прибит гвоздями? Не интересовался, поэтому не знаю. Но если да, то это очень печально, поскольку, например, ключи RSA меньше 4, а то и 8, килобит в современных реалиях это совсем не смешно.

У RSA длинные ключи только потому, что они должны быть простыми числами с особыми свойствами, которых среди этих 4 килобит относительно немного. Нынче модно заменять RSA на какой-нибудь Ed25519, у которого такой особенности нет и у которого 256-битного ключа достаточно, чтобы обеспечить безопасность, сравнимую с 4096-битным RSA (собственно, если я правильно понимаю, в OMEMO используется как раз Ed25519)

О, спасибо за подсказку. Попробую на этот алгоритм перейти, если сервера его будут поддерживать. К сожалению, заказчики не одобряют регулярные обновления. Видимо, по принципу "А зачем мене запасной парашют, если он за 10 лет ни разу не понадобился?".

Зачем prosody-то? Буквально сейчас поднял себе сервак на ejabberd. Кластеризация из коробки, он на elixir, понятный yml в настройках, интеграция с let's encrypt, сразу умеет в stun/turn да и вообще всё что надо. Есть apt и rpm репы. Развивается активно компанией, которая им реально зарабатывает.

Такой же вопрос — а зачем ejabberd, если на сервере будет полтора анонимуса? Ejabberd это про высокие нагрузки (Whatsapp, eve online), а prosody — про сервер для друзей и родных.

Ну как минимум он сложнее в настройке и нужно осваивать erlang. А если у вас на сервере десяток человек то зачем городить сложности?

нужно осваивать erlang

Зачем? У меня личный сервер на ejabberd уже лет пятнадцать, из настроек всего один yaml-файлик, erlang до сих пор не знаю

Лет 15 назад я писал плагины для ejabberd на Erlang не зная Erlang. Минут 30 потребовалось чтобы вкурить суть языка (идея у него близка к Prolog-у) и разобраться как выводить отладочные сообщения. Дальше никаких проблем.

Не понимаю где вы в Gajim увидели устаревший интерфейс. Давно уже выглядит как один из самых современных мессенджеров

UFO landed and left these words here

Это вы похоже не видели олдскульные клиенты — Gajim 0.6, Tkabber, QIP. Так когда-то выглядели все XMPP клиенты.

UFO landed and left these words here

А почему был выбор именно в пользу Prosody, а не тот же Snikket, который сразу в докере? Или Openfire, который вообще буквально в пару кликов устанавливается, насколько я помню, к тому же он с самым вменяемым web интерфейсом из всех?

Openfire

Придётся втаскивать Java, да и сам по себе Openfire местами весьма творчески интерпретрует спецификациии. По крайней мере, когда к нам в багтрекер приходят с очередным "что-то не работает", чаще всего оказывается, что с ejabberd оно работает, с Prosody работает, а вот Openfire имеет своё особое мнение.

Просто Snikket это уже настроенный, готовый к использованию дочерний проект этих ребят. Сейчас уже не помню, но если мне не изменяет память там даже конфиг править не надо (есть примитивная админка на web).

P.S. Да и гайд какой-то поверхностный. На вскидку: ничего не сказано, что оф. репозиторий использует устаревший алгоритм (dsa1024), а сейчас многие Linux-дистрибутивы больше не доверяют DSA-ключам. Не раскрыта админка (а штука важная), не раскрыто создание комнат (не менее важно). Модуль bosch почему-то не освещён. Да и про то, что такое "prosodyctl" не мешало бы рассказать.

На вскидку: ничего не сказано, что оф. репозиторий использует устаревший алгоритм (dsa1024), а сейчас многие Linux-дистрибутивы больше не доверяют DSA-ключам.

Если человек взялся осваивать линукс, то уж способ сказать пакетному менеджеру "игнорируй то, что ключ ненадёжный" нагуглит.

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

Официальная докер-репа протухла почти на 4 года. Есть prosodyim/prosody, в которую руками деплоит один из разработчиков, но это такое - работать работает и даже вроде как не особо и проблема, просто имидж проекта несколько подмочен: за несколько лет не разобраться с автоматизированным деплоем - это либо некомпетентность, либо катастрофическая нехватка рук

Signal - отличный мессенджер и всем хорош.

Особенно он хорош деаноном при создании аккаунта и централизованной архитектурой.

Да и не нужно про встроенное сквозное шифрование. Без одноразового шифроблокнота передаваемого независимым от шифруемого канала способом это всего лишь маркетинг. Как и в Телеграмм к примеру.

Как раз на неделе интересовался вопросом. Спасибо за статью, утащил в закладки!

По поводу сертификатов: не безопаснее ли сгенерить ключ своего собственного certificate authority (CA), которым затем подписывать сертификат сервера, выданный хоть на внутренний домен, хоть на dyndns-домен, хоть на IP, хоть на домен habr.com, как в вашей статье? Если не пользоваться LE или другими публичными CA, то всё равно нужно будет либо какой-то сертификат добавлять в хранилище, либо пинить в самом клиенте или в системе. Имхо, лучше пусть это будет не самоподписанный серт (вдруг забудете запинить его — и привет MITM), а заверенный вашим CA, приватный ключ от которого есть только у вас — никто другой не сможет подписать серт вашего сервера вашим CA. А если запинить сам CA, а другие запретить нафиг, то это ещё секьюрнее, но тут нужна поддержка со стороны клиентского приложения.

UFO landed and left these words here

Мне чатбот предложил поковырять libsignal для локальных решений.

Можно ли связать несколько серверов вместе как relay? Например, чтобы поднять mesh на OpenWRT и не выходить в Интернет вовсе?

Если вам нужно без интернета и достаточно только чата, можно присмотреться к meshtastic и lora, выйдет дешевле, более энергоэффективно, да и проще в целом чем эти все городы из роутеров на опеврт и серверов жаббер.

Ещё есть швейцарская Threema и deltachat -который работает поверх email.

Как будто "швейцарская" должно добавлять надёжности и доверия. На самом деле это обычный маркетинг. Гораздо важнее какая у них криптография, и какие данные они хранят и собирают.

Вот тут разбор Threema с точки зрения безопасности.
https://soatok.blog/2021/11/05/threema-three-strikes-youre-out/

Как возможный интересный вариант можно рассмотреть: SimpleX Chat.

Следующая статья : Как завести свою голубятню?

Пробовал делать то же самое и обнаружил, что нормальных клиентов под iOS, с поддержкой видеозвонков, пушей итп. попросту нет. Т.е. есть нечто похожее, но по сравнению с привычными телегами и вацапами - просто кривое уныние и пользоваться таким ну вообще не хочется. Может кто подскажет правильный клиент для iOS? (а как дела на Андроидах?)

UFO landed and left these words here

Как выбрать вообще сервак под такой сервер? Нагрузку наверное надо считать условно на том же аггрегаторе https://all-vps.com не всегда есть подбор по джабер сервер

UFO landed and left these words here

Вот, кстати, тема для следующей статьи. Как поднять prosody на Raspberry, воткнуть в роутер и наслаждаться 146%-й приватностью

В посте написано:

Я попробовал, и мне не понравилось. Клиенты тормозные, через нестабильный интернет-канал все работает просто отвратительно, а сам сервер просто неповоротливый и укладывает не слишком богатый на процессор и память VPS даже всего с парой клиентов.

Как постоянный пользователь матрикса подтверждаю это всё

Так автору просто не надо на дохлых VDS-ках все в модных докерах разворачивать, а по классике устанавливать (кажется это нынче называют "bare metal"). Докер ведь ломает основополагающий принцип разделяемых библиотек - памяти отжирается больше на их виртуализированные версии. У меня на дохлой VDS (2 ядра, 2 гига) спокойно держало около 12 клиентов, причем вместе с сеансом видеоконференцсвязи. Ну и за оверселлом VDS-провайдера следить (технология виртуализации типа OpenVZ?).

около 12 клиентов

А комнат сколько? А сообщений в комнатах сколько? А федерация с другими серверами и комнатами на других серверах была?

Комнат около 5. Сообщений около 50 штук в каждой, не считая приватных чатов (которые тоже комнаты). Федерации не было (намеренно).

UFO landed and left these words here

Не согласен с оценкой, что Signal - это хорошо, по логике статьи вы должны были написать недостаток и про него. Да и расследования про Telegram отдают дешёвой заказухой.

А потом от провайдера прилетает abuse, потому что spamhaus считает, что открытый порт 5223 (это как 5222 только сразу SSL) это атата:
Issue: Botnet Command and Controller Detection
Malware: win.cobalt_strike

А еще мобильные клиенты жрут батарею и нужно поднимать свой пушсервер и перекомпилировать клиентов со своим аккаунтом FCN и APN. Эх вот кто бы написал инструкцию как это всё сделать... например с openfire https://discourse.igniterealtime.org/t/flow-and-configuration-of-push-notifications/93734 + Conversations

Почему Miranda IM не упоминули ? Или вы не такой старый? :)

UFO landed and left these words here

Мне не удалось нагуглить, но может кто-то подскажет реализации чего-то вроде "оверлейного мессенджера"? Когда клиентская часть шифрует все передаваемые данные и дальше доставляет их через инфраструктуру уже существующего мессенджера, например, того же телеграма. Со звонками могут возникнуть сложности, но передачу файлов и сообщений точно не так уж сложно реализовать.

Есть такая штука как KryptEY, это софт-клавиатура для андроид, позволяет реализовать шифрование по открытый/закрытый ключ в любом мессенджере, почте где угодно в общем, хоть на открытом форуме публикуйте... Прочитает это только человек у которого есть нужный ключ. Работает с текстовыми сообщениями до 500 символов.

Есть некоторые проблемы в использовании этой штуки:

  1. нужно руками копипастить полученные сообщения

  2. (субъективная) общение нужно вести с телефона с его неудобной экранной клавиатурой, а не с десктопа с комфортной физической клавиатурой

Первый недостаток исправлен в Oversec, который вроде данные прям с экрана умеет расшифровывать. Однако, требует рута, и у меня так и не удалось его нормально завести

Однако, требует рута, и у меня так и не удалось его нормально завести

Оно и с рутом под новыми андроидами не работает и не поддерживается уже лет 5...

Поделюсь своим XMPP-решением на полсотни пользователей.

Сервер на CentOS, поставил OpenFire из rpm-пакета. К нему Java (OpenJDK) из репозиториев. Стартанул сервис, сразу поднялась веб-админка на порту 9090/tcp. Добавил через неё пару плагинов, группы, пользователей, SSL-сертификат. Порт 5222/tcp смотрит в локальную сеть, 5223/tcp (SSL) — в интернет.

Клиенты на десктопе Miranda NG, Android — Jasmine IM, iOS — Siskin IM.

Sign up to leave a comment.

Articles