minor corrections

This commit is contained in:
postscriptum 2025-11-30 07:53:52 +02:00
parent 6d1ab0feef
commit 2f740c3bf8

View file

@ -3,33 +3,33 @@
Arti - це сучасна реалізація Onion-роутера мовою Rust: Arti - це сучасна реалізація Onion-роутера мовою Rust:
=> https://gitlab.torproject.org/tpo/core/arti => https://gitlab.torproject.org/tpo/core/arti
Нижче інструкція зі встановлення та налаштування його проксі-сервера з підключенням до мережі Tor через Yggdrasil (у якості VPN). При відповідному налаштуванні клієнтів, це дозволяє приховати факт користування мережею Tor а також підвищує конфіденційність всередині неї, адже вхідні вузли Tor бачитимуть IP адресу провайдера моста (bridge), а міст - бачитиме IPv6 мережі Yggdrasil (до якої в свою чергу, можна підключитися через інші мережі...) Нижче інструкція зі встановлення та налаштування його проксі-сервера з підключенням до мережі Tor через Yggdrasil (у якості VPN). При відповідному налаштуванні клієнтів, це дозволяє приховати факт користування мережею Tor а також підвищує конфіденційність всередині неї, адже вхідні вузли Tor бачитимуть IP адресу провайдера моста (bridge), а міст - бачитиме IPv6 мережі Yggdrasil (до якої в свою чергу, можна підключитися через інші мережі)
## Збірка з вихідного коду ## Збірка з вихідного коду
При першій збірці програми на Rust, потрібно встановити середовище розробки: При першій збірці програми на Rust, потрібно встановити середовище розробки:
=> install-latest-rust-version-on-linux.gmi Встановлення останньої версії Rust в Linux => install-latest-rust-version-on-linux.gmi Встановлення останньої версії Rust в Linux
Далі, забираємо початковий код Arti та компілюємо його з Сargo: Далі, забираємо початковий код усіх компонентів Arti та компілюємо його з Сargo:
``` bash ``` bash
git clone https://gitlab.torproject.org/tpo/core/arti.git git clone https://gitlab.torproject.org/tpo/core/arti.git
cd arti/crates/arti cd arti
cargo build --release cargo build --release
sudo install target/release/arti /usr/local/bin/arti sudo install target/release/arti /usr/local/bin/arti
``` ```
* тут ми збираємо тільки компонент `arti` та ставимо його в системну теку для подальшого запуску з systemd * тут ми встановлюємо тільки компонент `arti` та ставимо його в системну теку для подальшого запуску з systemd; по аналогії можна встановити й інші компоненти з теки target/release та налаштувати для них сервіси або ж зібрати тільки потрібний нам `-p arti`
* після виконання команди `install` поточну теку `arti` можна видалити * після виконання команди `install` поточну теку `arti` можна видалити, щоб не займала простір на сервері
## Конфігурація ## Конфігурація
Тут все просто, на сайті є готовий приклад файлу конфігурації і детальними коментарями до кожної опції: Тут все просто. На сайті є готовий приклад файлу конфігурації і детальними коментарями до кожної опції:
=> https://gitlab.torproject.org/tpo/core/arti/-/blob/main/crates/arti/src/arti-example-config.toml => https://gitlab.torproject.org/tpo/core/arti/-/blob/main/crates/arti/src/arti-example-config.toml
Для підключення до мережі Tor засобами Yggdrasil, достатньо вказати потрібні мости, наприклад з цього списку: Для підключення до мережі Tor засобами Yggdrasil, достатньо вказати потрібні мости, наприклад з цього списку:
=> https://yggdrasil-network.github.io/services.html#tor-bridges => https://yggdrasil-network.github.io/services.html#tor-bridges
У своїй конфігурації, явно вказав атрибут `enabled`, щоб використовувати для підключення тільки мости зі списку: У своїй конфігурації, явно вказав атрибут `enabled`, щоб використовувати для підключення тільки мости зі списку bridges:
``` config.toml ``` config.toml
# Bridges (for anticensorship support) # Bridges (for anticensorship support)
@ -57,7 +57,7 @@ bridges = [
> # Default port to use when listening to SOCKS connections. We always > # Default port to use when listening to SOCKS connections. We always
> # listen on localhost. > # listen on localhost.
В репозиторії можна знайти пропозиції зробити явні сповіщення: В репозиторії можна знайти пропозиції реалізувати сповіщення з безпеки, при використанні хостів відмінних від localhost:
=> https://gitlab.torproject.org/tpo/core/arti/-/issues/1636 => https://gitlab.torproject.org/tpo/core/arti/-/issues/1636
Але бувають ситуації, коли проксі працює на локальному роутері, що відносно безпечно: адже до нього матимуть доступ тільки пристрої локальної мережі; або на віддаленому сервері з відповідним правилом фаєрвол. Перечитавши реалізацію парсера цієї опції, вияснив, що вона таки підтримує вибіркові хости, при чому можна вказати декілька (вектором). Для цього, потрібно вказати хост і порт рядком з лапками, у форматі адреси сокета: Але бувають ситуації, коли проксі працює на локальному роутері, що відносно безпечно: адже до нього матимуть доступ тільки пристрої локальної мережі; або на віддаленому сервері з відповідним правилом фаєрвол. Перечитавши реалізацію парсера цієї опції, вияснив, що вона таки підтримує вибіркові хости, при чому можна вказати декілька (вектором). Для цього, потрібно вказати хост і порт рядком з лапками, у форматі адреси сокета:
@ -66,7 +66,7 @@ bridges = [
socks_listen = "xxx.xxx.xxx.xxx:9150" socks_listen = "xxx.xxx.xxx.xxx:9150"
``` ```
Якби навіть цієї опції не було, я все одно обійшов би обмеження "без-програмним" рецептом - наприклад, зовнішнім проксі на базі Nginx: Якби навіть цієї опції не було, я все одно обійшов би обмеження "без-програмним" рецептом. Наприклад, зовнішнім проксі на базі Nginx:
=> /en/tcp-streaming-over-nginx.gmi TCP streaming over Nginx => /en/tcp-streaming-over-nginx.gmi TCP streaming over Nginx
Порт на "зовнішньому" хості потрібно обов'язково обмежити засобами iptables, дозволивши потрібний явно (а краще - використовуючи й не стандартний порт) Порт на "зовнішньому" хості потрібно обов'язково обмежити засобами iptables, дозволивши потрібний явно (а краще - використовуючи й не стандартний порт)
@ -79,7 +79,7 @@ ufw allow from a.a.a.a to b.b.b.b port 9150 proto tcp
## Системний сервіс ## Системний сервіс
Сервіс systemd я пускаю від окремого користувача, до теки якого складатиму журнали і файл конфігурації вище: Сервіс systemd я пускаю від окремого користувача, до теки якого складатиму журнали і файл конфігурації:
``` bash ``` bash
sudo useradd -m arti sudo useradd -m arti
@ -129,38 +129,52 @@ StandardError=file:///home/arti/error.log
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
``` ```
* `systemctl restart arti` - (пере)запустити сервер
* `systemctl enable arty` - авто-запуск при старті системи Щоб (пере)запустити сервер:
* `systemctl status arty` - перевірити статус служби
``` bash
systemctl restart arti
```
Авто-запуск при старті системи:
``` bash
systemctl enable arti
```
Перевірити статус служби:
``` bash
systemctl status arti
```
## Підключення клієнтських застосунків ## Підключення клієнтських застосунків
В клієнтах IRC, браузерах та інших застосунках - достатньо вказати (SOCKS5) хост/порт проксі-сервера Arti, стандартно це: В клієнтах IRC, браузерах та інших застосунках - достатньо вказати (SOCKS5) хост/порт проксі-сервера Arti, стандартно:
* 127.0.0.1:9150 * 127.0.0.1:9150
* [::1]:9150 * [::1]:9150
* або хост:порт віддаленого сервера з файлу конфігурації (socks_listen)
або хост:порт віддаленого сервера з файлу конфігурації (socks_listen)
### Налаштування браузера засобами PAC ### Налаштування браузера засобами PAC
Якщо метою користування Tor - є анонімізація, для фільтрації прямих з'єднань на Інтернет у браузерах сімейства FireFox, зручно користуватись маршрутизацією PAC. Вона дозволяє гнучко налаштовувати потрібні правила для окремих URL засобами JS. Якщо метою користування Tor - є анонімізація, то для фільтрації прямих з'єднань на Інтернет у браузерах сімейства FireFox, зручно користуватись маршрутизацією PAC. Вона дозволяє гнучко налаштовувати потрібні правила для окремих URL засобами JS.
Приклад налаштування PAC, у браузерах сімейства FireFox, описував на прикладі проксі-сервера Yggstack: Приклад налаштування PAC, у браузерах сімейства FireFox, описував на прикладі проксі-сервера Yggstack:
=> safe-yggdrasil-websites-browsing-with-yggstack.gmi Безпечний перегляд сайтів Yggdrasil з Yggstack => safe-yggdrasil-websites-browsing-with-yggstack.gmi Безпечний перегляд сайтів Yggdrasil з Yggstack
Таким чином, вдається уникнути ідентифікації користувача Tor (або іншого проксі) в ареалах, де його використання може бути заборонено. Наприклад, шляхом вбудованого на сайт зображення, файлу скриптів або стилів у код на сайті. Таким чином, вдається уникнути ідентифікації користувача Tor (або іншого проксі) в ареалах, де використання такого може бути заборонено. Наприклад, шляхом вбудованого на сайт зображення, файлу скриптів або стилів у код на сайті.
Утім, описаний вище спосіб запобігає лише одному способу виявлення з поміж багатьох. В цьому плані, браузер Tor - є більш привабливим, адже включає з коробки й інші засоби маскування відбитків пальців: динамічний розміру екрану, шрифти, політика cookies, JS, заголовків HTTP тощо. Утім, описаний вище спосіб - запобігає лише одному способу виявлення з поміж багатьох. В цьому плані, браузер Tor - є більш привабливим, адже включає з коробки й інші засоби маскування відбитків пальців: динамічний розміру екрану, шрифти, політику cookies, JS, заголовків HTTP тощо.
### Ізоляція середовища ### Ізоляція середовища
Для більш фундаментальної ізоляції застосунків від спроб здійснити прямих запит в Інтерент, дивіться наступні матеріали: Для більш фундаментальної ізоляції застосунків від спроби зловмисником спровокувати прямий запит в Інтерент, дивіться наступні матеріали:
=> linux-isolation-from-direct-internet-connections-based-on-qemu-virtual-machine-manager-with-vsock.gmi Ізоляція Linux від прямих Інтернет з'єднань на базі QEMU / Virtual Machine Manager з VSOCK => linux-isolation-from-direct-internet-connections-based-on-qemu-virtual-machine-manager-with-vsock.gmi Ізоляція Linux від прямих Інтернет з'єднань на базі QEMU / Virtual Machine Manager з VSOCK
=> filter-outgoing-connections-with-ufw.gmi Обмеження вихідних з'єднань на Інтернет з ufw => filter-outgoing-connections-with-ufw.gmi Обмеження вихідних з'єднань на Інтернет з ufw
=> enhancing-privacy-in-linux-apps.gmi Підвищення рівня приватності в застосунках Linux (не панацея але приверне увагу до очевидних проблем) => enhancing-privacy-in-linux-apps.gmi Підвищення рівня приватності в застосунках Linux (не панацея але приверне увагу до очевидних проблем)
Описані вище рішення - дозволяють безпечно користуватись застосунками, які від початку не розроблялись з метою приватності: більшість клієнтів BitTorrent, криптографічні гаманці (окрім відомого мені GOST/I2P), та інші застосунки, що працюють за принципом Peer-to-Peer і реалізують технології DNS та PEX. Описані вище рішення дозволяють безпечно користуватись застосунками, які від початку не розроблялись з метою приватності: більшість клієнтів BitTorrent, криптографічні гаманці (окрім відомого мені GOST/I2P), та інші, що працюють за принципом Peer-to-Peer і реалізують технології DNS та PEX.
## Тестування з'єднань ## Тестування з'єднань
@ -178,7 +192,7 @@ apt install etherape
sudo etherape sudo etherape
``` ```
Поточні інтерфейси дивимось командою: Активні інтерфейси можна перевірити командою:
``` bash ``` bash
netstat -tulpn | grep arti netstat -tulpn | grep arti