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

8.1 KiB
Raw Permalink Blame History

Підключення баунсера ZNC до Libera.Chat/IRC через Tor

Дістався мені 24/7 сервер, на якому відсутній інтерфейс Інтернет але присутній мультикаст Yggdrasil, через який можна підключитись до мережі Tor, а з неї - до Libera.Chat

Обліковий запис на сервері Libera.Chat

В офіційній документації вказано, що для підключення до сервера через Tor, потрібно мати зареєстрований на сервері обліковий запис:

Libera.Chat is reachable via Tor using our onion service, provided you already have an account (created without using Tor).

Можливо, це зроблено з метою захисту від спаму, не цікавився - повна документація з реєстрації облікових записів описана тут.

Якщо коротко, то з комп'ютера де є Інтернет, заходимо з клієнта IRC (наприклад Halloy) через порт 6697 на будь який сервер Libera.Chat з офіційного списку:

  • 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

Авторизація

На випадок, якщо вже є старий акаунт - логінимось і крок Реєстрація пропускаємо:

/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.

  • детальніше про сертифікати написано тут

Вся документація вище - зводиться до виконання двох команд на локальному комп'ютері:

  1. Генерація локального файлу user.pem:
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 - має бути актуальним
  1. Отримання відбитку, для Libera.Chat це має бути -sha512:
openssl x509 -sha512 -noout -fingerprint -in user.pem | sed -e 's/^.*=//;s/://g;y/ABCDEF/abcdef/'
  • результатом виконання цієї команди буде хеш-рядок, який потрібно скопіювати

Реєстрація сертифікату на сервері

Щоб почати користуватись створеними локально ключами, їх потрібно зареєструвати. В чаті NickServ, від авторизованого раніше користувача, вказується команда:

/msg NickServ CERT ADD [FINGERPRINT]
  • FINGERPRINT - зкопійований хеш-рядок з останньої команди openssl

Якщо все пройшло без помилок, перевірити доданий відбиток можна командою:

/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)

Посилання