Installation serveur vpn : Différence entre versions

De Wiki_DR13
Aller à : navigation, rechercher
(Le fichier de configuration serveur)
Ligne 26 : Ligne 26 :
 
* clients (répertoire des fichiers de configuration des clients)  
 
* 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 ===
 
=== Certificats et clés ===

Version du 24 octobre 2007 à 09:00

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)


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

  1. /etc/openvpn/server.conf #
  1. Adresse d'ecoute :

local 193.49.133.234

  1. Port d'écoute. Identique entre le serveur et le client

port 4500

  1. TCP or UDP server?

proto udp

  1. "dev tun" = routed IP tunnel, "dev tap" = ethernet tunnel.
dev tap

dev tun

  1. Utilisation de certificat serveur CNRS

ca keys/CNRS.crt cert keys/vpn.dr13.cnrs.fr.crt key keys/vpn.dr13.cnrs.fr.key # Ne pas divulguer ce fichier


  1. Diffie hellman parameters.

dh "keys/dh1024.pem"

  1. Route par défaut du tunnel

server 10.8.0.0 255.255.255.0

  1. Fichier d'enregistrement des couples client <-> @IP virtuelle

ifconfig-pool-persist ipp.txt

  1. Repertoire client des fichiers de paramètres par défaut à envoyer aux clients
  2. identifiés demandant une connection

client-config-dir "/etc/openvpn/clients"

  1. push de la route vers DR13
  2. push "route 193.49.133.0 255.255.255.0"

push "redirect-gateway" push "dhcp-option DNS 193.49.133.208" push "dhcp-option WINS 193.49.133.208"

  1. Route pour les utilisateurs (push ds le fichier client)

route 10.8.1.0 255.255.255.0

  1. Route pour les administrateurs (push ds le fichier client)

route 10.8.18.0 255.255.255.0

keepalive 10 120

  1. Clé partagée entre le serveur et chaque client. 0=serveur, 1=client.

tls-auth keys/ta.key 0 # This file is secret

  1. Select a cryptographic cipher.
  2. This config item must be copied to
  3. the client config file as well.
cipher BF-CBC # Blowfish (default)
cipher AES-128-CBC # AES
cipher DES-EDE3-CBC # Triple-DES
  1. Utilisation de la compression. À indiquer aussi pour le client

comp-lzo

  1. The maximum number of concurrently connected
  2. clients we want to allow.
max-clients 100
  1. The persist options will try to avoid
  2. accessing certain resources on restart
  3. that may no longer be accessible because
  4. of the privilege downgrade.

persist-key persist-tun

  1. Output a short status file showing
  2. current connections, truncated
  3. and rewritten every minute.

status openvpn-status.log

  1. By default, log messages will go to the syslog (or
  2. on Windows, if running as a service, they will go to
  3. the "\Program Files\OpenVPN\log" directory).
  4. Use log or log-append to override this default.
  5. "log" will truncate the log file on OpenVPN startup,
  6. while "log-append" will append to it. Use one
  7. or the other (but not both).
log openvpn.log
log-append /var/log/openvpn/openvpn.log


  1. Set the appropriate level of log
  2. file verbosity.
  3. 0 is silent, except for fatal errors
  4. 4 is reasonable for general usage
  5. 5 and 6 can help to debug connection problems
  6. 9 is extremely verbose

verb 3

  1. Silence repeating messages. At most 20
  2. sequential messages of the same message
  3. category will be output to the log.

mute 20