# OpenVPN Debian + Tunnel # ####################### # Document disponible ici: https://drive.google.com/open?id=1i8Na0tXrbJVACRMw_zFq0jxiGOVSgy5n # Prérequis # ######### Configurer 2 systèmes Debian (ou autre suivant les besoins) par pont avec deux cartes ip fixe x 2 # On active le routage IPv4 echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf sysctl -p /etc/sysctl.conf # On active le nat entre les cartes (eth0 ==> carte ext) iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE # On installe iptables-persistent pour eendre les changements d'iptables persistants apt-get install iptables-persistent # Pour sauver les paramètres d'IPtables ou recharger les valeurs précédentes /etc/init.d/iptables-persistent save /etc/init.d/iptables-persistent reload ============================ # Activer la route statique (pour permettre le pont entre les deux sous réseaux) ip route add 10.0.0.0/24 via 192.168.1.133 dev ens33 # (ens33 ==> carte ext) ip route add 10.1.0.0/24 via 192.168.1.134 dev ens33 # (ens33 ==> carte ext) # Pour être permanent (doit être ajouté au fichier "interfaces") up ip route add 10.0.0.0/24 via 192.168.1.133 dev ens33 # (ens33 ==> carte ext) up ip route add 10.1.0.0/24 via 192.168.1.134 dev ens33 # (ens33 ==> carte ext) #### Installation du serveur VPN ######################################################################## apt-get install openvpn easy-rsa ln -s /usr/share/easy-rsa /etc/openvpn/scripts # Au besoin chown -R $USER /etc/openvpn/easy-rsa/ # ou chown -R $USER /etc/openvpn/easy-rsa/ # Mettre les clefs pour le français ==> paramètres qui seront passés au certificat ( nano /etc/openvpn/scripts/vars export KEY_COUNTRY="FR" export KEY_PROVINCE="FR" export KEY_CITY="FR" export KEY_ORG="LJP-Infos" export KEY_EMAIL="loiseljp@gmail.com" # ... on peut aussi changer les temps de validité, longueurs ... # On renomme on on fait une lien vers le dernier certicat "ssl" (le plus récent) en openssl.cnf ex: ln -s /etc/openvpn/scripts/openssl-1.0.0.cnf /etc/openvpn/scripts/openssl.cnf # On génère les certificats (attention au message 'clean-all' cd /etc/openvpn/scripts source vars ./clean-all ./build-dh ./pkitool --initca ./pkitool --server server openvpn --genkey --secret keys/ta.key # On récupère les certificats utiles pour le serveur openvpn (le dossier 'server' dans /etc/openvpn est fait pour) cp keys/ca.crt keys/server.crt keys/ta.key keys/server.key keys/dh2048.pem /etc/openvpn/server # On crée le répertoire /srv/openvpn dans lequel le processus OpenVPN sera chrooté mkdir /srv/openvpn # On crée le répertoire temporaire /srv/openvpn/tmp ==> indispensable au démarrage du serveur! (voir les logs) mkdir /srv/openvpn/tmp # On crée le fichier de configuration /etc/openvpn/server.conf (voir "man openvpn" pour les infos) ############################################################## # On crée le fichier "server.conf" nano /etc/openvpn/server/server.conf # Serveur TCP/443 mode server proto tcp port 443 dev tun # # Clés et certificats ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.crt key /etc/openvpn/server/server.key dh /etc/openvpn/server/dh2048.pem tls-auth /etc/openvpn/server/ta.key 0 cipher AES-256-CBC # # Réseau server 10.0.0.0 255.255.255.0 # Réseau interne push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" keepalive 10 120 # # Sécurite user nobody group nogroup chroot /srv/openvpn persist-key persist-tun compress lz4 # # Log verb 3 mute 20 status /var/log/openvpn-status.log log-append /var/log/openvpn.log # On s'assure que les fichiers de log seront accessibles touch /var/log/openvpn-status.log touch /var/log/openvpn.log chmod 777 /var/log/openvpn-status.log chmod 777 /var/log/openvpn.log #### Installation du client VPN ######################################################################## # Installation sur le client VPN apt-get install openvpn # Sur le SERVEUR on créee les clefs d'échange (authentification) entre le client et le serveur cd /etc/openvpn/scripts source vars ./build-key client #ou pour une connexion par mot de passe ./build-key-pass client # On laisse par défaut... # il faut signer le certificat pour générer le fichier client.crt # Dans keys (/etc/openvpn/scripts/keys) on trouve les certificats # ==> client.crt: Certificat pour le client # ==> client.csr: Certificat à garder sur le serveur # ==> client.key: Clés pour le client # Copier les fichiers client dans le dossier du client (il faudra un dossier par client au besoin) # copier les certificats dans la conf client (pour la sauvegarde et le transfert sur le client) cd /etc/openvpn/scripts/keys cp ca.crt ta.key client.crt client.key /etc/openvpn/client # Créer le fichier de conf client nano /etc/openvpn/client/client.conf # Client client dev tun proto tcp-client remote A.B.C.D 443 # A B C D # ==> adresse IP du server resolv-retry infinite cipher AES-256-CBC # # Clés ca /etc/openvpn/client/ca.crt cert /etc/openvpn/client/client.crt key /etc/openvpn/client/client.key tls-auth /etc/openvpn/client/ta.key 1 # # Sécurite nobind persist-key persist-tun compress lz4 verb 3 # Pour assurer la compatibilité avec un client Windows OpenVPN, on fait une copie du fichier client.conf vers client.ovpn : cp /etc/openvpn/client/client.conf /etc/openvpn/client/client.ovpn ============================================================================= # Récupérer les fichiers de /etc/openvpn/client et les basculer sur le poste client # Tester les fichiers en utilisant (lancer depuis le dossier si le chemin des certificats n'est pas placé dans le fichier .conf): cd /etc/openvpn/server openvpn /etc/openvpn/server/server.conf # ou (suivant les cas et la version) openvpn --config /etc/openvpn/server/server.conf cd /etc/openvpn/client openvpn /etc/openvpn/client/client.conf # ou (suivant les cas et la version) openvpn --config /etc/openvpn/client/server.conf # ==> en cas de soucis (openvpn sigusr1 connection failed(soft) init_instance received process restarting), vérifier les certificats # ca.crt doit être identique sur le serveur et client! ============================================================================= # Pour terminer... ################### # On pourra mettre le démarrage dans un fichier rc.local.... # Configurer un pare-feu sur le client et le serveur # Rediriger les ports en entrée et sortie pour passer par le 443 (port du VPN!) ============================================================================= LoiselJP 02/2019