Archive

Posts Tagged ‘ssh’

VPN avec SSH

April 27th, 2010 4 comments

Ce que j’adore avec l’informatique c’est que quand on croit connaître un sujet, on se rend toujours compte qu’il reste encore une montagne de choses à apprendre. :-)

J’avais fait un article sur le port forwarding avec ssh pour faire des tunnels mais depuis j’ai trouvé beaucoup mieux !

SSH permet de faire un VPN grâce aux interfaces virtuelles TUN/TAP. Ici je vais expliquer la méthode que j’utilise avec une interface TUN.

Les prérequis sont d’avoir un client sous *nix (j’ai pas testé avec windows), un serveur ssh avec accès root et sur Mac il faut installer les drivers tun/tap. Il faut également ajouter “PermitTunnel yes” dans votre sshd_config.

Première étape, établir la connexion ssh avec le serveur.

sudo ssh -w 0:0 root@server.com

Des droits root sont nécéssaire du coté client et serveur pour créer les interfaces tun. L’option -w spécifie qu’on crée les interfaces et 0:0 spécifie le numéro des interfaces coté client:serveur. Sur Mac l’interface tun peut être différente de 0, vous pouvez alors utiliser “any:0″ qui permettra d’utiliser n’importe quelle interface tun coté client (le mac).

Ensuite il faut configurer les interfaces des 2 cotés :

server# ifconfig tun0 172.16.0.1 netmask 255.255.255.252

server# ifconfig tun0 up

client# ifconfig tun0 172.16.0.2 netmask 255.255.255.252

client# ifconfig tun0 up

Sur Mac il faut rajouter une ip de destination dans le ifconfig :

clientMac# ifconfig tun15 172.16.0.2 netmask 255.255.255.252 172.16.0.1

A partir de maintenant vous devriez pouvoir faire un ping du client sur l’ip de l’interface tun du serveur.

Ensuite il faut que le serveur autorise l’ip forwarding et qu’on active le NAT.

server# echo 1 > /proc/sys/net/ipv4/ip_forward
server# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

A partir d’ici il n’y a plus de manipulation sur le serveur, il ne reste qu’a configurer les routes coté client.

client# route add 192.168.1.0/24 172.16.0.1

Maintenant vous avez accès au réseau du serveur (192.168.1.0/24) !

Si vous souhaitez faire passer tout votre traffic par le VPN c’est possible aussi, il suffit d’ajouter une route vers l’ip du serveur avec comme gateway l’ip de la gateway coté client pour ne pas perdre la connexion et ensuite mettre la gateway du réseau distant (celui du serveur) comme gateway par défaut sur la machine client.

Il est possible de scripter tout ça, d’utiliser une authentification par clé, de backgrounder la connexion ssh, etc… mais c’est une autre histoire :-)

Categories: Linux, Network, Unix Tags: , , , ,

Tunnel SSH

February 22nd, 2009 No comments

Petit tips utile pour passer les firewall grâce à un tunnel ssh.

Prérequis, un serveur ssh sur un réseau sans firewall restrictif, un client ssh sur un réseau avec un f*** firewall très restrictif (au hasard celui de l’inpres).

Premier exemple : tunnel pour éviter les filtrages web.

ssh -D 8080 moi@serveurssh.chez.moi

Ca va creer un tunnel dynamique sur le port 8080, ensuite il sufit de configurer votre navigateur pour qu’il utilise le tunnel comme un proxy socks à l’adresse local 127.0.0.1 (ou localhost, ça marche aussi).

Deuxième exemple un peu plus complexe mais rien d’insurmontable : un tunnel pour relever ses mails en pop. Première étape, modifier votre fichier /etc/hosts pour que l’adresse du serveur pop pointe sur la boucle locale (127.0.0.1) par exemple :

127.0.0.1 mail.pointslash.net

Ensuite on fait le tunnel :

ssh -L 110:mail.pointslash.net:110 moi@serveurssh.chez.moi

Rien besoin de changer dans le client mail, tout vos mails passeront dans le tunnel et le pop, s’il n’était pas accompagné de ssl, est maintenant bien plus sécurisé ! Ca marche aussi pour l’imap et toutes les autres applications :-)

Il y a encore bien d’autres applications au tunnel ssh, je pense notamment à l’option de remote forwarding, peut-être dans un prochain article.

Enjoy

Categories: Linux, Network, Unix Tags: , , ,