Salut
Suite au récent ajout de Caddy par Qoolbox (merci encore à lui pour tous ces paquets !), je vais simplement écrire ici un petit récapitulatif de la marche à suivre pour s'en servir en reverse proxy. C'est grandement tiré de l'exemple donné par Celena donc merci aussi !
Déjà, un reverse proxy, c'est pour accéder à un serveur "interne" (pas directement ouvert sur le web) depuis l'extérieur. L'utilité ? Gérer du load-balancing, ouvrir en https des serveurs qui ne sont que en http, rajouter une couche d'authentification si on veut,... c'est pas inutile selon les cas
Alors pour ça il vous faut déjà installer le paquet de Qoolbox depuis le store https://www.forum-nas.fr/viewtopic.php?f=21&t=8864.
Je vous incite fortement à suivre mon tuto pour avoir un certificat LE : https://www.forum-nas.fr/viewtopic.php?f=55&t=7078&p=47912#p47912 il sera commun pour l'ensemble du NAS ça aide.
Une fois fait, un simple fichier suffit, Caddy est bluffant de simplicité !
Vous pouvez écrire :
Une fois ceci copié dans un fichier (par exemple /share/homes/admin/caddy.conf), vous pouvez lancer le serveur simplement en tapant :
Normalement depuis internet vous accèderez au serveur interne c'est bon !
Vous devriez avoir un grade A+ sur SSLLabs en sécurité, et grade A sur SecurityHeaders.
Mais au reboot ce n'est pas persistant...
Donc je propose de mettre ça dans un script :
Et appelez ce script en fond (avec &) par une des deux techniques comme dans le tuto pour le certificat LE : la technique du autorun (https://techlightup.blogspot.fr/2013/08/qnap-automatically-run-script-at-startup.html) ou avec BashIT (https://www.forum-nas.fr/viewtopic.php?f=21&t=2020&p=16572&hilit=autorun#p16572)
Quelques remarques :
Suite au récent ajout de Caddy par Qoolbox (merci encore à lui pour tous ces paquets !), je vais simplement écrire ici un petit récapitulatif de la marche à suivre pour s'en servir en reverse proxy. C'est grandement tiré de l'exemple donné par Celena donc merci aussi !
Déjà, un reverse proxy, c'est pour accéder à un serveur "interne" (pas directement ouvert sur le web) depuis l'extérieur. L'utilité ? Gérer du load-balancing, ouvrir en https des serveurs qui ne sont que en http, rajouter une couche d'authentification si on veut,... c'est pas inutile selon les cas
Alors pour ça il vous faut déjà installer le paquet de Qoolbox depuis le store https://www.forum-nas.fr/viewtopic.php?f=21&t=8864.
Je vous incite fortement à suivre mon tuto pour avoir un certificat LE : https://www.forum-nas.fr/viewtopic.php?f=55&t=7078&p=47912#p47912 il sera commun pour l'ensemble du NAS ça aide.
Une fois fait, un simple fichier suffit, Caddy est bluffant de simplicité !
Vous pouvez écrire :
Code:
(sslconf) {
tls CHEMIN_VERS_VOTRE_CERTIFICAT_COMPLET CHEMIN_VERS_VOTRE_KEY {
ciphers ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-WITH-CHACHA20-POLY1305 ECDHE-RSA-WITH-CHACHA20-POLY1305 ECDHE-RSA-AES256-CBC-SHA ECDHE-RSA-AES128-CBC-SHA ECDHE-ECDSA-AES256-CBC-SHA ECDHE-ECDSA-AES128-CBC-SHA
curves X25519 p256 p384 p521
protocols tls1.2
}
}
(gzipconf) {
gzip {
level 5
min_length 1
}
}
(addheader) {
header / {
Strict-Transport-Security "max-age=31536000;"
X-Frame-Options "DENY"
X-Content-Type-Options "nosniff"
x-xss-protection "1; mode=block"
Referrer-Policy "strict-origin-when-cross-origin"
-Server
}
}
https://VOTRE_NOM_DE_DOMAINE:PORT_OUVERT {
import sslconf
import gzipconf
import addheader
proxy / http://IP_DU_SERVEUR_INTERNE:PORT_INTERNE {
keepalive 32
transparent
}
}
Une fois ceci copié dans un fichier (par exemple /share/homes/admin/caddy.conf), vous pouvez lancer le serveur simplement en tapant :
Code:
caddy -conf /share/homes/admin/caddy.conf&
Normalement depuis internet vous accèderez au serveur interne c'est bon !
Vous devriez avoir un grade A+ sur SSLLabs en sécurité, et grade A sur SecurityHeaders.
Mais au reboot ce n'est pas persistant...
Donc je propose de mettre ça dans un script :
Code:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin
# Attendre le démarrage de tous les services avant
sleep 600
# Couper l'ecoute de caddy de base qui ne sert pas
killall caddy
# Lancer notre serveur bien configuré
caddy -conf /share/homes/admin/caddy.conf&
Et appelez ce script en fond (avec &) par une des deux techniques comme dans le tuto pour le certificat LE : la technique du autorun (https://techlightup.blogspot.fr/2013/08/qnap-automatically-run-script-at-startup.html) ou avec BashIT (https://www.forum-nas.fr/viewtopic.php?f=21&t=2020&p=16572&hilit=autorun#p16572)
Quelques remarques :
- Vous pouvez personnaliser la partie proxy pour faire pointer autre chose que / (/contacts, ...) vers divers serveurs différents.
- Vous pouvez monter encore la sécurité en rajoutant une directive Content-Security-Policy, par exemple Content-Security-Policy "", mais cela demandera peut être un ajustement du serveur interne, s'il va chercher des ressources sur d'autres sites il faudra les ajouter une à une dans cette directive.
- Vous pouvez rajouter d'autres possibilités à ce proxy, comme du websocket, de l'authentification,... Les options sont ici : https://caddyserver.com/docs
- Vous pouvez aussi renforcer la sécurité en ne faisant pas tourner Caddy en admin mais sur un user limité, il faut alors remplacer la fin du script par :
Code:cd /share/homes/USER_LIMITE sudo -u USER_LIMITE caddy -conf /share/homes/USER_LIMITE/caddy.conf&