Aller au contenu principal

OpenVPN — VPN

OpenVPN est une solution de VPN mature basée sur TLS (via OpenSSL), fonctionnant en mode routé (TUN, couche 3) ou pont (TAP, couche 2). Historiquement le standard de facto avant l'arrivée de WireGuard, encore très répandu pour sa flexibilité (authentification par certificats, intégration LDAP/RADIUS, traversée de proxy HTTP).

Installation

sudo apt install openvpn easy-rsa # Debian/Ubuntu
sudo dnf install openvpn easy-rsa # Fedora/RHEL

Chaque tunnel correspond à une instance systemd nommée d'après le fichier de config :

sudo systemctl enable --now openvpn@monvpn # charge /etc/openvpn/monvpn.conf

Fichiers de configuration

FichierRôle
/etc/openvpn/server/<nom>.confConfig serveur
/etc/openvpn/client/<nom>.conf (ou .ovpn)Config client
/etc/openvpn/easy-rsa/PKI pour générer certificats serveur/client

Commandes utiles

systemctl status openvpn@<nom>
openvpn --config client.ovpn --verb 4 # test manuel en avant-plan, verbeux

Exemple de configuration

# client.ovpn (extrait minimal)
client
dev tun
proto udp
remote vpn.exemple.fr 1194
ca ca.crt
cert client.crt
key client.key
cipher AES-256-GCM

Sécurisation

  • Utiliser exclusivement des chiffrements AEAD modernes (AES-256-GCM, AES-128-GCM) — éviter les vieux ciphers CBC non authentifiés.
  • Activer tls-auth/tls-crypt : ajoute une couche HMAC qui protège contre le DoS et le fingerprinting du port OpenVPN avant même la négociation TLS.
  • Révoquer systématiquement les certificats des postes perdus/compromis (easyrsa revoke, publier la CRL).
  • Restreindre les routes poussées au strict nécessaire (push "route ...") plutôt qu'un accès tout-réseau par défaut.

Logs & dépannage

journalctl -u openvpn@<nom>
# ou selon la distro :
tail -f /var/log/openvpn/openvpn.log

Voir aussi