Installation serveur

Pour installer un serveur PPP over SSH pouvant accepter différentes connexions, il faut s'assurer d'avoir les options adéquates dans le kernel. Les options sont les mêmes que celles pour le client.

Ensuite, une fois le noyau et les modules recompilés et installés correctement, les modifications à apporter au niveau du système sont :

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