Torréfier un serveur SSH
Table of contents
- Bloquer SSH (sauf dans le réseau local 192.168.1.0/24)
- C'est lent ! Mosh ?
- Éviter que connect ne demande un mot de passe qui n'existe pas
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=