Ensuite, pour pouvoir créer des connexions utilisateur, il faut ajouter un fichier authorized_keys (touch vpn/.ssh/authorized_keys) puis restreindre les droits d'accès au propriétaire, ceci pour d'évidentes raisons de sécurité (chown vpn vpn/.ssh/authorized_keys; chmod 0600 vpn/.ssh/authorized_keys)
Pour ajouter une connexion, il faut entrer une ligne du type:
command="hostname ip_locale:ip_distante (options supplementaire de pppd)" clefs_ssh
Ce sont les clés RSA publics des clients.
Par exemple, pour connecter la machine yuko, on a rajoute la ligne suivante :
command="yuko 10.12.15.2:10.12.15.5" ssh-dss AAAAB3NzaC1kc3MAAACBAKmN0EHszYNVLNZU1wBR6wA3Ywy77selTHUQWp2//qeW2xUpdu/Qf9BKOjAUrkwHSzyh4QBshNNKsHH89ncYq/XFngiOhXnsmCuE5bPxcc0lSwbX8a+Ve6vSwudDxW3+bopv4FjExqAkuC89nEAdAqKpWyaf9B6Dlc6CG8NxHqLvAAAAFQDyBl/++1O96RSIpL8v7OCXTYzefwAAAIA43t2HjRrl6PBrnE6PZMigEt9MtDTV5ffh65QTsrr7mTc5ikJR4pjrlhzfQUL3p3ZLTwIaGRlbl56X8nUkXL5KnFTclWgawv2z3M6PLsMZXUPAu7m5belnImC3DyO5os+i4TnavFPEjycyHX76ym6GtBiOdtNzl3dPpPiNmh6jMAAAAIBpPjGSb0fZWieBSFfjGBnDQigScb9suEhySBAslFINB7vWxEZ9qpNNJNLbjwuiWlv+V2uF526gwp2DoznDwTRLtRC/YFZx54TASaBj9KAF/CYagpLyXNV/rqP8RauI1Z8VDIeIF5lR3mgT7xAdX/rSC0NtQQeZQ0sfw1lzz3uuUA== root@yuko
La clé ssh est de type ssh2. Elle nous a été communiquée par l'administrateur de la machine yuko.
Dans cet exemple, lorsque yuko se connectera à au serveur PPP over SSH, si la vérification de la clé réussie, la machine yuko obtiendra l'ip 10.12.15.5 (ceci grâce à PPP) et aura comme passerelle 10.12.15.2 (ip locale du serveur PPP over SSH)
Si la connexion PPP réussi, une nouvelle interface ppp est montée :
806: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast qlen 3 link/ppp inet 10.12.15.2 peer 10.1.12.15/32 scope global ppp0
et une nouvelle route est ajoutée dans la table de routage :
10.12.15.15 dev ppp0 proto kernel scope link src 10.12.15.2
Ainsi, pour un sniffer, les flux PPP over SSH donneront l'impression à l'attaquant qu'il n'y a qu'un flux SSH. Il n'aura aucun moyen de connaître la nature des données circulants à travers le flux SSH.
Ainsi, il ne verra qu'apparaître ce genre de paquets circulant sur le réseau.
T 81.56.245.43:1027 -> 217.167.120.134:22 [AP] ....]..9....... ...P......|...c*Z...B...~...y.Qb-...V5..<...6.n5 T 81.56.245.43:1027 -> 217.167.120.134:22 [AP] |D~P...u-.Lh......Gmy%..$..D..).....=G....=..C\.JO..%.U.....I...
Il est possible ensuite d'interconnecter plusieurs serveurs de VPN qui se partagent la classe 10.0.0.0/8 en différents sous-réseaux. Chacun ayant la délégation d'une plage d'ip et peuvent ainsi créer un grand réseau sécurisé basé sur Internet (ce qui implique l'utilisation de services de routages tel que zebra/quagga) le tout sans avoir aucune connaissance des ips réels des différentes passerelles. Pour faciliter l'utilisation de ce "réseau Internet" dans Internet, il est aussi possible de créer un nouveau TLD (.com, .net, .info ... sont des TLD) pour faciliter l'accès aux services disponibles sur le VPN. C'est ces services que propose le projet InsideNetworks (http://www.insidenetworks.net).
Ce genre d'infrastructure légère en terme de déploiement est intéressante pour interconnecter toutes les agences d'une société par exemple sur un même réseau virtuel.
root 2004-05-04