mirror of
https://codeberg.org/postscriptum/devzone.org.ua.git
synced 2026-02-18 22:02:41 +00:00
add vstanovlennia-onion-routera-arti-z-pidkliuchenniam-do-merezi-tor-cherez-yggdrasil.md
This commit is contained in:
parent
8e6cd79256
commit
fdd779be5d
1 changed files with 171 additions and 0 deletions
|
|
@ -0,0 +1,171 @@
|
|||
# Встановлення Onion-роутера Arti з підключенням до мережі Tor через Yggdrasil
|
||||
|
||||
[Arti](https://gitlab.torproject.org/tpo/core/arti) - це сучасна реалізація Onion-роутера мережі [Tor](https://uk.wikipedia.org/wiki/Tor) мовою [Rust](https://uk.wikipedia.org/wiki/Rust_(мова_програмування)).
|
||||
|
||||
Нижче інструкція зі встановлення та налаштування його проксі-сервера з підключенням до мережі через [Yggdrasil](https://devzone.org.ua/post/yggdrasil-mereza-z-detsentralizovanym-routynhom) (у якості VPN). При відповідному налаштуванні клієнтів, це дозволяє приховати факт користування мережею Tor а також підвищує конфіденційність всередині неї, адже вхідні вузли Tor бачитимуть IP адресу провайдера моста (bridge), а міст - бачитиме IPv6 мережі Yggdrasil (до якої в свою чергу, можна підключитися через інші мережі)
|
||||
|
||||
## Збірка з вихідного коду
|
||||
|
||||
При першій збірці програми на Rust, потрібно [встановити середовище розробки](https://devzone.org.ua/post/vstanovlennia-ostannyoyi-versiyi-rust-v-linux). Після чого, забираємо початковий код усіх компонентів Arti та компілюємо його з Сargo:
|
||||
|
||||
``` bash
|
||||
git clone https://gitlab.torproject.org/tpo/core/arti.git
|
||||
cd arti
|
||||
cargo build --release
|
||||
sudo install target/release/arti /usr/local/bin/arti
|
||||
```
|
||||
* тут ми встановлюємо тільки компонент `arti` та ставимо його в системну теку для подальшого запуску з systemd; по аналогії можна встановити й інші компоненти (з теки `target/release`) та налаштувати для них сервіси або ж зібрати тільки потрібний нам `-p arti`
|
||||
* після виконання команди `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`, щоб використовувати для підключення тільки мости зі списку bridges:
|
||||
|
||||
``` 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",
|
||||
]
|
||||
```
|
||||
* [перевірити статус мостів](https://metrics.torproject.org/rs.html)
|
||||
|
||||
### Віддалений сервер
|
||||
|
||||
З міркувань безпеки, в конфігурації сокету, можна зустріти наступне повідомлення:
|
||||
|
||||
> \# 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) реалізувати сповіщення з безпеки, при використанні хостів відмінних від `localhost`. Але бувають ситуації, коли проксі працює на локальному роутері, що відносно безпечно: адже до нього матимуть доступ тільки пристрої локальної мережі; або на віддаленому сервері з відповідним правилом фаєрвол.
|
||||
|
||||
Перечитавши реалізацію парсера цієї опції, вияснив, що вона таки підтримує вибіркові хости, при чому можна вказати декілька (вектором). Для цього, потрібно вказати хост і порт "рядком" з лапками, у форматі адреси сокета:
|
||||
|
||||
```
|
||||
socks_listen = "xxx.xxx.xxx.xxx:9150"
|
||||
```
|
||||
|
||||
Якби навіть цієї опції не було, я все одно обійшов би обмеження "без-програмним" рецептом. Наприклад, зовнішнім проксі на базі Nginx:
|
||||
|
||||
``` /etc/nginx/nginx.conf
|
||||
stream {
|
||||
server {
|
||||
listen a.a.a.a:9150;
|
||||
proxy_pass b.b.b.b:9150;
|
||||
}
|
||||
}
|
||||
```
|
||||
* `a.a.a.a` - сервер Nginx
|
||||
* `b.b.b.b` - сервер Arti
|
||||
|
||||
Порт на "зовнішньому" хості потрібно обов'язково обмежити засобами 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
|
||||
|
||||
NoNewPrivileges=yes
|
||||
PrivateTmp=yes
|
||||
PrivateDevices=yes
|
||||
ProtectHome=yes
|
||||
ProtectSystem=full
|
||||
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 arti` - авто-запуск при старті системи
|
||||
* `systemctl status arti` - перевірити статус служби
|
||||
|
||||
## Підключення клієнтських застосунків
|
||||
|
||||
В клієнтах IRC, браузерах та інших застосунках - достатньо вказати (SOCKS5) хост/порт проксі-сервера Arti, стандартно:
|
||||
|
||||
* `127.0.0.1:9150`
|
||||
* `[::1]:9150`
|
||||
* або `хост:порт` віддаленого сервера з файлу конфігурації (`socks_listen`)
|
||||
|
||||
### Налаштування браузера засобами PAC
|
||||
|
||||
Якщо метою користування Tor є анонімізація, то для фільтрації прямих з'єднань на Інтернет зручно встановити окремий браузер, вказавши в ньому єдиний проксі. Або/і скористатись маршрутизацією [PAC](https://en.wikipedia.org/wiki/Proxy_auto-config). Вона дозволяє гнучко налаштовувати потрібні правила для окремих URL засобами JS. Варіант налаштування PAC у браузерах сімейства FireFox - описував на [прикладі налаштувань проксі-сервера Yggstack](https://devzone.org.ua/post/bezpechnyy-perehliad-saytiv-yggdrasil-z-yggstack).
|
||||
|
||||
Таким чином, вдається уникнути ідентифікації користувача Tor (або іншого проксі) в ареалах, де використання такого може бути заборонено. Наприклад, шляхом вбудованого на сайт зображення, файлу скриптів або стилів у код на сайті.
|
||||
|
||||
Утім, описаний вище спосіб запобігає лише одному способу виявлення з поміж багатьох. В цьому плані, браузер Tor - є більш привабливим, адже включає з коробки й інші засоби маскування відбитків пальців: динамічний розміру екрану, шрифти, політику cookies, JS, заголовків HTTP тощо.
|
||||
|
||||
### Ізоляція середовища
|
||||
|
||||
Для більш фундаментальної ізоляції застосунків від спроби зловмисником спровокувати прямий запит в Інтерент, дивіться наступні матеріали:
|
||||
* [Ізоляція Linux від прямих Інтернет з'єднань на базі QEMU / Virtual Machine Manager з VSOCK](https://devzone.org.ua/post/izoliatsiia-linux-vid-priamykh-internet-zyednan-na-bazi-qemu-virtual-machine-manager-i-vsock)
|
||||
* [Обмеження вихідних з'єднань на Інтернет з ufw](https://devzone.org.ua/post/obmezennia-vykhidnykh-zyednan-na-internet-z-ufw)
|
||||
|
||||
Описані вище рішення дозволяють безпечно користуватись застосунками, які від початку не розроблялись з метою приватності: більшість клієнтів BitTorrent, криптографічних гаманців, та інші, що працюють за принципом Peer-to-Peer і реалізують технології DNS та PEX.
|
||||
|
||||
## Тестування з'єднань
|
||||
|
||||
Перевірити роботу роутера Arti можна запустивши його в терміналі з аргументом відлагодження:
|
||||
|
||||
``` bash
|
||||
arti --log-level debug ...
|
||||
```
|
||||
* або краще `-l trace`
|
||||
|
||||
Реалізації журналів я не довіряю і додатково перевіряю трафік графічною утилітою Etherape:
|
||||
|
||||
``` bash
|
||||
apt install etherape
|
||||
sudo etherape
|
||||
```
|
||||
|
||||
Активні інтерфейси можна перевірити командою:
|
||||
|
||||
``` bash
|
||||
netstat -tulpn | grep arti
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue