OpenVPN est un logiciel permettant de créer son serveur VPN. Un serveur VPN est utile pour chiffrer ses communications, contourner les restrictions géographique et permet de faciliter le télétravail en permettant de se connecter directement sur le réseau distant.
apt install openvpn easy-rsa
/etc/openvpn/nom_du_server
/usr/share/easy-rsa
dans le répertoire de travail./usr/share/easy-rsa/vars
# Taille de la clé de chiffrement
export KEY_SIZE=<2048|4096>
# Paramètres du certificat
export KEY_COUNTRY="FR"
export KEY_PROVINCE="FR"
export KEY_CITY="Laval"
export KEY_ORG="Whitecyber.corp"
export KEY_EMAIL="*******************"
export KEY_OU="VPN"
On renseigne ici les paramètres du certificat.
source vars
. On va ici mettre en mémoire les informations renseignées précédemment pour créer les certificats../build-ca
pour générer les certificats.Vérifiez dans le répertoire
keys
si les certificats sont bien présents.
./build-key-server <nom-serveur>
, puis vérifiez dans le répertoire keys
si les certificats existent.openvpn --genkey --secret /etc/openvpn/vldvpn/keys/ta.key
openssl dhparam 4096 > /chemin/keys/dh-4096.pem
/usr/share/doc/openvpn/examples/sample-config-files
port <numéro du port> #1194 par défaut
proto <udp/tcp>
dev tun/tap
# "dev tun" va créer un tunnel IP, "dev tap" va créer un tunnel ethernet
# Configuration des clés et certificats
ca /chemin/vers/ca.crt
cert /chemin/vers/vldvpn.crt
key /chemin/vers/vldvpn.key # This file should be kept secret
# Diffie hellman parameters.
# Generate your own with:
# openssl dhparam -out dh2048.pem 2048
dh /chemin/vers/dh2048.pem
tls-auth /chemin/vers/ta.key 0 # This file is secret
Bonne pratique : On va créer un utilisateur dédié au lancement de OpenVPN. Cela va éviter l'accès au compte root en cas d'intrusion via le protocole openvpn
adduser --system --shell /usr/sbin/nologin --no-create-home openvpn
user openvpn
group nogroup
source vars
./build-key <nom_client>
/usr/share/doc/openvpn/examples/sample-config-files
se nommant client.confclient
# Choisir le même paramètre que pour le serveur
;dev tap
dev tun
#Idem
;proto tcp
proto udp
#Adresse du serveur VPN
remote <ip> <port>
#Il faut créer l'utilisateur sur le client si besoin
user openvpn
group nogroup
#Veiller à ce que les liens soient adaptés au client
ca /chemin/vers/certificat_autorité/ca.crt
cert /chemin/vers/certificat/client.crt
key /chemin/vers/clé/client.key
tls-auth /chemin/vers/cle/tls/ta.key 1
Dans les bonnes pratiques, il faut dédier un serveur à la gestion des certificats. Ici, je vais créer directement les certificats sur le serveur VPN.
vars
en fonction du besoin./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req nomMachine nopass
./easyrsa sign-req server nomMachine
./easyrsa gen-req nomClient nopass
./easyrsa sign-req client nomClient
Objet | Emplacement | Confidentialité |
---|---|---|
Certificat Autorité ca.crt | pki/ca.crt | Publique |
Clé privé CA ca.key | pki/private/ca.key | Privé - Très sensible |
Certificat client client.crt | pki/issued/client.crt | Publique |
Clé privé client client.key | pki/private/client.key | Privé - Sensible |
Certificat serveur serveur.crt | pki/issued/serveur.crt | Publique |
Clé privé serveur serveur.key | pki/private/serveur.key | Privé - Sensible |
Le client aura besoin de :
Le serveur aura besoin de :