====== OpenVPN ====== ===== Installation d'un VPN ===== ==== Préparation serveur ==== - Installer OpenVPN : apt-get install openvpn - Copier EasyRSA (paquet facilitant la génération de certificats) dans le répertoire d'OpenVPN : cp -r /usr/share/easy-rsa/ /etc/openvpn - Renommer /etc/openvpn/easy-rsa/vars.example en /etc/openvpn/easy-rsa/vars et éditer le fichier : export KEY_COUNTRY="FR" export KEY_PROVINCE="FR" export KEY_CITY="FR" export KEY_ORG="exemple.com" export KEY_EMAIL="exemple@exemple.com" ==== Création clés et certificats côté serveur ==== - Initialiser PKI : ./easyrsa init-pki - Créer le CA : ./easyrsa build-ca nopass - Générer la clé pour le serveur : ./easyrsa gen-req myserver nopass - Signer le certificat du serveur avec le CA : ./easyrsa sign-req server myserver - Générer les paramètres d'échanges de clés Diffie-Helman : ./easyrsa gen-dh - Générer une clé statique : openvpn --genkey --secret ta.key - Déplacer les certificats et clés dans le répertoire de openvpn : cd /etc/openvpn/easy-rsa/pki mv ca.crt dh.pem private/myserver.key issued/myserver.crt /etc/openvpn/server/ - Création d'un répertoire jail dans lequel le demon openvpn sera chrooté : mkdir /etc/openvpn/jail - Création du fichier de conf server.conf Exemple de configuration pour un VPN en tun utilisant le port 443 : # Serveur TCP/443 mode server proto tcp port 443 dev tun # Clés et certificats ca ca.crt cert myserver.crt key myserver.key dh dh.pem tls-auth ta.key 0 cipher AES-256-CBC # Réseau server 10.0.0.0 255.255.255.0 keepalive 10 120 duplicate-cn client-to-client # Sécurité user nobody group nogroup chroot /etc/openvpn/jail persist-key persist-tun comp-lzo # Log verb 5 mute 20 status openvpn-status.log log-append /var/log/openvpn.log ==== Création clés et certificats pour le client ==== - Générer la clé pour le client : ./easyrsa gen-req client1 - Signer le certificat du serveur avec le CA : ./easyrsa sign-req client client1 - Copier la clé et les certificats dans le répertoire client : cp pki/ca.crt /etc/openvpn/client/ cp pki/issued/client1.crt /etc/openvpn/client/ cp pki/private/client1.key /etc/openvpn/client/ - Création du fichier de conf client.ovpn avec les clés et certificats Exemple d'un fichier de configuration client : # Client client dev tun proto tcp-client remote 93.184.216.34 443 resolv-retry infinite cipher AES-256-CBC auth SHA512 auth-user-pass persist-tun persist-key remote-cert-tls server tls-client comp-lzo -----BEGIN CERTIFICATE----- XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE----- -----BEGIN CERTIFICATE---- XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE----- -----BEGIN ENCRYPTED PRIVATE KEY----- XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX -----END ENCRYPTED PRIVATE KEY----- key-direction 1 -----BEGIN OpenVPN Static key V1----- XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX -----END OpenVPN Static key V1----- Redémarrer le serveur si l'interface tun0 n'est toujours pas présente ==== Configuration parfeu ==== On effectuera ici une configuration sous Nftables pour permettre la connexion à un VPN utilisant l'interface tun et le port 443 table inet filter { chain input { type filter hook input priority 0; policy accept; ../.. Reste configuration ../.. tcp dport https accept comment "Allow HTTPS" log prefix "Nftables_drop " drop } } table ip nat { chain prerouting { type nat hook prerouting priority -100; policy accept; } chain postrouting { type nat hook postrouting priority 100; policy accept; ip saddr 10.0.0.0/24 oif "eth0" masquerade } } ===== Trucs divers ===== * Dans /etc/openvpn/easy-rsa/vars, ne pas hésiter à modifier le champs EASYRSA_KEY_SIZE pour augmenter la taille des clés RSA générées ===== Sources/Docs ===== * Référence de configuration : [[https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/]] * [[https://debian-facile.org/doc:reseau:openvpn]] * Guide doc officielle : [[https://openvpn.net/community-resources/how-to/#setting-up-your-own-certificate-authority-ca-and-generating-certificates-and-keys-for-an-openvpn-server-and-multiple-clients]] * Création fichier de conf client en intégrant directement les clés et certificats : [[https://openvpn.net/faq/i-am-having-trouble-importing-my-ovpn-file/]] * Tuto : [[https://www.howtoforge.com/tutorial/how-to-install-openvpn-server-and-client-with-easy-rsa-3-on-centos-7/#step-configure-easyrsa-]]