Wiki adminsys - Cebador.fr

Wiki d'administration systèmes et réseaux.
Simples notes personnelles et non réelle documentation exhaustive.
Donc désolé pour les coquilles et les inexactitudes.
Doc sous licence GNU FDL 1.3

Outils pour utilisateurs

Outils du site


openvpn

OpenVPN

Installation d'un VPN

Préparation serveur

  1. Installer OpenVPN :
    apt-get install openvpn
  2. Copier EasyRSA (paquet facilitant la génération de certificats) dans le répertoire d'OpenVPN :
    cp -r /usr/share/easy-rsa/ /etc/openvpn
  3. 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

  1. Initialiser PKI :
    ./easyrsa init-pki
  2. Créer le CA :
    ./easyrsa build-ca nopass
  3. Générer la clé pour le serveur :
    ./easyrsa gen-req myserver nopass
  4. Signer le certificat du serveur avec le CA :
    ./easyrsa sign-req server myserver
  5. Générer les paramètres d'échanges de clés Diffie-Helman :
    ./easyrsa gen-dh
  6. Générer une clé statique :
    openvpn --genkey --secret ta.key
  7. 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/
  8. Création d'un répertoire jail dans lequel le demon openvpn sera chrooté :
    mkdir /etc/openvpn/jail
  9. 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

  1. Générer la clé pour le client :
    ./easyrsa gen-req client1
  2. Signer le certificat du serveur avec le CA :
    ./easyrsa sign-req client client1
  3. 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/
  4. 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

openvpn.txt · Dernière modification : de Administrateur