nasmanu Posté(e) le 14 mai 2017 Auteur Partager Posté(e) le 14 mai 2017 oui bien sur, mais je verrais cela avec toi en MP après, car après tout, tu as fait tout le boulot ;) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nasmanu Posté(e) le 14 mai 2017 Auteur Partager Posté(e) le 14 mai 2017 j'ai corrigé mon problème, j'ai du mettre l'IP du NAS au lieu de localhost dans le backend. Par contre j'ai un autre soucis, je suis obligé de désactiver le fw du NAS car sinon je suis bloqué pour y accéder, j'ai pourtant autorisé l'application Docker Haproxy avec les ports adéquates mais ce n'est malheureusement pas suffisant. Je regarderais cela dans la semaine. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 14 mai 2017 Partager Posté(e) le 14 mai 2017 @Fenrir ta pour ainsi dire fait un tuto la Pense IHM par contre, le lancement avec la belle interface de docker et pas en ligne de commande Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 14 mai 2017 Partager Posté(e) le 14 mai 2017 Pour rappel, je n'utilise pas haproxy, donc ne vous attendez pas à un support de ma part sur la conf de ce dernier. Par exemple, je viens de m'apercevoir que si on n'utilise pas les ports 80 et 443, mais par exemple les ports 10080 et 10443, la redirection ne fonctionne pas correctement : le client demande : http://www.domaine.fr:10080 le serveur redirige sur : https://www.domaine.fr:10080 =>le client se retrouve en https sur un port configuré pour parler en http => erreur En ajoutant http-request replace-header Host ^(.*?)(:[0-9]+)?$ \1:10443 juste avant la redirection, ça fonctionne : le client demande : http://www.domaine.fr:10080 le serveur redirige sur : https://www.domaine.fr:10443 Mais comme le port se retrouve hard codé dans la conf, ce n'est ni propre ni portable => il faudrait le passer en variable. De même, rien qu'en regardant la conf par défaut, je vois bien que la partie SSL n'est pas optimum, loin sans faut (tls 1.0 et 1.1 autorisés, liste de cipher vieillotte, ...) Il y a surement plein d'autres choses à modifier pour avoir une conf de base plus fiable et sécurisée, mais c'est de la conf haproxy, aucun rapport avec docker ou letsencrypt ou l'intégration des 3 ensemble. Si ce conteneur fonctionne correctement et que vous me donnez un coup de main sur haproxy, j'intégrerai les modifications dans la mesure du possible. Pour le moment si vous voulez jouer (j'ai publié le Dockerfile en automated build, donc plus besoin de faire le build vous même) : docker run -d --restart always --name haproxy -p 80:80 -p 443:443 -v /path/to/letsencrypt:/root/.acme.sh -v /path/to/haproxy:/etc/haproxy fenrir/acme-haproxy nb : il existe plein d'autres conteneurs qui vont à peu près la même chose, donc c'est peut être inutile, à vous de voir Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 15 mai 2017 Partager Posté(e) le 15 mai 2017 Ah désolé moi j'utilise pas haproxy, donc je ne serais d'aucune aide Je constaté juste en lisant le topic que tu avais pondu une jolie truc Lien vers le commentaire Partager sur d’autres sites More sharing options...
nasmanu Posté(e) le 15 mai 2017 Auteur Partager Posté(e) le 15 mai 2017 oui c'est sur, il y'a de l'amélioration a faire côté Haproxy. Il y a cet excellent tuto qui regroupe beaucoup d'info et je sais que @gaetan.cambier avait déjà conseillé (mais cela remonte déjà à fin 2015) de modifier certains points sur la sécurité notamment sur RC4 qui était obsolète. Peut-être va-t-il passer par ici ;) PS : j'ai remis en forme tout cela dans un document pour le tuto, il me reste a finaliser la partie crontab et a prendre peut être quelques screenshots Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 15 mai 2017 Partager Posté(e) le 15 mai 2017 Avant de publier le tuto, il faudrait finir le conteneur. Comme dit juste avant, je peux modifier le Dockerfile pour y intégrer vos modifications de conf, mais je n'ai pas envi de faire le tour de la conf d'haproxy ou de divers tuto => donne moi les correctifs à passer Une bonne base de départ pourrait être la conf du paquet haproxy du temps où il fonctionnait (de mémoire, il y avait des exemples pour la plupart des appli syno). Je peux aisément ajouter un fichier haproxy.syno.example dans le dossier de conf, dans lequel les utilisateurs pourraient aller chercher les morceaux dont ils ont besoin. Les seuls points que je traiterais peut être par moi même sont la partie TLS et les perfs, le reste ne m’intéresse pas plus que ça. edit : Voilà la conf d'HAProxy corrigée pour la partie TLS, au menu : suite de chiffrement plus renforcée (en gardant un minimum de rétro compatibilité) TLS1.2 uniquement (pas trop de rétro compatibilité non plus, faut pas pousser) non présent dans la conf, mais l'OSCP stapling est fonctionnel (c'est galère avec haproxy en comparaison d'nginx) HSTS Il manque : HKPK : ingérable avec LE et/ou si vous n'avez pas d'api sur vos DNS HTTP/2 : j'ai fait quelques tests, mais haproxy ne semble pas le gèrer correctement (en tout cas pas en offload ssl) J'ai ajouté quelques autres réglages : CSP XXSS Referrer Policy Compression global log xxx.xxx.xxx.xxx:514 local1 chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. ssl-default-bind-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets ssl-default-server-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 ssl-default-server-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets tune.ssl.default-dh-param 2048 defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http compression algo gzip compression type text/html text/plain text/css text/javascript frontend ssl_redirector bind *:443 ssl crt /etc/haproxy/ssl/ # Only if you never want HTTP again # See https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security http-response set-header Strict-Transport-Security max-age=15552001 http-request del-header X-Forwarded-Proto http-request set-header X-Forwarded-Proto https if { ssl_fc } acl letsencrypt-request path_beg -i /.well-known/acme-challenge/ use_backend letsencrypt_backend if letsencrypt-request default_backend website_backend frontend http_redirect bind *:80 acl letsencrypt-request path_beg -i /.well-known/acme-challenge/ # If your are using a non standard port, tune this # http-request replace-header Host ^(.*?)(:[0-9]+)?$ \1:10443 redirect scheme https code 302 if !letsencrypt-request use_backend letsencrypt_backend if letsencrypt-request backend letsencrypt_backend server letsencrypt 127.0.0.1:11444 backend website_backend server server01 xxx.xxx.xxx.xxx:12080 http-request add-header X-Forwarded-Proto https # Hide server engine rspidel ^Server:.*$ # Security related headers (very restrictive) rspadd Content-Security-Policy:\ default-src\ https:\ rspadd X-Frame-Options:\ SAMEORIGIN rspadd X-Content-Type-Options:\ nosniff rspadd X-Xss-Protection:\ 1;\ mode=block http-response set-header Referrer-Policy "same-origin" La partie perf n'est pas nécessaire, par défaut HAProxy encaisse plus que ne le permet un synology (sauf à tuner le noyau du syno). Si vous ne voyez pas de coquille, je ferai un commit sur le dépôt dans la semaine. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 20 août 2017 Partager Posté(e) le 20 août 2017 @nasmanu : on attend toujours ton tuto Pour rappel : https://hub.docker.com/r/fenrir/acme-haproxy/ Sachant que comme je n'ai eu aucun retour, je n'ai pas inclus les modifications du précédent post. Par contre j'ai refais la partie letsencrypt ce matin. Lien vers le commentaire Partager sur d’autres sites More sharing options...
nasmanu Posté(e) le 5 septembre 2017 Auteur Partager Posté(e) le 5 septembre 2017 Hello, Vraiment désolé pour ce long moment d'attente mais je n'ai pas eu de temps pour le nas et j'attendais aussi les 90J pour tester grandeur nature la renouvellement. Depuis début aout d'accès distant au nas car le renouvellement n'a pas fonctionné. Il faut que je me penche sur ce problème... Concernant tes dernières modifs de haproxy, cela me semble ok, je n'ai pas eu de soucis avec :) J'ai ajouté ces éléments a la conf : Default userlist my_users user TOTO insecure-password PASSWORD Frontend ssl stats uri /stats stats auth TOTO:PASSWORD use_backend gateone if { path_beg /gateone } backend gateone acl auth_access http_auth(my_users) http-request auth realm Authentification if !auth_access server gateone IP_NAS:PORT ssl check verify none Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 5 septembre 2017 Partager Posté(e) le 5 septembre 2017 Pour le renouvellement, il faut que tu t'assures que le port 80 de ta box tombe bien sur haproxy. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.