[Résolu] Nextcloud avec HAProxy et https en "bout en bout"
-
Bonsoir @tous,
Contexte : installation personnel pour la maison, niveau débutant ++
Besoin : utiliser https de "bout en bout"
WAN: j'ai une box SFR 4K fibre en mode bridge sur une VM (pfsense évidemment :) )
LAN : 1 seul réseau LAN (sert pour l'administration de pfsense)
Autres interfaces : J'ai une interface vLAB pour séparer mes serveurs virtuel de mon réseau LAN (??DMZ?? je vais me documenter sur ce sujet)
Règles NAT : pas besoin (je ne pense pas) dans notre cas
Règles Firewall : tout est bloqué par défaut, les port 80 et 443 sont redirigés sur "ce pare feu (soit-même)"
Packages ajoutés : acme, haproxy, open-vm-tools
énoncer du problème : Après avoir réussi à mettre en place un reverse proxy (http ET https) avec le paquet "HAProxy" sur pfSense, et avoir créé un certificat SSL let's encrytp CN sur "domain.com", j'ai créé une redirection cloud.domain.com sur mon serveur nextcloud. J'ai bien mon certificat https de valide tout fonctionne bien ! MAIS, on est bien d'accord que la liaision https est du client au router pfsense ?
Question : De fait, qu'en est-il de la connexion de pfsense au serveur nextcloud ?
Pistes imaginées
Recherches : j'ai vue qu'il y avait une option "Use Client-IP to connect to backend servers." cela voudrait donc dire que HAProxy redirige vers le bon backend, mais n'interviens pas dans la connexion ? Donc le certificat SSL devra être géré sur le serveur nextcloud ?
Autre but: Comme dans mon précédent post, je souhaite avoir quelque service hébergé chez moi et avoir à minima un peu de sécurité, cela ne fait pas de mal et me permet d'en apprendre plus sur toutes ces connexion afin d'éviter le "plug and forget"
Un grand Merci par avance pour votre aide et une très bonne soirée à tous.
-
on est bien d'accord que la liaison https est du client au router pfsense
Pas tout à fait. Soyons précis : la session ssl sera établie entre le navigateur et HA Proxy.
Ensuite 3 solutions possibles :
1 HA Proxy négocie à son tout une nouvelle session ssl avec le serveur qui est derrière. Ce qu’en général on ne fait pas.
2 HA Proxy établit une session http. Sans ssl. Ce que l’on fait souvent.
3. HA Proxy (ou n’importe quelle solution du type reverse) se connecte via un vpn au serveur web en http. Ce que l’on fait parfois.
Dans tous les cas il n’y a pas, par construction’ de session ssl possible de bout en bout puisque le reverse intervient sur la couche 7.
Le choix d’une des solutions dépend de chaque cas de figure à la fois pour des raisons techniques, réglementaires, organisationnelles.
Si la solution 1 est souvent utilisée c’est qu’elle donne la capacité d’inspecter le flux avant qu’il ne parvienne au serveur web. Il y a d’autres bonnes raisons.Pfsense n’a rien à voir dans tout cela si ce n’est que le reverse est installé dessus. Ce que l’on évite fortement en général. Je ne parle que d’infrastructures professionnelles. Le domestique n’est pas mon rayon.
-
Bonjour @ccnet ,
Merci beaucoup pour ta réponse (même si HAProxy n'a rien à voir avec pfSense) qui éclaire un peu plus mes non-connaissance dans ce domaine.
Du coup, sans vouloir abuser du hors sujet, que me conseillerais-tu ? Aussi bien en tant que particulier que professionnel:
- Conserver ma structure actuelle soit: client -> https -> haproxy (pfsense) -> http -> site web
- Utiliser ta solution explicitée en 1
- Utiliser une VM pour exclusivement HAProxy (snif j'aimais bien la GUI ...)
- Ou bien encore d'autre conseils de bonne pratique
Dernier point: Lorsque je contacte mon site web (en passant par https via haproxy), le retour (la reponse du site) se fait elle aussi en https ?
Merci beaucoup en attendant pour les réponses.
-
Ce sont bien 2 flux séparés, donc si tu es en HTTPS entre le client et le reverse proxy, tu vas rester en HTTPS et c'est de toute façon à l'initiative du client.
Le reverse proxy ne va pas établir de communication vers le client et donc décider du protocole.Dans tes alternatives, il y a une autre solution.
Le reverse proxy, c'est du niveau 7. C'est intéressant si:- tu veux réécrire des URL
- Analyser et filtre le flux
- faire du load-balancing etc...
Dans ton cas où, si je comprends bien, tu renvoies tout le flux HTTPS vers NextCloud, le reverse proxy ne sert pas à grand chose et tu pourrais tout aussi bien travailler au niveau 4.
Et donc, en mettant ton serveur NextCloud en DMZ, rediriger le flux HTTPS vers l'IP interne (DMZ) de NextCloud.
Il y a quelques petites précautions à prendre pour que ça fonctionne, notamment en terme de DNS puisqu'il faut que les mêmes URL soient accessibles en interne et depuis internet (split DNS) mais à ce détail près, ça va fonctionner sans, de mon point de vue, moins de sécurité que le design que tu vises.Et là tu peux être en HTTPS de bout en bout :-)
-
@chris4916 said in Nextcloud avec HAProxy et https en "bout en bout":
C'est intéressant si:
tu veux réécrire des URL
Analyser et filtre le flux
faire du load-balancing etc...Si pas de traitement l'intérêt est inexistant évidement.
Utiliser une VM pour exclusivement HAProxy (snif j'aimais bien la GUI ...)
Ou bien encore d'autre conseils de bonne pratiqueA regarder, chez Kemp, une appliance virtuelle, gratuite pour l'entrée de gamme qui permet de faire toutes ces choses intéressantes. Avec une interface via navigateur. Possibilité de s'initier à la réécriture d'url, à divers outils de sécurisation, analyse de contenu, ...
-
Bonjour,
@chris4916 , merci pour ta réponse. Pour le traffic HTTPS, non je n'ai pas que nextcloud. J'ai ma console domotique, des questionnaire de satisfaction, un site pour connaitre l'adresse ip publique etc ...
@ccnet , J'ai jeté un oeil à kemp, mais je pense que cela sera trop surdimensionné pour moi et surtout l'utilisation.
Donc selon mon usage, je vais rester sur cette solution (HAProxy sur pfSense). Le seul point non chiffré sera du haproxy vers le serveur cible. ou alors à mettre en place une nouvelle liaison https de haproxy vers le serveur cible.
A retenir de ce topic:
- HAProxy ne fait pas partie intégrante de pfSense, il vaut mieux poser la question sur une section dédiée ou un autre forum. Merci à vous pour réponses tout de même !
- La liaison HTTPS s'effectue du client au HAProxy. Il est possible ensuite de communiquer de nouveau en https mais à l'initiative du reverse proxy vers le serveur cible.
Merci beaucoup pour votre aide, je me coucherais moins bête =)