Créer des configurations client en fonction des profils OpenVPN pour mieux gérer les accès

Si comme moi, vous avez installé un serveur OpenVPN sur votre RP préféré, il vous est peut-être arrivé d’avoir besoin de séparer les besoins suivants :

  1. uniquement avoir accès à son réseau local à distance (accéder à un NAS non connecté à Internet, l’interface Web du routeur Wifi. pour dépanner un pote de passage..)
  2. mettre en place un proxy Internet pour contourner le firewall d’une entreprise
  3. combiner les 2
  4. donner un accès à une ressource particulière à un tiers

Et pour cela, l’utilisation de la variable client-config-dir va nous être très utile

  • Avant de commencer la configuration, les choix suivants ont été faits :
    • le réseau 10.8.1.0 correspond au besoin 1, le réseau local uniquement
    • le réseau 10.8.2.0 correspond au besoin 2, le proxy uniquement pour contourner les firewalls
    • le réseau 10.8.0.0 correspond au besoin 3, à savoir un accès à mon réseau local + proxy
    • le besoin 4 n’est pas traité dans ce post
  • On édite le fichier de configuration du serveur vpn /etc/openvpn/server.conf dans mon cas et on s’intéresse aux lignes rouges. On déclare les 3 réseaux, les routes correspondantes et le chemin du répertoire contenant des fichiers de configuration spécifiques aux clients.

  • On crée le répertoire en question

  • On crée ensuite les fichiers client en fonction du CN des profils crées.

  • Le contenu du fichier /etc/openvpn/ccd/besoin1-local, à ajuster en fonction de votre réseau local

  • Le contenu du fichier /etc/openvpn/ccd/besoin2-gw

  • Le contenu du fichier /etc/openvpn/ccd/besoin3-all, à ajuster en fonction de votre réseau local

  • On édite ensuite les règles IPTables pour autoriser ou non la redirection vers le réseau local (eth0) ou Internet (eth1)
    • Les 2 règles POSTROUTING dans nat reroutent automiquement le trafic de 10.8.0.0/24 (tun0) et de 10.8.0.2/24 (tun0)  vers Internet (eth1), ce qui correspond aux besoins 2 et 3
    • Les 2 premières règles FORWARD/ACCEPT dans filter autorisent le trafic d’OpenVPN (tun0) vers Internet (eth1), ce qui correspond aux besoins 2 et 3
    • Les 2 règles suivantes INPUT et OUTPUT autorisent les paquets entrants et sortants de l’interface OpenVPN (tun0), ce qui correspond aux besoins 1, 2 et 3
    • La dernière règle FORWARD/DROP interdit les paquets de tun0 ayant une adresse IP de type 10.8.2.X vers le réseau local (eth0), ce qui correspond aux besoins 2 (pas d’accès au réseau local)

  • Si on regarde rapidement les logs OpenVPN, on peut vérifier que le serveur charge la bonne configuration client en fonction du profil et envoie les bonnes informations au client

Tagged with: ,