Architecture réseau : double NAT, proxy, et identification sur portail captif
-
Bonjour,
Je refais actuellement l'architecture réseau d'un institut universitaire qui accueillera environ 150-200 étudiants à la rentrée prochaine. Il est vrai que je manque d'expérience, et j'ai du mal à faire certains choix. J'espère que vous pourrez m'aider…
Voilà les besoins principaux que j'ai dégagé :
- Un LAN qui comprend environ 20 PC, avec profils itinérants (entre 150 et 200 comptes),
- Des points d'accès Wifi où les étudiants peuvent se connecter avec leur propre machine (qui donne lieu à la DMZ Wifi sur le schéma),
- Un serveur web accessible de l'intérieur et de l'extérieur qui permet de diffuser des informations (emplois du temps et autres) et de récupérer des fichiers (d'où la DMZ serveurs sur le schéma).
Le schéma auquel je suis arrivé :
Je précise déjà que OPT1 et OPT2 se trouvent sur la même interface physique et que j'ai deux VLAN (un pour les serveurs et l'autre pour le wifi). Au niveau du switch, j'ai le LAN qui est dans le VLAN par défaut (1), la dmz serveur sur le vlan 2 (opt1) et la dmz wifi sur le vlan 3 (opt2).
J'ai commencé à mettre l'architecture du schéma en place, et je m'interroge sur divers points :
- Au niveau de la livebox, j'ai configuré la DMZ sur l'interface WAN de ma machine pfSense. Au niveau de pfSense, j'ai configuré un NAT pour que l'on puisse accéder au serveur web de la DMZ. Ensuite, pour que le LAN accède également au serveur web (par le nom de domaine, donc l'adresse publique), j'ai du mettre en place un NAT sur la Livebox (je l'ai fait un peu au hasard au début, même si je comprends mieux pourquoi j'ai dû le faire maintenant…).
Je me retrouve donc avec un double NAT et je ne sais pas si je dois me satisfaire de cette situation. Déjà, je voudrais ne pas avoir à toucher à la livebox. Donc voilà une solution qui pourrait fonctionner en supprimant le NAT actuellement en place sur la LB : Mettre en place un NAT 1:1 sur les interfaces OPT1 et OPT2 (external ip : 217.128.x.y/32, internal ip : 192.168.22.1/32), il reste le cas du LAN sur lequel je ne peux pas placer de NAT 1:1, en revanche je peux mettre une entrée dans le DNS du contrôleur de domaine...
Bref, je cherche la solution la meilleure, si elle existe... Si vous avez mieux à me proposer...
- En ce qui concerne les accès internet, je vais devoir logger les sites visités, et peut être en interdire certains. Je vais donc mettre en place un proxy transparent. Me conseillez-vous de dédier un serveur à cette tâche en DMZ ?
Je pensais éventuellement utiliser Squid sur pfSense, et mettre en place un système de copie des logs vers le serveur web (si cela est possible...). Peut-être qu'au niveau de la charge il serait préférable d'avoir le proxy sur une autre machine ? pfSense tourne sur un serveur HP plutôt modeste à base de Pentium 4, avec 512 Mo de RAM...
Il y a peut-être aussi une possibilité d'utiliser le serveur web pour faire proxy... Avec moins de 200 étudiants, et quelques pages, il ne devrait à priori pas être débordé. Le serveur web est à base de Xeon, RAID 5, 1 Go de RAM, et tourne sous une Debian.
- Enfin, pour le wifi, je pensais mettre en place un portail captif pour identifier les étudiants. Je pensais au début avoir un seul identifiant pour le LAN, le wifi et l'accès réservé aux étudiants sur le site web. Mais je me demande s'il ne serait pas préférable d'avoir un identifiant LAN et un identifiant wifi + site web pour une raison de sécurité, et aussi pour éviter d'accéder au contrôleur de domaine se trouvant dans le LAN pour identifier l'utilisateur sur des services qui ne s'y trouvent pas... (pour éviter ce dernier point, il serait possible de répliquer l'annuaire du LAN sur un serveur en DMZ, mais ça ne règle pas le premier problème : un identifiant LAN utilisable de partout...).
Je pense finalement gérer les comptes utilisateurs site web + wifi sur une base mysql hébergée sur le serveur web. Votre avis sur ce dernier point ?
Désolé pour la longueur du post. Même si certaines de mes interrogations ne concerne pas directement pfSense, j'espère que vous pourrez néanmoins me donner quelques conseils.
Merci d'avance pour votre aide.
-
Quelques réponses rapides (parce que j'ai du boulot et que votre dossier n'est pas trivial, même si il n'est pas très compliqué. Et que c'est vous qui avez l'affaire :-) ).
- Au niveau de la livebox, j'ai configuré la DMZ sur l'interface WAN de ma machine pfSense. Au niveau de pfSense, j'ai configuré un NAT pour que l'on puisse accéder au serveur web de la DMZ. Ensuite, pour que le LAN accède également au serveur web (par le nom de domaine, donc l'adresse publique), j'ai du mettre en place un NAT sur la Livebox (je l'ai fait un peu au hasard au début, même si je comprends mieux pourquoi j'ai dû le faire maintenant…).
Je me retrouve donc avec un double NAT et je ne sais pas si je dois me satisfaire de cette situation. Déjà, je voudrais ne pas avoir à toucher à la livebox. Donc voilà une solution qui pourrait fonctionner en supprimant le NAT actuellement en place sur la LB : Mettre en place un NAT 1:1 sur les interfaces OPT1 et OPT2 (external ip : 217.128.x.y/32, internal ip : 192.168.22.1/32), il reste le cas du LAN sur lequel je ne peux pas placer de NAT 1:1, en revanche je peux mettre une entrée dans le DNS du contrôleur de domaine...
C'est assez fouillis tout cela. La livebox c'est déjà un problème pour un réseau professionnel. Un routeur et l'ip publique sur l'interface wan de Pfsense reste une solution préférable. Beaucoup (trop) de nat dans tout les sens. Regardez du côté de "dns spilt horizon" pour l'accès au serveur web. Cela devrait vous permettre d'éviter toutes ces translations. Vous devriez pouvoir résoudre correctement www.domaine.fr selon que l'utilisateur est à l'intérieur du réseau ou sur internet. proscrire la passage depuis la lan par l'ip publique pour atteindre le serveur web.
- En ce qui concerne les accès internet, je vais devoir logger les sites visités, et peut être en interdire certains. Je vais donc mettre en place un proxy transparent. Me conseillez-vous de dédier un serveur à cette tâche en DMZ ?
Serveur dédié avec Squid, SquidGuard et tous les outils qui vont bien pour consulter et stocker les logs.
Je pensais éventuellement utiliser Squid sur pfSense
Non.
Il y a peut-être aussi une possibilité d'utiliser le serveur web pour faire proxy…
Non plus. Le proxy gère du trafic sortant uniquement, le serveur web le contraire. Ces deux machines sont en principes à placer dans des dmz distinctes qui obéissent à des règles fondamentalement différents.
Je pense finalement gérer les comptes utilisateurs site web + wifi sur une base mysql hébergée sur le serveur web. Votre avis sur ce dernier point ?
Augmentation du risque. Si le serveur web est compromis, tout saute. A vous de voir. Je ne sais pas quel niveau de sécurité vous avez vendu à votre client.
- Enfin, pour le wifi, je pensais mettre en place un portail captif pour identifier les étudiants. Je pensais au début avoir un seul identifiant pour le LAN, le wifi et l'accès réservé aux étudiants sur le site web. Mais je me demande s'il ne serait pas préférable d'avoir un identifiant LAN et un identifiant wifi + site web pour une raison de sécurité, et aussi pour éviter d'accéder au contrôleur de domaine se trouvant dans le LAN pour identifier l'utilisateur sur des services qui ne s'y trouvent pas… (pour éviter ce dernier point, il serait possible de répliquer l'annuaire du LAN sur un serveur en DMZ, mais ça ne règle pas le premier problème : un identifiant LAN utilisable de partout...).
Ok pour le portail captif.
Identifiant lan ? vous voulez dire authentification AD ?
Si les mots de passe sont bons l'option SSO est concevable.répliquer l'annuaire du LAN sur un serveur en DMZ
Je déconseille fortement la présence d'informations d'authentification dans une dmz où est autorisé du traffic entrant. D'une façon générale je déconseille la présence d'une machine intégrée à l'AD du lan dans une dmz acceptant du traffic entrant.
En vrac :
Quel marque de switchs utilisez vous ?
Ok pour les dmz sur des vlans (encore une fois tout dépend du niveau de sécurité vendu … ) mais le vlan 1 attention ... selon les switchs.
Attention à la configuration des switchs.
Effectivement, sans vouloir vous vexer, c'est un peu gros pour vous ...
En fin de parcours, dans vos règles, pensez à restreindre le plus sévèrement possible le trafic sortant autorisé.
Envisagez sérieusement un reverse proxy pour protéger le serveur Web. Regardez une solution comme Vulture ou plus généralement un serveur apache utilisant mod_security. -
Merci d'avoir répondu… J'ai déjà quelques pistes pour améliorer le réseau. Je n'ai rien "vendu" (je ne me serais pas permis car vous avez raison je n'ai pas la maitrise totale de ce que je mets en place actuellement) : je suis salarié (jusqu'à fin Août), et je suis sur ce projet surtout pour développer mes compétences, mais j'ai aussi d'autres missions à côté... Ce n'est pas l'idéal, et je n'ai plus beaucoup de temps. Ceci implique aussi que je n'ai pas d'obligations particulières, et ça ne pourra pas être pire qu'avant (tout était ouvert sur le réseau).
L'architecture est assez complète et aurait pu être simplifiée, mais ce qui m'intéresse c'est de progresser...
C'est assez fouillis tout cela. La livebox c'est déjà un problème pour un réseau professionnel. Un routeur et l'ip publique sur l'interface wan de Pfsense reste une solution préférable. Beaucoup (trop) de nat dans tout les sens. Regardez du côté de "dns spilt horizon" pour l'accès au serveur web. Cela devrait vous permettre d'éviter toutes ces translations. Vous devriez pouvoir résoudre correctement www.domaine.fr selon que l'utilisateur est à l'intérieur du réseau ou sur internet. proscrire la passage depuis la lan par l'ip publique pour atteindre le serveur web.
Je n'ai pas le choix pour la Livebox Pro, je suis obligé de la conserver (pas de budget pour investir dans un routeur). Merci pour DNS Split horizon, je vais me documenter.
Non plus. Le proxy gère du trafic sortant uniquement, le serveur web le contraire. Ces deux machines sont en principes à placer dans des dmz distinctes qui obéissent à des règles fondamentalement différents.
Je vais opter pour deux machines distinctes. En revanche faire une DMZ (et un VLAN) par serveur… Ce n'est pas que ça me dérange, mais si je laisse proxy et serveur web dans une même DMZ et que je crée mes règles au niveau du firewall pour chaque hôte en particulier, ce n'est pas une solution satisfaisante ?
Je pense finalement gérer les comptes utilisateurs site web + wifi sur une base mysql hébergée sur le serveur web. Votre avis sur ce dernier point ?
Augmentation du risque. Si le serveur web est compromis, tout saute. A vous de voir. Je ne sais pas quel niveau de sécurité vous avez vendu à votre client.
Les identifiants pour le LAN seraient dans ce cas différents de ceux pour le web+wifi. Ce réseau ne contiendra de toute façon rien de sensible, ce qui ne veut bien sûr pas dire que je dois laisser tout ouvert, hein. ;)
Identifiant lan ? vous voulez dire authentification AD ?
Si les mots de passe sont bons l'option SSO est concevable.Oui, je parlais de l'AD. Mais grâce à vos conseils, je vais distinguer l'accès LAN de l'accès au wifi + site web. Les étudiants auront donc deux identifiants à mémoriser.
J'ai envisagé l'option du SSO, mais plus le temps avance plus je me dis que je n'aurai pas forcément le temps de tout finir.
Je déconseille fortement la présence d'informations d'authentification dans une dmz où est autorisé du traffic entrant. D'une façon générale je déconseille la présence d'une machine intégrée à l'AD du lan dans une dmz acceptant du traffic entrant.
Je ne comptais intégrer cette machine à l'AD, mais vous avez raison.
En vrac :
Quel marque de switchs utilisez vous ?
Ok pour les dmz sur des vlans (encore une fois tout dépend du niveau de sécurité vendu … ) mais le vlan 1 attention ... selon les switchs.
Attention à la configuration des switchs.Le seul switch qui gère les VLAN est un HP Procurve 2810. Je sais que généralement le vlan 1 pose problème. Mais sachant que j'utilise le VLAN 1 sur l'interface LAN (qui est physiquement différente des interfaces OPT1 et OPT2), je ne sais pas si je peux quand même rencontrer des soucis. Pour l'instant, ça semble fonctionner. ???
Effectivement, sans vouloir vous vexer, c'est un peu gros pour vous …
En effet, je vous ai expliqué brièvement la situation au début de ce post.
En fin de parcours, dans vos règles, pensez à restreindre le plus sévèrement possible le trafic sortant autorisé.
Je pars dans l'optique de permettre le moins de choses possible et ne place une règle que lorsque cela est nécessaire.
Envisagez sérieusement un reverse proxy pour protéger le serveur Web. Regardez une solution comme Vulture ou plus généralement un serveur apache utilisant mod_security.
Merci, je vais me renseigner sur ces solutions.
-
C'est assez fouillis tout cela. La livebox c'est déjà un problème pour un réseau professionnel. Un routeur et l'ip publique sur l'interface wan de Pfsense reste une solution préférable. Beaucoup (trop) de nat dans tout les sens. Regardez du côté de "dns spilt horizon" pour l'accès au serveur web. Cela devrait vous permettre d'éviter toutes ces translations. Vous devriez pouvoir résoudre correctement www.domaine.fr selon que l'utilisateur est à l'intérieur du réseau ou sur internet. proscrire la passage depuis la lan par l'ip publique pour atteindre le serveur web.
J'ai mis en place le DNS Split horizon… C'est exactement ce que je recherchais mais je ne connaissais pas le terme. Merci ! ;)
Je réfléchis aussi au proxy, éventuellement à un serveur d'authentification, au reverse proxy que vous m'avez proosé... Pour tout cela il va me falloir pas mal de serveurs (que je n'ai pas). Je pense donc mettre en place de la virtualisation sur le seul serveur qu'il me reste. Cela permettra d'avoir une plus grande flexibilité par la suite, s'il faut rajouter un petit serveur en plus...
Si je mets cela en place, j'aurai donc 4 machines :
- pfSense
- Contrôleur de domaine
- Serveur web
- Un serveur de virtualisation (proxy, reverse proxy, serveur d'authentification...)
Qu'en pensez-vous ? Si je retiens cette solution aurais-je intérêt à virtualiser le serveur web et à mettre le proxy sur un serveur dédié ?
Merci.
-
Je procèderai autrement pour virtualiser. Un constat d'abord : il semble raisonnable de placer sur un même serveur virtuel des machines appartenant à la même "zone de confiance". Concrètement un proxy et un reverse proxy ne devrait pas être dans la même dmz. L'un émet du trafic vers internet, mais n'autorise pas de connexion entrantes (au sens TCP syn), alors que le reverse proxy fait exactement l'inverse. J'utiliserai donc deux dmz. Une interne, une externe. Seule la dmz externe admet certains flux entrants (http dans votre cas).
Je placerai donc le reverse proxy seul sur une machine dans la dmz externe.
Le serveur de virtualisation, en dmz interne, comportera le proxy, le serveur d'authentification et le serveur web.Ce n'est pas idéal mais compte tenu de vos contrainte (le matériel) c'est ce que je ferai.
S'agissant de la virtualisation il nécessaire d'utiliser Vmware ESXi 3.5 (ou 4.0 si la machine hôte est en 64bits).
Une carte réseau sera dédiée à l'administration ESX et placée dans un vlan séparé. Une autre carte sera utilisée pour la connexion au switch virtuel. Il est souhaitable d'isoler chaque machine dans un vlan de telle sorte que le trafic entre les machines ne soit possible (et uniquement si absolument nécessaire, pas de ssh d'une machine à l'autre par exemple) qu'en passant par Pfsense afin de limiter les possibilités de rebond en cas d'intrusion. -
Je procèderai autrement pour virtualiser. Un constat d'abord : il semble raisonnable de placer sur un même serveur virtuel des machines appartenant à la même "zone de confiance". Concrètement un proxy et un reverse proxy ne devrait pas être dans la même dmz. L'un émet du trafic vers internet, mais n'autorise pas de connexion entrantes (au sens TCP syn), alors que le reverse proxy fait exactement l'inverse. J'utiliserai donc deux dmz. Une interne, une externe. Seule la dmz externe admet certains flux entrants (http dans votre cas).
Je placerai donc le reverse proxy seul sur une machine dans la dmz externe.
Le serveur de virtualisation, en dmz interne, comportera le proxy, le serveur d'authentification et le serveur web.Ce n'est pas idéal mais compte tenu de vos contrainte (le matériel) c'est ce que je ferai.
S'agissant de la virtualisation il nécessaire d'utiliser Vmware ESXi 3.5 (ou 4.0 si la machine hôte est en 64bits).
Une carte réseau sera dédiée à l'administration ESX et placée dans un vlan séparé. Une autre carte sera utilisée pour la connexion au switch virtuel. Il est souhaitable d'isoler chaque machine dans un vlan de telle sorte que le trafic entre les machines ne soit possible (et uniquement si absolument nécessaire, pas de ssh d'une machine à l'autre par exemple) qu'en passant par Pfsense afin de limiter les possibilités de rebond en cas d'intrusion.Encore merci de prendre le temps de me répondre. C'est très enrichissant.
Pour la virtualisation, rien qu'au niveau carte réseau, ça va bloquer… Je n'en ai pas assez, et je ne peux absolument rien acheter. :-\ Je ne sais pas encore comment je vais procéder, mais ça reste intéressant pour moi de voir ce qu'il aurait fallu faire dans l'absolu. ;)
-
Pour la virtualisation, rien qu'au niveau carte réseau, ça va bloquer…
Il y a un moment où il faut être sérieux et professionnel … Une carte moyenne coûte quelques euros. Les gens qui vous payent et vous encadrent doivent prendre leurs responsabilités.
-
Pour la virtualisation, rien qu'au niveau carte réseau, ça va bloquer…
Il y a un moment où il faut être sérieux et professionnel … Une carte moyenne coûte quelques euros. Les gens qui vous payent et vous encadrent doivent prendre leurs responsabilités.
Je ne répondrai pas publiquement à cette remarque. (cf tes MP si tu l'as bien reçu, je n'ai pas eu de confirmation au moment de l'envoi. ???)
-
Concernant ESX, je préconise le 4 compte tenu du fait qu'en version 7 du format VMX on peut aller jusqu'a 10 interfaces réseau dans la VM.
Si vous vous retrouvez limité à la 3.5 car votre serveur est d'ancienne génération il y a moyen d'amener le contexte VLAN jusqu'à la machine virtuelle (et donc créer une carte logique par VLAN dans pfsense) en créant un switch virtuel dit "Passthrough", pour cela il faut créer un switch virtuel dédié (donc au moins une carte réseau physique dédiée) qui possède un seul port group dont le VLAN ID est 4095 (en jargon ESX c'est le mode VGT).