Installer et configurer un serveur OpenVPN sous Ubuntu
Publié : 06 janv. 2014, 14:57
Information :
Les opérations décrites ici ont été réalisées sur Ubuntu 12.04 LTS
Les opérations décrites ici ont été réalisées sur Ubuntu 12.04 LTS
- 1/ Installation d'OpenVPN Server
Code : Tout sélectionner
sudo apt-get install openvpn
Information :
Les ports par défaut pour OpenVPN sont :
Suite à l'installation, différents outils sont disponible. Pour des raisons de simplicité, nous allons créer un répertoire pour ces outils dans le dossier de configuration d'OpenVPN (dans /etc/openvpn) et travailler directement dans celui-ci.Les ports par défaut pour OpenVPN sont :
- 1194 TCP
- 1194 UDP
On commence donc par créer ledit répertoire, et par copier les outils de configuration :
Code : Tout sélectionner
sudo mkdir /etc/openvpn/easy-rsa/
sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
sudo chown -R $USER /etc/openvpn/easy-rsa/
- 2/ Génération des clés d'authentification
FIX ME :
La première étape pour construire une configuration OpenVPN est d'établir une infrastructure de clés publiques (ou PKI, pour Private Keys Infrastructure).
Cela consiste en :
Pour plus d'informations, voir ici : http://openvpn.net/index.php/open-sourc ... o.html#pki
Plaçons nous dans le répertoire nouvellement créé.
La première étape pour construire une configuration OpenVPN est d'établir une infrastructure de clés publiques (ou PKI, pour Private Keys Infrastructure).
Cela consiste en :
- Un certificat ainsi qu'une clé pour l'Autorité de Certification. Cela servira à signer les clés du serveur et des clients
- Des paramètres Diffie Hellman (http://fr.wikipedia.org/wiki/%C3%89chan ... ie-Hellman)
- Une clé et un certificat pour le serveur
- Une clé et un certificat pour chaque client
Pour plus d'informations, voir ici : http://openvpn.net/index.php/open-sourc ... o.html#pki
Code : Tout sélectionner
cd /etc/openvpn/easy-rsa/
Code : Tout sélectionner
nano ./vars
Code : Tout sélectionner
export KEY_COUNTRY="FR"
export KEY_PROVINCE="69"
export KEY_CITY="Lyon"
export KEY_ORG="NA"
export KEY_EMAIL=mail@host.domain
Attention :
Aucune de ces lignes ne doit être laissée vide !
Aucune de ces lignes ne doit être laissée vide !
Attention :
Les commandes suivantes vont utiliser OpenSSL. Cependant, sous Ubuntu 12.04 LTS (et potentiellement les versions ultérieures), il faut renommer le fichier utilisé pour la configuration d'OpenSSL :
Ensuite, il faut initialiser les outils de génération des clés avec les variables que l'on vient de renseigner :
Les commandes suivantes vont utiliser OpenSSL. Cependant, sous Ubuntu 12.04 LTS (et potentiellement les versions ultérieures), il faut renommer le fichier utilisé pour la configuration d'OpenSSL :
Code : Tout sélectionner
mv openssl-1.0.0.cnf openssl.cnf
Code : Tout sélectionner
. ./vars
./clean-all
La seconde commande va supprimer tout ce qui se trouve dans le répertoire "keys" (défini par la variable "KEY_DIR" du fichier vars, par défaut "/etc/openvpn/easy-rsa/keys" dans la configuration correspondante à ce tutoriel).
Enfin, il faut lancer la génération du certificat de l'autorité de certification :
Code : Tout sélectionner
./build-ca
FIX ME :
Le seul paramètre à renseigner obligatoirement est "Common Name" (avec, par exemple, le nom du serveur).
Y'a-t-il une règle de nommage en particulier ?
Une fois que le certificat de l'Autorité de Certification est généré, il faut générer les paramètres Diffie Hellman :
Le seul paramètre à renseigner obligatoirement est "Common Name" (avec, par exemple, le nom du serveur).
Y'a-t-il une règle de nommage en particulier ?
Code : Tout sélectionner
./build-dh
Code : Tout sélectionner
./build-key-server <nom-du-serveur>
Cette commande se termine par 2 questions ("Sign the certificate? [y/n]" et "1 out of 1 certificate requests certified, commit? [y/n]") auxquelles il faut répondre positivement ("y").
Un certain nombre de fichiers ont été générés dans le répertoire keys. Voici ceux qui sont importants :
[td]Rôle[/td]
[td]Secret[/td]
[td]Utilisé par[/td][/tr]
[tr][td]ca.crt[/td]
[td]Certificat de l'Autorité de Certification[/td]
[td]Non[/td]
[td]Le serveur + tous les clients[/td][/tr]
[tr][td]ca.key[/td]
[td]Clé de l'Autorité de Certification[/td]
[td]Oui[/td]
[td]La machine de l'Autorité de Certification uniquement (ici, le serveur)[/td][/tr]
[tr][td]dh1024.pem[/td]
[td]Paramètres Diffie Hellman[/td]
[td]Non[/td]
[td]Le serveur uniquement[/td][/tr]
[tr][td]server.crt[/td]
[td]Certificat du serveur[/td]
[td]Non[/td]
[td]Le serveur uniquement[/td][/tr]
[tr][td]server.key[/td]
[td]Clé du serveur[/td]
[td]Oui[/td]
[td]Le serveur uniquement[/td][/tr][/table]
Il ne reste plus qu'à déplacer les fichiers aux bons emplacements, en prenant garde de faire transiter les fichiers secrets par des canaux sécurisés. Dans le cadre de ce tutoriel, les fichiers seront placés dans /etc/openvpn :
Code : Tout sélectionner
cd keys
cp ca.crt dh1024.pem server.crt server.key /etc/openvpn
FIX ME :
Où doit être placé le fichier ca.key ? Peut-on supprimer les fichiers du répertoire keys sans compromettre la création des clés pour les clients ?
Où doit être placé le fichier ca.key ? Peut-on supprimer les fichiers du répertoire keys sans compromettre la création des clés pour les clients ?
FIX ME :
Voir ce que sont les autres fichiers !
Voilà pour la génération des clés du serveur. D'autres clés devront être générées pour les clients, mais ce point sera abordé dans le paragraphe concernant les clients.Voir ce que sont les autres fichiers !
- 3/ Configuration du serveur
La première étape est de copier le fichier d'exemple de configuration du serveur à la bonne place (le fichier est compressé, la décompression sera faite en même temps) :
Code : Tout sélectionner
sudo -s
zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
exit
Il faut donc éditer le fichier de configuration et vérifier les lignes correspondantes.
Code : Tout sélectionner
cd /etc/openvpn/
nano server.conf
Code : Tout sélectionner
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
Le serveur est désormais utilisable.
FIX ME :
- X/ Configuration des clients
Attention :
Le réseau du serveur doit avoir une adresse différente du réseau du client. Par exemple, si le serveur est situé sur un réseau en 192.168.1.X, les clients connectés sur un réseau distant également en 192.168.1.X ne pourront pas accéder au serveur (plus d'infos ici : http://openvpn.net/index.php/open-sourc ... #numbering)
Chaque appareil client aura besoin des éléments suivants :
Le réseau du serveur doit avoir une adresse différente du réseau du client. Par exemple, si le serveur est situé sur un réseau en 192.168.1.X, les clients connectés sur un réseau distant également en 192.168.1.X ne pourront pas accéder au serveur (plus d'infos ici : http://openvpn.net/index.php/open-sourc ... #numbering)
- Le certificat de l'autorité de certification (ca.crt), le même que sur le serveur,
- Le certificat du client (client.crt par exemple),
- La clé (secrète) du client (client.key), à lui transmettre via un canal sécurisé,
- Un fichier de configuration (.conf ou .ovpn suivant le système client).
- X.1/ Génération des fichiers nécessaires au client
Le certificat et la clé du client se génèrent grâce au script "build-key" disponible dans le dossier "easy-rsa" (voir le paragraphe 2/ pour la localisation de ce dossier).
Dans le répertoire "easy-rsa", exécuter les commandes suivantes (en root):
Code : Tout sélectionner
. ./vars
Code : Tout sélectionner
./build-key <client-name>
Renseigner les champs demandés et répondre "yes" aux 2 question à la fin pour signer le certificat.
Les fichiers se trouvent dans le sous répertoire "keys".
Le fichier de configuration peut être basé sur le fichier d'exemple "client.conf". Il faut modifier les directives ca, cert et key pour pointer vers les fichiers adéquats SUR LE CLIENT (généralement, on les met au même endroit que le fichier de configuration, il suffit donc de mettre le bon nom de fichier).
On peut aussi en profiter pour vérifier que les directives comp (pour la compression), cipher (pour le chiffrement), et qques autres sont bien cohérentes avec le fichier de configuration du serveur.
- X.2/ Configuration des clients
L'emplacement des fichiers sur le disque du client dépend du système utilisé et du logiciel client VPN.
- Pour iOS, avec openVPN-connect :
- Copier les 4 fichiers dans le répertoire de l'application via iTunes
- Lancer openVPN-connect sur le périphérique iOS, la nouvelle configuration doit apparaitre dans l'application
- Pour Mac OS X, avec Tunnelblick :
- Copier les 4 fichiers dans un dossier
- Renommer le dossier avec le nom de la configuration et ajouter ".tblk" à la fin du nom. Le dossier sera perçu comme un fichier ouvrable par Tunnelblick.
- Double-cliquer sur le dossier pour installer la configuration
- Pour Windows, avec OpenVPN Client :
- Copier les 4 fichiers dans un dossier (par exemple, <OpenVPN Client install dir>\etc\profile)
- Ouvrir OpenVPN Connect
- Cliquer sur le + de la section "Connection Profiles", choisir "Local file" et cliquer sur "Import"
- Naviguer jusqu'au fichier de configuration précédemment copié, et le sélectionner
- Modifier les propriétés affichées si besoin, et cliquer sur "Save"
- Cliquer sur le profil pour se connecter