Installation serveur vpn : Différence entre versions
(→Création de la clé partagée entre le serveur et les clients) |
|||
| Ligne 4 : | Ligne 4 : | ||
Dans ce document, le serveur OpenVPN sert à la connection des clients nomades de la délégation, ou à des clients distants, disposant d'un certificat CNRS. | Dans ce document, le serveur OpenVPN sert à la connection des clients nomades de la délégation, ou à des clients distants, disposant d'un certificat CNRS. | ||
| − | + | ||
== Prérequis == | == Prérequis == | ||
| Ligne 68 : | Ligne 68 : | ||
tls-auth keys/ta.key 1 # 1 pour le client | tls-auth keys/ta.key 1 # 1 pour le client | ||
| + | |||
| + | |||
| + | == Des routes adaptées aux profils clients == | ||
| + | |||
| + | But: Pouvoir définir et donner des droits distincts aux utilisateurs selon un profil pré-établi. Il faut donc commencer par définir le nombre de groupes d'utilisateurs que l'on aura à gérer, et définir les droits qu'ils pourront obtenir via l'utilisation du serveur OpenVPN. | ||
| + | |||
| + | On suppose dans ce qui suit que l'on dispose de 2 groupes spécifiques d'utilisateurs d'OpenVPN à la DR: les nomades (utilisateurs avec portables pouvant se déplacer à l'extérieur) et les administrateurs (utilisateurs avec pouvoir). | ||
| + | |||
| + | Ajouter autant de routes que de profils distincts dans le fichier de configuration serveur server.conf | ||
| + | |||
| + | # route par défaut | ||
| + | server 10.8.0.0 255.255.255.0 | ||
| + | # route spéciale pour le 1er type d'utilisateur ; administrateurs | ||
| + | route 10.8.18.0 255.255.255.0 | ||
| + | # route spéciale pour le 2eme type d'utilisateur ; nomades | ||
| + | route 10.8.1.0 255.255.255.0 | ||
| + | |||
| + | Selon les besoins, on rajoutera des routes pour le wi-fi, les labos,... | ||
| + | |||
| + | Dans chaque fichier client, on va pousser la config pour que les utilisateurs spéciaux récupèrent une adresse spécifique de leur classe. Ces utilisateurs spéciaux sont identifié à la connection par le CN (common name) de leur certificat. On créé donc pour chacun d'eux un fichier spécifique dans le répertoire /etc/openvpn/clients sous la forme Prenom_Nom (voir les règles sur les caractères spéciaux dans la doc). | ||
| + | |||
| + | Pour pousser chaque route, on rajoute dans le fichier Prenom_Nom les lignes: | ||
| + | |||
| + | # Ajout de la route spécifique du groupe: exemple pour le groupe des utilisateurs nomades | ||
| + | iroute 10.8.1.0 255.255.255.0 | ||
| + | # Attribution du couple adresse locale (client) / adresse distante (serveur) pour l'utilisation du pont | ||
| + | ifconfig-push 10.8.18.2 10.8.18.1 | ||
| + | |||
| + | en prenant le dernier octet de chaque paire d'adresses dans la liste ci-dessous pour des raisons de compatibilité avec les clients windows et le pilote TAP-Win32. Dans la liste, le premier chiffre sera le dernier octet de l'adresse du serveur, et le second chiffre, celui du client. Il faut veiller à fournir une paire différente à chaque client | ||
| + | |||
| + | [ 1, 2] [ 5, 6] [ 9, 10] [13, 14] [17, 18] | ||
| + | [21, 22] [25, 26] [29, 30] [33, 34] [37, 38] | ||
| + | [41, 42] [45, 46] [49, 50] [53, 54] [57, 58] | ||
| + | [61, 62] [65, 66] [69, 70] [73, 74] [77, 78] | ||
| + | [81, 82] [85, 86] [89, 90] [93, 94] [97, 98] | ||
| + | [101,102] [105,106] [109,110] [113,114] [117,118] | ||
| + | [121,122] [125,126] [129,130] [133,134] [137,138] | ||
| + | [141,142] [145,146] [149,150] [153,154] [157,158] | ||
| + | [161,162] [165,166] [169,170] [173,174] [177,178] | ||
| + | [181,182] [185,186] [189,190] [193,194] [197,198] | ||
| + | [201,202] [205,206] [209,210] [213,214] [217,218] | ||
| + | [221,222] [225,226] [229,230] [233,234] [237,238] | ||
| + | [241,242] [245,246] [249,250] [253,254] | ||
| + | |||
| + | Les règles pour chaque classe seront définies ensuite au niveau du fichier de configuration d'iptables. | ||
| + | |||
| + | |||
| + | |||
| + | == Le fichier de configuration serveur == | ||
Version du 24 octobre 2007 à 08:55
Sommaire
Installation d'OpenVPN à la DR13
Dans ce document, le serveur OpenVPN sert à la connection des clients nomades de la délégation, ou à des clients distants, disposant d'un certificat CNRS.
Prérequis
- Installation de ssh et openssh
- Installation de LZO (utilitaire de compression recommandé pour améliorer les performances de transmission des données via le tunnel) OpenVPN.
- Configuration de iptables
Installation de OpenVPN
# apt-get install openvpn
Paramétrage pour l'installation locale
Création des dossiers dans /etc/openvpn
- keys (répertoire des clés et certificats)
- clients (répertoire des fichiers de configuration des clients)
Création d'un utilisateur openvpn
Changement des droits (propriétaire/groupe) du répertoire /etc/openvpn, pour donner les droits à l'utilisateur openvpn. Les lignes suivantes sont rajoutées dans le fichier server.conf du serveur
user openvpn group openvpn
Lors du lancement de l'application, elle tournera sous l'utilisateur openvpn.
Certificats et clés
À noter qu'un module de génération de certificats (easy-rsa) est disponible avec l'installation de OpenVPN. Nous désirons utiliser uniquement les certificats CNRS (serveurs et clients), on ne décrira donc pas ici ce module.
Récupération des certificats CNRS
- ceux du serveur (Il faut effectuer une demande de certificat serveur au CNRS, puis récupérer et installer ces certificats dans le répertoire des clés.
- celui de l'autorité de certification
Création du paramètre Dieffe-Helmann
# openssl dhparam -out dh1024.pem 1024
On place le fichier dh1024.pem dans le répertoire des clés La ligne suivante est décommentée dans le fichier server.conf sur le serveur
dh keys/dh1024.pem
Création de la clé partagée entre le serveur et les clients
# openvpn --genkey --secret ta.key
On place le fichier ta.key dans le répertoire des clés. Une copie sera effectuée et transmise pour chaque client nécessitant une connexion. La ligne suivante est décommentée dans le fichier server.conf sur le serveur
tls-auth keys/ta.key 0 # 0 pour le serveur
La ligne suivante est décommentée (ajoutée) dans le fichier client.conf (client.ovpn pour windows) sur la machine cliente
tls-auth keys/ta.key 1 # 1 pour le client
Des routes adaptées aux profils clients
But: Pouvoir définir et donner des droits distincts aux utilisateurs selon un profil pré-établi. Il faut donc commencer par définir le nombre de groupes d'utilisateurs que l'on aura à gérer, et définir les droits qu'ils pourront obtenir via l'utilisation du serveur OpenVPN.
On suppose dans ce qui suit que l'on dispose de 2 groupes spécifiques d'utilisateurs d'OpenVPN à la DR: les nomades (utilisateurs avec portables pouvant se déplacer à l'extérieur) et les administrateurs (utilisateurs avec pouvoir).
Ajouter autant de routes que de profils distincts dans le fichier de configuration serveur server.conf
# route par défaut server 10.8.0.0 255.255.255.0 # route spéciale pour le 1er type d'utilisateur ; administrateurs route 10.8.18.0 255.255.255.0 # route spéciale pour le 2eme type d'utilisateur ; nomades route 10.8.1.0 255.255.255.0
Selon les besoins, on rajoutera des routes pour le wi-fi, les labos,...
Dans chaque fichier client, on va pousser la config pour que les utilisateurs spéciaux récupèrent une adresse spécifique de leur classe. Ces utilisateurs spéciaux sont identifié à la connection par le CN (common name) de leur certificat. On créé donc pour chacun d'eux un fichier spécifique dans le répertoire /etc/openvpn/clients sous la forme Prenom_Nom (voir les règles sur les caractères spéciaux dans la doc).
Pour pousser chaque route, on rajoute dans le fichier Prenom_Nom les lignes:
# Ajout de la route spécifique du groupe: exemple pour le groupe des utilisateurs nomades iroute 10.8.1.0 255.255.255.0 # Attribution du couple adresse locale (client) / adresse distante (serveur) pour l'utilisation du pont ifconfig-push 10.8.18.2 10.8.18.1
en prenant le dernier octet de chaque paire d'adresses dans la liste ci-dessous pour des raisons de compatibilité avec les clients windows et le pilote TAP-Win32. Dans la liste, le premier chiffre sera le dernier octet de l'adresse du serveur, et le second chiffre, celui du client. Il faut veiller à fournir une paire différente à chaque client
[ 1, 2] [ 5, 6] [ 9, 10] [13, 14] [17, 18] [21, 22] [25, 26] [29, 30] [33, 34] [37, 38] [41, 42] [45, 46] [49, 50] [53, 54] [57, 58] [61, 62] [65, 66] [69, 70] [73, 74] [77, 78] [81, 82] [85, 86] [89, 90] [93, 94] [97, 98] [101,102] [105,106] [109,110] [113,114] [117,118] [121,122] [125,126] [129,130] [133,134] [137,138] [141,142] [145,146] [149,150] [153,154] [157,158] [161,162] [165,166] [169,170] [173,174] [177,178] [181,182] [185,186] [189,190] [193,194] [197,198] [201,202] [205,206] [209,210] [213,214] [217,218] [221,222] [225,226] [229,230] [233,234] [237,238] [241,242] [245,246] [249,250] [253,254]
Les règles pour chaque classe seront définies ensuite au niveau du fichier de configuration d'iptables.