Tunnel VPN SSL avec OpenVpn

Prérequis

Openvpn n’étant pas un paquet standard de CentOS, je dois ajouter le dépôt que j’aime bien, j’ai nommé Dag Wieers !

Ce dépôt contient une foultitude de paquets compilés pour ma distribution préférée, ce qui m’évite de devoir les compiler moi-même.

– Installation du dépot Dag Wieers – Rpmforge

rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Ceux qui utilisent une des autres distributions gérées par ce dépot ( fedora et redhat ) , peuvent se conférer à la documentation de DAG, pour savoir configurer yum dans leur cas.

– Installation d’openvpn

yum -y install openvpn

La bibliothèque de compression lzo sera également installée automatiquement.

Création du certificat

Openvpn utilise des certificats pour authentifier le serveur et les postes clients, donc on doit bien créer les certificats pour nos machine.

Pour ce faire, voici la procédure à suivre :

cd /etc/openvpn
cp -ar /usr/share/doc/openvpn-/easy-rsa .
cd easy-rsa
vi vars

On édite ce fichier, car c’est lui qui contient un certain nombre de variables qu’il est souhaitable de changer si on ne veut pas les taper manuellement à chaque création de certificat.

Par exemple :

export KEY_SIZE=1024
export KEY_COUNTRY=FR
export KEY_PROVINCE=Tarn
export KEY_CITY=Castres
export KEY_ORG="LINUXTIPS"
export KEY_EMAIL="monemail@monfai.fr"

Je modifie aussi en début de fichier le dossier par défaut.
Le script fais un pwd pour savoir quel est le dossier de base, je préfère le fixer en dur comme ceci:

#export D=`pwd`
export D="/etc/openvpn/easy-rsa"

On charge ces valeurs en mémoire,

. vars

On crée ensuite les dossiers et fichiers nécessaires :

mkdir keys
touch keys/index.txt
echo "01" > keys/serial

On crée enfin les certificats de l’autorité de certification, du serveur et du poste client.

source build-dh
source build-ca
source build-key-server MonServeurVPN
source build-key MonClientVPN

Il faudra transférer de manière sûre les fichiers ca.crt, MonClientVPN.crt et MonClientVPN.key au client openvpn.

Configuration « Many on One server »

Cette configuration donne la possibilité de connecter plusieurs clients à notre serveur OpenVPN.

Dans cet exemple, nous prenons comme parti que le serveur VPN a comme adresse IP publique 10.0.0.1 et est connecté aux réseaux privés 10.0.2.0/24 et 10.0.3.0/24.

Le serveur VPN utilisera localement le réseau 10.0.1.0/24.

Modèle de fichier de configuration du client openvpn.conf


cert MonClientVPN.crt
key MonClientVPN.key

# Wireless networks often produce a lot
# of duplicate packets. Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings

# These settings are shared by all clients
client
ns-cert-type server
user nobody
group nobody
remote 10.0.0.1 1194
ca cacert.pem
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3


Voici le modèle de configuration openvpn.conf du serveur VPN


# If you want to accept connections on just one interface, set "local"
;local a.b.c.d
port 1194
proto udp
dev tun

dh /etc/openvpn/easy-rsa/keys/dh1024.pem
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/MonServeurVPN.crt
key /etc/openvpn/easy-rsa/keys/MonServeurVPN.key

client-config-dir /etc/openvpn/ccd

server 10.0.1.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
push "route 10.0.0.0 255.255.255.0"
push "route 10.0.2.0 255.255.255.0"
push "route 10.0.3.0 255.255.255.0"
push "dhcp-option DNS 10.0.2.2"
push "dhcp-option WINS 10.0.0.2"
push "dhcp-option DOMAIN vpn.mondomaine.local"
;push "dhcp-option NTP 10.0.0.1"

client-to-client
keepalive 10 120
max-clients 100

comp-lzo
user nobody
group nobody
persist-key
persist-tun

verb 4
;mute 20
log /var/log/openvpn/dynamic
status /var/log/openvpn/status


Créez le dossier ccd et le fichier ipp.txt

mkdir /etc/openvpn/ccd
touch /etc/openvpn/ccd/ipp.txt
chown nobody: /etc/openvpn/ccd/ipp.txt

Créez le dossier de log et changez le propriétaire en nobody ( le compte qu’utilise openvpn quand il a démarré )

mkdir /var/log/openvpn
chown nobody: /var/log/openvpn

Démarrage et activation du service OpenVPN

Méthode classique sur CentOS et Redhat,
service openvpn start pour démarrer le service et chkconfig openvpn on pour l’activer au boot du serveur.

Si un client connecté possède un sous-réseau derrière lui, nous pouvons ajouter cette route en utilisant un fichier ccd.

Ce fichier doit porter le même nom que le client « Common Name » de son certificat. Consultez le status log pour vérifier comment l’écrire.

Entrer la route à ajouter dans le fichier comme ceci :

iroute 192.168.1.0 255.255.255.0

On peut aussi ajouter la route dans la configuration générale comme ceci :

route 192.168.1.0 255.255.255.0

Maintenant, vous pouvez tester votre connexion VPN.

Démarrez openvpn sur le serveur et le client.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.