.. Wiki Lesfourmisduweb documentation master file, created by sphinx-quickstart on Thu Apr 25 13:32:03 2019. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. .. Reminder for header structure : Niveau 1 : ==================== Niveau 2 : -------------------- Niveau 3 : ++++++++++++++++++++ Niveau 4 : """""""""""""""""""" Niveau 5 : ^^^^^^^^^^^^^^^^^^^^ OpenVpn ================================================ .. image:: openvpn.png :align: center :alt: OpenVPN Logo Présentation ----------------------------- Cette présentation présente un tuto openvpn pour client openvpn nomade. Nous partons du principe que la partie routage sera géré par shorewall. Installation ---------------------------- Nous allons installer openvpn Le paquet easy-rsa comme son nom l’indique permet une gestion facile des certificats. .. code-block:: bash apt-get install openvpn easy-rsa Génération des clés serveur --------------------------------------- Copie du dossier easy-rsa d’exemple pour la génération des clé : .. code-block:: bash cp -r /usr/share/easy-rsa/ /etc/openvpn/ On commence par éditer le fichier :file:`/etc/openvpn/easy-rsa/vars` : .. code-block:: bash export KEY_COUNTRY="FR" export KEY_PROVINCE="44" export KEY_CITY="Loire atlantique" export KEY_ORG="Fourmis" export KEY_EMAIL="blog@lesfourmisduweb.org" export KEY_OU="Fourmis" Création d’un lien symbolique pour pointer vers la dernière version de openssl.cnf .. code-block:: bash cd /etc/openvpn/ ln -s openssl-1.0.0.cnf openssl.cnf On génère maintenant les clé pour le serveur (génération de la ca) .. code-block:: bash cd /etc/openvpn/easy-rsa/ source vars ./clean-all ./build-dh #Construction du dhparam ./pkitool –initca #On construit une ca ./pkitool --server server #On construit un clé de type serveur openvpn --genkey --secret keys/ta.key #On construit une clé symétrique .. note :: Voir tls-auth dans la documentation openvpn pour comprendre le pourquoi d’une clé symétrique (c'est une double sécu et c'est plus performant ) On copie maintenant les clé des easy-rsa a openvpn .. code-block:: bash cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh2048.pem /etc/openvpn/ Configuration du serveur openvpn ----------------------------------- Pour plus de sécurité, nous allons isolé openvpn dans un chroot dans le dossier :file:`/etc/openvpn/jail` : .. code-block:: bash mkdir /etc/openvpn/jail mkdir etc/openvpn/jail/tmp Configuration du fichier: :file:`/etc/openvpn/server.conf` .. code-block:: bash mode server #Mode Serveur topology subnet proto udp #Sur du TCP port 4444 #Sur le Port 4444 dev tun #En mode Tun # Cles et certificats ca ca.crt cert server.crt key server.key dh dh2048.pem tls-auth ta.key 1 cipher AES-256-CBC # Reseau server 10.8.0.0 255.255.255.0 keepalive 10 120 # Securite user nobody group nogroup chroot /etc/openvpn/jail persist-key persist-tun comp-lzo #crl-verify crl.pem # Log verb 3 mute 20 status openvpn-status.log ;log-append /var/log/openvpn.log Ajouter l’interface vpn dans shorewall ------------------------------------------ On déclare une zone vpn dans :file:`/etc/shorewall/zone` .. code-block:: bash vpn ipv4 Et on ajoute l’interface tun0 dans la zone vpn (fichier :file:`/etc/shorewall/interfaces` ) .. code-block:: bash vpn tun0 detect tcpflags,nosmurfs Ajouter le fait que le service vpn est dispo depuis l'exterieur dans le fichier :file:`/etc/shorewall/rules` .. code-block:: bash ACCEPT all fw udp 4444 Gestion des utilisateurs dans OpenVPN --------------------------------------- Génération de clés clients openvpn ++++++++++++++++++++++++++++++++++++++++++++ Nous allons stocker les conf des clients vpn dans le dossier :file:`/etc/openvpn/clients` .. code-block:: bash mkdir /etc/openvpn/clients On va générer la nouvelle clé avec esay-rsa .. code-block:: bash cd /etc/openvpn/easy-rsa/ source vars ./build-key **_USER_NAME_** (Attention le Common name est important) Création d’un dossier **_USER_NAME_** dans le répertoire des conf client openvpn : .. code-block:: bash mkdir /etc/openvpn/clients/**_USER_NAME_**/ cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/**_USER_NAME_** .crt keys/**_USER_NAME_** .key /etc/openvpn/clients/**_USER_NAME_**/ Création de la conf client +++++++++++++++++++++++++++++++ Fichier :file:`/etc/openvpn/clients/**_USER_NAME_**/**_USER_NAME_** .conf` (renommer en .ovpn pour windows et todos pour fin de ligne windows ( paquet tofrodos ) : .. code-block:: bash # Client client dev tun proto udp remote 1.2.3.4 4444 resolv-retry infinite cipher AES-256-CBC auth-user-pass auth-nocache # Cles ca ca.crt cert $**_USER_NAME_**.crt key $**_USER_NAME_**.key tls-auth ta.key 1 key-direction 1 # Securite nobind script-security 2 persist-key persist-tun comp-lzo yes verb 3 .. note:: Remplacer 1.2.3.4 par l'ip ou le nom dns disponible depuis l'exterieur. Forcer une ip fixe pour le client et fixer les route pour chaque clients (plus propre): .. code-block:: bash mkdir /etc/openvpn/jail/ccd ln -s /etc/openvpn/jail/ccd /etc/openvpn/ccd Fichier :file:`/etc/openvpn/jail/ccd/**_USER_NAME_**` (Attention le fichier porte le nom du CN) .. code-block:: bash ifconfig-push 10.8.0.18 255.255.255.0 push "route 172.29.0.0 255.255.0.0" push "route 172.30.0.0 255.255.0.0" * On indique ici avec ifconfig-push l'ip que va avoir le client. * push route ajoute une route au client lors de la connexion. De cette manière on pousse uniquement les routes utile au client Autoriser l’adresse 10.8.0.18 d’accéder aux vlan locaux dans le fichier rules de shorewall: .. code-block:: bash ACCEPT vpn:10.8.0.18 loc all Depuis l’interface du client OpenVPN, dans le menu faire changer la « pass phrase » pour finir de sécuriser le certificat. Révoquer un certificat  ++++++++++++++++++++++++++++ Révocation du certificat depuis les outils easy-rsa .. code-block:: bash cd etc/openvpn/easy-rsa source vars ici on révoque la clé **_USER_NAME_** ce qui va créer un fichier :file:`crl.pem` .. code-block:: bash ./revoke-full **_USER_NAME_** On copie le nouveau fichier crl dans openvpn pour la prise en compte .. code-block:: bash cp -f /etc/openvpn/easy-rsa/keys/crl.pem /etc/openvpn/jail/ On indique a openvpn de prendre en compte le nouveau fichier crl en décomentent la ligne dans le fichier :file:`/etc/openvpn/server.conf` .. code-block:: bash crl-verify crl.pem Gestion des outils clients OpenVPN ----------------------------------------- Client Linux +++++++++++++++ Sous ubuntu, le plus simple est d’utiliser « Network-manager », il faut donc lui permettre de gérer les configuration OpenVPN avec l’ajout du paquet « network-manager-openvpn » • Depuis la gestion du réseau dans la barre des taches, selectionner « configurer les connexions réseaux », puis completement en bas de la colonne de gauche, cliquer sur le « + » • Dans la liste proposée, toujours en bas de liste dans la partie « Autre » sélectionner « importer connexion VPN... ». Intégrer le fichier de type ovpn et copier les certificats. • Pour eviter des messages d’erreurs ultérieurs, vérifier que dans le chemin ~/.local/share/networkmanagement/certificates/ les fichiers soient uniquement lisible par l’utilisateur de la session. • Dans l’onglet IPv4 ajouter les dns et le domaine de recherche. Dans le bouton « Routes » cocher « utiliser uniquement pour les ressources sur cette connexion ». Client Windows OpenVPN 2.4.6 ++++++++++++++++++++++++++++++ Installer le client openvpn. Depuis la barre des tâches, et le client Openvpn, « importer le fichier », selectionner le fichier :file:`**_USER_NAME_**.ovpn` Dans le dossier de configuration :file:`c:\users\UTILISATEUR\Openvpn\config\**-USER_NAME_**`, copier toute les certificats : :file:`**_USER_NAME_**.crt **_USER_NAME_**.key` :file:`ca.crt` et :file:`ta.key`. .. toctree:: :maxdepth: 1