Openvpn filtre des clients



  • Salut tout le monde !

    Alors voilà je viens vers vous car je but sur quelque chose d'assez chiant !

    A titre perso. Je cherche à contrôler le client-to-client de OpenVPN.
    Je voudrais que certain client puisse communiqué avec certain client grâce à un filtre. Après beaucoup de recherche, j'ai vu qu'il était possible sous OpenVPN de filtré les clients. J'ai d'ailleurs trouvé cette solution (http://backreference.org/2010/06/18/openvpns-built-in-packet-filter/), que je n'arrive pas à appliquer… Est possible de faire la même chose sous pfSense ?

    Je suis actuellement sur une installation neuve sous vmware, avec une seul carte réseau WAN en brigde.
    J'ai un serveur OpenVPN avec authentification + certificat sous un réseau 4.0.0.0/16 avec l'option Inter-client communication d'activer (je suppose que c'est le client-to-client). Tout cela fonctionne correctement.

    Petit exemple :
    Utilisateur + IP
    Test1 : 4.0.0.2
    Test2 : 4.0.0.3
    Test3 : 4.0.0.4
    Test4 : 4.0.0.5

    Tout ces utilisateur communique à l'heure actuelle ensemble.
    j'aimerai disposer d'un filtrage par fichier.

    Exemple :
    Un fichier filtre1 contenant Test1 et Test3
    Un fichier filtre2 contenant Test2 et Test4

    Ce qui reviens à dire que Test1 peut communiqué avec Test3 mais pas avec Test2 ni Test4, etc.

    J'espère que vous allez pouvoir m'aider :)
    Merci !



  • j'aimerai disposer d'un filtrage par fichier.

    ?



  • @ccnet:

    j'aimerai disposer d'un filtrage par fichier.

    ?

    Qu'est ce que tu ne comprend pas ?



  • j'aimerai disposer d'un filtrage par fichier.

    C'est sensé vouloir dire quoi un "filtrage par fichier" sur un firewall ?



  • @ccnet:

    j'aimerai disposer d'un filtrage par fichier.

    C'est sensé vouloir dire quoi un "filtrage par fichier" sur un firewall ?

    Bien j'ai mis un exemple juste en dessous ainsi que le lien.

    Exemple :
    Un fichier filtre1 contenant Test1 et Test3
    Un fichier filtre2 contenant Test2 et Test4

    Ce qui reviens à dire que Test1 peut communiqué avec Test3 mais pas avec Test2 ni Test4, etc.



  • Si tu avais ton propre serveur VPN, c'est probablement jouable mais ici, tu es contraint par l'implémentation pfSense qui va :

    • 1° ne pas te permettre de gérer ça via l'interface graphique
    • 2° écraser tes éventuelles customisations, si tu n'y prêtes pas attention, à chaue mise à jour

    Fonctionnellement, tu peux, si je comprends bien, obtenir le même résultat en configurant autant de VPN serveurs que de besoins de groupes d'utilisateurs devant communiquer entre eux.

    • tu autorises la communication entre les clients d'un même serveur VPN
    • tu t'assures au niveau des règles de FW, que la communication entre les serveurs VPN est interdite

    et au moins tout reste standard d'un point de vue pfSense  (oui c'est moins fun mais pour jouer avec cette fonctionnalité non documentée, il est probablement préférable de le faire hors pfSense, à mon avis).



  • @chris4916:

    Si tu avais ton propre serveur VPN, c'est probablement jouable mais ici, tu es contraint par l'implémentation pfSense qui va :

    • 1° ne pas te permettre de gérer ça via l'interface graphique
    • 2° écraser tes éventuelles customisations, si tu n'y prêtes pas attention, à chaue mise à jour

    Fonctionnellement, tu peux, si je comprends bien, obtenir le même résultat en configurant autant de VPN serveurs que de besoins de groupes d'utilisateurs devant communiquer entre eux.

    • tu autorises la communication entre les clients d'un même serveur VPN
    • tu t'assures au niveau des règles de FW, que la communication entre les serveurs VPN est interdite

    et au moins tout reste standard d'un point de vue pfSense  (oui c'est moins fun mais pour jouer avec cette fonctionnalité non documentée, il est probablement préférable de le faire hors pfSense, à mon avis).

    Salut et merci pour ton message !
    En effet je réussi à avancé un peu par rapport au sujet du lien que j'ai mis dans mon poste. Et au final avec pfsense ça ne passera pas car le plugin utilisé requis des lib qu'on ne peux installer sur un pfsense..
    Toute façon en regardant plus loin c'est pas franchement la meilleurs solution. Car de ce que j'ai compris il faut un fichier de filtrage par utilisateur pour autorisé avec qui il peut communiqué. Alors si derrière j'ai 1000+ utilisateurs ça va être le bordel.

    La solution que tu propose, plusieurs vpn, je l'utilise déjà et cela fonctionne. Toutefois pour que cela fonctionne j'ai fais des sous réseau ( 4.0.0.0 255.255.248.0, 4.0.2.0 255.255.248.0, etc). J'ai vu qu'il est possible de créer plusieurs vpn avec un seul réseau genre 4.0.0.0/16, est il possible de bloqué les communication entre elle alors qu'il sont dans le même réseau ?



  • @Musy:

    La solution que tu propose, plusieurs vpn, je l'utilise déjà et cela fonctionne. Toutefois pour que cela fonctionne j'ai fais des sous réseau ( 4.0.0.0 255.255.248.0, 4.0.2.0 255.255.248.0, etc).

    J'avoue ne pas comprendre la logique de ton plan d'adressage ni le problème que ça pose d'avoir plusieurs réseaux, un par serveur VPN

    J'ai vu qu'il est possible de créer plusieurs vpn avec un seul réseau genre 4.0.0.0/16, est il possible de bloqué les communication entre elle alors qu'il sont dans le même réseau ?

    Là aussi je ne comprends pas la point : tu peux avoir des règles au niveau FW pour chaque interface.
    Mais pourquoi te compliquer (inutilement de mon point de vue sauf si il y a quelques chose que je ne comprends pas) la vie à absolument vouloir tout configurer avec un réseau unique ?

    NB: avec un masque type 225.225.225.248  (donc /29), ce qui limite à 5 clients par serveur VPN, tu peux très bien faire par exemple :
    10.1.2.0 /29
    10.1.2.8 /29
    10.1.2.16 /29  etc…

    la vraie question, c'est tout d'abord, de mon point de vue : "combien de clients VPN simultanés au maximum ?"

    ça te donne le subnet mask et à partir de là, tu choisis l'IP de départ pour ne pas qu'elle existe déjà ailleurs afin que ton subnet VPN n'entre pas en conflit.
    Mais en dehors de ça, sauf à devoir gérer des centaines de serveurs VPN, je ne vois pas où est le problème, donc je ne comprends pas ton point.



  • @chris4916:

    @Musy:

    La solution que tu propose, plusieurs vpn, je l'utilise déjà et cela fonctionne. Toutefois pour que cela fonctionne j'ai fais des sous réseau ( 4.0.0.0 255.255.248.0, 4.0.2.0 255.255.248.0, etc).

    J'avoue ne pas comprendre la logique de ton plan d'adressage ni le problème que ça pose d'avoir plusieurs réseaux, un par serveur VPN

    J'ai vu qu'il est possible de créer plusieurs vpn avec un seul réseau genre 4.0.0.0/16, est il possible de bloqué les communication entre elle alors qu'il sont dans le même réseau ?

    Là aussi je ne comprends pas la point : tu peux avoir des règles au niveau FW pour chaque interface.
    Mais pourquoi te compliquer (inutilement de mon point de vue sauf si il y a quelques chose que je ne comprends pas) la vie à absolument vouloir tout configurer avec un réseau unique ?

    NB: avec un masque type 225.225.225.248  (donc /29), ce qui limite à 5 clients par serveur VPN, tu peux très bien faire par exemple :
    10.1.2.0 /29
    10.1.2.8 /29
    10.1.2.16 /29  etc…

    la vraie question, c'est tout d'abord, de mon point de vue : "combien de clients VPN simultanés au maximum ?"

    ça te donne le subnet mask et à partir de là, tu choisis l'IP de départ pour ne pas qu'elle existe déjà ailleurs afin que ton subnet VPN n'entre pas en conflit.
    Mais en dehors de ça, sauf à devoir gérer des centaines de serveurs VPN, je ne vois pas où est le problème, donc je ne comprends pas ton point.

    Salut en effet j'ai pas assez développer mon projet.
    Au final je souhaite obtenir des centaines de serveur von avec la possibilité de connecté des centaines d'utilisateur dans ces vpn.
    L'idéal pour moi c'est de pouvoir avoir un réseau unique pour tout ces vpn sans pour autant qu'il communique ensemble.



  • @Musy:

    Au final je souhaite obtenir des centaines de serveur von avec la possibilité de connecté des centaines d'utilisateur dans ces vpn.
    L'idéal pour moi c'est de pouvoir avoir un réseau unique pour tout ces vpn sans pour autant qu'il communique ensemble.

    Pas sur que pfSense soit la bonne solution…  ::)

    Combien de clients simultanés par serveur VPN ?

    Car tu as bien sûr noté que tu peux avoir un serveur VPN unique avec plusieurs clients qui ne communiquent pas entre eux  ;)

    De toute manière, l'exercice va vite atteindre ses limites lorque tu vas te rendre compte que, par exemple entre 3 utilisateurs, il faut établir des communications 2 à 2. Mais comme un client VPN ne peut être à un instant donné, connecté que par un seul serveur VPN, vouloir résoudre à grands coups de VPN, des communications entre clients dans les proportions que tu décris... ça ne marche très probablement pas.
    D'ailleurs, qu'entends-tu par "communiquer" ? 
    S'agit-il de mettre à leur disposition des ressources partagées gérées centralement ?



  • @chris4916:

    @Musy:

    Au final je souhaite obtenir des centaines de serveur von avec la possibilité de connecté des centaines d'utilisateur dans ces vpn.
    L'idéal pour moi c'est de pouvoir avoir un réseau unique pour tout ces vpn sans pour autant qu'il communique ensemble.

    Pas sur que pfSense soit la bonne solution…  ::)

    Combien de clients simultanés par serveur VPN ?

    Car tu as bien sûr noté que tu peux avoir un serveur VPN unique avec plusieurs clients qui ne communiquent pas entre eux  ;)

    De toute manière, l'exercice va vite atteindre ses limites lorque tu vas te rendre compte que, par exemple entre 3 utilisateurs, il faut établir des communications 2 à 2. Mais comme un client VPN ne peut être à un instant donné, connecté que par un seul serveur VPN, vouloir résoudre à grands coups de VPN, des communications entre clients dans les proportions que tu décris... ça ne marche très probablement pas.
    D'ailleurs, qu'entends-tu par "communiquer" ? 
    S'agit-il de mettre à leur disposition des ressources partagées gérées centralement ?

    Ce que je veux c'est la possibilité max de 250 client par serveur VPN.
    Que si les utilisateurs A et B sont connecté à un même serveur qu'il puisse communiqué (client-to-client). Mais que si les utilisateurs A et B sont dans deux serveurs différent qu'il ne puisse plus se voir.

    Quand je dis "communiquer" je veux dire donner la possibilité de se voir sur le réseau comme si les utilisateurs étais sur un réseau local.



  • @Musy:

    Ce que je veux c'est la possibilité max de 250 client par serveur VPN.

    donc pas avec le netmask que tu as pris en exemple car il ne permet que 5 clients.
    /24 pour 250 clients, c'est bien  ;D

    Que si les utilisateurs A et B sont connecté à un même serveur qu'il puisse communiqué (client-to-client). Mais que si les utilisateurs A et B sont dans deux serveurs différent qu'il ne puisse plus se voir.

    Quand je dis "communiquer" je veux dire donner la possibilité de se voir sur le réseau comme si les utilisateurs étais sur un réseau local.

    Donc c'est un simple serveur VPN par groupe de client dans lequel tu autorises les communications de client à client et u masque en /24

    C'est aussi simple que ça si tu n'as pas de cas du type de celui que je décris, à savoir 3 clients qui ont besoin de se voir 2 à 2  ;)

    enfin, presque…

    En effet, dans les dimensions que tu décris, plusieurs VPN de 250 clients, il faut très probablement faire une étude sérieuse de dimensionnement de ton serveur VPN (et donc ici de pfSense) en terme de CPU. Normalement pas trop de soucis de mémoire mais pour le CPU, ça ne va pas marcher avec un LX800  ;D ;D ;D ça dépend également du niveau d'encryption.

    Fait également attention au choix de TUN vs. TAP si au final tu veux que les utilisateurs se voient vraiment "comme sur un réseau local", sachant, mais rien n'est gratuit ni magique, que ça consomme également plus de bande passante.



  • @chris4916:

    @Musy:

    Ce que je veux c'est la possibilité max de 250 client par serveur VPN.

    donc pas avec le netmask que tu as pris en exemple car il ne permet que 5 clients.
    /24 pour 250 clients, c'est bien  ;D

    Que si les utilisateurs A et B sont connecté à un même serveur qu'il puisse communiqué (client-to-client). Mais que si les utilisateurs A et B sont dans deux serveurs différent qu'il ne puisse plus se voir.

    Quand je dis "communiquer" je veux dire donner la possibilité de se voir sur le réseau comme si les utilisateurs étais sur un réseau local.

    Donc c'est un simple serveur VPN par groupe de client dans lequel tu autorises les communications de client à client et u masque en /24

    C'est aussi simple que ça si tu n'as pas de cas du type de celui que je décris, à savoir 3 clients qui ont besoin de se voir 2 à 2  ;)

    enfin, presque…

    En effet, dans les dimensions que tu décris, plusieurs VPN de 250 clients, il faut très probablement faire une étude sérieuse de dimensionnement de ton serveur VPN (et donc ici de pfSense) en terme de CPU. Normalement pas trop de soucis de mémoire mais pour le CPU, ça ne va pas marcher avec un LX800  ;D ;D ;D ça dépend également du niveau d'encryption.

    Fait également attention au choix de TUN vs. TAP si au final tu veux que les utilisateurs se voient vraiment "comme sur un réseau local", sachant, mais rien n'est gratuit ni magique, que ça consomme également plus de bande passante.

    J'ai trouvé ça http://backreference.org/2010/05/02/controlling-client-to-client-connections-in-openvpn/
    A priori avec cette solution, un seul serveur VPN suffit et derrière je contrôle les communications entre les utilisateurs. Plus qu'a faire un script pour tout automatisé ^^



  • (Quel problème invraisemblable …)

    NB : Le dernier lien mentionne des lignes 'iptables' ! pFsense n'utilise absolument pas netfilter/iptables mais pf ! (D'où le nom !)



  • @jdh:

    (Quel problème invraisemblable …)

    NB : Le dernier lien mentionne des lignes 'iptables' ! pFsense n'utilise absolument pas netfilter/iptables mais pf ! (D'où le nom !)

    Suffit juste d'adapter les règles à pfsense ;)



  • Suffit juste d'adapter les règles à pfsense

    Je n'y avais pas pensé !

    Dans l"exemple indiqué au départ, 2 questions :

    • pourquoi un adressage comme 4.0.0.x ? Cela semble non rfc1918 compatible ?
    • comment obtenez vous des clients avec .2, .3, .4 ? J'obtiens des clients (windows) en .5; .9, .13, … (soit 63 clients max si réseau /24) !

    Un question générale :

    • quel est le contexte ? scolaire, perso, stage ou pro réel ?


  • @jdh:

    Dans l"exemple indiqué au départ, 2 questions :

    • pourquoi un adressage comme 4.0.0.x ? Cela semble non rfc1918 compatible ?
    • comment obtenez vous des clients avec .2, .3, .4 ? J'obtiens des clients (windows) en .5; .9, .13, … (soit 63 clients max si réseau /24) !

    Parce que son subnet mask est /21 (et non pas /29 comme je l'ai lu et écrit par erreur. C'est 255.255.248.0 et non pas 255.255.255.248)
    Mea culpa, J'ai lu un peu vite  :-[  (ce serait trop simple d'utiliser CIDR  :P)

    Tous les clients de son exemple son dans le même subnet et on reste dans l'approche d'utiliser la fonction magique de OpenVPN qui est un peu plus fine que "tous les utilisateurs se voient ou aucuns se voient"

    Donc un peu plus de 2000 clients par serveur VPN  ;)

    Reste que c'est effectivement une adresse étrange qui va potentiellement poser des problèmes sur le réseau US.



  • /21 (au lieu de /24) ne change rien au problème !

    Observé en pratique :

    • pfSense avec un serveur OpenVPN avec réseau 10.0.8.0/24
    • pfsense reçoit l'ip 10.0.8.1
    • le premier client (windows) recoit l'ip 10.0.8.6 /32 et une route pour 10.0.8.1 via 10.0.8.5 (en utilisant l'interface 10.0.8.6)
    • (en sus, sont définis 10.0.8.4 et .7 et associées à 10.0.8.6)
    • le client suivant obtient 10.0.8.10 et ainsi de suite …
      (Il est vrai que 'client-to-client' n'est pas activé mais je doute que cela change l'adressage fourni ...)

    Bref, je répète mes 3 questions :

    • 4.0.0.x est-il rfc1918 compliant ?
    • comment obtenir .2, .3, .3, .4
    • quel contexte ?
      (et l'adaptation d'iptables à pf)

    En fait je pense que la situation de test n'a jamais été obtenue en réel, et que tout cela est 'discussion théorique' sans réel fondement ni analyse ...



  • Bref, je répète mes 3 questions :

    • 4.0.0.x est-il rfc1918 compliant ?
    • comment obtenir .2, .3, .3, .4
    • quel contexte ?
      (et l'adaptation d'iptables à pf)

    Alors je réitère ma demande.
    Ce que je cherche c'est obtenir un seul réseau (ici 4.0.0.0/16), dans le lequel je souhaite plusieurs serveurs VPN qui ne communique pas entre eux.

    Si l'utilisateur A est dans le premier serveur, l'utilisateur B dans le second puis l'utilisateur C dans le troisième, ils ne doivent pas pouvoir communiqué ou être vu entre eux.
    Toutefois si l'utilisateur A et B sont dans le premier serveur, l'utilisateur C dans le troisième, seul les utilisateur A et B peuvent communiqué entre eux.

    Et oui j'arrive facilement à obtenir un adressage 4.0.0.2, 4.0.0.3, 4.0.0.4, etc sans difficulté avec un serveur VPN standard et un réseau en 4.0.0.0/16.

    Quant au choix du réseau 4.0.0.0 c'est juste une préférence, mais j'aurai pu mettre 5.0.0.0 ou encore 6.0.0.0 peut importe car cela restera du local et ne pose aucun problème.

    En fait je pense que la situation de test n'a jamais été obtenue en réel, et que tout cela est 'discussion théorique' sans réel fondement ni analyse …

    Et non j'ai mis en pratique un serveur qui fonctionne actuellement avec plusieurs VPN :
    4.0.0.0/23
    4.0.2.0/23
    4.0.4.0/23
    etc

    Et cela fonctionne sauf que j'aimerai avoir un seul réseau.



  • Stop pour moi.

    Pas un instant …



  • Stop aussi.