Installation serveur vpn : Différence entre versions
(→Le fichier de configuration serveur) |
|||
| Ligne 108 : | Ligne 108 : | ||
== Le fichier de configuration serveur == | == Le fichier de configuration serveur == | ||
| − | ########################################### | + | ########################################### |
| − | # /etc/openvpn/server.conf # | + | # /etc/openvpn/server.conf # |
| − | ########################################### | + | ########################################### |
| − | + | ||
| − | # Adresse d'ecoute : | + | # Adresse d'ecoute : |
| − | local 193.49.133.234 | + | local 193.49.133.234 |
| − | + | ||
| − | # Port d'écoute. Identique entre le serveur et le client | + | # Port d'écoute. Identique entre le serveur et le client |
| − | port 4500 | + | port 4500 |
| − | + | ||
| − | # TCP or UDP server? | + | # TCP or UDP server? |
| − | proto udp | + | proto udp |
| − | + | ||
| − | # "dev tun" = routed IP tunnel, "dev tap" = ethernet tunnel. | + | # "dev tun" = routed IP tunnel, "dev tap" = ethernet tunnel. |
| − | ;dev tap | + | ;dev tap |
| − | dev tun | + | dev tun |
| − | + | ||
| − | # Utilisation de certificat serveur CNRS | + | # Utilisation de certificat serveur CNRS |
| − | ca keys/CNRS.crt | + | ca keys/CNRS.crt |
| − | cert keys/vpn.dr13.cnrs.fr.crt | + | cert keys/vpn.dr13.cnrs.fr.crt |
| − | key keys/vpn.dr13.cnrs.fr.key # Ne pas divulguer ce fichier | + | key keys/vpn.dr13.cnrs.fr.key # Ne pas divulguer ce fichier |
| − | + | ||
| − | + | ||
| − | # Diffie hellman parameters. | + | # Diffie hellman parameters. |
| − | dh "keys/dh1024.pem" | + | dh "keys/dh1024.pem" |
| − | + | ||
| − | # Route par défaut du tunnel | + | # Route par défaut du tunnel |
| − | server 10.8.0.0 255.255.255.0 | + | server 10.8.0.0 255.255.255.0 |
| − | + | ||
| − | # Fichier d'enregistrement des couples client <-> @IP virtuelle | + | # Fichier d'enregistrement des couples client <-> @IP virtuelle |
| − | ifconfig-pool-persist ipp.txt | + | ifconfig-pool-persist ipp.txt |
| − | + | ||
| − | # Repertoire client des fichiers de paramètres par défaut à envoyer aux clients | + | # Repertoire client des fichiers de paramètres par défaut à envoyer aux clients |
| − | # identifiés demandant une connection | + | # identifiés demandant une connection |
| − | client-config-dir "/etc/openvpn/clients" | + | client-config-dir "/etc/openvpn/clients" |
| − | + | ||
| − | # push de la route vers DR13 | + | # push de la route vers DR13 |
| − | #push "route 193.49.133.0 255.255.255.0" | + | #push "route 193.49.133.0 255.255.255.0" |
| − | + | ||
| − | push "redirect-gateway" | + | push "redirect-gateway" |
| − | push "dhcp-option DNS 193.49.133.208" | + | push "dhcp-option DNS 193.49.133.208" |
| − | push "dhcp-option WINS 193.49.133.208" | + | push "dhcp-option WINS 193.49.133.208" |
| − | + | ||
| − | # Route pour les utilisateurs (push ds le fichier client) | + | # Route pour les utilisateurs (push ds le fichier client) |
| − | route 10.8.1.0 255.255.255.0 | + | route 10.8.1.0 255.255.255.0 |
| − | # Route pour les administrateurs (push ds le fichier client) | + | # Route pour les administrateurs (push ds le fichier client) |
| − | route 10.8.18.0 255.255.255.0 | + | route 10.8.18.0 255.255.255.0 |
| − | + | ||
| − | keepalive 10 120 | + | keepalive 10 120 |
| − | + | ||
| − | # Clé partagée entre le serveur et chaque client. 0=serveur, 1=client. | + | # Clé partagée entre le serveur et chaque client. 0=serveur, 1=client. |
| − | tls-auth keys/ta.key 0 # This file is secret | + | tls-auth keys/ta.key 0 # This file is secret |
| − | + | ||
| − | # Select a cryptographic cipher. | + | # Select a cryptographic cipher. |
| − | # This config item must be copied to | + | # This config item must be copied to |
| − | # the client config file as well. | + | # the client config file as well. |
| − | ;cipher BF-CBC # Blowfish (default) | + | ;cipher BF-CBC # Blowfish (default) |
| − | ;cipher AES-128-CBC # AES | + | ;cipher AES-128-CBC # AES |
| − | ;cipher DES-EDE3-CBC # Triple-DES | + | ;cipher DES-EDE3-CBC # Triple-DES |
| − | + | ||
| − | # Utilisation de la compression. À indiquer aussi pour le client | + | # Utilisation de la compression. À indiquer aussi pour le client |
| − | comp-lzo | + | comp-lzo |
| − | + | ||
| − | # The maximum number of concurrently connected | + | # The maximum number of concurrently connected |
| − | # clients we want to allow. | + | # clients we want to allow. |
| − | ;max-clients 100 | + | ;max-clients 100 |
| − | + | ||
| − | # The persist options will try to avoid | + | # The persist options will try to avoid |
| − | # accessing certain resources on restart | + | # accessing certain resources on restart |
| − | # that may no longer be accessible because | + | # that may no longer be accessible because |
| − | # of the privilege downgrade. | + | # of the privilege downgrade. |
| − | persist-key | + | persist-key |
| − | persist-tun | + | persist-tun |
| − | + | ||
| − | # Output a short status file showing | + | # Output a short status file showing |
| − | # current connections, truncated | + | # current connections, truncated |
| − | # and rewritten every minute. | + | # and rewritten every minute. |
| − | status openvpn-status.log | + | status openvpn-status.log |
| − | + | ||
| − | # By default, log messages will go to the syslog (or | + | # By default, log messages will go to the syslog (or |
| − | # on Windows, if running as a service, they will go to | + | # on Windows, if running as a service, they will go to |
| − | # the "\Program Files\OpenVPN\log" directory). | + | # the "\Program Files\OpenVPN\log" directory). |
| − | # Use log or log-append to override this default. | + | # Use log or log-append to override this default. |
| − | # "log" will truncate the log file on OpenVPN startup, | + | # "log" will truncate the log file on OpenVPN startup, |
| − | # while "log-append" will append to it. Use one | + | # while "log-append" will append to it. Use one |
| − | # or the other (but not both). | + | # or the other (but not both). |
| − | ;log openvpn.log | + | ;log openvpn.log |
| − | ;log-append /var/log/openvpn/openvpn.log | + | ;log-append /var/log/openvpn/openvpn.log |
| − | + | ||
| − | + | # Set the appropriate level of log | |
| − | # Set the appropriate level of log | + | # file verbosity. |
| − | # file verbosity. | + | # |
| − | # | + | # 0 is silent, except for fatal errors |
| − | # 0 is silent, except for fatal errors | + | # 4 is reasonable for general usage |
| − | # 4 is reasonable for general usage | + | # 5 and 6 can help to debug connection problems |
| − | # 5 and 6 can help to debug connection problems | + | # 9 is extremely verbose |
| − | # 9 is extremely verbose | + | verb 3 |
| − | verb 3 | + | # Silence repeating messages. At most 20 |
| − | # Silence repeating messages. At most 20 | + | # sequential messages of the same message |
| − | # sequential messages of the same message | + | # category will be output to the log. |
| − | # category will be output to the log. | + | mute 20 |
| − | mute 20 | ||
Version du 24 octobre 2007 à 09:02
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)
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
########################################### # /etc/openvpn/server.conf # ########################################### # Adresse d'ecoute : local 193.49.133.234 # Port d'écoute. Identique entre le serveur et le client port 4500 # TCP or UDP server? proto udp # "dev tun" = routed IP tunnel, "dev tap" = ethernet tunnel. ;dev tap dev tun # 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 # Diffie hellman parameters. dh "keys/dh1024.pem" # Route par défaut du tunnel server 10.8.0.0 255.255.255.0 # Fichier d'enregistrement des couples client <-> @IP virtuelle ifconfig-pool-persist ipp.txt # Repertoire client des fichiers de paramètres par défaut à envoyer aux clients # identifiés demandant une connection client-config-dir "/etc/openvpn/clients" # push de la route vers DR13 #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" # Route pour les utilisateurs (push ds le fichier client) route 10.8.1.0 255.255.255.0 # Route pour les administrateurs (push ds le fichier client) route 10.8.18.0 255.255.255.0 keepalive 10 120 # Clé partagée entre le serveur et chaque client. 0=serveur, 1=client. tls-auth keys/ta.key 0 # This file is secret # Select a cryptographic cipher. # This config item must be copied to # the client config file as well. ;cipher BF-CBC # Blowfish (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES # Utilisation de la compression. À indiquer aussi pour le client comp-lzo # The maximum number of concurrently connected # clients we want to allow. ;max-clients 100 # The persist options will try to avoid # accessing certain resources on restart # that may no longer be accessible because # of the privilege downgrade. persist-key persist-tun # Output a short status file showing # current connections, truncated # and rewritten every minute. status openvpn-status.log # By default, log messages will go to the syslog (or # on Windows, if running as a service, they will go to # the "\Program Files\OpenVPN\log" directory). # Use log or log-append to override this default. # "log" will truncate the log file on OpenVPN startup, # while "log-append" will append to it. Use one # or the other (but not both). ;log openvpn.log ;log-append /var/log/openvpn/openvpn.log # Set the appropriate level of log # file verbosity. # # 0 is silent, except for fatal errors # 4 is reasonable for general usage # 5 and 6 can help to debug connection problems # 9 is extremely verbose verb 3 # Silence repeating messages. At most 20 # sequential messages of the same message # category will be output to the log. mute 20