Mise à jour : Génération d’une clé 4096-bit et non plus 2048-bit + ajout d’une partie OpenVPN et systemd
OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel (VPN). Utiliser un VPN est entre autre une excellente solution pour contourner les restrictions de certains réseaux (universités, certains pays, etc…). La navigation web au travers d’un VPN est beaucoup plus rapide, confortable et sécurisée en comparaison avec l’utilisation d’un proxy.
Il existe différents protocoles VPN, PPTP IPsec et bien sur OpenVPN qui propose le chiffrement le plus élevé mais aussi de meilleures performances en termes de débit et de stabilité.
Installer et configurer un serveur OpenVPN est synonyme de nombreux avantages :
- Préserver votre vie privée
- Assurer votre sécurité
- Conserver votre liberté
- Contourner les restrictions internet d’un reseau
- Se protéger d’Hadopi
Installation d’OpenVPN
Commençons par installer OpenVPN et OpenSSL
sudo apt-get install openvpn openssl easy-rsa
Copiez ensuite les fichiers de configuration des certificats dans le répertoire d’OpenVPN
sudo mkdir /etc/openvpn/easy-rsa/ sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
Configuration d’OpenVPN
OpenVPN est installé il faut maintenant générer des clefs et des certificats qui permettront a vos utilisateurs de s’authentifier sur votre serveur. Modifions le fichier /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="VOTRE PAYS" export KEY_PROVINCE="VOTRE DEPARTEMENT" export KEY_CITY="VOTRE VILLE" export KEY_ORG="VOTRE.SITE" export KEY_EMAIL="VOTRE EMAIL"
Remplacez
export KEY_SIZE=2048
par
export KEY_SIZE=4096
Lançons maintenant la génération des clefs et certificats pour le serveur
cd /etc/openvpn/easy-rsa/ . ./vars ./clean-all ./build-dh ./build-ca ./build-key-server server sudo openvpn --genkey --secret keys/ta.key
Copiez maintenant ces clés et certificat s dans le répertoire /etc/openvpn
sudo cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh4096.pem /etc/openvpn/
Créez un répertoire /etc/openvpn/jail dans lequel le processus OpenVPN sera chrooté (afin de limiter les dégâts en cas de faille dans OpenVPN) puis un autre répertoire (/etc/openvpn/clientconf) qui contiendra la configuration des clients
sudo mkdir -p /etc/openvpn/jail/tmp/ sudo mkdir /etc/openvpn/clientconf
Nous pouvons maintenant creer le fichier de configuration de votre serveur OpenVPN, ici nous avons deux choix :
- Configurer un serveur vpn sur le port 443 TCP : Masque le tunnel OpenVPN sous les traits d’un trafic « habituel », une session sécurisée HTTPS, comme si vous consultiez un site sécurisé avec votre navigateur.
- Configurer un serveur vpn sur le port qu’utilise OpenVPN par défaut (1194 en UDP) : A l’avantage d’être un peu plus rapide du fait de l’utilisation du protocole UDP. Le revers de la médaille (il y en a toujours un quelque part) c’est que UDP n’assure aucune correction d’erreur. Donc, dans certaines situations, si votre connexion internet n’est pas irréprochable, ceci peut entraîner une plus grande répétition de paquets, donc une baisse notable de la bande passante apparente.
Créez votre fichier
sudo nano /etc/openvpn/server.conf
Dont voici la configuration :
# # Fichier de configuration du serveur OpenVPN # # Serveur mode server proto tcp port 443 dev tun # Cles et certificats ca ca.crt cert server.crt key server.key # Ce fichier doit être gardé secret dh dh4096.pem tls-auth ta.key 1 key-direction 0 cipher AES-256-CBC # Reseau server 10.8.0.0 255.255.255.0 push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" keepalive 10 120 # Permet aux différentes clients de se contacter entre eux #client-to-client # Securite user nobody group nogroup chroot /etc/openvpn/jail persist-key persist-tun comp-lzo # Décommenter cette option si plusieurs clients utilisent un même certificat # (sinon l'un des clients sera déconnecté) #duplicate-cn # Log verb 3 mute 20 status openvpn-status.log ; log-append /var/log/openvpn.log
Si vous souhaitez configurer un serveur sur le port 1194, modifiez le bloc serveur de la facon suivante
# Serveur mode server proto udp port 1194 dev tun
Testez votre configuration en saisissant la commande suivante
cd /etc/openvpn sudo openvpn server.conf
Si Initialization Sequence Complete s’affiche tout va bien et vous pouvez continuer
Si le serveur démarre correctement, on peut terminer la configuration sur serveur OpenVPN en décommentant la dernière ligne du fichier /etc/openvpn/server.conf : log-append /var/log/openvpn.log
Vous pouvez maintenant lancer votre serveur (si vous êtes sous Debian 8 et Ubuntu 15.04 ou supérieur, nous reviendrons sur le lancement d’OpenVPN à la fin de ce billet)
sudo /etc/init.d/openvpn start
Vous devez maintenant configurer le serveur pour qu’il joue le rôle de routeur entre l’interface VPN (tun0) et l’interface physique (eth0) et de NATeur entre les adresses en 10.8.0.x et son adresse IP réelle.
sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
Pour que ce paramètre de routage soit permanent il faut éditer le fichier /etc/sysctl.conf et y ajouter la ligne suivante
net.ipv4.ip_forward = 1
Vérifiez que cela fonctionne
sudo sysctl -p
Création d’un client OpenVPN
Nous allons créer un compte pour notre client novakin, lancez les commandes suivante
cd /etc/openvpn/easy-rsa source vars ./build-key novakin
Le script ./build-key va générer 3 fichiers dans le répertoire /etc/openvpn/easy-rsa/keys:
- novakin.crt: Certificat pour le client
- novakin.csr: Certificat à garder sur le serveur
- novakin.key: Clés pour le client
On copie les fichiers nécessaires un sous répertoire du répertoire /etc/openvpn/clientconf/ préalablement créé:
sudo mkdir /etc/openvpn/clientconf/novakin/ sudo cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/novakin.crt keys/novakin.key /etc/openvpn/clientconf/novakin/
Rendez vous ,maintenant dans ce répertoire
cd /etc/openvpn/clientconf/novakin/
Créez un fichier client.conf (il faut remplacer xxx.xxx.xxx.xxx par l’adresse publique de votre serveur VPN) dont voici la configuration :
# Client client dev tun proto tcp-client remote xxx.xxx.xxx.xxx 443 resolv-retry infinite cipher AES-256-CBC ; client-config-dir ccd # Cles ca ca.crt cert novakin.crt key novakin.key tls-auth ta.key 1 key-direction 1 # Securite nobind persist-key persist-tun comp-lzo verb 3
Si vous avez choisi de créer un serveur vpn en udp, il vous faudra configurer votre client de la façon suivante
# Client client dev tun proto udp remote xxx.xxx.xxx.xxx 1194 resolv-retry infinite cipher AES-256-CBC ; client-config-dir ccd # Cles ca ca.crt cert novakin.crt key novakin.key tls-auth ta.key 1 key-direction 1 # Securite nobind persist-key persist-tun comp-lzo verb 3
Pour assurer la compatibilité avec le client Windows OpenVPN, copiez le fichier conf vers un fichier ovpn
sudo cp client.conf client.ovpn
Dans votre répertoire vous devriez avoir les fichiers suivants
ca.crt: Certificat du serveur client.conf: Fichier de configuration du client OpenVPN (Linux, BSD, MacOS X) client.ovpn: Fichier de configuration du client OpenVPN (Windows) novakin.crt: Certificat du client novakin.key: Clés du client ta.key: Clés pour l'authentification
Il ne reste plus qu’à mettre ces fichiers dans une archive ZIP et de l’envoyer sur le PC client
sudo zip novakin.zip *.*
OpenVPN et systemd
À partir de ces versions votre distribution embarque systemd, les procédures de démarrage, d’arrêt, rechargement et de lancement automatique d’OpenVPN ne sont plus les mêmes. Voici les différentes commandes :
# Lancer le serveur OpenVPN (configuration server.conf) systemctl start openvpn@server.service # Arrêter le serveur OpenVPN (configuration server.conf) systemctl stop openvpn@server.service # Recharger la configuration du serveur OpenVPN (configuration server.conf) systemctl reload openvpn@server.service # Lancement automatique du serveur OpenVPN au démarrage (configuration server.conf) systemctl enable openvpn@server.service # Désactiver le lancement automatique du serveur OpenVPN au démarrage (configuration server.conf) systemctl disable openvpn@server.service
Sources
Ubuntu-FR
Ubuntu.com
15 Minutes Of fame
Nicolargo
Bonjour,
Lorsque j’entre ./clean-all j’ai un message d’erreur : « -bash: ./clean-all: Aucun fichier ou dossier de ce type »
Et lorsque je fais un ls sous /etc/openvpn/easy-rsa j’obtient : « easyrsa openssl-easyrsa.cnf vars vars.example x509-types
Un peu d’aide svp