Classement
Contenu populaire
Affichage du contenu avec la meilleure réputation le 12/03/16 dans toutes les zones
-
Note du 08/10/2023 Ce tuto a été créé sous DSM 6.x et doit être appliqué par les utilisateurs utilisant cette version. Néanmoins, bien qu'il soit toujours d'actualité, certaines sections de DSM sont organisées différemment depuis l'arrivée de DSM 7, avec quelques nouveautés par rapport à la version précédente. C'est pour cette raison qu'un nouveau tuto spécifique à cette version a été élaboré par @.Shad. Les utilisateurs de DSM 7 peuvent bien entendu continuer à se référer au présent tuto pour notamment y trouver des explications plus fournies sur certains points qui ont été allégés dans le nouveau tuto pour des raisons de clarté. ____________________________________________________________________________________________________________ Préambule L'objectif de ce tutoriel est de vous aider à correctement sécuriser votre boitier et en particulier les accès à ce dernier. Il ne s'agira pas ici d'un guide permettant d'avoir un haut niveau de sécurité (il n'y a pas de qu'il faut dans nos boitiers), mais simplement d'une énumération des différentes étapes permettant de limiter les risques à un seuil acceptable. Tous les points ne sont pas nécessairement à suivre, chacun est libre d'appliquer ou non ces recommandations, l'important étant de comprendre de quoi il s'agit. Voyez ce TUTO comme une liste de restrictions qu'il est possible de mettre en place, selon vos besoins, certains réglages pourront ne pas convenir. Comme depuis quelques années le terme NAS est de moins en moins compris par la plupart des utilisateurs et est détourné par les fabricants, un petit rappel s'impose. Un NAS (Network Attached Storage ou boîtier de stockage en réseau) est un système permettant de stocker des fichiers et d'y accéder via le réseau. C'est tout, terminé. Si nos boitiers ne faisaient que ça, ce tutoriel aurait eu un tout autre aspect (on aurait parlé de RAID, de TRIM, d’instantanés, d'onduleur, ...), mais on constate que sous cette appellation se trouvent de nombreuses fonctions qui n'ont rien à voir avec un NAS, ce sont des fonctionnalités de serveur (hébergement de site, streaming, messagerie, applications, ...) et un serveur a souvent vocation à être consulté depuis n'importe où (ou presque). Il faut donc en sécuriser les accès. Notes de lectures Je fais emploi de la première personne du singulier dans de nombreux points pour indiquer qu'il s'agit d'avis personnels Par soucis de compréhension, malgré son utilisation impropre, le terme NAS sera employé par la suite Plusieurs liens sont présents dans ce tutoriel, je vous invite à les consulter au fur et à mesure Je vous recommande fortement de lire ce tutoriel en entier une première fois avant de commencer à faire des modifications, puis de le reprendre étape par étape par la suite. De même, faites une sauvegarde de la configuration avant de commencer Afin de limiter le texte, vous trouverez de nombreuses copies d'écran avec les réglages que je recommande. Enfin, vous avez parfaitement le droit de ne pas être d'accord avec mes recommandations, n'hésitez pas en m'en faire part dans les commentaires. Sécurité ? La sécurité est un domaine très vaste en informatique et probablement celui qui revêt le plus d'aspects, mais force est de constater que c'est aussi le sujet le moins prioritaire pour la plupart des utilisateurs. Je vois 2 raisons à ça : les consommateurs sont de plus en plus en attente de produits simples et prêts à l'emploi dès le déballage hors de question de lire la documentation => erreur hors de question de se former (ou pire, d'être formé) => erreur et de toute manière on ne court aucun risque => erreur la sécurité est perçue comme une contrainte que des empêcheurs de tourner en rond essayent d'imposer c'est trop compliqué => ce point est souvent vrai ça fait perdre trop de temps => erreur et de toute manière on ne cours aucun risque (bis) => erreur Ces points ne sont que des exemples qui concernent à peine 95% des acheteurs de matériel informatique en tout genre. Il est probable que "vous" qui lirez ces lignes êtes dans les 5% restant. Faites votre possible pour convaincre les autres. Un constat assez curieux, c'est que dès qu'on parle de sécurité dans un domaine non informatique (chambre de bébé, maison, compte en banque, ...), la plupart des personnes sont réceptives si ce n'est volontaires, mais dès que ça touche à l’informatique, il n'y a plus personne pour écouter et surtout entendre. C'est un vrai problème car de nos jours, nos bébés sont sous vidéo-surveillance, nos enfants ont des ordinateurs (une tablette est un ordinateur, même si très limité), notre maison dispose d'une alarme connectée et nos comptes en banque sont accessibles de partout. Mais curieusement, les gens ne font pas le rapprochement . Sans oublier la meilleure des réponses - "Je n'ai rien à cacher". Quoi sécuriser ? Vous êtes maintenant convaincu que la sécurité est un point à ne pas négliger, y compris en informatique ? Que devez-vous sécuriser ? Comme indiqué plus haut, en informatique, la sécurité couvre de nombreux domaines, dans le cas de nos NAS/serveurs, il y a 3 principaux domaines sur lesquels on peut agir : sécurité des accès physique : je serais surpris que votre boitier se trouve sur votre pas de porte de même, je pense que votre nas est au sec reste à gérer la problématique des vols, ou pire, des enfants, mais c'est un autre sujet sécurité des données : 2 mots => sauvegarde + chiffrement sauvegarde : ayez toujours vos données sur au moins 2 supports distincts (nas+disque externe par exemple) chiffrement : si vous avez des données privées et/ou confidentielles, le chiffrement des partages est à envisager sécurité des accès distants : c'est le sujet qu'on va aborder dès maintenant Comment faire ? La plupart des réglages sont à faire dans le panneau de configuration, donc commencez par l'ouvrir : nb : certaines applications disposent aussi de paramètres liés à la sécurité, il ne faudra pas oublier d'aller les vérifier ######################################### "Il nous baratine sur plusieurs paragraphes à propos de la sécurité et voilà qu'il commence à parler d'heure ?" En informatique et plus particulièrement sur l'aspect sécurité, l'heure est un maillon essentiel. Une machine qui n'a pas un système horaire fiable va rencontrer un jour ou l'autre les problèmes suivants : problèmes de connexion : les systèmes d’authentification et de chiffrement utilisent l'heure dans les plupart des traitements problèmes de mise à jour : l'heure est une composante importante pour les tâches planifiées et la gestion des caches problèmes de sauvegarde : comment savoir ce qui a changé depuis la dernière sauvegarde si l'heure n'est pas fiable problèmes de diagnostic : si l'heure du système n'est pas fiable, celle des journaux (logs) ne le sera pas non plus Notez bien que je parle d'heure fiable, pas nécessairement d'heure juste. L'important n'est pas d'être à la bonne heure, mais que la pendule avance à la bonne vitesse et soit en accord avec celle des autres systèmes qui y sont connectés (en gros votre pc, les serveurs de Synology, ...). Vous avez donc le choix de mettre une heure fantaisiste à la condition d'aller régler les horloges de tous les autres équipements liés (par effet ricochet, vous allez devoir régler l'heure des satellites en orbite autour de Mars ...). Le plus simple reste d'être à l'heure juste à mon avis Ça se passe ici : Sélectionnez bien votre fuseau horaire et entrez l'adresse d'un serveur de temps fiable (vous en trouverez plusieurs ici) ou choisissez en un dans la liste proposée. Comme cette synchronisation va passer par Internet, il est recommandé de choisir un serveur de sa zone géographique (pool.ntp.org le fait tout seul) : Vous pouvez aussi activer la fonction de serveur NTP de votre boitier si vous souhaitez que vos autres équipements (vos caméras de surveillance par exemple) s'en servent comme horloge de référence : Il suffira alors de les configurer pour utiliser votre NAS comme serveur de temps (ça peut aussi être fait via le DHCP, options 004 et 042). ######################################### En sécurité, une des règles d'or consiste à réduire la surface d'attaque. Moins il y a des programmes qui tournent, mieux c'est. Accessoirement ça libérera des ressources (donc il sera plus rapide, il consommera moins et il chauffera moins). Dans cette section, n'activez que les services que vous utilisez. Si vous n'utilisez pas le FTP ou le NFS ou ... désactivez les. À noter que certains protocoles disposent d'options liées au chiffrement ou à la sécurité en générale, par exemple choisir SMB3 (dans Service de fichiers Windows) permet de chiffrer la communication en AES (pour Windows 8 et plus récent, les distributions GNU/Linux avec un noyau > 3.12 et les dernières versions de MacOS) : ######################################### On peut lire un peu partout qu'il faut renommer ou désactiver le compte admin car il sera attaqué. La recommandation est, partiellement, valable, mais la raison est mauvaise. C'est une bonne chose de créer un (ou plusieurs) compte(s) d'administrateur(s) et de ne pas utiliser (ni modifier) celui par défaut : s'il y a plusieurs personnes amenées à administrer un équipement ça permet une meilleure traçabilité, ça évite de devoir se refiler le mot de passe et ça permet de couper un administrateur en particulier si besoin sans impacter les autres si vous êtes seul à administrer votre équipement ça a au moins le mérite de laisser intact le compte par défaut La raison est mauvaise car les attaques ne s’arrêtent pas si le compte admin ne marche pas, elles s’arrêtent lorsque l'attaquant a testé tous les login/password de sa liste. Un autre point qui est souvent oublié c'est que le compte admin reste obligatoire pour certaines opérations avec les anciennes versions de DSM (inférieurs à DSM6.0). nb : certaines applications ne sont pleinement fonctionnelles qu'avec des droits d'administrateurs (ce n'est pas normal mais c'est comme ça) Nous allons donc créer un nouvel administrateur, mais un peu particulier : Choisissez un login explicite mais pas celui que vous utilisez tous les jours : Il faut bien entendu qu'il soit membre du groupes "administrators" : Ici je bloque les accès à tous les partages, certains vont penser que ça ne sert à rien puisqu'un membre du groupe "administrators" peut toujours se remettre les droits et c'est vrai. L'intérêt est que, si pour une raison ou une autre, ce compte arrive à accéder une des applications de gestion des fichiers (FileStation par exemple), il ne puisse pas faire grand-chose. nb : si vous utilisez PhotoStation, vous ne pourrez pas changer les droits de ce dossier, il faut le faire directement depuis les paramètres de l'application avec un compte administrateur On ne peut pas placer de quota sur un admin, donc on passe : Comme plusieurs protections valent mieux qu'une, on peut aussi bloquer l'accès à toutes les applications, mais dans ce cas, vous ne pourrez plus les administrer (c'est logique !). Personnellement je n'ai coupé l'administration que pour les applications qui sont accessibles depuis Internet en direct (chez moi la liste est courte, il n'y en a qu'une) et quand je veux administrer cette application (c'est rare), je me connecte avec cet administrateur, je lui donne les droits, je fais mon réglage et je retire les droits. À adapter en fonction de vos besoins (au début c'est très contraignant, mais une fois que le NAS est bien configuré, on n'y prête plus vraiment attention). Dans tous les cas, autorisez l'accès au "Bureau" à votre super admin afin de conserver l'accès au panneau de configuration : Avec un peu de parano, on peut aussi ralentir les opérations sur les fichiers pour décourager l'attaquant (ça vous demandera d'activer le contrôle du trafic) : Et on applique : Une fois notre administrateur créé, on vérifie qu'il fonctionne, donc on se déconnecte et on se reconnecte avec ce nouveau compte. Si ça fonctionne et qu'il accède bien au panneau de configuration comme un administrateur on peut continuer en spécifiant une politique pour les mots de passe. Un bon mot de passe c'est un mot de passe facile à retenir ou à retrouver de tête (donc pas sur un post-it) et relativement long. On lit souvent qu'il faut utiliser des caractères spéciaux car ça rend les mots de passe plus complexe. C'est vrai si ces 3 conditions sont réunies : les utilisateurs arrivent à s'en souvenir sans le noter les utilisateurs arrivent à le taper (clavier mobile, braille, étranger, ...) sa longueur est d'au moins 12 caractères Je trouve pour ma part qu'il est plus facile d'utiliser un long mot de passe avec des lettres, des chiffres et des majuscules qu'un mot de passe avec des caractères spéciaux. Pour ce qui est de la sécurité, imposer des caractères spéciaux à un mot de passe ne le complexifie que d'un "bit" en équivalent cryptographique. Ajouter 2 caractères "normaux" le complexifie de 11 bits. Pour un humain, deviner une chaine de 10 caractères spéciaux est très complexe, pour une machine c'est plus facile qu'une chaine de 10 caractères "normaux". Je ne dis pas qu'il ne faille pas inclure des caractères spéciaux, je recommande juste de ne pas l'imposer car ça facilite la vie des utilisateurs : En activant la vérification en 2 étapes, un assistant va se lancer, suivez le guide : Je recommande FreeOTP pour gérer vos jetons (il fonctionne aussi pour FaceBook, Google, ...) mais il existe d'autres applications similaires. Entrez le code généré par l'application (si votre NAS ou votre client ne sont pas à la même heure, ça échouera probablement) : Renseignez une adresse fiable et sécurisée ici : Et on valide : Encore une fois, on teste avant de continuer, donc on se déconnecte et on se reconnecte : Cette fois ci avec une étape supplémentaire : C'en est terminé de la création de notre administrateur, on peut maintenant couper celui par défaut : Arrivez ici vous allez penser que ce compte (monadmin) est inutilisable. C'est faux, c'est un compte d’administrateur qui peut effectuer toutes les tâches d'administration, il n'a pas besoin de voir des vidéos, d'envoyer des photos, ... Donc maintenant vous pouvez/devez créer des comptes "normaux" (sans les droits d'administration) et le compte d'administration sera réservé aux tâches d'administration. Je recommande aussi de créer des comptes utilitaires pour les besoins spécifiques. À titre d'exemple, sur mes NAS j'ai créé plusieurs comptes de ce type, dont : routeur (non admin) : ce compte sert à mon routeur pour exporter les modifications de configuration, il a juste le droit de faire du FTPs dans un dossier spécifique sauvegarde (admin) : ce compte est dédié aux tâches de sauvegardes, il a un mot de passe de 64 caractères (merci Keepass) En complément j'ai plusieurs comptes "normaux" pour l'utilisation au quotidien (ma famille et moi). Ça peut paraitre contraignant, mais normalement, enfin je l'espère pour vous, vous ne passez pas votre temps à faire des tâches d’administration sur votre NAS, donc vous ne devriez pas en avoir besoin souvent. Encore une fois il ne s'agit là que de recommandations, vous êtes libres d'utiliser le login admin avec le mot de passe "1234" pour consulter vos données privées depuis la Chine. ######################################### Ici on va aller vite, je déconseille d'activer ce service si on tient un tant soit peu à la sécurité. Pour informations, voici comme fonctionne QuickConnect : votre NAS établi un tunnel OpenVPN avec un serveur tiers loué par Synology (donc de fait, ils ont un accès direct au NAS s'ils le souhaitent) en parallèle il créé et met à jour un enregistrement DNS avec votre IP public (comme un DynDNS) lorsque vous entrez l'adresse QuickConnect de votre boitier, votre client va essayer de déterminer si vous pouvez vous connecter en direct si ce n'est pas le cas, votre trafic sera dirigé sur un serveur de Synology qui se chargera de router le trafic dans le tunnel du point 1 (donc ils peuvent voir tout ce qui passe) Le résultat est un trafic souvent très lent, relativement instable et difficile à maitriser. Néanmoins, si vous souhaitez conserver QuickConnect, pensez à limiter les applications accessibles, en particulier, n'autorisez pas DSM (en pratique l'accès à DSM on s'en fiche, ce qui est important dans un NAS ce sont les fichiers, mais bloquer l'accès aux fichiers sur un NAS limite grandement son utilité ...). ######################################### Il y a 3 sections dans ce menu : Cette section vous permet de configurer un service de DNS dynamique, c'est pratique pour ceux qui n'ont pas d'adresse IP fixe, rien de compliqué ici : Ne cliquez pas ici, ça fait partie des options que Synology devrait vraiment retirer de ses boitiers. C'est très dangereux du point de vue sécurité. Ça sert à ouvrir automatiquement des ports dans votre routeur/box, ça peut paraitre sympa comme ça mais en pratique c'est une faille de sécurité très importante. Là on entre en plein dans les comportements que je décrivais au début de ce tutoriel : les gens veulent du "clef en main" et la sécurité ça complique les choses ! 2 exemples pour essayer de vous convaincre : pour que cette fonction marche, votre routeur doit gérer l'UPnP, donc tous les équipements de votre réseau pourront faire de l'ouverture dynamique de port, le PC qui vient de se prendre un virus pourra automatiquement, sans la moindre notification, ouvrir un port permettant à un attaquant d'entrer dans votre réseau de même, si vous avez configuré des redirections de ports pour plusieurs équipements, ces redirections risquent de sauter si une requête UPnP demande le même port Un petit menu que beaucoup oublient de configurer, il n'est pas obligatoire et pas lié (pas directement du moins) à la sécurité mais ça permet d'éviter de chercher des heures la raison pour laquelle un lien de partage (par exemple) ne fonctionne pas. Attention, il faut vider ces champs si vous utilisez des noms de domaine ou des ports spécifiques (portail des application, reverse proxy, ...). nb : si vous avez changé les ports de DSM (directement ou via votre routeur), il faut l'indiquer ici ######################################### On ne peut pas parler d'accès distant sans parler d'IP, donc allons y : Du point de vue confort, fiabilité et sécurité, l'attribution dynamique (DHCP) est recommandée, néanmoins, certains services nécessitent d'avoir une adresse IP fixe (c'est le cas du DKIM avec MailServer mais aussi du serveur DHCP et quelques autres applications), donc à choisir en fonction de vos besoins. Si vous choisissez DHCP, fixez l'adresse dans votre serveur DHCP (votre box probablement), si vous choisissez l'IP en dur, prenez une IP en dehors de la plage DHCP. Pour l'IPv6, même si je ne devrais pas le dire (car l'IPv6 c'est bien), du point de vue sécurité je vous recommande de le désactiver pour le moment. Le problème ne vient pas de Synology (qui permet de régler le pare-feu en IPv6), c'est plus général (j'en parle ici). Une fois que vous aurez bien compris ce que ça implique, vous pourrez revenir l'activer. Merci de ne pas changer les ports par défaut, ça n'apporte presque rien du point de vue sécurité (on gagne moins d'une seconde face à un scanner) et ça complique les usages. Si vraiment vous souhaitez les changer depuis Internet, faites-le sur votre box ou avec un "reverse proxy". Je ne redirige pas automatiquement les connexions HTTP vers HTTPS car je n'expose pas DSM directement sur Internet (il y a un serveur VPN pour ça), mais si vous le faites, activez la redirection. Attention, j'ai pu constater qu'activer la redirection HTTP vers HTTPS cassait certains mécanismes, au moins le reverse proxy pour les applications de base (audio/download/file/surveillance/video - station). Si vous souhaitez profiter de la redirection sans casser le reverse proxy, le plus simple est de créer un petit fichier php à la racine de Webstation (/web/index.php) pour gérer cette redirection : <?php $http_host = $_SERVER['HTTP_HOST']; // 307 Temporary Redirect header("Location: https://$http_host",TRUE,307); exit; ?> Vous pouvez bien entendu adapter le script pour utiliser des ports différents si besoin. Pour la dernière option, l'HSTS, ne l'activez que si vous n'accédez jamais à votre NAS autrement qu'en HTTPS (c'est votre navigateur qui enregistrera cette information et il ne vous laissera plus passer autrement qu'en HTTPS, même si ce dernier est coupé). ######################################### J'ai pris les menus dans l'ordre (ou presque), donc la section "Sécurité" n'arrive que maintenant, pourtant tout ce que l'on a vu précédemment est aussi lié à la sécurité ... Ces réglages devraient convenir à la plupart des utilisateurs : Pour le pare-feu, même si votre NAS n'est pas exposé sur Internet, activez-le, ça ne coute presque rien en ressources et ça limitera la casse si un jour il est exposé (une box qui passe en bridge, une erreur de manipulation, ...). Vous pouvez laisser les notifications activées, mais ne vous en servez pas (ne cliquez pas sur le bouton OK lorsqu'elles apparaissent), utilisez-les simplement comme un rappel que vous avez tel ou tel port à ouvrir. Les règles de pare-feu ci-dessous seront valable chez pratiquement tout le monde, en toute rigueur, il ne faudrait autoriser que les adresses "fiables" sur des services précis, mais sauf à avoir des espions dans son réseau, ça ne devrait pas poser de problèmes. On va dire que c'est un compromis entre confort et sécurité. nb : si vous souhaitez faire de l'IPv6, pensez à ajouter les adresses locales (fe80::/10 et ff00::/8) Dans un premier temps, je vous recommande vivement de configurer votre pare feu avec les 4 règles ci-dessous, à l'identique !! UPDATE: Dans chaque section d'interface modifier le paramètre : Si aucune règle n'est remplie : Refuser l'accès" ("Autoriser l'accès" par défaut). nb : dans les 3 premières règles, il faut bien choisir "Sous-réseau" et pas "Hôte unique" ni "Plage d'IP" ici j'utilise uniquement la table "Toutes les interfaces" car c'est plus simple à gérer et suffisant pour la plupart des besoins, si vous souhaitez utiliser les règles par interfaces, lisez ceci Une fois ces 4 règles en place, vous pourrez ajouter les autres règles dont vous avez besoin (il faut les ajouter juste avant la dernière règle) si vous souhaitez que certains services de votre NAS soient accessibles depuis Internet. Les règles ci-dessus n'autorisent que les réseaux locaux et bloquent tout le trafic venant d'Internet. Voici un exemple plus complet qui n'est pas à reprendre aveuglement, c'est juste pour illustrer : En plus des réseaux locaux (ou privés), j'autorise les services suivants : ports TCP 80 et 443 depuis l'adresse 192.0.2.3 (il s'agit d'une adresse IP public d'exemple, ce n'est pas une adresse privée => https://tools.ietf.org/html/rfc5737) port UDP 1194 (OpenVPN) uniquement depuis la France ports UDP 500, 1701 et 4500 (L2TP/IPSec) uniquement depuis la France et les ports TCP 7000 et 7001 que j'ai associé à une application, autorisés depuis la France la Guyane française nb : les règles sont évaluées dans l'ordre, de haut en bas ps : si votre NAS est derrière une Box, il faudra aussi transférer (forward) les ports sur cette dernière Une recommandation, n'autorisez pas l'accès en direct à DSM (ports TCP 5000 et 5001 par défaut) depuis Internet mais servez vous du portail des applications (cf plus bas) pour limiter les accès aux seules applications nécessaires. Si vous devez administrer votre NAS depuis Internet, l'utilisation du Serveur VPN est vivement conseillée. Une petite case à cocher pour limiter les chances que votre boitier soit rendu inaccessible suite à un certain type d'attaque : A adapter selon vos interfaces connectées. Cette fonction bloquera les adresses IP des personnes ayants fait trop d'erreurs d'authentification (ça ne fonctionne qu'avec certaines applications, mais c'est déjà ça). nb : n'ajoutez pas d'adresses dans la liste des autorisations, si vous vous bloquez vous même, changez juste l'adresse de votre poste pour le débloquer ou attendez l'expiration du blocage Un peu plus haut on a parlé d'HTTPS, or qui dit HTTPS dit certificat. Ici on se heurte à un vrai problème du point de vue de la sécurité. Il est assez difficile de l'expliquer sans en faire des pages, mais pour faire simple, n'utilisez jamais un certificat auto-signé (comme celui installé par défaut dans la plupart des équipements). La solution la plus sécurisée consiste à créer votre propre autorité de certification et à émettre vous-même vos certificats. Cette méthode présente quelques avantages mais aussi quelques inconvénients : Avantages : vous n'avez pas à faire confiance à une entreprise que vous ne connaissez pas vous n'avez pas à payer cette entreprise pour vos certificats (même si avec LetsEncrypt et quelques autres entités, c'est gratuit) vous pouvez émettre autant de certificats que nécessaire vous pouvez choisir ce qu'ils acceptent (wildcard ou multi domaine par exemple) Inconvénients : vous devez savoir le faire vous devez installer votre autorité partout où vous l'utilisez (dans vos navigateurs, smartphones, ...) La solution recommandée est donc d'utiliser un certificat signé par une autorité reconnue en standard (Synology vous permet de créer un certificat signé par LetsEncrypt, c'est gratuit et ça marche assez bien). Dans un cas comme dans l'autre, supprimez le certificat installé par défaut. Enfin, la solution qui n'en est pas une consiste à accepter les avertissements de sécurité, en faisant ça, vous installez dans votre navigateur des certificats qui n'ont été validés par personne. C'est très dangereux mais il est assez difficile de vous expliquer pourquoi en quelques mots, gardez juste à l'esprit qu'accepter un certificat non reconnu peut permettre à un attaquant d'intercepter toutes vos communications vers le site de votre banque, même si ce dernier est protégé par un vrai certificat. ps : en passant, 2 modules pour Firefox que je recommande : Y U no validate et SSleuth Donc pour la plupart d'entre vous, le bon choix est de passer par l'assistant pour créer un certificat signé par LetsEncrypt (le port 80 doit être ouvert le temps de la génération du certificat et tous les 3 mois pour son renouvellement). N'activez jamais la compression HTTP (il y a une faille de sécurité dans ce protocole qui rend l'HTTPS inefficace) et utilisez les suites de chiffrement "moderne". ######################################### Un point important en sécurité consiste à être prévenu lorsqu’un problème survient. Le paramétrage des notifications est fait pour ça. Ici j'ai configuré les notifications par mail, mais vous pouvez utiliser les SMS (si vous avez un abonnement compatible comme FreeMobile) ou encore par Push (je déconseille ce mode car il est peu pratique à l'usage). Dans le dernier onglet, vous pouvez choisir le type de notification à activer pour la plupart des événements pouvant se produire. Au début cochez tout, puis en fonction de votre usage, vous pourrez décocher certaines notifications (chez moi j'ai désactivé les notifications pour les sauvegardes réussies). ######################################### Maintenir ses équipements à jour est un moyen assez simple de limiter les problèmes de sécurité. Je recommande de laisser le NAS détecter et télécharger les mises à jour automatiquement mais de ne pas le laisser les installer tout seul. Synology sort des mises à jour de bonne qualité en général, mais il arrive, surtout pour les mises à jour majeurs, que des problèmes surviennent (en clair, elles sont parfois boguées). Laissez le NAS vous prévenir qu'une mise à jour est disponible et renseignez-vous sur d'éventuels soucis de compatibilité avant de l'installer. nb : désactivez aussi les mises à jour automatique dans le Centre de paquets pour la même raison Parmi les actions à effectuer de temps en temps, surtout lorsque vous vous apprêtez à faire de gros changements (comme en suivant ce tutoriel), la sauvegarde de la configuration n'est pas à omettre. ps : pour information, le fichier de sauvegarde est une archive tar.xz contenant une base sqlite, il est donc possible de le consulter pour récupérer un élément de configuration précis Notez en passant que seuls certains paramètres sont sauvegardés, pensez à sauvegarder le reste d'une manière ou d'une autre : ps : cette sauvegarde de la configuration du NAS n'est pas à sauvegarder sur le NAS lui-même ######################################### Ici vous avez la possibilité de restreindre l'accès à certaines applications pour certains comptes. Par exemple si vous vous servez de votre NAS comme d'un système de dépose de fichiers pour des clients, via FileStation, il n'est pas nécessaire de leur laisser accès à vos vidéos de vacances avec VideoStation. De même il est peut être utile de limiter les accès à certaines machines. Sélectionnez une application et cliquez sur Modifier, la suite est assez explicite. ######################################### Par défaut la plupart des applications sont accessibles via DSM (ports 5000 et 5001) et l'adresse de votre nas, mais si vous souhaitez que seule telle ou telle application soit accessible depuis Internet, ou dispose d'une adresse spécifique ou écoute sur un port particulier, ou encore tout ça à la fois, c'est ici qu'il faut se rendre. Vous avez 2 menus : Applications : ça permet de configurer l'adresse et le port d'écoute de certaines applications Synology Proxy Inversé : ça permet de faire la même chose pour les autres applications ou faire des configurations plus avancées Ces options vous permettent, par exemple, de faire écouter les différentes applications sur des ports précis et ainsi, grâce au pare-feu, de limiter leurs accès aux seules adresses autorisées. Ci-dessous un exemple un peu plus complexe (la seconde partie n'est réalisable qu'avec du loopback ou si vous avez un DNS en interne ou qui gère les vues, j'en parle à la fin du tuto VPN) Dans un premier temps j'ai déclaré des ports spécifiques pour chacune des applications que j'utilise : => depuis un navigateur, si j'entre l'adresse de mon nas en précisant le port 7043 je tombe directement sur Audio Station J'ai ensuite configuré le Proxy inversé pour faire correspondre les différentes applications avec des noms de domaine différents mais sur un seul port (tcp 443/https). J'ai aussi créé une entrée pour une application non Synology (il s'agit ici d'un Docker) : => depuis DSAudio, j'entre l'adresse dsaudio.mon.domaine:443 nb : dans les applications mobiles, il ne faut pas oublier le numéro de port dans l'adresse pour que ça fonctionne de partout (en interne comme depuis Internet), sinon certaines d'entre elles essayent systématiquement de trouver une configuration QuickConnect (qui n'existe pas chez moi) ps : cette configuration ne fonctionnera pas si vous avez activé la redirection HTTP vers HTTPS de DSM (cf remarque un peu plus haut) ######################################### Même si vous n'avez pas l'intention de vous en servir, activez le SSH. En cas de problème d'accès à DSM, c'est souvent la seule manière de débloquer la situation sans devoir faire un reset du NAS. Par contre ne l'ouvrez pas depuis Internet, limitez son accès à votre seul réseau local. Et en passant, choisissez le mode de chiffrement le plus élevé : ######################################### Synology a eu la bonne idée (de mémoire avec DSM 5.2) d'ajouter l'application "Conseiller en sécurité". Cette application analyse certains fichiers et certains réglages de votre NAS afin de vous prévenir en cas d'anomalies. Elle ne va pas encore assez loin à mon gout, d'où ce tutoriel, mais c'est déjà pas mal. Globalement elle fait bien son travail, donc il serait dommage de s'en passer (n'oubliez pas de planifier une analyse régulière) : Néanmoins je ne suis pas d'accord avec 3 des recommandations de Synology, celles concernant les changements de ports, donc je les désactive (tout le reste devrait être activé) : Lancez l'analyse une première fois, si vous avez suivi mes recommandations, tout devrait être au vert.1 point
-
Depuis peu, DSM intègre nativement nginx (Merci à Piwi pour l'info) Voila qui nous offre donc une 3eme manière d'implémenter un reverse proxy (en alternative à la modif de conf Apache ou l'utilisation de haproxy). Merci de consulter l'historique des modifications à la fin du post Principe de base Pour ne rien risquer de "casser" dans la configuration du serveur nginx système DSM nous allons utiliser une deuxième instance dédiée, réservée à la fonction de reverse proxy. Les deux instance n'auront aucun fichiers en commun et tourneront de façon entièrement indépendante. Ce dernier va être à l'écoute sur deux ports TCP, un pour le http et l'autre pour https. Comme pour haproxy il conviendra de rediriger sur sa box ou son routeur les connexions entrantes sur les ports http et https standard (80 et 443) vers chacun des ports choisi. Dans la suite du tuto utilisera les ports 6080 et 6043 mais bien entendu chacun peut choisir. Important: Il est requis que ces deux ports internes soient ouverts dans le firewall du Syno (si celui-ci est activé) Préalable: Mettre en oeuvre la redirection de ports dans la box, exemple dans le cas d'une freebox: Configuration nginx Il est préférable de définir un répertoire dédié à la config nginx sur le NAS, je préconise "/usr/local/etc/nginx" (à créer) On va décomposer la configuration dans 3 fichiers pour éviter les répétitions (tous seront à créer dans ce répertoire): fichier principal: "nginx.conf" options proxy: "proxy_defaults.conf" options SSL: "ssl_defaults.conf" nginx.conf Sa structure est la suivante: user http; #+ # chemin du log à remplacer à votre convenance # attention: dans l'état il ne fait que grossir # mettre la ligne en commentaire ou prévoir un mécanisme de rotation #- error_log /var/log/nginx-site-error.log; events { worker_connections 1024; } http { access_log off; proxy_temp_path /var/lib/nginx-local/proxy; # # Default servers # server { listen *:6080 default_server; listen *:6443 default_server ssl; server_name _; include ssl_defaults.conf; location / { proxy_pass http://localhost:80/; include proxy_defaults.conf; } } <déclaration vhost 1> <déclaration vhost 2> ... <déclaration vhost n> } La déclaration "server" initiale sert à rediriger par défaut sur le serveur webstation les requêtes ne correspondant pas à un vhost spécifique. Les VirtualHosts suivants sont à ajouter suivant vos besoins vers les différents services du NAS Exemple de contenu de vhost pour l'interface DSM gérant HTTP et HTTPS: server { listen *:6080; listen *:6443 ssl; server_name ~^dsm..*$; underscores_in_headers on; #uniquement necessaire pour le vhost DSM include ssl_defaults.conf; location / { proxy_pass http://localhost:5000/; include proxy_defaults.conf; } } La syntaxe un peu étrange pour "server_name" est une expression régulière permettant de rediriger toutes les requêtes dont la partie "host" commence par "dsm." (telles que "http://dsm.votre_domaine") vers le port 5000 local. On notera l'utilisation d'un backend http (l'url assiciée à proxy_pass) pouvant être accédé par un front-end https (listen). Dans ce cas le protocole SSL est entièrement géré par nginx, coté interne, en local on est en full http, suivant le schema: <navigateur> <-- HTTPS --> NGINX <--- HTTP --> <service>. Pour les autres services, Il suffit d'ajouter autant de blocs "server" que nécessaire, voici un exemple pour filestation: server { listen *:6080; listen *:6443 ssl; server_name ~^filestation..*$; include ssl_defaults.conf; location / { proxy_pass http://localhost:7000/; include proxy_defaults.conf; } } la définition ci dessus va permettre de rediriger les requêtes de "filestation.votre-domaine" vers le service filestation (quel que soit "votre-domaine") On remarquera que, grâce au support d'expressions régulières dans la clause "server_name", il n'est pas nécessaire de mettre en dur le nom de domaine dans la config. Il peut-être plus lisible et pratique de créer des fichiers séparés pour chaque vhost et de remplacer les blocs par des lignes: include <fichier> ou, mieux, mettre tous les fichiers de déclaration de vhosts dans un unique dossier dédié et utiliser une seule ligne include, exemple: include services.d/*.conf Attention: quand on utilise dans les "include" des chemins relatifs comme ci-dessus (c.a.d sans "/" initial), le répertoire par défaut est celui où se trouve le fichier "nginx.conf", le dossier "services.d" doit donc être situé au même endroit. Filtrage IP dans les blocs "location" on peut ajouter des clauses "allow" et/ou "deny" pour filtrer l'acces au bloc en fonction de l'ip du client, de façon similaire au clauses apache équivalente. La syntaxe est simplement une série de clauses: Allow <IP ou IP Range>; et Deny <IP ou IP Range>; IP ou IP Range utilise la même syntaxe que dans les .htaccess (y compris la pseudo addresse "All"). C'est la première (de haut en bas) action (allow ou deny) qui "matche" l'IP du client qui sera appliquée. Webdav Webdav peut necessiter d'ajouter la clause "client_max_body_size 20M;" dans les blocs "server" des vhosts correspondants pour éviter une erreur de type "413 Request Entity Too Large" dans le cas d'upload de fichiers volumineux (20M pour 20 MegaBytes, à régler suivant votre besoin). Ce qui donne: server { listen *:6080; listen *:6443 ssl; server_name ~^webdav..*$; client_max_body_size 20M; include ssl_defaults.conf; location / { proxy_pass http://localhost:5005/; include proxy_defaults.conf; } } proxy_defaults.conf proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; # CF: http://serverfault.com/questions/372886/prevent-nginx-from-redirecting-traffic-from-https-to-http-when-used-as-a-reverse proxy_redirect http:// $scheme://; # CF: https://gist.github.com/micho/1712812 proxy_set_header X-Client-Verify SUCCESS; proxy_set_header X-Client-DN $ssl_client_s_dn; proxy_set_header X-SSL-Subject $ssl_client_s_dn; proxy_set_header X-SSL-Issuer $ssl_client_i_dn; ssl_defaults.conf # NOTE: décommenter un (et un seul) des deux blocks suivants # (pour une compatibilité à partir de windows vista et openssl 1.0.1) ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE+AESGCM:ECDHE+AES; # Pour une compatibilité à partir de Windows XP et openssl 0.9.8 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE+AESGCM:ECDHE+AES:DES-CBC3-SHA; ssl_prefer_server_ciphers on; # DSM5: décommenter les deux lignes suivantes #ssl_certificate /usr/syno/etc/ssl/ssl.crt/server.crt; #ssl_certificate_key /usr/syno/etc/ssl/ssl.key/server.key; # DSM6: utiliser les deux lignes suivantes (commenter sinon) ssl_certificate /usr/syno/etc/certificate/system/default/fullchain.pem; ssl_certificate_key /usr/syno/etc/certificate/system/default/privkey.pem; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; Lancement de nginx Pour que nginx soit démarré automatiquement au boot du NAS, il est nécessaire de le faire via un script shell, situé dans "/usr/local/etc/rc.d/". On va le nommer "nginx.sh" (le .sh est requis). Attention de le rendre exécutable (chmod +x) Voici son contenu: #! /bin/ash # # nginx local startup for DSM # PATH="/bin:/usr/bin" BASE="/usr/local" # contourner la restriction AppArmor (DSM6) SYSNGINX=/bin/nginx NGINX=$BASE/bin/nginx cp --update --archive $SYSNGINX $NGINX PREFIX="$BASE/etc/nginx" CONF="$PREFIX/nginx.conf" PIDFILE="/var/run/nginx-local.pid" PROXY_TEMP_PATH="/var/lib/nginx-local/proxy" [ -f $CONF ] || exit 0 if [ ! -d $PROXY_TEMP_PATH ] ; then mkdir -p $PROXY_TEMP_PATH chown http:http $PROXY_TEMP_PATH chmod u=rwx,g=rwx,o= $PROXY_TEMP_PATH fi action=$1 # build nginx arglist set -- -p $PREFIX -c $CONF -g "pid $PIDFILE;" case $action in start) [ -t 0 ] || exec >/tmp/nginx-startup.log 2>&1 $NGINX "$@" && echo >&2 "nginx: $action" ;; stop|reload|quit) $NGINX "$@" -s $action && echo >&2 "nginx: $action" ;; restart) for action in stop start do $0 "$action" done ;; status) if [ -r $PIDFILE ] ; then ps -www -fp $(<$PIDFILE) # <ligne à utiliser en DSM6, suivante pour DSM5 ### /bin/ps -w | awk -vpid="$(cat $PIDFILE)" '($1 == pid)' fi ;; *) echo "$0: unknown param \"$action\"" ;; esac Ce script sert aussi pour forcer le serveur à prendre en compte modification de config. Il faut utiliser pour cela le paramétre "reload": cela à l'avantage de ne pas tuer le process serveur si une erreur de syntaxe est détectée (utile pour les modifs de conf à distance!) "restart" sert a faire un redémarrage complet (si on soupçonne une fuite mémoire ou pour être sur de bien repartir complètement à l'état initial) Utilisation C'est a peu prés tout Pour lancer manuellement le serveur: /usr/local/etc/rc.d/nginx.sh start pour lui faire prendre en compte une modification de config /usr/local/etc/rc.d/nginx.sh reload # ou restart, plus radical Notes Il est fort possible que certaines options puissent être inutiles, ou que d'autres soient à ajouter pour optimiser ou régler tel ou tel détail. Ne pas hésiter à commenter et/ou proposer des modifications. L'approche que j'ai suivie modifie aucun fichier système DSM et l'intégralité de la config est située sous de /usr/local. Cela permet de garder le fonctionnement intact même en cas d'upgrade DSM. J'attends toutes remarques et signalement de bugs Rotation des logs Merci à loli71 qui à soumis dans le fil des instructions pour mettre en place une rotation du log logs. Ses instructions sont ici (et la solution s'intègre directement et proprement au composant de rotation des logs DSM) Historiques des modifications 15/06/2014: déplacé error_log en global proxy_http_version dans proxy_defaults.conf 16/06/2014: "backends" en simple http 19/06/2014 Spécificités WebDav interface admin DSM (5000/5001): retour au backend https pour frontend https suite à remarque. 20/06/2014 mutualisation des blocs "server" HTTPS en HTTPS. solution au problème de la redirection auto en https en ajoutant la clause "proxy_redirect" appropriée (et retour à la mutualisation en un seul backend http de ce fait) le cas "restart" du script de démarrage avait été oublié. 24/06/2014 ajouté "underscores_in_headers on" pour les liens partagés FileStation sur les dossiers 28/06/2014 on peut considérer la solution comme stable, supprimé "work in progress" clauses "Allow" et Deny" 02/07/2014 précisions sur les chemins relatifs pour les "includes" 15/09/2014 supprimé la remarque "work in progress", depuis le temps je pense qu'on peut considérer cette méthode comme stable et pérenne! ajouté l'ouverture des deux ports d'écoute de nginx dans le firewall. 12/11/2014 Ajouté référence à la rotation des logs proposée dans un commentaire 16/04/2016 utilisation du site http://hilite.me/ pour la colorisation des extraits de conf et de code 20/11/2016 mise à jour de la configuration SSL suivant les préconisation de @gaetan.cambier1 point
Ce classement est défini par rapport à Bruxelles/GMT+01:00