VPN roadwarrior
-
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.
-
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.
-
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.
-
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. -
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.
-
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. -
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.
-
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.
-
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? :'(