Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    VPN roadwarrior

    Scheduled Pinned Locked Moved Français
    9 Posts 3 Posters 5.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Y
      yro
      last edited by

      Bonjour,
      J’aurais voulu utiliser la méthode suivante http://forum.pfsense.org/index.php/topic,12888.0.html
      Dans l’implémentation d’un serveur openvpn sur pfsense  et permettre à des clients itinérants de faire des connexions de type roadwarrior au sein de Vlans.
      Voici comment est monté le labo.

      Sur PFsense :
      IF WAN : 81.XXX.XX .54/29
      IF LAN : 10.0.0.1/24
      IF Vlan1 :192.168.1.0
      IF Vlan2 :192.168.2.0
      IF Vlan3 :192.168.3.0
      IF Vlan4 :192.168.5.0
      IF Vlan5 :192.168.5.0
      Les Vlans sont isolé entre eux par des règles de firewall.

      OpenVPN server :
      Proto : UDP
      Dynamic IP : on
      Local port : 1194
      Adresse pool : 200.200.100.0/24
      Local network : 192.168.0.0/16
      Client-to-client : on
      Crypto : BF-CBC
      Authen : PKI
      CA : ok
      Server : ok – name server=home
      Server Key : ok
      DH Param : ok
      LZO : on
      Custom option : objet de plusieurs tests pour l’instant c’est vide
      Règle de firewall sur IF Wan pour accepter les connexions entrante sur le port 1194 vers tout.

      Open VPN Client-specific configuration:
      Common name : client1
      Blocked : blank
      Push reset :  blank
      Interface IP : ifconfig-push 200.200.100.25/30 (ceci dans le cas ou je voudrais avoir le contrôle des ip à distribuer)
      Custom option : push « route 192.168.1.0 255.255.255.0 » ici je tente de déterminer que le client1 ne peut avoir accès qu’au Vlan1 en roadwarrior, je fais de même pour les clients suivants avec l’adresse des réseaux Vlan correspondants.

      OpenVPN client :
      Je crée une entrée pour chaque client avec un certificat et une clé dédiée portant le nom du client renseigné dans Common name.
      Proto : UDP
      Server adresse : 81.XXX.XX.54
      Server port : 1194
      La suite pardéfaut
      Cryto : BF-CBC
      Authen : PKI
      CA : ok
      Client cert : ok – named client1
      Client Key : ok
      LZO : on
      Le reste est vide.

      Ma question est comment configurer ce serveur openvpn pour chaque client puisse atteindre son Vlan et pas un autre, qu’il puisse contacter chaque machine de ce réseau et vis-et-versa ?

      J’imagine que c’est une question de routage, j’ai trouvé de la doc un peu partout à ce sujet mais aucune de mas recherches ne m’a permise de régler le problème.

      Et puis d’abord, est-il possible de le faire déjà !?

      Merci pour votre aide.

      1 Reply Last reply Reply Quote 0
      • C
        ccnet
        last edited by

        Et puis d’abord, est-il possible de le faire déjà !?

        Pas avec Pfsense 1.2.2 ou inférieur car pas de filtrage sur le trafic vpn. Version RC 1.2.3 donc pas finale encore.

        Au passage les vlans n'ont pas grand chose à voir dans le problème sur le fond. Les Vlans c'est  couche 2, le routage couche 3. Il faut que vous pensiez en conséquence.

        1 Reply Last reply Reply Quote 0
        • G
          gregober
          last edited by

          Ce que je ferais c'est de créer un Serveur OVPN par sous réseau.
          Pour chaque serveur créé tu auras une politique de firewalling bien spécifique.

          Par exemple Srv OVPN1 –> VLAN1
          Srv OVPN2 --> VLAN2
          etc…

          Il faut bien évidemment dédier un port TCP par serveur OVPN… ensuite tu configure les clients en fonction de tes besoins.

          1 Reply Last reply Reply Quote 0
          • C
            ccnet
            last edited by

            Je crains que cette méthode ne fonctionne pas.
            Openvpn fourni des possibilités d'affectation d'un sous réseau spécifique en fonction du client qui se connecte. J'ai déployé cela il y a quelques mois. Je vais vous retrouver les informations. Cela ne change rien au fait que dans la version 1.2.2 il n'y pas de filtrage possible sur l'interface vpn.

            1 Reply Last reply Reply Quote 0
            • C
              ccnet
              last edited by

              Dans les grandes lignes pour créer des config OpenVPN spécifiques à l'utilisateur :

              Créer un répertoire dans /etc/openvpn :

              mkdir /etc/openvpn/clients-conf
              

              Ajouter dans /etc/openvpn/client.conf
              client-config-dir clients-conf
              Placer un fichier de configuration propre à chaque utilisateur dans le dossier créé précédemment.

              touch /etc/openvpn/clients-conf
              

              Chaque fichier de configuration doit porter le nom d'utilisateur employé dans le certificat pour établir la connexion vpn. Il doit contenir la ligne :

              ifconfig-push 10.9.1.5 10.9.1.6
              

              Le nom du fichier de configuration doit correspondre au nom d'utilisateur contenu dans le champ Subject du certificat, c'est à dire le CN.

              Les répertoires peuvent être différents. La plateforme concernée ici n'était pas Pfsense.
              Voyez la documentation Openvpn pour connaitre les couples d'ip utilisables à chaque extrémité du tunnel.

              Il existe peut être d'autres pistes pour traiter votre besoin.

              1 Reply Last reply Reply Quote 0
              • Y
                yro
                last edited by

                Merci…
                Effectivement avant de lire ces deux dernières réponses, je me suis diriger vers un serveur par type d'accès (entendez par là pour chaque Vlan) sur des ports différents.
                J'ai établi une règle de firewall de ce type:

                UDP * * WAN Access VpnAccess * * VPN Access

                Note  VpnAccess = alias reprenant les ports utilisés pour chaque serveur vpn.

                Sur chaque serveur j'indique dans Adresse pool un range différent et dans local network l'adresse réseau de mes Vlans par exemple 192.168.1.0/24 pour mon vlan1

                Dans le principe cela fonction, il semble que le client vpn se retrouve bien isolé sur son Vlan!

                La où je m'inquiète, c'est dès lors qu'un client connaisse suffisamment la structure logique du réseau qu'est-ce qui l'empêche de pousser d'autres route dans sa config afin de se balader ailleurs? D'autant que sans filtrage je ne peux me servir du range d'adresses pour limiter ses actions!

                Autre point qui me semble délicat avec cette méthode, c'est la gestion des certificats.
                Nous devons centraliser cette gestion et la rendre simple voir simpliste afin qu'une personne non-avertie puis s'en charger, pour l'instant je me dirige vers TinyCA, mais j'éprouve quelques soucis de compatibilité (c'est un autre sujet). En effet, l'accès client vpn devrait se limiter à un mois d'utilisation avant de se voir contraint de renouveler ou d'introduire une nouvelle demande de certificat.  Imaginons la complexité dès lors qu'il puisse y avoir une dizaine de clients par Vlans et au moins 10 Vlans pour la plus petite infrastructure.
                Cela dit je pense qu'avec cette méthode, je ne puis pas réellement organiser une politique de sécurité autour des certificat et des clès.

                L'idée de Ccnet me plaît bien, c'est finalement un peut l'idée du début du post mais en beaucoup plus clair.
                Avec cette méthode, qu'en est-il de la sécurité et de la gestion client par certificat?
                A l'heure actuel j'ai un seul CA pour tous les serveurs vpn mais je peux créer autant de crt client que je le désire.

                1 Reply Last reply Reply Quote 0
                • C
                  ccnet
                  last edited by

                  J'ai l'impression que vous lancez dans quelque chose de bien compliqué. Je n'ai pas demandé quelle est la raison qui vous pousse à cette segmentation accès distant / Vlan ? J'ai du mal à saisir la réalité qui justifie fonctionnellement cette complexité.

                  Vous pouvez utiliser Xca pour la gestion de vos certificats. Je ne développe pas. Mais la solution, pour des environnements Windows est satisfaisante. Elle sera centralisée, base unique, tous les certificats sont exportables, révocable, renouvelables.
                  Pas de problème de compatibilité avec Openvpn qu'il soir sur Pfsense ou sur une autre plateforme (testé en production).

                  Avec cette méthode, qu'en est-il de la sécurité et de la gestion client par certificat?

                  C'est selon ce que vous souhaitez. Dans un déploiement récent nous vérifions le mot de passe sur une source Ldap en plus du certificat. Dans un autre cas nous ne le faisons pas.

                  1 Reply Last reply Reply Quote 0
                  • Y
                    yro
                    last edited by

                    Merci Ccnet pour Xca, l'outil semble correspondre à ce que nous recherchons!
                    Pour aider à comprendre, petit mot d'explication sur le contexte:
                    En gros, un Vlan = une société isolée des autres avec des accès spécifiques sur du matériel communautaire. Une grande société pourrait avoir un ou deux membres sur place à demeure et le reste dans la nature > beaucoup de connections distantes.
                    Au contraire, une petite société pourrait utiliser tout son effectif sur place > peu de connections.
                    Certaines même, ne pourraient avoir qu'une présence ponctuelle, mais l'ensemble du personnel se connecte à distance. Sans entrer dans les détails je tente de répondre à la question de Ccnet!

                    Pour la partie VPN et pour les même raisons que ce qui concerne la certification, nous devons éviter d'entrer en ligne de commande sur la config de Pfsense et allentours.
                    Mais, encore une fois Ccnet vous m'avez mis sur la voie.
                    Puisqu'il s'agissait de configurer la partie client, je me suis dit qu'il suffisait d'utiliser l'interface graphique dans open VPN serveur, d'un point de vue sécurité du côté client il reste des tests à faire, mais du côté fonctionnement c'est ok, voici comment j'ai fait:

                    Un serveur / port / Vlan (ex:Vlan2= 192.168.2.0/24)
                    OpenVPN server :
                    Proto : UDP
                    Dynamic IP : on
                    Local port : 4231
                    Adresse pool : 200.200.102.0/24 (un adressage différent pour chaque Vlan correspondant)
                    Local network : vide
                    Client-to-client : on
                    Crypto : BF-CBC
                    Authen : PKI
                    CA : ok
                    Server : ok – CN =home
                    Server Key : ok
                    DH Param : ok
                    LZO : on
                    Custom option : vide
                    Règle de firewall sur IF Wan pour accepter les connexions entrante sur le port 4231 vers tout (peut-être pourrais-je ici spécifier le Vlan2 net).

                    Open VPN Client-specific configuration:
                    Common name : client2
                    Blocked : blank
                    Push reset :  blank
                    Interface IP : vide
                    Custom option : push « route 192.168.2.0 255.255.255.0 »

                    OpenVPN client :
                    Proto : UDP
                    Server adresse : 81.XXX.XX.54
                    Proxy port : vide
                    Cryto : BF-CBC
                    Authen : PKI
                    CA : ok
                    Client cert : ok – named client2
                    Client Key : ok
                    LZO : on
                    Le reste est vide.

                    Actuellement, mon client vpn se retrouve bien dans le Vlan qui lui est attribué sans possibilité (par défaut)  de se balader ailleurs, il peut contacter toutes les machine du Vlan et réciproquement et les fonctionnalités de blocage par tunnel (donc par serveur) ou par certificat répondent.

                    Cela me donne l'avantage de n'avoir qu'un seul CA et un seul certificat serveur, la gestion portant uniquement sur les certificats clients.
                    Il me reste à trouver la faille ou pas, pour être satisfait.

                    Merci à tous.

                    1 Reply Last reply Reply Quote 0
                    • Y
                      yro
                      last edited by

                      Je reviens sur ce post,
                      Dans la config décrite plus haut et ses dérivés pour obtenir le résultat désiré, je constate un trou de sécuritédans ma configuration:
                      Le client peut à tout moment ajouter une route dans son fichier de config qui va lui donner accès à d'autres segments du réseau ou des Vlans qui n'ont pas été autorisés ni sur le serveur ni dans le scc
                      Comment puis-je palier à cette situation? :'(

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post
                      Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.