Modifications entre les versions 2 et 6 (s'étendant sur 4 versions)
Version 2 à la date du 2006-11-24 09:07:28
Taille: 7854
Commentaire:
Version 6 à la date du 2008-02-21 22:09:45
Taille: 8107
Éditeur: localhost
Commentaire: converted to 1.6 markup
Texte supprimé. Texte ajouté.
Ligne 3: Ligne 3:
[[TableOfContents(3)]] <<TableOfContents(3)>>
Ligne 18: Ligne 18:
./clean-all ./clean-all #a ne faire que la premiere fois !
Ligne 30: Ligne 30:
push "route 10.0.0.0 255.0.0.0" #pour ajouter la route 10.0.0.0/8 push "route 10.0.0.0 255.0.0.0" #pour ajouter la route 10.0.0.0/8}}}
Ligne 66: Ligne 66:
 * Récupérer {{{client.conf}}} dans /usr/share/... et configurer les paramètres ca, cert, key, remote : {{{remote 81.91.236.1 1194  * Récupérer {{{client.conf}}} dans /usr/share/doc/openvpn/examples/sample-config-files et configurer les paramètres ca, cert, key, remote : {{{remote 81.91.236.1 1194
Ligne 106: Ligne 106:
  * Empêcher le client DHCP de récupérer les serveurs de nom et le search : supprimer les requêtes {{{domain-name, domain-name-servers }}} de {{{/etc/dhcp3/dhclient.conf}}}

Création d'un tunnel VPN

Voici un petit guide pour installer un serveur et un client OpenVPN, qui correspond à ce que j'ai (CédricProtière) mis en oeuvre à Cotonou, en utilisant http://openvpn.net/howto.html et la patience de JérômeSantini.

Sur le serveur

Initialisation

  • Installer openvpn (aptitude install openvpn)

  • Copier le contenu du répertoire /usr/share/doc/openvpn/examples/easy-rsa dans un nouveau répertoire /etc/openvpn afin de ne rien perdre lors d'une maj d'openvpn (et puis c'est mieux rangé)

  • Modifier /etc/openvpn/vars -pour Cotonou : {{{export KEY_COUNTRY=BJ

export KEY_PROVINCE=Atlantique export KEY_CITY=Cotonou export KEY_ORG="AUF" export KEY_EMAIL="root+openvpn@bj.refer.org"}}}

Création des certificats et des clés

  • Initialiser la PKI (Public Key Infrastructure) ; créer le certificat et la clé du CA (Certificate Authority) maître : cf http://openvpn.net/howto.html#pki {{{. ./vars

./clean-all #a ne faire que la premiere fois ! ./build-ca}}}

  • Créer la paire certificat/clé du serveur : ./build-key-server server (/!\ A la question Common Name, répondre server ; "Sign the certificate? [y/n]" y ; "1 out of 1 certificate requests certified, commit? [y/n]" y)

  • Générer une paire par client : ./build-key sysadmin par exemple (bien choisir sysadmin comme Common Name) pour créer la pair qui ira sur le client sysadmin

  • Générer les paramètres Diffie Hellman : ./build-dh

Initialisation du fichier de configuration

  • Copier /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz dans /etc/openvpn et le décompresser (gunzip /etc/openvpn/server.conf.gz)

  • Modifier les paramètres ca, cert, key, dh : {{{ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key dh /etc/openvpn/keys/dh1024.pem server 10.25.2.0 255.255.255.0 #Je choisis ici d'avoir comme RPV 10.25.2.0/24 push "route 10.0.0.0 255.0.0.0" #pour ajouter la route 10.0.0.0/8}}}

Mettre à jour le filtrage

  • Ajouter les lignes suivantes dans le fichier de configuration du filtrage (par exemple /etc/network/firewall-install) : {{{#openvpn : on accepte openvpn (depuis poste de l'admin)

# nfs-cotonou a cause de snat, sinon ca devrait etre l'ip du poste : $IPT -A INPUT -p udp --dport 1194 -s 81.91.236.4 -j ACCEPT $IPT -A OUTPUT -p udp --dport 1194 -d 81.91.236.4 -j ACCEPT

# Allow TUN interface connections to OpenVPN server ${IPT} -A INPUT -i tun+ -j ACCEPT

# Allow TUN interface connections to be forwarded through other interfaces ${IPT} -A FORWARD -i tun+ -j ACCEPT }}}

Tester

  • sudo openvpn /etc/openvpn/server.conf devrait donner qqch comme : {{{Thu Nov 23 17:20:37 2006 OpenVPN 2.0 i386-pc-linux [SSL] [LZO] [EPOLL] built on Apr 6 2006

Thu Nov 23 17:20:37 2006 Diffie-Hellman initialized with 1024 bit key Thu Nov 23 17:20:37 2006 TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ] Thu Nov 23 17:20:37 2006 TUN/TAP device tun0 opened Thu Nov 23 17:20:37 2006 /sbin/ifconfig tun0 10.25.2.1 pointopoint 10.25.2.2 mtu 1500 Thu Nov 23 17:20:37 2006 /sbin/route add -net 10.25.2.0 netmask 255.255.255.0 gw 10.25.2.2 Thu Nov 23 17:20:37 2006 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:23 ET:0 EL:0 AF:3/1 ] Thu Nov 23 17:20:37 2006 GID set to openvpn Thu Nov 23 17:20:37 2006 UID set to nobody Thu Nov 23 17:20:37 2006 UDPv4 link local (bound): [undef]:1194 Thu Nov 23 17:20:37 2006 UDPv4 link remote: [undef] Thu Nov 23 17:20:37 2006 MULTI: multi_init called, r=256 v=256 Thu Nov 23 17:20:37 2006 IFCONFIG POOL: base=10.25.2.4 size=62 Thu Nov 23 17:20:37 2006 IFCONFIG POOL LIST Thu Nov 23 17:20:37 2006 Initialization Sequence Completed}}}

Sur le client

  • Installer le paquet openvpn
  • Récupérer la pair clé/certificat du client ainsi que le CA maître générés sur le serveur (/!\ ce n'est pas optimal : il serait mieux de créer les pairs de chaque client directement sur le client et pas sur le serveur)
  • Récupérer client.conf dans /usr/share/doc/openvpn/examples/sample-config-files et configurer les paramètres ca, cert, key, remote : {{{remote 81.91.236.1 1194

ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/sysadmin.crt key /etc/openvpn/keys/sysadmin.key}}}

  • Tester : sudo openvpn /etc/openvpn/client.conf doit vous donner un affichage du genre : {{{Fri Nov 24 10:04:12 2006 OpenVPN 2.0.6 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Apr 10 2006

Fri Nov 24 10:04:12 2006 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. Fri Nov 24 10:04:12 2006 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info. Fri Nov 24 10:04:12 2006 LZO compression initialized Fri Nov 24 10:04:12 2006 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ] Fri Nov 24 10:04:12 2006 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ] Fri Nov 24 10:04:12 2006 Local Options hash (VER=V4): '41690919' Fri Nov 24 10:04:12 2006 Expected Remote Options hash (VER=V4): '530fdded' Fri Nov 24 10:04:12 2006 UDPv4 link local: [undef] Fri Nov 24 10:04:12 2006 UDPv4 link remote: 81.91.236.1:1194 Fri Nov 24 10:04:12 2006 TLS: Initial packet from 81.91.236.1:1194, sid=c77a8b68 48e5b272 Fri Nov 24 10:04:12 2006 VERIFY OK: depth=1, /C=BJ/ST=Atlantique/L=Cotonou/O=AUF/OU=CNFC/CN=fw-cotonou/emailAddress=root_openvpn@bj.refer.org Fri Nov 24 10:04:12 2006 VERIFY OK: depth=0, /C=BJ/ST=Atlantique/O=AUF/OU=CNFC/CN=server/emailAddress=root_openvpn@bj.refer.org Fri Nov 24 10:04:12 2006 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Fri Nov 24 10:04:12 2006 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Fri Nov 24 10:04:12 2006 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Fri Nov 24 10:04:12 2006 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Fri Nov 24 10:04:12 2006 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA Fri Nov 24 10:04:12 2006 [server] Peer Connection Initiated with 81.91.236.1:1194 Fri Nov 24 10:04:13 2006 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Fri Nov 24 10:04:13 2006 PUSH: Received control message: 'PUSH_REPLY,route 10.0.0.0 255.0.0.0,route 10.25.2.1,ping 10,ping-restart 120,ifconfig 10.25.2.6 10.25.2.5' Fri Nov 24 10:04:13 2006 OPTIONS IMPORT: timers and/or timeouts modified Fri Nov 24 10:04:13 2006 OPTIONS IMPORT: --ifconfig/up options modified Fri Nov 24 10:04:13 2006 OPTIONS IMPORT: route options modified Fri Nov 24 10:04:13 2006 TUN/TAP device tun0 opened Fri Nov 24 10:04:13 2006 ifconfig tun0 10.25.2.6 pointopoint 10.25.2.5 mtu 1500 Fri Nov 24 10:04:13 2006 route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.25.2.5 Fri Nov 24 10:04:13 2006 route add -net 10.25.2.1 netmask 255.255.255.255 gw 10.25.2.5 Fri Nov 24 10:04:13 2006 Initialization Sequence Completed}}}

Finalisation

  • Le paquet openvpn a déjà installé /etc/init.d/openvpn qui démarrera automatiquement le serveur OpenVPN en utilisant ce qu'il trouve comme fichier de configuration dans /etc/openvpn/*.conf au prochain démarrage (ou avec un simple sudo invoke-rc.d openvpn start)

  • Il faut maintenant spécifier automatiquement dans votre resolv.conf que le serveur de nom ne doit pas être récupéré par dhcp :

    • Installer le paquet resolvconf

    • Ajouter les lignes suivantes dans /etc/network/interfaces : {{{dns-nameservers 10.25.1.1

dns-search refer.bj}}}

  • Empêcher le client DHCP de récupérer les serveurs de nom et le search : supprimer les requêtes domain-name, domain-name-servers  de /etc/dhcp3/dhclient.conf

  • Redémarrer les interfaces : sudo invoke-rc.d networking restart

ZAO/Cotonou/Modèles/OpenVPN (dernière édition le 2009-06-17 16:56:09 par FranckKouyami)