Tor для людей: ssh-доступ до машини за шлюзом

  • 2017-01-07
  • (автор: yurb)

Окрім можливости виходити в мережу на обмежених з'єднаннях і захисту від стеження, 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 безпосередньо з Вашого файлового менеджера: