X-Space

Aller au contenu | Aller au menu | Aller à la recherche

dimanche, mars 13 2011

Connexion SSH au travers d'un proxy

Préambule

La méthode que je vais vous décrire offre la possibilité de contourner des protections/limitations mises en place par le biais d'un proxy ou d'un firewall. Son usage est sous votre entière responsabilité et peut être contraire à la politique de sécurité du lieu ou vous vous trouvez.

SSH over HTTPS

Dans mon entreprise actuelle, seuls deux ports sont disponibles en sortie : les ports web 80 et 443. Il m'est donc impossible de me connecter à mon serveur via SSH pour intervenir en cas de dysfonctionnement.

La première solution, que j'ai mise en place, a été d'utiliser un des deux ports disponibles et de rediriger son trafic vers le port SSH. Rien de plus facile avec iptables.

iptables -t nat -A PREROUTING -i eth0 -s 10.20.30.40 -p tcp --dport 443 -j REDIRECT --to-ports 22

Mais...

Dans ce cas, il n'est plus possible de me connecter à mes pages en HTTPS (webmail par exemple). Et d'autre part, l'ip est fixe. Cette solution est donc limitée.

Port-knocking à votre service

Voici donc qu'arrive le port knocking. Je vous renvois à l'article de Wikipedia pour comprendre de quoi il retourne.

Maintenant, il me suffit de faire des requêtes dans un certain ordre sur les ports 80 et 443 et une fois la séquence finie : le port 443 est redirigé vers le 22 (SSH). 10 secondes plus tard tout est rentré dans l'ordre.

Installation :

sudo aptitude install knockd

Editer : /etc/knockd.conf

[options]
    UseSyslog

[opencloseSSH]
    sequence      = 443:udp,80:udp
    seq_timeout   = 10
    tcpflags      = syn,ack
    start_command = /sbin/iptables -t nat -A PREROUTING -i eth0 -s %IP% -p tcp --dport 443 -j REDIRECT --to-ports 22
    cmd_timeout   = 10
    stop_command = /sbin/iptables -t nat -D PREROUTING -i eth0 -s %IP% -p tcp --dport 443 -j REDIRECT --to-ports 22

Et on lance le démon :

sudo knockd -d -c /etc/knockd.conf

Utilisation :

knock IP_SERVEUR 443:udp 80:udp

Il reste alors 10 secondes pour se connecter en SSH.

Debbuging

knockd peut se lancer comme une commande simple avec console. C'est pratique pour comprendre ce qui ne marche pas.

sudo knockd -D -v -c /etc/knockd.conf

Quelques références :