openvpn
Table des matières
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 <ca> -----BEGIN CERTIFICATE----- XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE---- XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE----- </cert> <key> -----BEGIN ENCRYPTED PRIVATE KEY----- XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX -----END ENCRYPTED PRIVATE KEY----- </key> key-direction 1 <tls-auth> -----BEGIN OpenVPN Static key V1----- XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX -----END OpenVPN Static key V1----- </tls-auth>
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/
- 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/
openvpn.txt · Dernière modification : de Administrateur