Доступ по SSH за NAT через TOR: различия между версиями

Материал из ALT Linux Wiki
Строка 5: Строка 5:
# Cоздать каталог для скрытого сервиса SSH, где будут лежать файлы с именем хоста и с ключами — своими и авторизованных клиентов:
# Cоздать каталог для скрытого сервиса SSH, где будут лежать файлы с именем хоста и с ключами — своими и авторизованных клиентов:
#:<source lang="text"># install -m 700 -o _tor -g _tor -d /var/lib/tor/ssh</source>
#:<source lang="text"># install -m 700 -o _tor -g _tor -d /var/lib/tor/ssh</source>
# В файле настроек TOR <strong>/etc/tor/torrc</strong>:
# В файле настроек TOR (по умолчанию &mdash; <strong>/etc/tor/torrc</strong>, но можно переложить и переименовать):
#:* закомментировать (если не уже) опции <code>BridgeRelay</code>, <code>DisableNetwork</code>, <code>NewCircuitPeriod</code> и <code>Sandbox</code>;
#:* закомментировать (если не уже) опции <code>BridgeRelay</code>, <code>DisableNetwork</code>, <code>NewCircuitPeriod</code> и <code>Sandbox</code>;
#:* добавить опции (порядок <code>HiddenServiceDir</code> и <code>HiddenServicePort</code> именно таков):
#:* добавить опции (порядок <code>HiddenServiceDir</code> и <code>HiddenServicePort</code> именно таков):

Версия от 06:47, 31 августа 2020

По материалу Михаила Новосёлова — спасибо, добрый человек!

На сервере

  1. В /etc/openssh/sshd_config изменить порт на непривилегированный, иначе TOR не запустится. Например:
    Port 2222
    
  2. Cоздать каталог для скрытого сервиса SSH, где будут лежать файлы с именем хоста и с ключами — своими и авторизованных клиентов:
    # install -m 700 -o _tor -g _tor -d /var/lib/tor/ssh
    
  3. В файле настроек TOR (по умолчанию — /etc/tor/torrc, но можно переложить и переименовать):
    • закомментировать (если не уже) опции BridgeRelay, DisableNetwork, NewCircuitPeriod и Sandbox;
    • добавить опции (порядок HiddenServiceDir и HiddenServicePort именно таков):
      ClientOnly        1
      Schedulers        KISTLite
      HiddenServiceDir  /var/lib/tor/ssh
      HiddenServicePort 2222 127.0.0.1:2222 # Запросы ко внешнему порту 2222 слать на локальный 2222.
      
  4. Перезапустить оба сервиса:
    # systemctl restart sshd tor
    
  5. Получить имя хоста в сети TOR:
    # cat /var/lib/tor/ssh/hostname
    имя_длиной_в_56_буквоцифр.onion
    

На клиенте

  1. Запустить хотя бы минимально настроенный TOR.
  2. Добавить в ~/.ssh/config секцию:
    Host *.onion
        ProxyCommand nc -x localhost:9050 -X 5 %h %p
        VerifyHostKeyDNS no
        Port 2222
    
  3. Пробовать подключиться:
    $ ssh username@имя_длиной_в_56_буквоцифр.onion
    

Работа через прокси

Если узел не только за NAT, а ещё и за прокси, запуск TOR через proxychains не позволит достукиваться на него снаружи. Вместо этого следует добавить в его конфиг TOR'а одну (или все) из опций, позволяющих выход в мир через данный вышестоящий прокси:

HTTPProxy   host[:port] # На эту ругается: дескать, устарела и из новых версий её уберут.
HTTPSProxy  host[:port]
Socks4Proxy host[:port]
Socks5Proxy host[:port]

Если прокси с аутентификацией, понадобятся ещё и эти:

HTTPSProxyAuthenticator username:password
HTTPProxyAuthenticator  username:password
Socks5ProxyUsername     username
Socks5ProxyPassword     password

Однако не факт, что всё получится: многое зависит от суровости вышестоящего прокси. К примеру, из школ через ростелекомовский прокси этот трюк не срабатывает — плотно забаррикадировались.

Можно ещё покрутить опции FascistFirewall на пару с ReachableAddresses — но это уже для тех, кто привычен ко вдумчивому курению мануалов:$ man tor