Перейти до змісту

Tor relay

Вступ

Tor — це служба анонімності та програмне забезпечення, яке направляє трафік через три сервери, що працюють на волонтерах і називаються ретрансляторами. Конструкція з трьома стрибками забезпечує конфіденційність шляхом протидії спробам стеження.

Передумови та припущення

Нижче наведено мінімальні вимоги для використання цієї процедури:

  • Загальнодоступна IP-адреса, безпосередньо на сервері чи з переадресацією портів.
  • Система, яка може працювати 24/7, була б корисною для мережі Tor.
  • Можливість запускати команди від імені користувача root або використовувати sudo для підвищення привілеїв.
  • Знайомство з редактором командного рядка. Автор використовує vi або vim тут, але замініть у вашому улюбленому редакторі.
  • Комфорт зі зміною налаштувань SELinux і брандмауера.
  • Необліковане з’єднання або з’єднання з високим обмеженням пропускної здатності.
  • Додатково: загальнодоступна адреса IPv6 для з’єднання з двома стеками

Встановлення Tor

Щоб інсталювати Tor, вам потрібно спочатку встановити EPEL (додаткові пакети для Enterprise Linux) і запустити оновлення:

dnf -y install epel-release && dnf -y update

Потім встановіть Tor:

dnf -y install tor

Налаштування Tor

Після встановлення пакетів вам потрібно налаштувати Tor. Автор використовує для цього vi, але якщо ви віддаєте перевагу nano або щось інше, замініть його в:

vi /etc/tor/torrc

Типовий файл torrc є досить описовим, але може бути довгим, якщо вам просто потрібна ретрансляція Tor. Мінімальна конфігурація реле схожа на цю:

Nickname TorRelay
ORPort 9001
ContactInfo you@example.com
Log notice syslog

Придивляючись ближче

  • «Псевдонім» — це (неунікальний) псевдонім для вашого ретранслятора Tor.
  • «ORPort» — це порт TCP, який прослуховує ваш ретранслятор Tor. Типовим є "9001".
  • «ContactInfo» — це ваша контактна інформація, якщо виникнуть проблеми з вашим реле Tor. Установіть це як свою електронну адресу.
  • «Журнал» — це серйозність і призначення ваших журналів ретрансляції Tor. Ми записуємо «повідомлення», щоб запобігти реєстрації конфіденційної інформації, і «syslog» для виведення в журнал «systemd».

Конфігурація системи

Якщо ви вибрали інший порт TCP/IP, відмінний від "9001" (за замовчуванням), вам потрібно буде налаштувати SELinux tor_port_t, щоб додати в білий список порт вашого ретранслятора Tor. Для цього:

semanage port -a -t tor_port_t -p tcp 12345

Замініть "12345" портом TCP, який ви встановили у своєму "ORPort".

Вам також потрібно буде відкрити порт «ORPort» у брандмауері. Для цього:

firewall-cmd --zone=public --add-port=9001/tcp
firewall-cmd --runtime-to-permanent

Замініть «9001» портом TCP, який ви встановили у своєму «ORPort».

Обмеження пропускної здатності

Якщо ви не хочете виділяти всю свою пропускну здатність для Tor, скажімо, у вас є політика добросовісного використання у вашого провайдера, ви можете обмежити свою пропускну здатність. Ви можете обмежити пропускну здатність (наприклад, 100 мегабіт) або трафік за певний період часу (наприклад, 5 Гб на день).

Для цього відредагуйте файл torrc:

vi /etc/tor/torrc

Якщо ви хочете обмежити пропускну здатність, вам потрібно буде додати такий рядок до вашого файлу torrc:

RelayBandwidthRate 12500 KB

Це забезпечить пропускну здатність 12500 Кбайт на секунду, тобто близько 100 мегабіт на секунду.

Якщо ви віддаєте перевагу передачі певного обсягу трафіку за певний період часу, скажімо, за день, замість цього додайте наступне:

AccountingStart day 00:00
AccountingMax 20 GB

Ці значення означають, що:

  • Ваш обліковий період пропускної здатності починається щодня о 00:00 за системним часом. Ви також можете змінити «день» на «тиждень» або «місяць» або замінити «00:00» іншим часом.
  • У вашому обліковому періоді пропускної здатності ви передасте 20 ГБ. Збільште або зменшіть значення, якщо ви хочете дозволити більшу або меншу пропускну здатність для вашого реле.

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

Перевірка та запуск

Після встановлення конфігурації реле Tor наступним кроком є увімкнення демона Tor:

systemctl enable --now tor

У ваших журналах systemd ви повинні отримати такий рядок:

14 січня 15:46:36 ім’я хосту tor[1142]: 14 січня 15:46:36.000 [повідомлення] Самотестування вказує на те, що ваш ORPort A.B.C.D:9001 доступний ззовні. Чудово. Дескриптор сервера публікації.

Це означає, що ваше реле доступне.

Протягом кількох годин ваш ретранслятор буде відображено в списку Статус реле Tor, якщо ви введете свій псевдонім або публічну IP-адресу.

Міркування про реле

Ви також можете розширити конфігурацію, щоб зробити ваше реле Tor вихідним або мостовим реле. Ви також можете налаштувати максимум 8 ретрансляторів на одну публічну IP-адресу. Файл модуля Tor systemd у EPEL не призначений для кількох екземплярів, але файл модуля можна скопіювати та змінити для налаштування кількох реле.

Ретранслятори виходу є останнім стрибком у схемі Tor, яка підключається безпосередньо до веб-сайтів. Мостові ретранслятори – це ретранслятори, які не входять до списку, які допомагають користувачам із інтернет-цензурою підключатися до Tor.

Параметри для файлу torrc знаходяться на сторінці довідки. Тут ми описуємо базову конфігурацію реле виходу та мосту.

Запуск вихідного реле

Важливо

Якщо ви плануєте запустити реле виходу, переконайтеся, що ваш інтернет-провайдер або хостингова компанія це влаштовує. Скарги на зловживання від вихідних ретрансляторів дуже поширені, оскільки це останній вузол схеми Tor, який підключається безпосередньо до веб-сайтів від імені користувачів Tor. З цієї причини багато хостингових компаній забороняють реле виходу Tor.

Якщо ви не впевнені, що ваш інтернет-провайдер дозволяє вихідні реле Tor, перегляньте умови обслуговування або запитайте свого інтернет-провайдера. Якщо ваш інтернет-провайдер відповість «ні», зверніться до іншого інтернет-провайдера чи хостингової компанії або розгляньте проміжний ретранслятор.

Якщо ви хочете запустити реле виходу, вам потрібно буде додати наступне до свого torrc:

ExitRelay 1

Однак це буде використовувати таку політику виходу за замовчуванням:

ExitPolicy reject *:25
ExitPolicy reject *:119
ExitPolicy reject *:135-139
ExitPolicy reject *:445
ExitPolicy reject *:563
ExitPolicy reject *:1214
ExitPolicy reject *:4661-4666
ExitPolicy reject *:6346-6429
ExitPolicy reject *:6699
ExitPolicy reject *:6881-6999
ExitPolicy accept *:*

Ця політика виходу блокує лише крихітну підмножину TCP-портів, що дозволяє зловживати BitTorrent і SSH, які незручні багатьом провайдерам.

Якщо ви хочете використовувати скорочену політику виходу, ви можете встановити її в torrc:

ReducedExitPolicy 1

Ви також можете мати більш обмежувальну політику виходу, наприклад, дозволяючи лише трафік DNS, HTTP та HTTPS. Це можна встановити як:

ExitPolicy accept *:53
ExitPolicy accept *:80
ExitPolicy accept *:443
ExitPolicy reject *:*

Ці значення означають, що:

  • Ми дозволяємо вихідний трафік до TCP-портів 53 (DNS), 80 (HTTP) і 443 (HTTPS) за допомогою наших рядків "ExitPolicy accept"
  • Ми забороняємо вихідний трафік до будь-якого іншого TCP-порту за допомогою рядків підстановки «ExitPolicy reject».

Якщо вам потрібна необмежена політика виходу, лише блокуючи трафік SMTP, це можна встановити так:

ExitPolicy reject *:25
ExitPolicy reject *:465
ExitPolicy reject *:587
ExitPolicy accpet *:*

Ці значення означають що

  • Ми забороняємо вихідний трафік до стандартних TCP-портів SMTP 25, 465 і 587 у наших рядках "ExitPolicy reject".
  • Ми дозволяємо вихідний трафік до всіх інших TCP-портів у рядку підстановки «ExitPolicy accept».

Ми також можемо дозволити або заблокувати ряд портів наступним чином:

ExitPolicy accept *:80-81
ExitPolicy reject *:993-995

Ці значення означають, що:

  • Ми дозволяємо вихідний трафік на порти TCP 80-81.
  • Ми забороняємо вихідний трафік до TCP-портів 993–995, які використовуються для захищених SSL варіантів IMAP, IRC і POP3.

Ви також можете дозволити вихідний трафік на адреси IPv6, припускаючи, що ваш сервер має з’єднання з двома стеками:

IPv6Exit 1

Запуск мосту obfs4

Прямі з’єднання з Tor заблоковані в багатьох частинах світу, включаючи Китай, Іран, Росію та Туркменістан. У цих країнах клієнти Tor використовують незареєстровані мостові реле.

Tor працює за допомогою системи підключених транспортів, яка дозволяє маскувати трафік Tor під інші протоколи, такі як неідентифікований фіктивний трафік (obfs4), WebRTC ( сніжинка) або підключення HTTPS до служб Microsoft (meek).

Завдяки своїй універсальності obfs4 є найпопулярнішим підключеним транспортом.

Щоб налаштувати міст obfs4, оскільки obfs4 немає в сховищах EPEL, нам потрібно буде скомпілювати його з нуля. Давайте спочатку встановимо необхідні пакети:

dnf install git golang policycoreutils-python-utils

Далі ми завантажимо та видобудемо вихідний код obfs4:

wget https://gitlab.com/yawning/obfs4/-/archive/obfs4proxy-0.0.14/obfs4-obfs4proxy-0.0.14.tar.bz2
tar jxvf obfs4-obfs4proxy-0.0.14.tar.bz2
cd obfs4-obfs4proxy-0.0.14/obfs4proxy/

Ви також можете отримати obfs4 безпосередньо з git clone, але це залежить від новішої версії Go, ніж та, що існує в AppStream, тому ми не будемо її використовувати.

Потім ми скомпілюємо та встановимо obfs4:

go build
cp -a obfs4proxy /usr/local/bin/

Після встановлення obfs4 ми додамо наступне до нашого torrc:

ServerTransportPlugin obfs4 exec /usr/local/bin/obfs4proxy
ServerTransportListenAddr obfs4 0.0.0.0:12345
ExtORPort auto

Ці значення означають, що:

  • Ми використовуємо підключений транспорт obfs4, розташований за адресою /usr/local/bin/obfs4proxy у нашому рядку ServerTransportPlugin
  • ServerTransportListenAddr змушує наш підключений транспорт слухати порт 12345
  • Наша лінія ExtORPort прослуховуватиме навмання вибраний порт для з’єднання між Tor і нашим підключеним транспортом. Зазвичай цей рядок не слід змінювати

Якщо ви хочете прослуховувати інший TCP-порт, змініть "12345" на потрібний TCP-порт.

Ми також дозволимо вибраний нами порт TCP "12345" (або порт, який ви вибрали) у SELinux і firewalld:

semanage port -a -t tor_port_t -p tcp 12345
firewall-cmd --zone=public --add-port=12345/tcp
firewall-cmd --runtime-to-permanent

Виконання кількох естафет

Як згадувалося раніше, ви можете встановити до 8 ретрансляторів Tor на одну публічну IP-адресу. Наприклад, якщо у нас є п’ять загальнодоступних IP-адрес, ми можемо встановити максимум 40 ретрансляторів на нашому сервері.

Однак нам потрібен спеціальний файл systemd unit для кожного реле, яке ми запускаємо.

Давайте тепер додамо додатковий файл модуля systemd у /usr/lib/systemd/system/torX:

[Unit]
Description=Anonymizing overlay network for TCP
After=syslog.target network.target nss-lookup.target
PartOf=tor-master.service
ReloadPropagatedFrom=tor-master.service

[Service]
Type=notify
NotifyAccess=all
ExecStartPre=/usr/bin/tor --runasdaemon 0 -f /etc/tor/torrcX --DataDirectory /var/lib/tor/X --DataDirectoryGroupReadable 1 --User toranon --verify-config
ExecStart=/usr/bin/tor --runasdaemon 0 -f /etc/tor/torrcX --DataDirectory /var/lib/tor/X --DataDirectoryGroupReadable 1 --User toranon
ExecReload=/bin/kill -HUP ${MAINPID}
KillSignal=SIGINT
TimeoutSec=30
Restart=on-failure
RestartSec=1
WatchdogSec=1m
LimitNOFILE=32768

# Hardening
PrivateTmp=yes
DeviceAllow=/dev/null rw
DeviceAllow=/dev/urandom r
ProtectHome=yes
ProtectSystem=full
ReadOnlyDirectories=/run
ReadOnlyDirectories=/var
ReadWriteDirectories=/run/tor
ReadWriteDirectories=/var/lib/tor
ReadWriteDirectories=/var/log/tor
CapabilityBoundingSet=CAP_SETUID CAP_SETGID CAP_NET_BIND_SERVICE CAP_DAC_READ_SEARCH
PermissionsStartOnly=yes

[Install]
WantedBy = multi-user.target

Замініть суфікс X після tor/torrc на потрібне ім'я. Автор любить нумерувати для простоти, але це може бути що завгодно.

Згодом ми додамо файл torrc примірника в /etc/tor/torrcX. Переконайтеся, що кожен екземпляр має окремий порт та/або IP-адресу.

Ми також дозволимо вибраний TCP-порт «12345» (або порт у torrcX) у SELinux і firewalld:

semanage port -a -t tor_port_t -p tcp 12345
firewall-cmd --zone=public --add-port=12345/tcp
firewall-cmd --runtime-to-permanent

Після цього увімкніть блок torX systemd:

systemctl enable --now torX

Повторіть ці кроки для кожного реле, яке ви хочете запустити.

Висновок

На відміну від звичайних служб VPN, Tor використовує переваги ретрансляторів, які запускаються волонтерами, для забезпечення конфіденційності та анонімності, які ви щойно налаштували.

Хоча для роботи ретранслятора Tor потрібна надійна система, а для виходів — провайдер, що підтримує Інтернет, додавання додаткових реле сприяє конфіденційності, роблячи Tor швидшим із меншою кількістю точок збою.

Author: Neel Chauhan

Contributors: Steven Spencer