On installe OpenVPN depuis les dépôts officiels de Debian :
apt-get install openvpn
Une fois l’installation terminée, on copie les fichiers de configurations :
cd /etc/openvpn/ mkdir easy-rsa cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* easy-rsa/
On passe maintenant à la configuration d’OpenVPN.
Grâce aux fichiers et scripts que l’on a copié dans le répertoire précédent, on va pouvoir paramétrer notre serveur VPN.
Tout d’abord, on édite le fichier /etc/openvpn/easy-rsa/vars et on modifie les lignes suivantes :
vim /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="FR"
export KEY_PROVINCE="IDF"
export KEY_CITY="PARIS"
export KEY_ORG="Old Sch00l"
export KEY_EMAIL="toto@old-sch00l.org"
On lance ensuite les commandes suivantes pour générer les clefs et les certificats :
cd /etc/openvpn/easy-rsa/ source vars ./clean-all ./build-dh ./pkitool --initca ./pkitool --server server openvpn --genkey --secret keys/tifab.key
On copie ensuite les clefs et certificats à la racine de /etc/openvpn :
cd /etc/openvpn/easy-rsa/keys cp ca.crt dh1024.pem server.crt server.key tifab.key ../../
On créait maintenant un dossier dans lequel le processus sera chrooté et un dossier qui contiendra les configurations des différents clients :
mkdir /etc/openvpn/jail mkdir /etc/openvpn/confuser
On créait le fichier de configuration général (à adapter selon les noms que vous avez donné à vos dossiers et fichiers) :
cd /etc/openvpn vim server.conf
# Server TCP/5678
mode server
proto tcp
port 5678
dev tun
# Certificates and keys
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
tls-auth tifab.key 0
cipher AES-256-CBC
# Network
server 10.10.10.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.2.3.4"
push "dhcp-option DNS 5.6.7.8"
keepalive 10 120
# Security
user nobody
group nogroup
chroot /etc/openvpn/jail
persist-key
persist-tun
comp-lzo
# Log
verb 3
mute 20
status openvpn-status.log
log-append /var/log/openvpn/openvpn.log
On teste que notre configuration fonctionne à l’aide de la commande suivante :
openvpn server.conf
On vérifie ensuite dans notre fichier de log que l’on trouve bien la ligne suivante :
Tue Dec 27 17:56:52 2011 Initialization Sequence Completed
A partir de là, si on lance le service, on pourra se connecter au vpn mais rien de plus car l’ip que l’on obtient n’est pas routée vers l’extérieur.
Pour cela, on applique le paramétrage suivant :
vim /etc/sysctl.conf
On ajoute :
net.ipv4.ip_forward = 1
Et on recharge sysctl :
sysctl -p
Et on ajoute une règle iptables pour le NAT:
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
A partir de maintenant les clients se connectant au VPN n’auront aucun soucis de fonctionnement.
Configuration d’un client OpenVPN :
Nous allons créer un clef pour le client que l’on nommera tifabmac :
cd /etc/openvpn/easy-rsa source vars ./build-key-pass tifabmac
Le script build-key-pass vous demandera un mot de passe pour protéger votre clef.
Ce script va générer les 3 fichiers suivants :
– tifabmac.crt : certificat client
– tifabmac.csr : certificat serveur
– tifabmac.key : clef client
On copie ces fichiers dans notre dossier /etc/openvpn/confuser :
mkdir /etc/openvpn/confuser/tifabmac cp tifabmac.crt tifabmac.key ca.crt tifab.key /etc/openvpn/confuser/tifabmac/
On se positionne maintenant dans le dossier /etc/openvpn/confuser/tifabmac et on créait le fichier client.conf :
cd /etc/openvpn/confuser/tifabmac vim client.conf
Et on colle les paramètres suivants :
# User
client
dev tun
proto tcp-client
remote ip.du.ser.veur 5678
resolv-retry infinite
cipher AES-256-CBC
# Certificates and keys
ca ca.crt
cert tifabmac.crt
key tifabmac.key
tls-auth tifab.key 1
# Security
nobind
persist-key
persist-tun
comp-lzo
verb 3
On récupère tous les fichiers dans /etc/openvpn/confuser/tifabmac/ afin de pouvoir configurer notre client.
Pour ma part il s’agit d’un client pour MacOSX : Tunnelblick
On lance le service et on peut maintenant se connecter à notre VPN :
/etc/init.d/openvpn start