Reverse Proxy problème
-
Pour illustrer ce propos et rester dans le cadre de pfSense, si la haute disponibilité fait partie du SLA, il conviendrait de déployer une paire de pfSense avec CARP.
pfSense contrôle l'accès à la DMZ sur laquelle sont installés 2 reverse proxy, accédés via le load balancer, en mode load balancer ou failover selon les besoins. Ces reverse proxy accèdent ensuite aux serveurs web installés sur le LAN (1)
Avec ce design, les utilisateurs venant d'internet ne pénètrent pas plus loin que la DMZ où l'appli (reverse proxy) prend le relais.
Attention: ça reste malgré tout un design que je qualifie de slideware ;D car il ne décrit que le principe. De nombreux aspects supplémentaires doivent être pris en compte avant de fournir une architecture qui pourrait être déployée:
- les aspects connectivité internet sont ignorés (edge routers, redondance des ISP, liens internet)
- redondance des serveurs web (indispensable si on fait l"effort de rendre l'infra y donnant accès elle même tolérante aux pannes)
- réseau d'administration
- et enfin, très important mais en dehors du cadre de pfSense, choix et fonctionnalités des reverse proxy
(1): "sur le LAN" est ici un raccourci. Le déploiement des serveurs dans l'infrastructure est un autre sujet, à prendre en compte dans le design cible. Ce peut être des serveurs sur un segment dont l'accès est contrôlé par un FW dédié, un segment directement attaché aux 2 pfSense décrits au dessus. Il y a plein de designs possibles dépendants de l'existant et des objectifs. C'est un autre débat et un sujet à part entière ;)
-
et je me rends compte (désolé :-[) que j'ai oublié le lien vers la fonctionnalité que j'introduis sur pfSense pour supporter ce design: le [url=https://doc.pfsense.org/index.php/Inbound_Load_Balancing]load balancer
-
Merci beaucoup pour tous ses conseils précieux chris4916.
Je vais prendre le temps d'étudier tous mes besoins et de me construire une architecture digne de ce nom.Pour l'instant il est donc fort probable que je parte sur un cluster de pfsense avec CARP.
Des reverse proxy sur une DMZ (Cluster ou loadbalancergérer par le pfsense). D'ailleurs est-ce que c'est une fonction qui est bien implémenté dans le pfsense ? Est-ce que c'est stable et bien éprouvé ?J'ai également bien pris en compte les autres aspects à prendre en compte (Lien WAN, réseau ….)
En tout cas, j'ai bien hâte de faire évoluer mon infra actuelle. ;D
-
Pas de précipitations ;D n'hésite pas à prendre d'abord d'autres avis car cette vision "high level" est juste la mienne ;)
Elle me semble correspondre à ton besoin mais il y a probablement d'autres approches possibles.Un point important, dans ce type de design ou les services sont redondants, c'est de bien s'assurer du fonctionnement de bout en bout, entre le client et le serveur lorsqu'il y a des switch d'un composant à l'autre dans les différentes couches.
- Y a t-il des pertes de session, est-ce critique ?
- comment synchroniser les configurations reverse proxy ?
- gestion des certificats (c'est un point potentiellement délicat qui requiert toute ton attention 8)) la terminaison se fait-elle au niveau des reverse proxy ? quel type de certificat utiliser ? Bref, un sujet intéressant, mais en dehors de pfSense.
-
salut salut
Réfère toi à un de nos file récent qui traite de pourquoi ne pas mettre un proxy sur pf et dans quel cadre le faire avec les restrictions qui en découle.
Les informations de chris son pertinente pour le moins mauvaise solution à développer en virtualisation, à laquelle je rajouterais un proxy du coté de ton lan et bien évidement les clients paramétrés pour passer par le proxy lan qui lui va interroger le revers.
Sauf erreur (pas mis en place pour l'instant) il faut dire à pf de ne pas laisser passer les requêtes de sortie envoyer par un client et forcer le passage par le proxy.
de tel sorte tu auras un filtrage sur les protocoles pris en charge par tes proxy qui passeront et pas le reste, sauf applications autorisées.
si un de nos grands gourous pouvaient nous le confirmer.
Cordialement.
-
…/... à laquelle je rajouterais un proxy du coté de ton lan et bien évidement les clients paramétrés pour passer par le proxy lan qui lui va interroger le revers.
j'avoue ne pas bien comprendre la finalité :-[ si tu pouvais développer un peu ;) il y a peut-être quelque chose que j'ai raté.
[quote]Sauf erreur (pas mis en place pour l'instant) il faut dire à pf de ne pas laisser passer les requêtes de sortie envoyer par un client et forcer le passage par le proxy.
Si je comprends bien la description initiale, il s'agit de clients "externes" (et donc pas sur le LAN) qui accèdent à des applications exposées par l'infrastructure de mamatov. Dans ce que je décris, l'objectif est justement de faire en sorte que ces utilisateurs n'accèdent pas au LAN mais que la requête soit faite, de manière contrôlée, par le reverse proxy.
si un de nos grands gourous pouvaient nous le confirmer.
D'autres perceptions que la mienne seraient en effet les bienvenues :)
-
Une petite précision suite à un échange privé sur un sujet en marge de celui-ci:
si il n'y a qu'un seul reverse proxy ou si celui-ci est installé sur un cluster, la fonction de load balancer de pfSense est bien sûr inutile ;) -
D'une façon plus généraliste pour la sécurité des sites web on peut consulter sur le site de l'anssi : http://www.ssi.gouv.fr/uploads/IMG/pdf/NP_Securite_Web_NoteTech.pdf
-
Dans le style, le document du CLUSIF est, à mon sens, plus didacticiel, même si un peu plus ancien.
Après, il ne faut pas rêver non plus. Il n'y a pas de solution miracle et encore moins, si c'était possible :D, de solution pas chère, à minima en ressources humaines si on vise la sécurité parfaite dans le domaine du WAF.
Je ne dis pas qu'il ne faut rien faire mais prétends que viser une solution intellectuellement idéale peut s'avérer rapidement impraticable ou hors de prix.Par exemple définir, au niveau de son WAF, une approche qui consiste à n'accepter que les requêtes autorisées rend de déploiement de toute nouvelle application fastidieux. Il en va de même avec la modification des applications existantes.
Ce qui signifie, encore plus avec de type d'infrastructure qu'avec tout autre, un contrôle précis du processus de mise en production qui maintient alignés le contenu du WAF et le code des applications.De mon point de vue, mais cela n'engage bien sûr que moi ;) , les solutions intermédiaires qui consistent à configurer, au niveau du reverse proxy, un set de règles qui regroupent les type d'attaque connus permet déjà un progrès significatif dans la protection de ses applications web.
Le marché (offres d’éditeurs) est d'ailleurs plus actif sur ce type de solution que sur les solutions qui visent la mise en place de white-lists ;)De la lecture intéressante à ce sujet. (on dérive un peu de pfSense mais le sujet le mérite bien)
-
…/... à laquelle je rajouterais un proxy du coté de ton lan et bien évidement les clients paramétrés pour passer par le proxy lan qui lui va interroger le revers.
j'avoue ne pas bien comprendre la finalité :-[ si tu pouvais développer un peu ;) il y a peut-être quelque chose que j'ai raté.[/quote]
J'espérais avoir un peu plus d'information à propos de ce design mais ce n'est pour le moment pas le cas.
Ce design est intrigant et même en y réfléchissant plus en détail, je ne vois pas quelle est la finalité si on considère que l'objectif initial est de mettre à disposition l'accès à des serveurs web hébergés localement à des utilisateurs distants accédant via internet.Un reverse proxy peut cependant servir à des utilisateurs internes si celui-ci est placé en frontal de serveurs web(1). C'est un moyen efficace de fournir de la haute disponibilité ou de la répartition de charge. Dans ce cas, le positionnement du reverse proxy en DMZ, comme je le montre sur mon schéma, n'est probablement pas le meilleur choix.
En cas d'utilisation d'un reverse proxy à usage (également) interne, si les utilisateurs locaux utilisent un proxy, le flux sur le LAN pourrait devenir:
browser => proxy => reverse proxy => web servermais le proxy n'apporte pas grand chose, si ce n'est la gestion du cache, AMHA
A noter que pour un utilisateur distant, si un proxy est déployé de son coté, le flux sera exactement le même :) sauf qu'entre le proxy et le reverse proxy, il y a le WAN ;)Tatave, n'hésite donc pas si tu as une vue différente.
(1): c'est assez courant dans les data-centre