Torréfier un serveur SSH

 · 1 min read
 · Jean Schurger
Table of contents

L'idée est de cacher un serveur SSH derrière un service Tor déjà installé, le but étant de pouvoir y accéder, mais de ne pas l'exposer.

Configuration de Tor

Il suffit de configurer un HiddenService sur le port 22. Inscrire dans le ficher de configuration de tor (puis redémarrer tor):

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 22 127.0.0.1:22

Ensuite, relever le "hostname" qui aura été généré en lisant le fichier "/var/lib/tor/hiddenservice/hostname". Il devrait ressembler à quelque chose comme "hurlub3rlu.onion" c'est l'adresse à utiliser avec le client SSH.

Configuration du client SSH

OpenSSH ne sait pas se connecter à une adresse en '.onion'. Du côté client, on a aussi besoin d'installer tor, et au minimum de le configurer comme proxy SOCKS5. Une fois que le service tor côté client est fonctionnel, il faut configurer ssh pour l'utiliser. Une façon de faire est d'utiliser connect-proxy (donc, l'installer), et indiquer de l'utiliser dans "~/.ssh/config":

Host cachecache
    HostName hurlub3rlu.onion
    CheckHostIP no
    Compression yes
    Protocol 2
    ProxyCommand connect -S localhost:9050 %h %p

Bonus

Bloquer SSH (sauf dans le réseau local 192.168.1.0/24)

iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

C'est lent ! Mosh ?

Malheureusement Mosh ne peut pas fonctionner de cette façon, seul TCP est torréfié, et mosh utilise UDP.

Éviter que connect ne demande un mot de passe qui n'existe pas

export SOCKS5_PASSWORD=