devzone.org.ua/post/pidkliuchennia-baunsera-znc-do-liberachatirc-cherez-tor.md

134 lines
No EOL
8.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Підключення баунсера ZNC до Libera.Chat/IRC через Tor
Дістався мені 24/7 сервер, на якому відсутній інтерфейс Інтернет але присутній мультикаст [Yggdrasil](https://yggdrasil-network.github.io/), через який можна підключитись до мережі [Tor](https://www.torproject.org), а з неї - до [Libera.Chat](https://libera.chat)
* [Встановлення Onion-роутера Arti з підключенням до мережі Tor через Yggdrasil](https://devzone.org.ua/post/vstanovlennia-onion-routera-arti-z-pidkliuchenniam-do-merezi-tor-cherez-yggdrasil)
* [Встановлення та налаштування IRC-баунсера ZNC в Linux](https://devzone.org.ua/post/vstanovlennia-ta-nalashtuvannia-irc-baunsera-znc-v-linux) (оновлено розділ проксі)
## Обліковий запис на сервері Libera.Chat
В офіційній документації [вказано](https://libera.chat/guides/connect#accessing-liberachat-via-tor), що для підключення до сервера через Tor, потрібно мати зареєстрований на сервері обліковий запис:
> Libera.Chat is reachable via Tor using our onion service, provided you already have an account (created without using Tor).
Можливо, це зроблено з метою захисту від спаму, не цікавився - повна документація з реєстрації облікових записів описана [тут](https://libera.chat/guides/registration).
Якщо коротко, то з комп'ютера де є Інтернет, заходимо з клієнта IRC (наприклад [Halloy](https://halloy.chat)) через порт `6697` на будь який сервер Libera.Chat з [офіційного списку](https://libera.chat/guides/connect):
* `irc.libera.chat`
* `irc.eu.libera.chat`
* `irc.us.libera.chat`
* `irc.au.libera.chat`
* `irc.ea.libera.chat`
* `irc.ipv4.libera.chat`
* `irc.ipv6.libera.chat`
### Авторизація
На випадок, якщо вже є старий акаунт - логінимось і крок **Реєстрація** пропускаємо:
``` bash
/msg NickServ IDENTIFY YOUR_NICK YOUR_PASS
```
### Реєстрація
Підключившись до сервера, вказуємо нікнейм поточної сесії:
```
/nick YOUR_NICK
```
* `YOUR_NICK` - ваше значення
Якщо нікнейм вільний, то NickServ його присвоїть. Тепер потрібно його зареєструвати, адже наразі - це лише псевдонім гостьової сесії:
```
/msg NickServ REGISTER YourPassword youremail@example.com
```
Після введення команди, в мене з'явилось повідомлення про надсилання листа підтвердження на вказану адресу e-mail. Туди прийшов лист з командою активації, яку потрібно скопіювати в той же чат:
```
/msg NickServ VERIFY REGISTER YOUR_NICK ACTIVATION_KEY
```
* `YOUR_NICK`, `ACTIVATION_KEY` - унікальні значення
Якщо помилок не виникло і побачили відповідне вітання від сервера - реєстрацію успішно завершено!
## Генерація сертифікату
Особливістю підключення до Libera.Chat через Tor є необхідність створення користувацького сертифікату з подальшою реєстрацією його відбитку (fingerprint) на сервері:
> This service requires public-key SASL authentication using either the EXTERNAL or ECDSA-NIST256P-CHALLENGE (but not PLAIN) mechanisms. See our guide on setting up CertFP for more information.
* детальніше про сертифікати написано [тут](https://libera.chat/guides/certfp.html)
Вся документація вище - зводиться до виконання двох команд на локальному комп'ютері:
1. Генерація локального файлу `user.pem`:
``` bash
openssl req -nodes -sha512 -newkey rsa:4096 -keyout user.pem -x509 -days 3650 -out user.pem -subj "/CN=YOUR_NICK"
```
* `-days 3650` - не обов'язково, сервер перевіряє сертифікат тільки один раз
* `/CN=YOUR_NICK` - має бути актуальним
2. Отримання відбитку, для Libera.Chat це має бути `-sha512`:
``` bash
openssl x509 -sha512 -noout -fingerprint -in user.pem | sed -e 's/^.*=//;s/://g;y/ABCDEF/abcdef/'
```
* результатом виконання цієї команди буде хеш-рядок, який потрібно скопіювати
### Реєстрація сертифікату на сервері
Щоб почати користуватись створеними локально ключами, їх потрібно зареєструвати. В чаті NickServ, від авторизованого раніше користувача, вказується команда:
``` bash
/msg NickServ CERT ADD [FINGERPRINT]
```
* `FINGERPRINT` - зкопійований хеш-рядок з останньої команди `openssl`
Якщо все пройшло без помилок, перевірити доданий відбиток можна командою:
``` bash
/whois YOUR_NICK
```
## Підключення ZNC до Libera.Chat
Логінимось до Веб-адмінки баунсера і виконуємо наступне
### ZNC » webadmin » Edit User » Networks » Add
* Не знаю, чи це дійсно було потрібно для Tor, але я вимкнув "Trust all certs".
Переходимо до секції "Servers of this IRC network", тиснемо "Add":
* Hostname: `libera75jm6of4wxpxt4aynol3xjmbtxgfyjpu34ss4d7r7q2v5zrpyd.onion`
* Port: `6697`
* SSL: `Yes`
На тій же сторінці, в секції "Modules", вмикаємо наступні додатки:
* `cert` - інтерфейс сертифікатів для SASL
* `sasl` - механізм авторизації зареєстрованого користувача
Скролимо до низу та зберігаємо налаштування кнопкою "Save and continue", після чого на цій же сторінці в меню зліва має з'явитись нове підменю для поточної мережі "Network Modules (libera)". В цьому меню, мають бути посилання на два активовані модулі вище, заходимо по черзі та актуалізуємо дані:
### ZNC » cert » Certificate
Тут є тільки одне поле "PEM File" - копіюємо в нього вміст локального сертифікату (`user.pem`) та зберігаємо налаштування кнопкою "Update".
### ZNC » sasl » SASL
В налаштуваннях цього модуля, вказуємо логін (Username) та пароль (Password) від облікового запису Libera.Chat, які вказали під час реєстрації NickServ.
* Опція "Require authentication" при цьому в мене не відмічена.
Нижче, є блок "Mechanisms": тут важливо вказати `EXTERNAL`, після чого зберігаємо налаштування і пробуємо підключитись. Підключаючись з клієнта, вказуємо в ньому саме сервер / логін / пароль від облікового запису баунсера, а не сервера Libera.Chat (наприклад, у мене це `u_znc`)
## Посилання
* https://wiki.znc.in/Cert
* https://dev.adiirc.com/projects/adiirc/wiki/LiberaChat_tor