Configurer un serveur OpenVPN
Tu as lu le billet sur la sécurité VPN ? tu veux pouvoir te connecter à ton réseau distant en toute sécurité ? Tu es curieux ? Tu as du temps à perdre ?
Tu es donc au bon endroit ! Fais toi un café, installe toi confortablement et amuse toi bien !
La configuration a été faite sur Debian 8.8, la configuration peut-être différente selon la version de debian ou le système d’exploitation (Red Hat, ArchLinux)
Configuration Serveur
Rappelons qu’il existe deux modes de fonctionnement, le « routé » et le « bridgé »
Routé => Connecter un appareil à un réseau distant
Bridgé => Relier deux sous-réseaux entre eux
Nous utiliserons le mode Routé pour se connecter à un réseau distant sécurisé
Installer les paquets nécessaires
apt-get update && apt-get install openvpn
Copier les fichiers de configurations
mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
Éditez le fichier vars, Modifiez les lignes suivantes
$vi /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
Il s’agit des informations contenus dans le certificat, modifiez les selon vos préférences
On génère les certificats (.crt) et les clés (.key)
cd /etc/openvpn/easy-rsa
source vars
./clean-all
./build-dh
./pkitool --initca
./pkitool --server *server.my.domain*
openvpn --genkey --secret keys/ta.key
server.my.domain : Le nom DNS de votre serveur
les clefs et certificats sont présentes dans présentes dans /etc/openvpn/easy-rsa/keys
Copier les fichiers .crt .key .pem dans /etc/openvpn
cd /etc/openvpn/easy-rsa/keys
cp -a *.crt /etc/openvpn
cp -a *.key /etc/openvpn
cp -a *.pem /etc/openvpn
La création des certificats serveurs est terminée
Vous pouvez chrooter le processus Openvpn pour éviter les dégâts en cas de failles. D’un point de vue sécurité, l’utilisateur sera comme « enfermés » dans ce répertoire et ne pourra en théorie pas en sortir.
mkdir /etc/openvpn/jail
mkdir /etc/openvpn/jail/tmp
Créer le fichier de configuration principale du serveur
$vi /etc/openvpn/server.conf
#Conf Server
mode server
dev tun
proto udp
port 1194
#Clef & Certificats
ca ca.crt
cert server.my.domain.crt
key server.my.domain.key
dh dh2048.pem
tls-auth ta.key 0
cipher AES-256-CBC
#Reseau
server 172.16.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
#Securite
user nobody
group nogroup
chroot /etc/openvpn/jail
persist-key
persist-tun
comp-lzo
# Log
verb 3
mute 20
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
Ce fichier est à adapter selon votre configuration
server.my.domain.crt : fichier certificat du serveur
server.my.domain.key : fichier clef du serveur
172.16.0.0 255.255.255.0 : sous-réseau du VPN
Tester la configuration
openvpn server.conf
Si il n’y a pas d’erreur, redémarrez
reboot
Il faut maintenant router le sous-réseau VPN entre les interfaces pour que le serveur joue le rôle de routeur entre tun0 et l’interface physique (eth0 pour ma part)
Autoriser le forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
Activer la configuration au redémarrage
sysctl -w net.ipv4.ip_forward=1
Ouvrir le NAT entre les interfaces
iptables -t nat -A POSTROUTING -s reseauVPN/Masque -o eth0 -j MASQUERADE
Rendre la configuration active au redémarrage
iptables-save > /etc/iptables.rules
Configuration client
Créer la clef pour l’utilisateur
cd /etc/openvpn/easy-rsa
source vars
./build-key K-lfa
Utilisez l’option – -pass pour chiffrer la clef privée
./build-key –-pass K-lfa
Le script a généré trois fichiers dans /etc/openvpn/easy-rsa/keys/ :
· K-lfa.crt : certificat pour le client
· K-fa.key : clé pour le client
· K-lfa.csr : certificat à garder sur le serveur
Déplacer les fichiers dans le dossier de configuration client
mkdir /etc/openvpn/clientconf/
mkdir /etc/openvpn/clientconf/K-lfa
cp /etc/openvpn/ca.crt /etc/openvpn/clientconf/K-lfa
cp /etc/openvpn/ta.key /etc/openvpn/clientconf/K-lfa
cp /etc/openvpn/easy-rsa/keys/K-lfa.crt /etc/openvpn/clientconf/K-lfa
cp /etc/openvpn/easu-rsa/keys/K-lfa.key /etc/openvpn/clientconf/K-lfa
Créer le fichier de configuration client
$vi /etc/openvpn/clientconf/K-lfa/client.conf
#Client
client
dev tun
proto udp
remote Adresse 88.44.22.11:1194 #Votre IPpublique:Port
resolv-retry infinite
cipher AES-256-CBC
# Clefs
ca ca.crt
cert K-lfa.crt
key K-lfa.key
tls-auth ta.key 1
#Securite
nobind
persist-key
persist-tun
comp-lzo
verb 3
Créer le fichier pour la compatibilité client Windows
cp /etc/openvpn/clientconf/K-lfa/client.conf /etc/openvpn/clientconf/K-lfa/client.ovpn
Si vous passez par un proxy, il suffit d’ajouter cette ligne au client.conf
http-proxy adresse_ip_proxy port_proxy passwd.txt basic
passwd.txt (à ajouter dans le dossier contenant client.conf sur le client) contient en première ligne le login de connexion au proxy et en deuxième ligne le mot de passe
Quelques commandes utiles :
openvpn --show-ciphers : Afficher les algorithmes de chiffrement disponibles
openvpn --show-digest : Afficher les algorithmes de hashage de disponibles
openvpn --show-tls : Afficher l’état du chiffrement
openvpn --test-crypto : Lancer un test de crypto (A utiliser pour le debugging)
openvpn --show-gateway : Afficher les infos de la passerelle par défault