OpenVPN on Debian 12

De Sn4kY
Aller à : navigation, rechercher

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.