Modifications entre les versions 9 et 11 (s'étendant sur 2 versions)
Version 9 à la date du 2012-08-29 23:02:09
Taille: 10418
Éditeur: FranckKouyami
Commentaire:
Version 11 à la date du 2012-08-30 13:14:51
Taille: 10389
Éditeur: FranckKouyami
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 76: Ligne 76:
Il faut avant de lancer le serveurs générer les pairs de clés nécessaires pour la certification des clés du client, la sécurisation de la connexion etc. Sous débian, les outils nécessaires sont installés dans "/usr/share/doc/openvpn/examples/easy-rsa". Donc je recommande de faire une copie de ce répertoire dans /root :
{{{
    cp -av /usr/share/doc/openvpn/examples/easy-rsa /root/
Il faut avant de lancer le serveurs générer les pairs de clés nécessaires pour la certification des clés du client, la sécurisation de la connexion etc. Sous débian, les outils nécessaires sont installés dans "/usr/share/doc/openvpn/examples/easy-rsa/2.0". Donc je recommande de faire une copie de ce répertoire dans /root :
{{{
    cp -av /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/
Ligne 141: Ligne 141:
=== Création du certificat auto-signé par l'autorité ===
{{{
    ./sign-req ca
}}}
Ligne 149: Ligne 144:

{{{
    ./build-key-server server #Qui va vous générer le clé, une demande der certification et signer la clé rien que pour vous
}}}
{{{
    ./build-key-server server # Qui va vous générer le clé, une demande der certification et signer la clé rien que pour vous
}}}
'''Il Faut répondre oui aux 2 dernières questions'''

Généralités

Un VPN c'est quoi..?

Un VPN permet d'étendre la zone de sécurité du système d'information interne à travers un réseau non sécurisé (de type Internet). Cela permet à un poste non physiquement connecté sur le réseau local d'être considéré comme une machine branchée directement au sein de celui-ci.

Fonctionnement

La connexion à un VPN se déroule comme suit :

  • Lancement d'une application de connexion sur l'ordinateur se trouvant en dehors du réseau du SI.
  • L'application se connecte au serveur gérant les accès aux VPN : pendant cette phase, l'application et le serveur échangent les informations nécessaires à vérifier l'identité du client et son droit ou non droit à se connecter au réseau VPN.
  • Une fois l'authentification effectuée, le serveur et l'application mettent en place une connexion point à point entre eux, dans laquelle l'ensemble des données circulant sont cryptées.
  • L'ordinateur externe peut alors accéder à l'ensemble des données de l'entreprises dont le contenu est accessible via les règles mises en place par l'administrateur de la sécurité.

Différentes technologies existent pour pouvoir se connecter à distance via un VPN. Ces techniques s'appuient sur l'un des protocoles de tunnelisation existant (IPSec, PPTP, SecuRemote, ssh...)

Pré-requis

  • Une adresse IP joignable du réseau du client
  • Un port d'écoute non filtré [Attention aux FW]
  • Une méthode permettant de générer des certificats SSL (souvent fournit avec openvpn)

Un tunnel VPN simple et TEMPORAIRE avec SSH

Sur le serveur ssh

Sur le serveur sshd (enfin la machine avec laquelle vous voulez établire un tunnel ssh), dans la fichier " /etc/ssh/sshd_config" il faut activer ses deux options :

   PermitRootLogin yes
   PermitTunnel yes

et redémarrer le service sshd

   /etc/init.d/ssh restart

Sur le client

   ssh -f -w 0:1 ip_serv true

Cette commande va initialiser une interface sur chaque machine : tun0 sur le client et tun1 sur le serveur ssh. Les numéros sont tout à fait arbitraires et n'on aucune significations réelle.

Sur les deux machines

   ip addr show tun0 #pour voir que l'interface existe bien

Cette commande va permettre de vérifier qu'une unterface tunX a été bien créer

Configurer l'interface client

    ifconfig tun0 192.168.1.1 pointopoint 192.168.1.2 netmask 255.255.255.252
    # ou 
    ip addr add 192.168.1.1/32 peer 192.168.1.2 dev tun0

Configurer l'interface serveur

    ifconfig tun1 192.168.1.2 pointopoint 192.168.1.1 netmask 255.255.255.252
    # ou 
    ip addr add 192.168.1.2/32 peer 192.168.1.1 dev tun1
  • Sur une machine et pinguer l'autre pour voir... ca devrait marcher.
  • Ensuite, vous pouvez rajouter des des options de routages pour donner accès aux sous réseaux connecter aux 2 machines ..

OpenVPN

Installation

Simple : apt-get install openvpn

Fichiers de configuration :

  • /etc/openvpn
  • /etc/default/openvpn
  • /etc/init.d/openvpn

Quelques choses préalables

Il faut avant de lancer le serveurs générer les pairs de clés nécessaires pour la certification des clés du client, la sécurisation de la connexion etc. Sous débian, les outils nécessaires sont installés dans "/usr/share/doc/openvpn/examples/easy-rsa/2.0". Donc je recommande de faire une copie de ce répertoire dans /root :

    cp -av /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/

Variables

  • Adaptez le contenu du fichier "vars" dans le répertoire "easy-rsa" qui est dans root à vos données locales en modifiant les lignes suivantes :

    export KEY_COUNTRY="BJ"
    export KEY_PROVINCE="Ctn"
    export KEY_CITY="COTONOU"
    export KEY_ORG="AUF"
    export KEY_EMAIL="technique@bj.auf.org"
  • Rendre le fichier excécutable et remplir les variables de session

    chmod +x vars
    ./vars

Procéder au grand nettoyage

    ./clean-all #Attention car le script supprime le contenu du répertoire keys qui se trouve dans le répertoire courant

Création du CA

    ./build-ca 

et ça doit donner un truc comme cela

    Generating a 1024 bit RSA private key
    ...++++++
    ................++++++
    writing new private key to 'ca.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [BJ]:
    State or Province Name (full name) [Ctn]:
    Locality Name (eg, city) [COTONOU]:
    Organization Name (eg, company) [AUF]:
    Organizational Unit Name (eg, section) []:
    Common Name (eg, your name or your server's hostname) [TEST CA]: RTL
    Name []:
    Email Address [technique@bj.refer.org]:

On obtient une clé "ca.key" Uniquement accessible à root et une demande de signature pour le certificat de l'autorité de certification

Génération du Diffie-Hellman

    ./build-dh 
    Generating DH parameters, 1024 bit long safe prime, generator 2 |

Génération des clés

Voila, à cette étape, on est prêt à signer des clés. On va commencer par le serveur lui même

Serveur

    ./build-key-server server # Qui va vous générer le clé, une demande der certification et signer la clé rien que pour vous

Il Faut répondre oui aux 2 dernières questions

Clients

Ensuite on va générer des clés pour les clients pour X de 1 à n

    ./build-key client_X

Les cles se trouvent dans le répertoirte "keys"

Configuration du serveur

Cela se passe dans "/etc/openvpn/openvpn.con". Voici un exemple type avec quelques commentaires pour expliquer ce que chaque chose fait :

    #local XXX.XXX.XXX.XXX # Adresse IP d'écoute Commenter pour une écoute sur toutes les interfaces
    port 1194 # Port d'écoute
    #nobind # Permet de dire au serveur de en pas écouter sur un port spécifique A ne pas utiliser avec l'option "port "
    proto udp # Protocol utilisé (TCP ou UDP)
    dev tun # Permet de créer des tunnels IP routés alors que "tap" permet de créer des tunnels ethernet ???
    ca   /root/easy-rsa/keys/ca.crt 
    cert /root/keys/easy-rsa/test.crt
    key  /root/keys/easy-rsa/test.key # Fichier à concerver secret
    dh   /root/keys/easy-rsa/dh1024.pem # Localisation des paramètres Diffie-Hellman
    server 10.25.2.0 255.255.255.0 # Le sous réseau de notre VPN
    #ifconfig-pool-persist ipp.txt # Enregistres les associations entre les clients VPN et les adresses IP reçues. En cas de redémarrage après un crash, il permet aux clients de retrouver leurs adresses IP précédentes
    user nobody
    group nobody
    #push "redirect-gateway" # Change la route par défaut des clients via le VPN. 
    #push "dhcp-option DNS 10.25.1.1" # Une option très intéressante qui permet de changer le serveur DNS vers un serveur accessible du VPN
    #duplicate-cn # décommenter pour permettre à plusieurs client de présenter le même certificat
    keepalive 10 30 # Ping toute les 10 sec et considère la liaison morte si aucune réponse n'est recue au bout de 30 sec
    comp-lzo # Active la compression LZO sur la liaison VPN
    max-clients 20 # Nombre maximum de clients
    log openvpn.log
    verb   4
    # up /etc/openvpn/cmd/up.sh # Lors de la connexion, ce script est excécuté
    #ccd-exclusive # Permet d'imposer des conditions particulières aux xlients.
    #client-config-dir /etc/openvpn/ccd
    #persist-key
    #persist-tun
    #status /var/state/openvpn.status

Tout ce qui est commenté n'est pas encore utile. Allez on va lancer en regardant ce que le serveur nous dit :  /etc/init.d/openvpn start  et ensuite un  netstat -laput . Notez qu'il y a un serveur qui écoute sur le port 1194. Regarder aussi les logs..

Configuration du client

Installation pure de openvpn sur debian like

    apt-get install openvpn

Alors ici ce qui est bien c'est que vous pouvez configurer openvpn pour se connecter à plusieurs réseaux vpn.. Chacun avec sa configuration dé"fini dans un fichier dans "/etc/openvpn/EXAMPLE_CONFIG1.conf" :

    cd /etc/openvpn;
    touch mon_vpn1.conf
    vi mon_vpn1.conf

Dedans rajouter les informations concernant le VPN auquel vous voulez vous connecter :

    client # fonctionnement en mode client
    remote XXX.XXX.XXX.XXX # adresse ip du serveur VPN
    port 1194 #Port d'écoute du serveur VON
    #nobind # a utiliser si l'option nobind a été activer sur le serveurr
    dev tun # conformément à la configuration du serveur
    comp-lzo # conformément à la configuration du serveur
    # SSL Configuration 
    ca /home/toto/keys/ca.crt 
    cert /home/toto/keys/client.crt 
    key /home/toto/keys/client.key 
    # Logging configuration 
    log /var/log/openvpn.log 
    verb 4

Bon vous aurez notez que on a vraiment besoin de trois fichiers pour cela :

  • ca.crt qui est récupérer du serveur
  • client.crt qui le certificat du client signé par le serveur
  • client.keys qui est la clé du client

Bon il y a une longue littérature sur comment transmettre ces informations de façon sécurisé pour les préserver de toutes agressions. Moi, je suggère ssh, mais il y a d'autre façons ... A vous de voir

Ensuite dans "/etc/default/openvpn" il est important de faire :

    AUTOSTART="none"

et ...

    /etc/init.d/openvpn start mon_vpn

Installation pure de openvpn windows/mac

Who cares ...?

Références

Projet/SemaineTech/2012/Ateliers/OpenVPN/Documentation (dernière édition le 2012-08-30 13:14:51 par FranckKouyami)