Окрім можливости виходити в мережу на обмежених з’єднаннях і захисту від стеження, Tor має ще одну дуже корисну функцію: можливість створювати публічнодоступну адресу для будь-якої машини, незалежно від того, чи у неї змінна IP і чи вона за шлюзами (NAT-ами). Де б ця машина не була (а якщо це ноутбук, то він може постійно переміщуватися з місця на місце), ця адреса буде незмінною. Вона завжди закінчується доменом .onion
, і має вигляд, подібний до: sejnfjrq6szgca7v.onion
(якщо відкрити цю адресу в Tor Browser, ви потрапите на Tor-версію сайту debian.org).
Цю функцію називають «onion service» або «hidden service», тому що така Tor-адреса не розкриває інформації про фізичне розташування Вашого комп’ютера (на відміну від IP-адреси).
Цю можливість я тепер використовую майже щоденно. Наприклад, моя мама використовує Debian. Вона на ADSL-з’єднанні, яке, своєю чергою, «роздає» wifi-маршрутизатор. Тобто її IP — «внутрішня» 192.168.*.*
, до якої, звісно, доступу зовні немає. Завдяки Tor я маю можливість часом допомагати їй з адмініструванням її машини незалежно від того, де вона фізично і який у неї тип з’єднання з Інтернетом.
Налаштування на віддаленій машині
Перше, що потрібно зробити на машині, до якої Ви плануєте під’єднуватися через ssh – встановити tor і ssh:
apt-get install tor openssh-server
Після встановлення потрібно відкрити файл /etc/tor/torrc
і знайти там ось ці рядки:
#HiddenServiceDir /var/lib/tor/hidden_service/ #HiddenServicePort 80 127.0.0.1:80
Ці закоментовані рядки у файлі налаштувань — приклад використання цієї функції для веб-сервера (порт № 80). Натомість, ми налаштуємо її для SSH, і додамо в цьому місці такі рядки:
HiddenServiceDir /var/lib/tor/hidden_service/ HiddenServicePort 22 127.0.0.1:22
Після цього треба зберегти файл і перезапустити Tor:
systemctl restart tor
Після перезапуску Tor згенерує криптографічний ключ, публічна частина якого стане основою адреси .onion
цього комп’ютера. Щоб дізнатися цю адресу, треба заглянути у файл:
cat /var/lib/tor/hidden_service/hostname bkzwruja5ntctq4z.onion
Тепер Ви знаєте, що bkzwruja5ntctq4z.onion
— публічна адреса вашого комп’ютера в мережі Tor, незалежно від вашого фізичного перебування й IP-адреси. Також у тій теці є файл private_key
, який є таємною частиною криптографічного ключа, на основі якого генерується адреса. Цей файл є доказом того, що вам і лише вам належить право на цю адресу. Якщо ви його втратите, ви не зможете використовувати цю адресу і вам доведеться згенерувати нову. Якщо його у вас викрадуть, викрадачі зможуть «прикидатися» вами й використовувати вашу onion-адресу. Тому цей файл треба надійно зберігати й ніде не публікувати.
Якщо Ви хочете заходити через ssh на обліковку root
, візьміть до уваги, що віднедавна у debian типове налаштування для сервера ssh забороняє вхід користувачу root з допомогою пароля — дозволена лише автентифікація через ключі. Тому краще або перейти на автентифікацію ключами SSH (що значно безпечніше, ніж паролі), або дозволити вхід користувачу root на віддаленій машині, змінивши PermitRootLogin without-password
на PermitRootLogin yes
у /etc/ssh/sshd_config
. Впевніться, що пароль root
у вас достатньо міцний!
Налаштування клієнтської машини
Щоб встановити ssh-з’єднання до машини на адресі .onion
, потрібно встановити такі пакунки:
apt-get install tor torsocks
Після цього Ви зможете запустити команду:
torsocks ssh user@bkzwruja5ntctq4z.onion
І увійти на віддалену машину через ssh.
Додаткова зручність
Ви також можете налаштувати клієнтську машину таким чином, що команду ssh можна буде запускати без torsocks, а теки віддаленої машини можна буде «монтувати» локально у тих програмах, які використовують gvfs
(наприклад, Thunar, Tuxcmd, імовірно Nautilus). Для цього вистачить тільки встановити:
apt-get install socat
І створити у Вашій домашній теці файл .ssh/config
з таким вмістом (ідею запозичено звідси):
Host *.onion ProxyCommand socat STDIO SOCKS4A:localhost:%h:%p,socksport=9050
Після цього Ви зможете запускати команду ssh з onion-адресами без використання додаткових команд:
ssh root@bkzwruja5ntctq4z.onion
…і заходити на віддалену машину через Tor безпосередньо з Вашого файлового менеджера:
Цікаво, дякую))
Чомусь прочитав тільки тепер.
А питання — якщо в мене є
fail2ban
, то він, звісно, ігнорує 127.0.0.1. Проте хто завгодно може намагатися підібрати пароль чи вчудити ще якусь капость?Чи не є onion service додатковою діркою?
Так, fail2ban використати неможливо, адже інформації про IP «додзвонювачів» немає і не може бути. Зазвичай я використовую автентифікацію за допомогою ключів, а доступ за паролями просто вимикаю. Оскільки tor «слухає» тільки порт для SSH, якихось инших потенційних дір безпеки я тут не бачу. Але якщо б ішлося про налаштування чогось иншого, наприклад веб-сервера, треба бути обережними з функціями, доступними тільки з 127.0.0.1 (наприклад, mod_status в apache). На сайті riseup є детальні поради з безпеки onion-служб. Також є спеціяльний інструмент для сканування onion-служб на типові вразливості.
Mitigating DDoS Attacks Against Your Onion Service, теж цікаво.
Так, у мене скрізь тільки ключі.
Тобто, залежно від конфігурації (адже
tor
може слухати 80-й чи щось інше), небезпекою є DDoS. Проте для «прихованих» сервісів (піднятих «для себе») це не актуально, зрозуміло.