Установка собственного Jabber-сервера и настройка OTR+PGP

Работающий пенсионер
Олдфаг
Статус
Оффлайн
Регистрация
9 Авг 2016
Сообщения
1,367
Реакции[?]
1,048
Поинты[?]
4K
Недавно я писал что такое Жаба и для чего она нужна.И в конце я сказал что напишу мануал об установке своего Jabber-сервера и настройки OTR+PGP​
Ну собственно и сам мануал.Для начала немного пояснений что такое OTR и PGP
OTR- это на англиском "Off the record" то-есть функция отключения записи разговора
PGP- это компьютерная программа, также библиотека функций, позволяющая выполнять операции шифрования и цифровой подписи сообщений, файлов и другой информации, представленной в электронном виде, в том числе прозрачное шифрование данных на запоминающих устройствах, например, на жёстком диске.
Ну а теперь перейдем к настройке этих самых протоколов шифрования.
OTR- ставится очень легко т.к являться официальном дополнением к клиенту PidGin
Для того что бы все настроить мы перейдем в настройки PIdGin'a во вкладку модули и выберем те функции которые показаны на скриншоте

Далее заходим в интернет и пишем "Скачать OTR для PidGin" после скачки вы должны перенести файлы из архива в папку с установленным PidGin'ом.Ну а потом зайти в модули и выбрать функцию OffTheRecord. Сделали? Молодцы отр мы настроили перейдем к настройке PGP.
Итак, по-порядку.

1. Регистрируем аккаунт Jabber

1.1. Заходим на
Пожалуйста, авторизуйтесь для просмотра ссылки.
(желательно с прокси или интернет-кафе, чтобы не засветить при регистрации свой IP).
1.2. Регистрируемся. Запоминаем свой ID и пароль.


2.Установка GnuPT

2.1. Качаем инсталлятор пакета программ GnuPT-Portable:
Пожалуйста, авторизуйтесь для просмотра ссылки.

2.2. Устанавливаем.

Как настроить шифрованн общение в Интернет используя Jabber в связке с PGP
3. Генерация и экспорт ключей

3.1. При первом запуске утилита предложит создать ключевую пару. Для генерации ключей вам нужно будет в хаотичном порядке нажимать на клавиши и двигать мышью до тех пор, пока не появится кнопка «Done». Ключ - это ваш паспорт в сети интернет, поэтому желательно его не терять и не забывать от него пароль, так как восстановить закрытый ключ будет уже не возможно, придётся генерировать новый. Каждый закрытый ключ шифруется паролем. Это нужно для того что бы даже если кто-то завладеет вашим ключом, злоумышленник не смог бы им воспользоваться, т.к. без пароля он бесполезен.
3.2. После запуска программы WinPT.exe (она находится в подкатегории WinPT, папки GnuPG) появится окно «Мастер генерации ключа» («Key generation wizard»), где будут запрошены ваше имя и email. Можно ввести любое имя и email, как вариант, в качестве Email можно ввести ваш логин в Jabber. Итак, ключ создан и отобразился в табличке менеджера ключей. Как обмениваться ключами описано в пункте 5.


4. Установка и настройка Psi+ (Jabber-клиент под GnuPG)

4.1. Качаем и устанавливаем PSI-Portable (следуйте инструкциям на сайте при установке):
Пожалуйста, авторизуйтесь для просмотра ссылки.

4.2. При запуске программы откроется окно с предложением «Зарегистрировать новый» аккаунт или же «Использовать существующий». Нажмите кнопку «Использовать существующий».
4.3. На вкладке «Аккаунт» введите ваши данные аккаунта Jabber и отметьте галочки «Автоматически входить в сеть после спящего режима» и «Автоматически восстанавливать соединение». Если не хотите, чтобы велась история переговоров (она не шифруется и хранится на диске в открытом виде), то уберите галочку «Вести историю сообщений».
4.4. Во вкладке «Подробности» нажмите кнопку «Выбрать ключ...». Откроется окно «Приватный ключ» — выберите там созданный вами ранее ключ и нажмите «ОК». Если в окне пусто то сначала открывайте с запущенным GnuPT.
4.5. Нажимаем кнопку «Сохранить» в окне «Настройки аккаунта».


5. Обмен ключами

5.1. Заходим в «Менеджер ключей» (правой кнопкой на иконке Windows Privacy Tray возле часов) -> Выделяtм ключ (имя с email). Далее в меню выбираем «Копировать Ключ в буфер обмена». В буфер обмена скопируется ваш публичный ключ, который будет содержать что-то вроде:
Код:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.7 (MingW32)
mQGdfEmIgMUgSGDLKSKS+sdfwSgeSDFJK"KL:KFSDGSDFBACJDeTglDCoq5HQ4bU6yFzqCTfYbCEjkNlMmv JK
LZ6oiCSDFfdSdfsSDkfjOsp63lviSDFfdsamndlmlDeTOSfdEE6E9mOS
Это и есть ваш открытый ключ (public key), который нужно будет отослать собеседнику перед общением. Обмениваться ключами желательно также через надежный источник, например через privnote.com.
5.2. Скопируйте ключ, который вам прислал собеседник (просто скопируйте код от начала до конца) и импортируйте его через менеджер ключей (иконка в трее). Для этого нажмите правой кнопкой мыши на таблице и выберите пункт «Вставить ключ из буфера обмена» (если пункта не видно, значит вы неправильно скопировали код ключа). После импорта в таблице должен появиться новый ключ.
5.3. В Jabber-клиенте PSI кликните правой кнопкой мыши на имени собеседника и выберите пункт «Присвоить ключ Open PGP». Если появится табличка «Невозможно присвоить ключ...», тогда нажимаем «Выбрать ключ вручную» и выбираем ключ из списка, который мы импортировали шагом ранее. Иногда нужно перезагрузить программу PSI чтобы обновить список ключей.
Установка собственного Jabber-сервера
Здесь будет небольшой копиаст(ДА ПРОСТИТ МЕНЯ ГОВАРД) т.к как когда то сие ман был написан на харбере и лучше его мне не написать.
Это статья о том как настроить jabber сервер Prosody для домашнего, возможно корпоративного, использования. У меня встала задача поднять личный jabber сервер на своем домене, с сохранением истории (возможно синхронизации с клиентом XEP-0136), с поддержкой общения с другими серверами jabber, конференций. В общем всё стандартно и ничего особенного, но при поднятии сервера я столкнулся с двумя проблемами о которых я и планирую сегодня рассказать.

Prosody это легковесный jabber сервер, написаный на языке lua, поддерживающий множество ХЕР(XMPP Extension Protocol) стандартов, все поддерживаемы стандарты вы можете посмотреть на этой странице. На вопрос «почему lua» создатель prosody Matthew Wild говорит что это очень простой язык который имеет быстрый интерпретатор, что и является причиной такого необычного выбора.

В этой статье я буду устанавливать prosody на Debian 7.

Сначала нам нужно добавить в source.list нужный репозиторий:
$ echo deb
Пожалуйста, авторизуйтесь для просмотра ссылки.
$(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list
После нужно ключ применить:
$ wget
Пожалуйста, авторизуйтесь для просмотра ссылки.
-O- | sudo apt-key add -
Нужно обновить репозиторий:
Дальше будет 2 версии, по установке Prosody v0.9 и v0.10

Установка Prosody 0.9

Установка версии 0.9, на текущий момент стабильной:
$ sudo apt-get install prosody
Настриваем prosody на файлах, для этого нужно подправить настройки которые находятся в файле "/etc/prosody/prosody.cfg.lua", я сразу приведу весь конфиг, с комментариями:
admins = { "user@example.com" } -- Администраторы сервера

modules_enabled = {

-- Generally required
"roster"; -- Allow users to have a roster. Recommended ;)
"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
"tls"; -- Add support for secure TLS on c2s/s2s connections
"dialback"; -- s2s dialback support
"disco"; -- Service discovery
"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.

-- Not essential, but recommended
"private"; -- Private XML storage (for room bookmarks, etc.)
"vcard"; -- Allow users to set vCards

-- These are commented by default as they have a performance impact
--"privacy"; -- Support privacy lists
--"compression"; -- Stream compression (requires the lua-zlib package installed)

-- Nice to have
"version"; -- Replies to server version requests
"uptime"; -- Report how long server has been running
"time"; -- Let others know the time here on this server
"ping"; -- Replies to XMPP pings with pongs
"pep"; -- Enables users to publish their mood, activity, playing music and more
"register"; -- Allow users to register on this server using a client and change passwords

-- Admin interfaces
"admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
"admin_telnet"; -- Opens telnet console interface on localhost port 5582
}

modules_disabled = {
}

allow_registration = false -- Запретить регистрацию на сервере из клиента

ssl = {
-- Стандартные ssl сертификаты, доступны при установке
key = "/etc/prosody/certs/localhost.key";
certificate = "/etc/prosody/certs/localhost.crt";
}

c2s_require_encryption = true -- Включить клиент-сервер шифрование

s2s_secure_auth = false

pidfile = "/var/run/prosody/prosody.pid"

authentication = "internal_hashed" -- Шифрование паролей (не хранить в открытом виде)

storage = "internal" -- Зранение данных в файлах
log = {
info = "/var/log/prosody/prosody.log";
error = "/var/log/prosody/prosody.err";
"*syslog";
}

VirtualHost "example.com" -- Домен для которого настроен jabber сервер
ssl = {
-- Сертификаты для авторизации на этот домен
key = "/etc/prosody/certs/example.com.key";
certificate = "/etc/prosody/certs/example.com.crt";
}
example.com нужно заменить на свой домен везде, после чего нужно сгенерировать ключи:
$ sudo prosodyctl cert generate example.com
$ sudo cp /usr/lib/prosody/example.com* /etc/prosody/certs/
Регистрируем нового пользователя и перезапускаем prosody:
$ sudo prosodyctl register user example.com password
$ sudo prosodyctl restart
Теперь вы можете авторизироваться на сервере, но общаться вы сможете исключительно внутри своего prosody сервера, если вы хотите настроить s2s (сервер-сервер связь) вам нужно прописать в srv dns пару записей:
_xmpp-client._tcp.example.com. 18000 IN SRV 0 5 5222 xmpp.example.com.
_xmpp-server._tcp.example.com. 18000 IN SRV 0 5 5269 xmpp.example.com.
jabber._tcp.example.com. 18000 IN SRV 0 5 5269 xmpp.example.com.
Как только данные применяться должна заработать связь s2s и вы сможете подеключиться к конференциям на jabber.ru или добавить в контактлист и общаться с людьми которые пользуются любыми jabber серверами поддерживающие s2s.

Всё работает хорошо, но вот осталось настроить историю сообщений, его по умолчанию не поддерживает prosody, для этого нужно поставить модуль из prosody-modules под названием «mod_message_logging».
Есть два варианта как можно устанавливать модули в prosody:
1) Нужно скопировать lua файл с содержимым кода модуля в директорию /usr/lib/modules и добавить в конфиг в разделе modules_enabled:
modules_enabled = {
...
"message_logging";
...
}
2) Склонировать prosody-modules в любую директорию, дать ей права на чтению для пользователя prosody и добавить в конфиг такое:
plugin_paths = { "/usr/lib/prosody/modules", "/path/to/prosody-modules" }
...
modules_enabled = {
...
"message_logging";
...
}
Перезапускаем сервер:
И любуемся историей сообщений в /var/lib/prosody/message_logging/. Как вы можете заметить вся история сообщений за 1 день пишется в один файл на сервере для каждого авторизированого пользователся, то есть /var/lib/prosody/message_logs/example.com/2013-12-20/user.msglog содержит логи для этого пользователя за весь день со всеми его контактами.
Мне показалась эта реализация очень не удобной, в конференции prosody сказали что нету нормальной реализации истории сообщений и я немного изменить mod_message_logging и получился mod_message_loggind_diff_files также немного пофиксил проблемы прошлого модуля и получилась такая структура директорий/файлов — по пути /var/lib/prosody/message_logs/example.com/2013-12-20/user директориями со всеми файлами с историей сообщений, все названия файлов это jid контакта или конференции, например «prosody%40conference.prosody.im.msglog».

Подключить можно также как и стандартный mod_message_logging.

На этом можно закончить настройку prosody сервера, но некоторые захотят подключить модуль с поддеркой ХЕР-0136(синхрониация логов на клиент), модуль этот называется mod_mam, но разработчики говорят что с файлами этот модуль работает очень медленно, да и кому-то захочется просто переключиться на БД, но у prosody 0.9 с этим есть проблема.
Текущая реализация модуля для хранения данных в sql при запуске prosody при отсутствии конекта к БД вываливается критической ошибкой и prosody не запускается. Эта проблема остро строит в debian и centos, так как их системы загрузки не разрешают дождаться полной инициализации базы данных для запуска нужного приложения, но в sql2 модуле, который доступен в 0.10, пофиксили эту проблему, по этому мы можем установить prosody 0.10 + mod_mam.

Установка Prosody 0.10

Установка версии 0.10, на текущий момент beta:
$ sudo apt-get install prosody-0.10
Далее повторяем всё как и с версией 0.9 с небольшими изменениями.
1) Меняем место хранения данных из internal на sql2
2) Добавляем настройку для связи к базой. Перед нужной строчкой удаляем "--" и меняем данные на свои для доступа к нужной БД
--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
--sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "", host = "localhost" }
3) Устанавливаем lua драйвер для связи с нужной БД, например для sqlite
$ sudo apt-get install lua-dbi-sqlite3
Модуль для логирования в БД находится в prosody-modules под названием «mod_mam», правда в отличии от модуля который пишет историю сообщений в файл, этот модуль сохраняет только личные сообщения. Если вам нужна история ообщений из конференций, вам нужно будет установить mod_message_logging или mod_message_loggind_diff_files. Есть также модуль сохраняющий сообщения конференций mod_mam_muc, но он сохраняет только сообщения из ваших локальных конференций поднятых на вашем сервере (если такие будут модуль может быть полезным).
Есть два варианта как можно устанавливать модули в prosody:
1) Нужно скопировать lua файл с содержимым кода модуля в директорию /usr/lib/modules и добавить в конфиг в разделе modules_enabled:
modules_enabled = {
...
"mam";
...
}
2) Склонировать prosody-modules в любую директорию, дать ей права на чтению для пользователя prosody и добавить в конфиг такое:
plugin_paths = { "/usr/lib/prosody/modules", "/path/to/prosody-modules" }
...
modules_enabled = {
...
"mam";
...
}
Перезапускаем сервер:
После перезагрузки prosody у вас будет настроены истории сообщений и конференций в файлах и история личных сообщений в БД с синхронизацией на клиент.

Надеюсь я кому-то помог, если будет возможность я отвечу на ваши вопросы в комментариях или в ЛС.
Вот вроде бы и все надеюсь это вам поможет и даст толчок к полной анонимности в интернете.
 
Сверху Снизу