Forum des NAS

Tous les fabricants de NAS réunis sur un forum unique : Asustor, Qnap, Synology...

Les tutoriaux rédigés par les membres
par Mikiya
#60518
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 viewtopic.php?f=21&t=8864.
Je vous incite fortement à suivre mon tuto pour avoir un certificat LE : 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 : Tout sélectionner
(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 : Tout sélectionner
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 : Tout sélectionner
#!/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 ... artup.html) ou avec BashIT (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 : Tout sélectionner
    cd /share/homes/USER_LIMITE
    sudo -u USER_LIMITE caddy -conf /share/homes/USER_LIMITE/caddy.conf&
    Par contre veuillez à ce que les certificats et le script de conf lui soit bien accessibles en lecture seulement !
Avatar de l’utilisateur
par Celena-007
#60531
Salut,

je vais apporter juste une info :

Caddy est capable de générer automatiquement les certificats LE, il s'occupera aussi de les renouveler.

Code : Tout sélectionner
(sslconf) {
	tls EMAIL {
		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
		key_type rsa4096
		protocols tls1.2
	}
}
Note Importante

: cette configuration génère 1 certificat par site héberger, ce ne sera donc plus celui générer par le Tuto de Mikiya

par Mikiya
#60537
Oui je n'ai pas parlé de la génération par Caddy, tu as raison de le préciser :)
Par contre je pense pas que LE vive bien si on veut un certificat par Caddy et un autre pour le NAS en général sur le même domaine, à tester avant pour vérifier.
par aureladmin
#75344
Comme promis je met le fichier de conf que j'ai fais pour pouvoir utiliser caddy avec le certificat let'sencrypt générer via myqnapcloud.

Code : Tout sélectionner
(sslconf) {
        tls /mnt/HDA_ROOT/.config/QcloudSSLCertificate/cert/cert /mnt/HDA_ROOT/.config/QcloudSSLCertificate/cert/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.myqnapcloud.com:PORT_OUVERT {
        import sslconf
        import gzipconf
        import addheader
        proxy /radarr http://VOTRE_IP_RADARR:PORT_RADARR {
                keepalive 32
                transparent
        }
        proxy /sonarr http://VOTRE_IP_SONARR:PORT_SONARR {
                keepalive 32
                transparent
        }
         proxy /transmission http://VOTRE_IP_TRANSMISSION:PORT_TRANSMISSION {
                keepalive 32
                transparent
        }
}

Pour Radarr et Sonarr il faut aussi aller dans les paramètres "general" et compléter le champ "URLBASE" avec "/radarr", "/sonarr" ou autre (si vous le changez ne pas oublier de le modifier aussi dans le fichier de conf de caddy.
Pour Transmission c'est pareil mais via le fichier de config "settings.json" ("rpc-url": "/transmission/", )

Du coup tous est accessible via "https://VOTRE_NOM_DE_DOMAINE.myqnapcloud.com:PORT_OUVERT/VOTRE_APPLIS" et le tous via un seul port. :-o

On peut rajouter autant d'applis que l'on veut en utilisant le certificat fourni par let'sencrypt via qnap et aussi utiliser myqnapcloud normalement (filestation, ...)

Meme si le certificat est renouvelé cela ne pose pas de problème c'est totalement transparent. :-P:mrgreen:

par giopas
#80770
Je me rejoins à cette discussion. Je suis arrivé à configurer enfin caddy en HTTPS. Le seule problème mnt est que les applis sur téléphone de QNAP essaient d’utiliser [user].myqnapcloud.com pour accéder au NAS.

Avec caddy j’ai bien configuré la partie proxy (et en effet avec mon user.myqnapcloud.com sur mon browser j’arrive à y accéder sans problèmes), mais je crois que l’appli s’attend de voir un certificat valable (ou bien déclaré) et non pas un certificat LetsEncrypt pour donner access au NAS.

J’ai vu dans les examples ci dessus qu’on fait référence à la directory /mint/HDA_ROOT/.config/QCloudSSLCertificate/ mais cela est vide pour moi et je ne sais pas ce qu’il faut mettre comme donnés ciphers; curves et protocols.

Comment faut il configurer cela, dans QTS et dans Caddy?

Merci d’avance!

giopas
par giopas
#80791
Personne qui sait comment il faut configurer dans Caddy et dans QTS les certificats pour faire marcher myqnapcloud.com?
par giopas
#80963
Je sais que QTS utilise in certificat pour les connexions tls. Ce certificat, à travers QTS, peut être soit celui émis par QNAP, soit celui de Letsencrypt et cela s'applique pour le sous-domaine xxx.myqnapcloud.com.

Ce que je voudrais faire est de faire pointer caddy vers le certificat qui est utilisé par QTS. Mais je ne sais pas comment le trouver et aussi comment trouver l'information "ciphers" qui est mentionné dans les réponses avant.

J'espère que cela est plus clair maintenant.

Merci!

Sent from my ONEPLUS A5000 using Tapatalk


par giopas
#81103
Bonjour!

Est-ce qu'il y a quelqu'un qui a une idée par rapport à mon souci? Peut être que je suis en train de me perdre dans un verre d'eau...

Merci!
Presentation de Web83

Bonjour, pour des besoin pro il faut que je m'init[…]

https://www.qnapclub.eu/storage/qpkg_artifacts/Pr[…]

https://www.qnapclub.eu/storage/qpkg_artifacts/Pg[…]

https://www.qnapclub.eu/storage/qpkg_artifacts/Au[…]

Site hébergé sur un serveur IKOULA

Ikoula