linux:openvpn

OpenVPN

Relier 2 réseaux privés de manière sécurisée via Internet.

Soit 2 réseaux:

  • 192.168.1.0/24 dit lan1
  • 192.168.2.0/24 dit lan2

Pour faire simple, le serveur OpenVPN fait passerelle. On prendra la dernière ip disponible (.254).

Sur le lan1, une machine fait office de serveur OpenVPN. Elle a donc comme adresse ip 192.168.1.254 et s'appelle serveur.lan1. Sur le lan2, une machine fait office de client OpenVPN. Elle a comme adresse ip 192.168.2.254 et s'appelle clientvpn.lan2.

Une plage sera reservée pour le tunnel, en 172.16.254.X. Elle sera par exemple en 172.16.254.1 sur le serveur OpenVPN, et attribuée automatiquement sur le client. Nos 2 machines OpenVPN auront donc chacune une interface sur ce reseau, interface qui sera créée par OpenVPN (normalement tap0).

La procédure à suivre est la suivante:

  1. Installation et configuration d'OpenVPN sur le serveur
  2. Creation des certificats SSL
  3. Installation et configuration d'OpenVPN sur le client
  4. Configuration des tables de routage

Installation

L'installation sur la machine serveur.lan1 du paquet OpenVPN se fait avec la commande suivante:

yum install openvpn

Configuration

Pour la configuration du serveur OpenVPN, création d'un fichier /etc/openvpn/vpn.conf avec le contenu suivant:

port 1194
proto tcp
dev tap

cipher AES-256-CBC

ca /etc/pki/CA/ca.crt
cert /etc/pki/openvpn/serveur.crt
key /etc/pki/openvpn/serveur.key
dh /etc/pki/openvpn/dh.pem

ifconfig 172.16.254.1 255.255.255.0
server-bridge 172.16.254.1 255.255.255.0 172.16.254.50 172.16.254.100

ifconfig-pool-persist ipp.txt

client-to-client

keepalive 10 120

comp-lzo

max-clients 100

user nobody
group nobody

status /var/log/vpn-status.log
log /var/log/vpn.log

verb 3

Les options port et proto permettent de définir le protocole utilisé (par défaut udp) et le port (par defaut 1194).

L'option dev permet d'indiquer quel type de tunnel utiliser, tap pour du niveau 2 (ethernet), tun pour du niveau 3 (ip). Ici l'option tap générera normalement une interface tap0 sur le serveur.

L'option cipher permet d'indiquer le type de chiffrement utiliser.

Les options ca, cert, key et dh sont en rapport avec les certificats SSL que nous allons générer plus tard.

L'option ifconfig permet de configurer l'adresse ip du point d'entrée du tunnel, qui sera portée par tap0.

L'option server-bridge permet de simplifier la mise en place de VPN de type tap (ethernet), avec la gestion d'un DHCP pour l'attribution dynamique des adresses IP aux clients VPN.

L'option ifconfig-pool-persist permet de rendre statique autant que possible les adresses attribuées aux clients VPN.

L'option client-to-client permet d'autoriser les flux entre les clients. Sinon par défaut seuls les flux clients serveur sont autorisés.

Le reste est plutôt explicite.

Gestion des certificats

Pour authentifier les clients, des certificats SSL vont être émis par notre serveur. Il fera donc office d'autorité de certification (CA).

Pour faciliter la gestion des certificats, les scripts easy-rsa sont installés avec le paquet OpenVPN. Ils sont présents dans le repertoire /usr/share/openvpn/easy-rsa/2.0/.

Il faut commencer par éditer le fichier /usr/share/openvpn/easy-rsa/2.0/vars, pour les clefs suivantes:

export KEY_COUNTRY="FR"
export KEY_PROVINCE="Ile de France"
export KEY_CITY="Paris"
export KEY_ORG="VPN"

Une fois le fichier éditer, il faut le sourcer pour que ces variables soit présentes dans notre environnement shell:

cd /usr/share/openvpn/easy-rsa/2.0
source vars
./clean-all

Nous allons maintenant générer le fichier DH (Diffie Hellman) qui sert lors de l'initialisation du tunnel. Cette phase utilise un chiffrage symétrique reposant sur ce fichier, avant de pouvoir passer au chiffrement assymétrique.

Pour générer le fichier DH:

./build-dh
  • linux/openvpn.txt
  • Dernière modification : 2021/07/30 08:58
  • de madko