Modifications entre les versions 3 et 8 (s'étendant sur 5 versions)
Version 3 à la date du 2006-11-27 15:24:40
Taille: 8067
Commentaire:
Version 8 à la date du 2009-06-17 16:56:09
Taille: 8559
Éditeur: FranckKouyami
Commentaire: Ajout d'une commande
Texte supprimé. Texte ajouté.
Ligne 3: Ligne 3:
[[TableOfContents(3)]] <<TableOfContents(3)>>
Ligne 8: Ligne 8:
Ligne 9: Ligne 10:
 * 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"}}}
 * 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 mise à jour 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"
   }}}
Ligne 17: Ligne 25:
 * 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 serv
eur : {{{./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}}}
 * 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
   {{{
     cd /etc/openvpn/easy-rsa
     
. vars #l'espace après le point est important !!!!
     
./clean-all # A ne faire que la première fois !
     ./build-ca
   }}}
 * Créer la paire certificat/clé du ser
veur :
   {{{
     
./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 paire qui ira sur le client sysadmin
 * Générer les paramètres Diffie Hellman :
   {{{
     
./build-dh
   }}}
Ligne 24: Ligne 48:
 * 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
 * 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
   }}}
Ligne 32: Ligne 60:
 * 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
 * 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
Ligne 37: Ligne 67:
# Allow TUN interface connections to OpenVPN server
${IPT} -A INPUT -i tun+ -j ACCEPT
     # Allow TUN interface connections to OpenVPN server
     ${IPT} -A INPUT -i tun+ -j ACCEPT
Ligne 40: Ligne 70:
# Allow TUN interface connections to be forwarded through other interfaces
${IPT} -A FORWARD -i tun+ -j ACCEPT
}}}
     # Allow TUN interface connections to be forwarded through other interfaces
     ${IPT} -A FORWARD -i tun+ -j ACCEPT
    }}}
Ligne 45: Ligne 75:
 * {{{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  * '''''sudo openvpn /etc/openvpn/server.conf''''' devrait donner quelque chose comme :
  
{{{
Thu Nov 23 17:20:37 2006 OpenVPN 2.0 i386-pc-linux [SSL] [LZO] [EPOLL] built on Apr 6 2006
Ligne 59: Ligne 91:
Thu Nov 23 17:20:37 2006 Initialization Sequence Completed}}} Thu Nov 23 17:20:37 2006 Initialization Sequence Completed
  
}}}
Ligne 66: Ligne 99:
 * 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 69: Ligne 104:
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
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
Ligne 98: Ligne 136:
Fri Nov 24 10:04:13 2006 Initialization Sequence Completed}}} Fri Nov 24 10:04:13 2006 Initialization Sequence Completed
   
}}}
Ligne 101: Ligne 140:
 * 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}}}
 * 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'''''

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 mise à jour 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

    •      cd /etc/openvpn/easy-rsa
           . vars #l'espace après le point est important !!!!
           ./clean-all # A ne faire que la première 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 paire 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 quelque chose 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)