Cryptographie et tunnel OpenVPN
08/02/2005
 Christian CALECA 
Liste des cours

Applications

Accueil ] [ Avant propos ] [ Les clés du chiffrement ] [ Méthodes ] [ OpenVPN simple ] [ OpenSSL ] [ Tunnel sécurisé ] [ Applications ]


A partir d'une configuration très classique comme celle-ci, où deux hôtes sont connectés à l'internet :

classique

 Il est possible de réaliser pas mal de choses...

Un tunnel sécurisé entre les deux hôtes...

Connectés directement à l'internet

direct

C'est le cas le plus simple, que nous avons vu dans la démonstration, et qui pourra probablement intéresser pas mal de monde, surtout si je vous dis qu'OpenVPN existe également pour Windows.

Notez que pour réaliser un tunnel entre deux systèmes Windows, il existe une solution intégrée, à base de PPtP, protocole Microsoft, qui réalise elle aussi un tunnel point à point. Mais avec OpenVPN, vous pourrez réaliser un tunnel entre plate-formes différentes.

Ou derrière un pare-feu

Nous avons vu qu'OpenVPN crée un tunnel sur UDP, en utilisant un seul port. Il devient alors très simple, si les pare-feux savent faire du "port forwarding", de prolonger le tunnel dans les réseaux privés, jusqu'aux hôtes que l'on souhaite relier :

pare-feu

Dans cette illustration, et en gardant les conventions de la manipulation précédente, il suffira de modifier quelques détails :

Si les deux passerelles sont de type Linux, avec un kernel 2.4 ou supérieur, une règle de type :

iptables -t NAT -A PREROUTING -i ppp0 -p udp --dport 8147 -j DNAT --to-destination xx.xx.xx.xx

ppp0 peut-être autre chose, suivant le type de connexion à l'internet, xx.xx.xx.xx étant l'adresse IP de l'extrémité du tunnel dans le réseau considéré.

Interconnecter les deux réseaux privés

interconnecter

Si AARON et CYCLOPE sont les routeurs/pare-feux des réseaux A et B, à partir du moment où l'on a établi un tunnel entre ces deux machines, il n'y a aucune raison de ne pas pouvoir établir une route entre les réseaux A et B à travers ce tunnel. Alors, tous les hôtes de A pourront communiquer avec tous les hôtes de B et réciproquement, nous ramenant à une configuration vue avec le tunnel GRE, mais avec plus de sécurité (et moins de bande passante).

Imaginons :

Il suffira alors d'écrire quelques routes bien senties sur les deux passerelles:

route add -net 192.168.0.0 gw 192.168.25.2 netmask 255.255.255.0
route add -net 192.168.1.0 gw 192.168.25.1 netmask 255.255.255.0

Bien entendu, il ne faudra pas oublier le pare-feu, en lui permettant le "forward" entre le tunnel et le réseau privé sur chacune des passerelles, et nos deux réseaux A et B seront interconnectés.

OpenVPN permet d'ailleurs d'effectuer automatiquement l'ajout de la route dans ses paramètres de configuration, par l'option "--route".

Par exemple, pour le démarrage du serveur sur AARON :

openvpn --port 8147 \
> --dev tun1 \
> --ifconfig 192.168.25.1 192.168.25.2 \
> --route 192.168.0.0 255.255.255.0 192.168.25.2 \
> --tls-server \
> --dh dh1024.pem \
> --ca aaron-ca.crt 
> --cert aaron.crt \
> --key aaron.key 
> --reneg-sec 21600 
> --comp-lzo 
> --verb 5 

Et vous retrouverez automatiquement la bonne route dans la table de routage :

aaron:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.25.2    0.0.0.0         255.255.255.255 UH    0      0        0 tun1
...
192.168.0.0     192.168.25.2    255.255.255.0   UG    0      0        0 tun1
...
0.0.0.0         193.253.160.3   0.0.0.0         UG    0      0        0 ppp0
aaron:~#

je vous laisse trouver l'équivalent sur CYCLOPE.


Précédente ] [ Accueil ]