lundi 31 janvier 2011

Tunnel SSH

J'ai souvent été confronté durant un pentest, un audit ou tout simplement lors de la configuration d'une machine à distance au fait que je sois bloqué par le firewall lors de l'accès à certains ports ou à certaines machines.
Pourtant si par chance nous avons accès à un serveur SSH dans le réseau, nous pouvons dire que nous avons accès à tout (ou presque) le réseau, quelque soit le port ou la machine visée (tant que cette dernière est accessible via le serveur SSH).

Pour cela il suffit d'utiliser une des nombreuses fonctionnalités d'OpenSSH, le tunnel. L'idée est simple, utiliser le serveur SSH sur lequel nous avons un accès pour rebondir sur la machine souhaitée.

Prenons un exemple simple : nous avons accès à un serveur SSH sur un réseau et nous voulons reconfigurer la livebox de ce réseau. Le problème c'est que la livebox est inaccessible directement... elle est bien configurée pour transférer le service SSH sur la bonne machine, mais impossible d'accéder directement à cette maudite livebox.
Nous allons utiliser cet accès SSH disponible pour rebondir sur le serveur WEB de la livebox.
Les commandes à taper sur la machine distante sont les suivantes :

# ssh -N -L 8080:192.168.0.1:443 ip_serveur_ssh

Quelques explications sont nécessaires : le port 8080 apparaissant en violet est le port qui va s'ouvrir sur la machine distante, c'est à dire celle dont nous disposons. Toute communication à destination de ce port sera encapsulée et envoyée vers l'ip du serveur SSH en vert, qui désencapsulera la partie SSH et renverra le reste à destination de l'adresse IP 192.168.0.1:443 (la livebox). La réponse de la livebox fera le chemin inverse et sera encapsulée par le serveur à destination de notre client et qui enlevera la partie SSH et le renverra à notre navigateur WEB.
Remarque: L'adresse en rouge représentant l'adresse de la livebox est relative au serveur SSH et non pas à la machine distante.

En plus d'être très pratique, ce mécanisme permet de chiffrer toute la communication de la machine distante vers le réseau et donc apporte une couche de sécurité.

Il est possible de désactiver cette fonctionnalité du serveur OpenSSH dans le fichier sshd_config en mettant AllowTcpForwarding à No (par défaut il est à Yes).

Aucun commentaire:

Enregistrer un commentaire