Mais pourquoi tu es derrière du NAT ?
- Parce qu'il y a trop peu d'IPv4 pour en donner des routables à tout le monde.
- Parce que l'IPv6 c'est pas encore ça.
Bah tu rediriges ton port sur la machine
Oui, sauf qu'on a pas toujours la main sur le routeur. D'autant plus que vu l'engouement des telcos pour l'IPv6, on va vraisemblablement bouffer du CGN.
Concrètement, on fait comment ? Exemple pour ssh
Je vais vous expliquer comment faire pour ssh, pour les autres services, c'est encore plus court.
D'abord on commence par installer Tor (je te laisse voir ça avec la documentation de ton système).
Création d'un hidden service
Note, si tu penses que récemment il y a une faille sur les hidden services de Tor, je t'invite à fermer cette page puisque tu ne sais pas lire.
Une fois qu'on a installé Tor, il a du mettre dans /etc/tor
son fichier de configuration, torrc
. Dedans tu dois avoir
#HiddenServiceDir /var/lib/tor/hidden_service/
#HiddenServicePort 22 127.0.0.1:22
Il suffit de décommenter les lignes, changer le port si sshd n'écoute pas sur le port 22. On relance Tor et normalement on a
/var/lib/tor/hidden_service# ls
hostname private_key
Dans hostname se situe l'adresse du hidden service (et dans private_key, ô surprise, la clé privée).
# cat hostname
l4dr3ss3duH5.onion
Une fois qu'on l'a récupéré, on installe socat si ce n'est déjà fait. Puis dans un terminal on entre la commande
socat TCP4-LISTEN:4252,fork SOCKS4A:127.0.0.1:l4dr3ss3duH5.onion:22,socksport=9050
Pour se connecter en ssh on tape
ssh user@127.0.0.1 -p 4252
Mais c'est inutilisable /o\ !
ssh sur une mauvaise connexion, c'est chiant. Tu te dis "pfff, je vais installer mosh", montre moi comment tu fais passer tes paquets UDP de mosh sur Tor qui est tcp-only.
Quand je disais que pour les autres services, c'était plus simple, c'est parce que les autres services ne sont pas interactif comme ssh. Donc ça sera plus lent que sur vanilla net mais ça marche.
Que faire ?
C'est là qu'on reconnait qu'OpenSSH-server a été codé par quelqu'un d'OpenBSD : il est complet et a une syntaxe simple </prosélitisme>
.
$ man ssh
[...]
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to be forwarded to the given host
and port on the local side. This works by allocating a socket to listen to port on the remote
side, and whenever a connection is made to this port, the connection is forwarded over the
secure channel, and a connection is made to host port hostport from the local machine.
[...]
On est connecté sur la machine derrière le NAT et on entre la commande :
machinenatée$ ssh -R 19999:localhost:22 user@pclocal
Boooootstrap \o/
Dans un autre terminal, on tape
pclocal$ ssh user@localhost -p 19999
Et hop on est connecté directement sans passer par Tor.
Petite précaution
Les hidden services sont récupérables plutôt facilement (on monte un relais, on attend 24 heures pour avoir le flag HSDIR et ... je ne sais pas la suite mais il me semble que c'est simple à faire :p).
Quand on se connecte sur le .onion, la machine voit comme hote distant localhost. Comme il y a toutes les chances que vous ne filtrez pas sur lo0
, rien n'empêche le bruteforce.
On peut sans doute faire écouter l'hidden service sur une IP locale qu'on met en alias sur l'interface du serveur comme ça on peut filtrer sur cette IP. Mais là encore, si quelqu'un la brute force et il ne faut pas qu'elle soit bloquée éternellement sinon vous subirrez aussi le blocage.