OpenVPN Installation et configuration sécuriss curisée Politique de sécurits curité associée www.urec.cnrs.fr
Plan Problématique Architectures possibles Principes d OpenVPN Configuration - De base - Sécurisée Politique de sécurité Inconvénients / Avantages OpenVPN Lyon 24 janvier 2006 2
Problématique Nomadisme Accès distants sécurisés aux données du laboratoire Définir les besoins exacts de chaque type de nomade : - Besoin ponctuel (un service: ftp, mail, ssh ) - Besoin de plusieurs services en même temps OpenVPN Lyon 24 janvier 2006 3
Plan Problématique Architectures possibles Principes d OpenVPN Configuration - De base - Sécurisée Politique de sécurité Inconvénients / Avantages OpenVPN Lyon 24 janvier 2006 4
Architecture 1/3 Réseau du du laboratoire Entité 1 Site distant Internet C/R Entité n Client OpenVPN authentifié Serveur OpenVPN Serveurs internes VPN OpenVPN Lyon 24 janvier 2006 5
Architecture 2/3 Réseau du du laboratoire Entité 1 Site distant Internet RR C/R Entité n Client OpenVPN authentifié Serveur OpenVPN Serveurs internes VPN OpenVPN Lyon 24 janvier 2006 6
Architecture 3/3 Réseau du du laboratoire Entité 1 Site distant Internet RR GB C/R Entité n Client OpenVPN authentifié Serveur OpenVPN Serveurs internes VPN OpenVPN Lyon 24 janvier 2006 7
Plan Problématique Architectures possibles Principes d OpenVPN Configuration - De base - Sécurisée Politique de sécurité Inconvénients / Avantages OpenVPN Lyon 24 janvier 2006 8
Principes d OpenVPN d 1/2 Système de réseau privé virtuel développé sur le protocole SSL Chiffrement + authentification des paquets (librairie OpenSSL) Clients et serveurs sur Unix, Windows et MacOS X OpenVPN Lyon 24 janvier 2006 9
1. 1. Connexion Connexion client/serveur client/serveur (authentification) (authentification) 2. 2. Serveur Serveur :: Alloue Alloue les les adresses adresses IP IP (zone (zone VPN) VPN) Envoie Envoie des des commandes commandes (créer (créer interface interface réseau réseau + modifier modifier la la table table de de routage) routage) 3. 3. Le Le tunnel tunnel est est établi. établi. Principes d OpenVPN d 2/2 Réseau du du laboratoire Entité 1 Site distant Internet RR GB C/R Entité n Client OpenVPN Envoie commandes authentifié Serveurs internes Allocation adresse IP Serveur OpenVPN VPN OpenVPN Lyon 24 janvier 2006 10
Plan Problématique Architectures possibles Principes d OpenVPN Configuration - De base - Sécurisée Politique de sécurité Inconvénients / Avantages OpenVPN Lyon 24 janvier 2006 11
Configuration de base Protocole (TCP ou UDP?) Méthodes d authentification : - Login/password - Certificat x509 - Choix du tunnel - Mode routeur - Mode pont (paquets non IP) OpenVPN Lyon 24 janvier 2006 12
Fichiers de configuration --- SERVEUR ---- --- SERVEUR ---- ---------------------- Réseau -------------------------------- dev ---------------------- tun --- Mode Réseau routeur -------------------------------- dev tun --- Mode routeur --- Ce tunnel utilisera tcp proto --- tcp Ce tunnel utilisera tcp proto tcp --- OpenVPN va assigner la 1ere adresse (.225) a l'extrémité locale --- --- du OpenVPN tunnel (serveur) va assigner et la 1ere adresse (.225) a l'extrémité locale --- --- va du fournir tunnel aux (serveur) clients et une adresse dans ce réseau en incrémentant server --- va 195.195.195.224 fournir aux clients 255.255.255.224 une adresse dans ce réseau en incrémentant server 195.195.195.224 255.255.255.224 --- Options de persistance pour permettre l accès à certaines ressources --- --- lors Options d un re-démarrage de persistance pour permettre l accès à certaines ressources persist-key --- lors d un re-démarrage persist-tun persist-key keepalive persist-tun 10 60 keepalive 10 60 --------------------- Certificats --------------------------- tls-server --------------------- Certificats --------------------------- tls-server --- clé partagée utilisée lors de l initialisation du tunnel tls-auth --- clé ssl-tls/ta.key partagée utilisée 0 lors de l initialisation du tunnel dh tls-auth ssl-tls/dh1024.pem ssl-tls/ta.key 0 --- Paramètres Diffie-Hellman ca dh ssl-tls/ca.crt ssl-tls/dh1024.pem --- Paramètres Diffie-Hellman cert ca ssl-tls/serveur.pem ssl-tls/ca.crt key cert ssl-tls/serveur.key ssl-tls/serveur.pem Fichier à protéger key ssl-tls/serveur.key Fichier à protéger --------------------- Logs --------------------- log-append --------------------- log/openvpn.log Logs --------------------- --- Fichier de log log-append --- Fichier des log/openvpn.log connexions actuelles --- Fichier du serveur de log status --- Fichier log/openvpn-status.log des connexions actuelles du serveur comp-lzo status log/openvpn-status.log --- Utiliser la librarie LZO comp-lzo --- Niveau de --- log Utiliser la librarie LZO verb --- 4 Niveau de log verb 4 ---- CLIENT ---- ---- CLIENT ---- -- Spécifie la partie client client -- Spécifie la partie client client ---------------------- Réseau -------------------------------- ---------------------- --- Utiliser les mêmes Réseau options -------------------------------- que sur la partie serveur dev --- tun Utiliser les mêmes options que sur la partie serveur proto dev tun tcp proto --- Forcer tcp la récupération de la configuration donné par le serveur pull --- Forcer la récupération de la configuration donné par le serveur pull --- le hostname/ip et port du serveur. --- --- il le est hostname/ip possible d'avoir et port plusieurs du serveur. entrées remote --- il openvpnserver.monlabo.fr est possible d'avoir plusieurs 1194 entrées resolv-retry remote openvpnserver.monlabo.fr infinite --- Essaie de résoudre 1194 le nom resolv-retry --- La plupart infinite des clients --- Essaie n ont pas de résoudre besoin de le faire nom un bind nobind --- La plupart des clients n ont pas besoin de faire un bind nobind persist-key --- Préserve certains états entre deux exécutions persist-tun persist-key --- --- Préserve Préserve certains certains états états entre entre deux deux exécutions exécutions persist-tun --- Préserve certains états entre deux exécutions --------------------- Certificats --------------------------- tls-client --------------------- Certificats --------------------------- tls-client --- paramètres SSL/TLS pkcs12 --- paramètres "certificat.p12" SSL/TLS pkcs12 --- Ou alors, "certificat.p12" remplacer le fichier p12 par les trois fichiers ca --- ca.crt Ou alors, remplacer le fichier p12 par les trois fichiers cert ca client.crt ca.crt key cert client.key client.crt key client.key --------------------- Logs --------------------- --- --------------------- active la compression Logs --------------------- LZO pour optimiser les échanges. comp-lzo --- active la compression LZO pour optimiser les échanges. comp-lzo --- Niveau de log verb --- 4 Niveau de log verb 4 OpenVPN Lyon 24 janvier 2006 13
Choix du routage : Site distant Utilisation du tunnel : comme route vers le laboratoire uniquement push "route 195.195.195.64 255.255.255.224" comme route par défaut d (tout passe par le tunnel) push "redirect-gateway def1" Routage Réseau du du laboratoire Entité 1 Internet RR GB C/R Entité n Client OpenVPN authentifié Serveur OpenVPN Serveurs Internes 195.195.195.64/27 VPN 195.195.195.224/27 OpenVPN Lyon 24 janvier 2006 14
Fichiers de configuration --- ---SERVEUR ---- ---- ---------------------- ---------------------- Réseau Réseau -------------------------------- -------------------------------- dev dev tun tun --- --- Mode Mode routeur routeur --- Ce tunnel utilisera tcp --- Ce tunnel utilisera tcp server server 195.195.195.224 195.195.195.224 255.255.255.224 255.255.255.224 --- Commande envoyé au client pour modifier sa table de --- Commande envoyé au client pour modifier sa table de --- routage. Dans ce cas, on redirige uniquement les paquets --- routage. Dans ce cas, on redirige uniquement les paquets --- à destination de 195.195.195.64/27 vers le tunnel. --- à destination de 195.195.195.64/27 vers le tunnel. push push "route "route 195.195.195.64 195.195.195.64 255.255.255.224«255.255.255.224«--- ---SERVEUR ---- ---- ---------------------- ---------------------- Réseau Réseau -------------------------------- -------------------------------- dev dev tun tun --- --- Mode Mode routeur routeur --- Ce tunnel utilisera tcp --- Ce tunnel utilisera tcp server server 195.195.195.224 195.195.195.224 255.255.255.224 255.255.255.224 --- Commande envoyé au client pour modifier sa table de --- Commande envoyé au client pour modifier sa table de --- routage. Dans ce cas, on utilise l interface tunnel --- routage. Dans ce cas, on utilise l interface tunnel --- comme route par défaut --- comme route par défaut push push "redirect-gateway "redirect-gateway def1" def1" remarque remarque : : serveur serveur 195.195.195.224 195.195.195.224 255.255.255.224 255.255.255.224 mode mode server server tls-server tls-server ifconfig ifconfig 195.195.195.225 195.195.195.225 195.195.195.226 195.195.195.226 ifconfig-pool ifconfig-pool 195.195.195.228 195.195.195.228 195.195.195.254 195.195.195.254 route route 195.195.195.224 195.195.195.224 255.255.255.224 255.255.255.224 push push "route "route 195.195.195.224" 195.195.195.224" OpenVPN Lyon 24 janvier 2006 15
Configuration sécuriss curisée Sécurisation du serveur - Encapsuler le serveur (chroot) - Clé partagée - Authentification par certificats X509 OpenVPN Lyon 24 janvier 2006 16
1. 1. Connexion Connexion client/serveur client/serveur 2. 2. Serveur Serveur :: Alloue Alloue les les adresses adresses IP IP Envoie Envoie des des commandes commandes (créer (créer interface interface réseau réseau + modification modification de de table table de de routage) routage) 3. 3. Le Le tunnel tunnel est est établi. établi. Sécurisation du serveur Réseau du du laboratoire Entité 1 Site distant X509 Internet RR GB C/R Entité n Client OpenVPN user/group chroot authentifié Serveur OpenVPN Serveurs internes Script tls-verify VPN OpenVPN Lyon 24 janvier 2006 17
Configuration serveur Fichier de configuration de OpenVPN partie SERVEUR Fichier de configuration de OpenVPN partie SERVEUR --- les serveur tourne sous l utilisateur et sous le groupe --- les serveur tourne sous l utilisateur et sous le groupe --- openvpn --- openvpn user openvpn user openvpn group openvpn group openvpn --- modifie la racine pour le serveur OpenVPN --- modifie la racine pour le serveur OpenVPN chroot /etc/openvpn chroot /etc/openvpn --- clé partagée utilisée lors de l initialisation du tunnel --- clé partagée utilisée lors de l initialisation du tunnel tls-auth ssl-tls/ta.key 0 tls-auth ssl-tls/ta.key 0 --------------------- Certificats --------------------------- --------------------- Certificats --------------------------- tls-server tls-server --- Paramètres Diffie-Hellman --- Paramètres Diffie-Hellman dh dh1024.pem dh dh1024.pem ca ca.crt ca ca.crt cert serveur.pem cert serveur.pem key serveur.key key serveur.key Fichier de configuration OpenVPN partie CLIENT Fichier de configuration OpenVPN partie CLIENT oblige l extension ns-cert-type dans le certificat du oblige l extension ns-cert-type dans le certificat du serveur avec la valeur «server» serveur avec la valeur «server» ns-cert-type server ns-cert-type server Clé partagée Clé partagée tls-auth "C:\\Program Files\\OpenVPN\\ta.key" 1 tls-auth "C:\\Program Files\\OpenVPN\\ta.key" 1 --------------------- Certificats --------------------------- --------------------- Certificats --------------------------- tls-client tls-client pkcs12 "certif.p12" pkcs12 "certif.p12" OpenVPN Lyon 24 janvier 2006 18
Certificat client Deux fichiers Cert certificate.pem Key key.pem Certificat dans fichier pkcs12 pkcs12 "C:\\Program Files\\OpenVPN\\config\\certificat.p12" Magasin de certificats Windows (machine) cryptoapicert "THUMB:a9 54 e9 35 e2 53 33 c9 d0 54 4c f8 33 34 57 8c a8 a5 14 b9" Token USB ou carte OpenVPN Lyon 24 janvier 2006 19
Certificat client Certificat dans fichier pkcs12 pkcs12 "C:\\Program Files\\OpenVPN\\config\\certificat.p12«Magasin de certificats Windows (machine) cryptoapicert "THUMB:a9 54 e9 35 e2 53 33 c9 d0 54 4c f8 33 34 57 8c a8 a5 14 b9" OpenVPN Lyon 24 janvier 2006 20
Plan Problématique Architectures possibles Principes d OpenVPN Configuration - De base - Sécurisée Politique de sécurité Inconvénients / Avantages OpenVPN Lyon 24 janvier 2006 21
Politique de sécurits curité Utilisation d une zone pour les clients Maîtriser les flux filtrages (serveur OpenVPN, garde-barrière, routeur, etc.) Sous-zones par profil d utilisateurs OpenVPN Lyon 24 janvier 2006 22
Politique de sécurits curité Le(s) routeur(s) et garde barrière Réseau du du laboratoire Entité 1 Site distant Internet RR GB C/R Entité n Client OpenVPN authentifié Serveurs internes GB sur le serveur OpenVPN Serveur OpenVPN VPN OpenVPN Lyon 24 janvier 2006 23
allocation des adresse IP par profil : sur adresse fixe dans une sous-zone Politique de sécurits curité Réseau du du laboratoire Entité 1 Internet RR GB C/R Entité n authentifié Serveur OpenVPN 1 VPN 2 Serveurs internes OpenVPN Lyon 24 janvier 2006 24
Configuration serveur Fichier de configuration de OpenVPN partie SERVEUR Fichier de configuration de OpenVPN partie SERVEUR ----------------------Securite------------------------------ ----------------------Securite------------------------------ ---------------- Vérification sur les clients ---------------- ---------------- Vérification sur les clients ---------------- --- Script appelé lors de l établissement de la connexion --- Script appelé lors de l établissement de la connexion client-connect "/script/connect" client-connect "/script/connect" client-config-dir /ccd client-config-dir /ccd ---------------------- Réseau -------------------------------- ---------------------- Réseau -------------------------------- dev tun --- Mode routeur dev tun --- Mode routeur --- OpenVPN va assigner la 1ere adresse (.1) a --- l'extrémité OpenVPN va assigner la 1ere adresse (.1) a l'extrémité --- locale du tunnel (serveur) et va fournir aux clients --- locale du tunnel (serveur) et va fournir aux clients --- une adresse dans ce réseau en incrémentant --- une adresse dans ce réseau en incrémentant server 195.195.195.224 255.255.255.240 server 195.195.195.224 255.255.255.240 --- Ajoute la route suivante (zone VPN des --- administrateurs) Ajoute la route suivante (zone VPN des administrateurs) --- à la table de routage locale une fois le tunnel établi --- à la table de routage locale une fois le tunnel établi --- route réseau masque [passerelle] [metric] --- route réseau masque [passerelle] [metric] route 195.195.195.240 255.255.255.240 route 195.195.195.240 255.255.255.240 --- Commande envoyé au client pour modifier sa table --- de Commande routage envoyé au client pour modifier sa table de routage --- Dans ce cas, on redirige tous les paquets à --- destination Dans ce cas, de on redirige tous les paquets à destination de --- 195.195.195.64/27 vers le tunnel. --- 195.195.195.64/27 vers le tunnel. push "route 195.195.195.64 255.255.255.224" push "route 195.195.195.64 255.255.255.224" OpenVPN Lyon 24 janvier 2006 25
!/bin/bash!/bin/bash script /etc/openvpn/script/connect script /etc/openvpn/script/connect LDAPSEARCH="/usr/bin/ldapsearch x s sub " LDAPSEARCH="/usr/bin/ldapsearch x s sub " LDAP_SERVER="ldap.monlabo.fr" LDAP_SERVER="ldap.monlabo.fr" LDAP_PORT=389 LDAP_PORT=389 LDAP_BASE="dc=monlabo,dc=fr" LDAP_BASE="dc=monlabo,dc=fr" DISPLAY_ATTRIBUTE="cn" DISPLAY_ATTRIBUTE="cn" CN=`expr "$tls_id_0" : '.*CN=\([^\/^,]*\)'` CN=`expr "$tls_id_0" : '.*CN=\([^\/^,]*\)'` RESULT=`$LDAPSEARCH -h $LDAP_SERVER -p $LDAP_PORT -b "$LDAP_BASE" cn="$cn" RESULT=`$LDAPSEARCH $DISPLAY_ATTRIBUTE` -h $LDAP_SERVER -p $LDAP_PORT -b "$LDAP_BASE" cn="$cn" $DISPLAY_ATTRIBUTE` NBRESULT=`echo "$RESULT" grep " numentries: " awk '{print $3}'` NBRESULT=`echo "$RESULT" grep " numentries: " awk '{print $3}'` if [ -n "$RESULT" ] if [ -n "$RESULT" ] then then if [ -n "$NBRESULT" ] if [ -n "$NBRESULT" ] then then if [ "$NBRESULT" -gt 0 ] if [ "$NBRESULT" -gt 0 ] then then exit 0; exit 0; fi fi fi fi fi fi exit 1; exit 1; Exemples Fichier /et/openvpn/ccd/prenom_nom Fichier /et/openvpn/ccd/prenom_nom ifconfig-push 195.195.195.229 195.195.195.230 ifconfig-push 195.195.195.229 195.195.195.230 OpenVPN Lyon 24 janvier 2006 26
!/bin/bash!/bin/bash script /etc/openvpn/script/connect script /etc/openvpn/script/connect LDAPSEARCH="/usr/bin/ldapsearch x s sub " LDAPSEARCH="/usr/bin/ldapsearch x s sub " LDAP_SERVER="ldap.monlabo.fr" LDAP_SERVER="ldap.monlabo.fr" LDAP_PORT=389 LDAP_PORT=389 LDAP_BASE="dc=monlabo,dc=fr" LDAP_BASE="dc=monlabo,dc=fr" DISPLAY_ATTRIBUTE="cn" DISPLAY_ATTRIBUTE="cn" CN=`expr "$tls_id_0" : '.*CN=\([^\/^,]*\)'` CN=`expr "$tls_id_0" : '.*CN=\([^\/^,]*\)'` Exemples RESULT=`$LDAPSEARCH $LDAP_OPT -h $LDAP_SERVER -p $LDAP_PORT -b "$LDAP_BASE" cn="$cn" DISPLAY_ATTRIBUTE` RESULT=`$LDAPSEARCH $LDAP_OPT -h $LDAP_SERVER -p $LDAP_PORT -b "$LDAP_BASE" cn="$cn" DISPLAY_ATTRIBUTE` NBRESULT=`echo "$RESULT" grep " numentries: " awk '{print $3}'` NBRESULT=`echo "$RESULT" grep " numentries: " awk '{print $3}'` if [ -n "$RESULT" ] if [ -n "$RESULT" ] then then if [ -n "$NBRESULT" ] if [ -n "$NBRESULT" ] then then if [ "$NBRESULT" -gt 0 ] if [ "$NBRESULT" -gt 0 ] then then exit 0; exit 0; fi fi fi fi Fi Fi if [ $tls_id_0 = "la valeur du DN" ] if [ $tls_id_0 = "la valeur du DN" ] then then echo ifconfig-push 195.195.195.229 195.195.195.230 > $1 echo ifconfig-push 195.195.195.229 195.195.195.230 > $1 fi fi exit 1; exit 1; Fichier /et/openvpn/ccd/prenom_nom Fichier /et/openvpn/ccd/prenom_nom ifconfig-push 195.195.195.229 195.195.195.230 ifconfig-push 195.195.195.229 195.195.195.230 OpenVPN Lyon 24 janvier 2006 27
Plan Problématique Architectures possibles Principes d OpenVPN Configuration - De base - Sécurisée Politique de sécurité Inconvénients / Avantages OpenVPN Lyon 24 janvier 2006 28
Inconvénients nients Gaspillage d adresses : un subnet /30 par 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] OpenVPN Lyon 24 janvier 2006 29
Inconvénients nients Utilisation du client Windows possible selon trois cas : - Utilisateur est aussi un administrateur de son ordinateur - Utilisateur connaît le mot de passe d un administrateur «exécuter sous» - Utilisateur ne connaît pas le mot de passe d un administrateur OpenVPN Lyon 24 janvier 2006 30
Avantages - Facile à utiliser, robuste, sécurisé, rapide, portable et configurable sur tous les systèmes d'exploitations. - Compatible avec le NAT et l'adressage dynamique. - Hautement configurable - Evolutif ( OpenSSL et pilote TUN/TAP ) OpenVPN Lyon 24 janvier 2006 31
Liens utiles Lien officiel : http://openvpn.net Documentation (français) : http://lehmann.free.fr/openvpn/openvpnindex Interfaces graphiques : http://openvpn.net/gui.html OpenVPN Lyon 24 janvier 2006 32
Questions? www.urec.cnrs.fr
Réseau du du laboratoire Entité 1 Site distant Internet RR GB C/R Entité n Client OpenVPN authentifié Serveur OpenVPN Serveurs internes VPN OpenVPN Lyon 24 janvier 2006 34