Mettre en place un tunnel vpn « ppp over ssh »

1) Introduction

Mettre en place un tunnel vpn se révele souvent très intéressant pour accéder à des ressources réseau situées derrière un routeur, ou pour crypter un flux de donnée sensible.
Cependant un vpn classique PPTP demande d’utiliser un système d’authentification par le fichier /etc/ppp/chapsecret et d’avoir une connectivité possible sur le port 1723, ce qui n’est pas toujours le cas.
Le vpn PPPSSH permet de se servir d’une connexion ssh comme d’un tunnel ppp, et donc de pouvoir router à l’intérieur le trafique qui nous intéresse.

2) Mise en place

2.1) Pré requis

installer sshd et pppd sur le serveur
pour des raison de sécurité évidente on vas créer un utilisateur vpn sur le serveur et installer sudo

2.2) Authentification

On vas mettre en place une authentification par clef publique en place pour que notre script puisse se connecter en ssh à la machine distante sans nous demander de mot de passe :

si vous n’avez pas encore créer de pair de clef rsa pour le compte root (sur le poste client):

#ssh-keygen

puis on vas envoyer la clef publique sur le serveur :

#ssh-copy-id -i .ssh/id_rsa.pub vpn@vpn.skatkatt.org

verifier si on peu maintenant se connecter au serveur sans mot de passe :

#ssh root@vpn.skatkatt.org

on vas maintenant editer la configuration de sudo pour permettre à l’utilisateur vpn d’utiliser pppd sans avoir à demander de mot de passe :

# visudo

ajouter ces 2 lignes à la fin du fichier :

Cmnd_Alias VPN=/usr/sbin/pppd
vpn ALL=NOPASSWD: VPN

on fais maintenant le test :

# su – vpn
$ sudo /usr/sbin/pppd noauth
~9}#ÀZ}!}!} }9} »}k} }r} }’}%}zt2-·}’} »}

si aucun mot de passe n’est demandé c’est tout bon

2.3) Script

On vas maintenant installer le script de connexion sur le poste client :

#cd /usr/local/bin/

#wget http://bibabox.fr/wp-upload/vpn-pppssh.sh

changer les variables pour qu’elles correspondent à votre configuration.

#nano /usr/local/bin/vpn-pppssh.sh

3) Utilisation

2.1) connexion / déconnexion

aussi simple que bonjour :

# /usr/local/bin/vpn-pppssh start

et

# /usr/local/bin/vpn-pppssh stop

2.2) routage

sur le serveur créer le fichier /etc/ppp/ip-up.d/ssh et ajouter cette ligne :

echo 1 > /proc/sys/net/ipv4/ip_forward

sur le client, une fois la connexion établie :

#route add -net 192.168.10.0/24 dev ppp0

*modifier l’ip par celle de votre réseau

et maintenant votre réseau local est accessible comme si vous y étiez.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *