Pour simplifier la mise en place d’un serveur OpenVPN, Angristan met à disposition un script « forké » de l’Url https://github.com/Nyr/openvpn-install.
Ce script permet d’installer et configurer votre propre serveur VPN en moins de 5 Minutes en générant un fichier de configuration au format .ovpn utilisable avec le client OpenVPN, sur tous les systèmes d’exploitation GNU/Linux, MacOS X et Windows.
Ce script par défaut permet :
- Pas de logs
- Utilisation uniquement du protocole TLS 1.2
- Chiffrement AES-256-CBC
- Serveurs DNS de FDN
Script d’installation automatique d’OpenVPN pour Debian, Ubuntu et CentOS
Ce script, je l’ai testé uniquement sur Debian 8.
- Téléchargement du script :
wget --no-check-certificate https://raw.githubusercontent.com/Angristan/OpenVPN-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh
Ensuite, il suffit de répondre aux questions :
Une fois terminé, le script génère un fichier de configuration au format .ovpn dans le répertoire /root
. Ce fichier est à transférer sur le poste client.
Configuration du poste client
Par défaut le fichier généré par le serveur est fonctionnel de suite, mais on va lui apporter quelques petites modifications pour forcer l’utilisation des serveurs DNS défini par le serveur OpenVPN et l’ajout de paramètres pour la gestions des logs.
Installation sur le poste client des paquets nécessaire pour se connecter au serveur OpenVPN
Normalement le paquet resolvconf devrait déjà être installé, dans le doute je l’ai ajouté.
- Arch Linux / Manajaro :
sudo pacman install openvpn resolvconf
sudo apt-get- install openvpn resolvconf
yum install openvpn resolvconf
Utiliser les serveurs DNS définit par le serveur
Sur le poste client installer le paquet openvpn-update-resolv-conf :
- Arch Linux / Manjaro :
yaourt -S openvpn-update-resolv-conf
Pour les autres distributions :
wget --no-check https://github.com/masterkorp/openvpn-update-resolv-conf/blob/master/update-resolv-conf.sh
sudo mv update-resolv-conf.sh /etc/openvpn/
C’est grâce à openvpn-update-resolv-conf , qu’il va être possible de forcer l’utilisation des serveurs DNS définit sur le serveur OpenVPN.
Modification du fichier de configuration client.ovpn pour forcer l’utilisation des serveurs DNS
nano client.ovpn
Ajouter ces lignes :
dhcp-option DNS script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf
Activation des logs
L’activation des logs n’est pas obligatoire pour le bon fonctionnement d’OpenVPN, mais dans mon cas j’ai activé les logs pour faire du monitoring avec Munin.
Pour activer les logs, modifier comme suit le fichier de configuration sur le serveur OpenVPN :
nano /etc/openvpn/server.conf
Ajouter :
#log verb 3 mute 20 status /var/log/openvpn-status.log log-append /var/log/openvpn.log
Pour la prise en compte de l’ajout, relancer le serveur OpenVPN :
systemctl restart openvpn
Connexion du poste client sur le serveur OpenVPN
Pour se connecter au serveur OpenVPN, saisir la commande :
sudo openvpn client.ovpn
On peut vérifier l’adresse IP de l’interface tun0
:
ip a | grep tun0
6: tun0: mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 inet 10.8.0.3/24 brd 10.8.0.255 scope global tun0
Et vérifier aussi le serveur DNS utlisé :
Règles iptables pour le serveur OpenVPN
Pour ajouter une couche de sécurité, on va appliquer des règles iptables au serveur OpenVPN.
Pour simplifier la mise en place, voici un petit script créé par Denis Rosenkranz :
#!/bin/bash ##Créé par Denis ROSENKRANZ ##denisrosenkranz.com start() { echo -n "Application des regles IpTables: " #Suppresion des anciennes rêgles iptables -F iptables -X #Activation de l'IP Forwarding echo 1 > /proc/sys/net/ipv4/ip_forward #Mise en place des regles iptables iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT echo " [termine]" echo } stop() { echo -n "Flush des regles IpTables: " iptables -F iptables -X echo " [termine]" echo } case $1 in start) start ;; stop) stop ;; restart) stop start ;; status) /sbin/iptables -L /sbin/iptables -t nat -L ;; *) echo "Usage: ovpn {start|stop|restart|status}" esac exit