mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-19 06:22:41 +00:00
add arti-onion-router-with-tor-connection-over-yggdrasil.gmi
This commit is contained in:
parent
e56ee4b7cf
commit
6d1ab0feef
2 changed files with 186 additions and 0 deletions
|
|
@ -0,0 +1,185 @@
|
||||||
|
# Встановлення Onion-роутера Arti з підключенням до мережі Tor через Yggdrasil
|
||||||
|
|
||||||
|
Arti - це сучасна реалізація Onion-роутера мовою Rust:
|
||||||
|
=> https://gitlab.torproject.org/tpo/core/arti
|
||||||
|
|
||||||
|
Нижче інструкція зі встановлення та налаштування його проксі-сервера з підключенням до мережі Tor через Yggdrasil (у якості VPN). При відповідному налаштуванні клієнтів, це дозволяє приховати факт користування мережею Tor а також підвищує конфіденційність всередині неї, адже вхідні вузли Tor бачитимуть IP адресу провайдера моста (bridge), а міст - бачитиме IPv6 мережі Yggdrasil (до якої в свою чергу, можна підключитися через інші мережі...)
|
||||||
|
|
||||||
|
## Збірка з вихідного коду
|
||||||
|
|
||||||
|
При першій збірці програми на Rust, потрібно встановити середовище розробки:
|
||||||
|
=> install-latest-rust-version-on-linux.gmi Встановлення останньої версії Rust в Linux
|
||||||
|
|
||||||
|
Далі, забираємо початковий код Arti та компілюємо його з Сargo:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
git clone https://gitlab.torproject.org/tpo/core/arti.git
|
||||||
|
cd arti/crates/arti
|
||||||
|
cargo build --release
|
||||||
|
sudo install target/release/arti /usr/local/bin/arti
|
||||||
|
```
|
||||||
|
* тут ми збираємо тільки компонент `arti` та ставимо його в системну теку для подальшого запуску з systemd
|
||||||
|
* після виконання команди `install` поточну теку `arti` можна видалити
|
||||||
|
|
||||||
|
## Конфігурація
|
||||||
|
|
||||||
|
Тут все просто, на сайті є готовий приклад файлу конфігурації і детальними коментарями до кожної опції:
|
||||||
|
=> https://gitlab.torproject.org/tpo/core/arti/-/blob/main/crates/arti/src/arti-example-config.toml
|
||||||
|
|
||||||
|
Для підключення до мережі Tor засобами Yggdrasil, достатньо вказати потрібні мости, наприклад з цього списку:
|
||||||
|
=> https://yggdrasil-network.github.io/services.html#tor-bridges
|
||||||
|
|
||||||
|
У своїй конфігурації, явно вказав атрибут `enabled`, щоб використовувати для підключення тільки мости зі списку:
|
||||||
|
|
||||||
|
``` config.toml
|
||||||
|
# Bridges (for anticensorship support)
|
||||||
|
[bridges]
|
||||||
|
|
||||||
|
# Should we use configured bridges?
|
||||||
|
# If set to false, we will ignore the configured bridges.
|
||||||
|
# If set to "auto", we will use any bridges that are configured.
|
||||||
|
# If set to true, bridges must be configured and will be used.
|
||||||
|
enabled = "true"
|
||||||
|
|
||||||
|
bridges = [
|
||||||
|
"[21b:321:3243:ecb6:a4cf:289c:c0f1:d6eb]:16728 835FFE642EFA3BB7936663D2365A15D319FB6226",
|
||||||
|
"[21f:5234:5548:31e5:a334:854b:5752:f4fc]:9770 6C4C89ABE4D06987AB1F51C06939410282A1BF58",
|
||||||
|
"[224:6723:7ae0:5655:e600:51c9:4300:a2fb]:9001 F873E91048B40656694BE94ACAB6F0D32CAF8E17",
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Віддалений сервер
|
||||||
|
|
||||||
|
З міркувань безпеки, в конфігурації сокету, можна зустріти наступне повідомлення:
|
||||||
|
|
||||||
|
> # Set up the Arti program to run as a proxy.
|
||||||
|
> [proxy]
|
||||||
|
> # Default port to use when listening to SOCKS connections. We always
|
||||||
|
> # listen on localhost.
|
||||||
|
|
||||||
|
В репозиторії можна знайти пропозиції зробити явні сповіщення:
|
||||||
|
=> https://gitlab.torproject.org/tpo/core/arti/-/issues/1636
|
||||||
|
|
||||||
|
Але бувають ситуації, коли проксі працює на локальному роутері, що відносно безпечно: адже до нього матимуть доступ тільки пристрої локальної мережі; або на віддаленому сервері з відповідним правилом фаєрвол. Перечитавши реалізацію парсера цієї опції, вияснив, що вона таки підтримує вибіркові хости, при чому можна вказати декілька (вектором). Для цього, потрібно вказати хост і порт рядком з лапками, у форматі адреси сокета:
|
||||||
|
|
||||||
|
```
|
||||||
|
socks_listen = "xxx.xxx.xxx.xxx:9150"
|
||||||
|
```
|
||||||
|
|
||||||
|
Якби навіть цієї опції не було, я все одно обійшов би обмеження "без-програмним" рецептом - наприклад, зовнішнім проксі на базі Nginx:
|
||||||
|
=> /en/tcp-streaming-over-nginx.gmi TCP streaming over Nginx
|
||||||
|
|
||||||
|
Порт на "зовнішньому" хості потрібно обов'язково обмежити засобами iptables, дозволивши потрібний явно (а краще - використовуючи й не стандартний порт)
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
ufw allow from a.a.a.a to b.b.b.b port 9150 proto tcp
|
||||||
|
```
|
||||||
|
* a.a.a.a - хост клієнта
|
||||||
|
* b.b.b.b - хост сервера
|
||||||
|
|
||||||
|
## Системний сервіс
|
||||||
|
|
||||||
|
Сервіс systemd я пускаю від окремого користувача, до теки якого складатиму журнали і файл конфігурації вище:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo useradd -m arti
|
||||||
|
```
|
||||||
|
|
||||||
|
Приклад конфігурації для Debian є в репозиторії:
|
||||||
|
=> https://gitlab.torproject.org/tpo/core/arti/-/blob/main/debian/systemd/arti.service
|
||||||
|
|
||||||
|
Але в мене вона виглядає інакше:
|
||||||
|
|
||||||
|
```
|
||||||
|
[Unit]
|
||||||
|
Description=System Tor Service (Arti)
|
||||||
|
After=network.target
|
||||||
|
Wants=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
|
||||||
|
User=arti
|
||||||
|
Group=arti
|
||||||
|
|
||||||
|
ExecStart=/usr/bin/arti --config /home/arti/config.toml -l warn proxy
|
||||||
|
ExecReload=/bin/kill -HUP ${MAINPID}
|
||||||
|
|
||||||
|
KillSignal=SIGINT
|
||||||
|
LimitNOFILE=16384
|
||||||
|
|
||||||
|
# Hardening
|
||||||
|
NoNewPrivileges=yes
|
||||||
|
|
||||||
|
PrivateTmp=yes
|
||||||
|
PrivateDevices=yes
|
||||||
|
|
||||||
|
ProtectHome=yes
|
||||||
|
ProtectSystem=full
|
||||||
|
|
||||||
|
#ReadOnlyDirectories=/
|
||||||
|
#ReadWriteDirectories=-/var/lib/arti
|
||||||
|
#ReadWriteDirectories=-/var/log/arti
|
||||||
|
|
||||||
|
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
|
||||||
|
|
||||||
|
StandardOutput=file:///home/arti/debug.log
|
||||||
|
StandardError=file:///home/arti/error.log
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
* `systemctl restart arti` - (пере)запустити сервер
|
||||||
|
* `systemctl enable arty` - авто-запуск при старті системи
|
||||||
|
* `systemctl status arty` - перевірити статус служби
|
||||||
|
|
||||||
|
## Підключення клієнтських застосунків
|
||||||
|
|
||||||
|
В клієнтах IRC, браузерах та інших застосунках - достатньо вказати (SOCKS5) хост/порт проксі-сервера Arti, стандартно це:
|
||||||
|
|
||||||
|
* 127.0.0.1:9150
|
||||||
|
* [::1]:9150
|
||||||
|
|
||||||
|
або хост:порт віддаленого сервера з файлу конфігурації (socks_listen)
|
||||||
|
|
||||||
|
### Налаштування браузера засобами PAC
|
||||||
|
|
||||||
|
Якщо метою користування Tor - є анонімізація, для фільтрації прямих з'єднань на Інтернет у браузерах сімейства FireFox, зручно користуватись маршрутизацією PAC. Вона дозволяє гнучко налаштовувати потрібні правила для окремих URL засобами JS.
|
||||||
|
|
||||||
|
Приклад налаштування PAC, у браузерах сімейства FireFox, описував на прикладі проксі-сервера Yggstack:
|
||||||
|
=> safe-yggdrasil-websites-browsing-with-yggstack.gmi Безпечний перегляд сайтів Yggdrasil з Yggstack
|
||||||
|
|
||||||
|
Таким чином, вдається уникнути ідентифікації користувача Tor (або іншого проксі) в ареалах, де його використання може бути заборонено. Наприклад, шляхом вбудованого на сайт зображення, файлу скриптів або стилів у код на сайті.
|
||||||
|
|
||||||
|
Утім, описаний вище спосіб запобігає лише одному способу виявлення з поміж багатьох. В цьому плані, браузер 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
|
||||||
|
=> filter-outgoing-connections-with-ufw.gmi Обмеження вихідних з'єднань на Інтернет з ufw
|
||||||
|
=> enhancing-privacy-in-linux-apps.gmi Підвищення рівня приватності в застосунках Linux (не панацея але приверне увагу до очевидних проблем)
|
||||||
|
|
||||||
|
Описані вище рішення - дозволяють безпечно користуватись застосунками, які від початку не розроблялись з метою приватності: більшість клієнтів BitTorrent, криптографічні гаманці (окрім відомого мені GOST/I2P), та інші застосунки, що працюють за принципом Peer-to-Peer і реалізують технології DNS та PEX.
|
||||||
|
|
||||||
|
## Тестування з'єднань
|
||||||
|
|
||||||
|
Перевірити роботу роутера можна запустивши його в терміналі з аргументом відлагодження:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
arti --log-level debug ...
|
||||||
|
```
|
||||||
|
* або краще `--log-level trace`
|
||||||
|
|
||||||
|
Реалізації журналів я не довіряю і додатково перевіряю трафік та його тип графічною утилітою Etherape:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
apt install etherape
|
||||||
|
sudo etherape
|
||||||
|
```
|
||||||
|
|
||||||
|
Поточні інтерфейси дивимось командою:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
netstat -tulpn | grep arti
|
||||||
|
```
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
### Нотатки
|
### Нотатки
|
||||||
|
|
||||||
|
=> arti-onion-router-with-tor-connection-over-yggdrasil.gmi 2025-11-30 Встановлення Onion-роутера Arti з підключенням до мережі Tor через Yggdrasil
|
||||||
=> btracker-environment-deployment.gmi 2025-11-28 Інструкція з розгортання інфраструктури βtracker
|
=> btracker-environment-deployment.gmi 2025-11-28 Інструкція з розгортання інфраструктури βtracker
|
||||||
=> social-oriented-vsftpd-server-setup.gmi 2025-11-26 Організація багатокористувацького файло-обмінника на базі FTP / vsftpd
|
=> social-oriented-vsftpd-server-setup.gmi 2025-11-26 Організація багатокористувацького файло-обмінника на базі FTP / vsftpd
|
||||||
=> about-gemlog-administration.gmi 2025-11-21 Про адміністрування блогів Gemini
|
=> about-gemlog-administration.gmi 2025-11-21 Про адміністрування блогів Gemini
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue