VPN over SSH
Le 3 juin 2009, par logout
SSH, nous permet de créer des tunnels, nous permettant d’accéder de façon sûre à des services offerts web,mail sur un réseau protégé, sans créer de vpn.
Mais il permet aussi de créer des tunnels entre deux interfaces réseau virtuelles :
Au niveau 3 :
Donc une interface réseau virtuelle au niveau IP l’interfaceTun (tun0,tun1).
0u au niveau 2 :
Donc une interface réseau virtuelle ou tout Ethernet est routé l’interface Tap (tap0,tap1).
Il ne nous reste plus qu’as créer le reseau privé virtuel :
Globalement :
Le réseau privé virtuel : 10.254.254.0/30
Le réseau privé : 10.99.99.0/24
Coté serveur :
IP publique sur eth0 : 88.131.161.3
IP privé sur eth1 : 10.99.99.1
IP privé virtuel sur : tun0 10.254.254.2
Coté client :
IP privé virtuel sur : tun0 10.254.254.1
Comencons par le client, on génère la paire de clefs SSH pour le root :
root@helghardhr:~# ssh-keygen -t rsa
On s’assure que le module tun est bien monté :
root@helghardhr:~# lsmod | grep tun
tun 8292 0
root@helghardhr:~#
Sinon :
root@helghardhr:~# modprobe tun
root@helghardhr:~#
Puis on modifie le fichier /etc/network/interfaces pour rajouter notre interface :
iface tun0 inet static
pre-up ssh -S /var/run/ssh-vpn-tunnel-control -M -f -w 0:0 88.131.161.3 true
pre-up sleep 5
address 10.254.254.1
pointopoint 10.254.254.2
netmask 255.255.255.252
up route add -net 10.99.99.0 netmask 255.255.255.0 gw 10.254.254.2 tun0
post-down ssh -S /var/run/ssh-vpn-tunnel-control -O exit 88.131.161.3
Ensuite nous nous connectons en tant que root à notre server :
root@helghardhr:~# ssh 88.131.161.3
The authenticity of host ‘88.131.161.3 (88.131.161.3)’ can’t be established.
RSA key fingerprint is 60:fe:60:01:b0:11:78:60:01:b0:aa:78:90:ab:6a:d2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘88.131.161.3′ (RSA) to the list of known hosts.
^C
root@helghardhr:~#
Puis nous créont notre script de connection/déconnection vpn_ssh.sh dans /etc/init.d et nous lui donnons les droits nécéssaires :
root@helghardhr:~# cat >/etc/init.d/vpn_ssh.sh
#!/bin/bash#/etc/init.d/vpn_ssh.sh
case $1 in
start)
su -c “ifup tun0″;
;;
stop)
su -c “ifup tun0″;
;;
*)
echo -e “\n$0 start|stop\n”;
esac
^D
root@helghardhr:~# chown root:logout /etc/init.d/vpn_ssh.sh
root@helghardhr:~# chmod 750 /etc/init.d/vpn_ssh.sh
root@helghardhr:~#
Heu … Si j’oublie rien la, tout est bon coté client
Coté serveur :
Il faut modifier le fichier /etc/ssh/sshd_config :
#PermitRootLogin no #normal+tunnels
#b_vpn server only
PermitRootLogin forced-commands-only
PermitTunnel point-to-point
#e_vpn server only
Puis nous allons limiter la session ssh du root à l’activation et désactivation du vpn
et donner la clef publique du root située dans/root/.ssh/id_rsa.pub de la machine cliente au serveur,
en modifiant le fichier /root/.ssh/authorized_keys :
tunnel=”0″,command=”/sbin/ifdown tun0;/sbin/ifup tun0″ ssh-rsa AAAA[...]== root@asghardhr
Maintenant nous rajoutons l’interface en modifiant /etc/network/interfaces :
iface tun0 inet static
address 10.254.254.2
netmask 255.255.255.252
pointopoint 10.254.254.1
On active le forwarding en modifiant /etc/sysctl.conf en ajoutant la directive : net.ipv4.conf.default.forwarding=1
root@lifthrasir:~# cat >>/etc/sysctl.conf
net.ipv4.conf.default.forwarding=1
^C
root@lifthrasir:~# reboot
Et oué c’est pas glop mais si le forwarding étais pas activé faut redémarrer . (Peut-être que je me trompe aussi à vérifié ![]()
Et voila pour la configuration coté serveur .
C’est bien beau mais il est ou le vpn ? ôÔ
Et bien on se connecte en activant l’interface tun0 et on test avec un ping et on se déconnecte comme on est venue :
logout@helghardhr:~$ /etc/init.d/vpn_ssh.sh start
password :
logout@helghardhr:~$ ping -c 2 10.99.99.1
PING 10.99.99.1 (10.99.99.1) 56(84) bytes of data.
64 bytes from 10.99.99.1 icmp_seq=1 ttl=64 time=96.3 ms
64 bytes from 10.99.99.1 icmp_seq=2 ttl=64 time=94.9 ms
— 10.99.99.1 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 94.954/95.670/96.387/0.780 ms
logout@helghardhr:~$ /etc/init.d/vpn_ssh.sh stop
Password :
Exit request sent.
Vous trouverez le script d’installation clients et serveurs ici
{Non ternminé}
Amusez vous bien ![]()



