Installation serveur vpn : Différence entre versions

De Wiki_DR13
Aller à : navigation, rechercher
(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

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.


Le fichier de configuration serveur