OpenVPN on Debian 12
Sommaire
Installation et configuration serveur OpenVPN sur Debian 12
Installation
apt install openvpn easy-rsa
Génération de l'autorité de certification
make-cadir ~/openvpn-ca && cd ~/openvpn-ca
Editez le ficher vars pour adapter a vos informations
set_var EASYRSA_REQ_COUNTRY "FR" set_var EASYRSA_REQ_PROVINCE "France" set_var EASYRSA_REQ_CITY "Paris" set_var EASYRSA_REQ_ORG "Sn4kY.net" set_var EASYRSA_REQ_EMAIL "me@example.net" set_var EASYRSA_REQ_OU "DSI"
Puis générez la CA
./easyrsa init-pki ./easyrsa build-ca
Téléchargez la clé DH pré calculée
curl https://ssl-config.mozilla.org/ffdhe2048.txt > pki/dh2048.pem
Créer la clé des secrets pré-partagés :
openvpn genkey --secret pki/ta.key
Génération du certificat du serveur
./easyrsa gen-req server nopass ./easyrsa sign-req server server
Configurer le serveur openvpn
Utiliser le fichier d'exemple du serveur pour créer une base :
grep -Pv "^#|^;|^$" /usr/share/doc/openvpn/examples/sample-config-files/client.conf > /etc/openvpn/server.conf
Copier les fichiers nécessaire :
cp /root/openvpn-ca/pki/{ca.crt,dh2048.pem,ta.key} /etc/openvpn cp /root/openvpn-ca/pki/issued/server.crt /etc/openvpn cp /root/openvpn-ca/pki/private/server.key /etc/openvpn
Puis éditez le fichier /etc/openvpn/server.conf pour ajouter/vérifier les infos suivantes
ca ca.crt cert server.crt key server.key # Keep this file secure dh dh2048.pem ;tls-auth ta.key 1 tls-crypt ta.key cipher AES-256-CBC data-ciphers AES-256-CBC log /var/log/openvpn/openvpn.log log-append /var/log/openvpn/openvpn.log push "redirect-gateway def1 bypass-dhcp" # Router tout le trafic réseau au travers du VPN
La configuration est prête. Sauvegarder le fichier, puis démarrer le service
systemctl enable --now openvpn@server
Activer le forward d'IP et le masquage d'adresse
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.d/local.conf sysctl -p /etc/sysctl.d/local.conf
Créer des configurations clients
Commençons par créer un template
grep -Pv "^#|^;|^$" /usr/share/doc/openvpn/examples/sample-config-files/client.conf > ~/openvpn-ca/template_client.conf
éditer le fichier pour configurer les variables
remote my-server-1 1194 # mettre l'IP ou le nom de domaine du serveur ;ca ca.crt ;cert client.crt ;key client.key ;tls-auth ta.key 1 cipher AES-256-CBC data-ciphers AES-256-CBC key-direction 1
Création d'un script créer un certificat et générer le fichier de cnfig : ~/openvpn-ca/config_gen.sh
#!/bin/bash # check presence of arg if [[ $# -ne 1 ]] then echo "Usage: $0 login" exit 1 fi ./easyrsa gen-req $1 nopass ./easyrsa sign-req client $1 KEY_DIR=/root/openvpn-ca/pki OUTPUT_DIR=/root BASE_CONFIG=/root/openvpn-ca/template_client.conf cat ${BASE_CONFIG} \ <(echo -e '<ca>') \ ${KEY_DIR}/ca.crt \ <(echo -e '</ca>\n<cert>') \ ${KEY_DIR}/issued/${1}.crt \ <(echo -e '</cert>\n<key>') \ ${KEY_DIR}/private/${1}.key \ <(echo -e '</key>\n<tls-crypt>') \ ${KEY_DIR}/ta.key \ <(echo -e '</tls-crypt>') \ > ${OUTPUT_DIR}/${1}.ovpn chmod 600 ${OUTPUT_DIR}/${1}.ovpn echo "Config file to sent to the client : ${OUTPUT_DIR}/${1}.ovpn"
Rendez le script exécutable, puis exécutez le
chmod 700 ~/openvpn-ca/config_gen.sh ./config_gen.sh client1
cela créé un fichier client1.ovpn tout prêt qu'il suffit d'importer dans le client OpenVPN.