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.