NAS Synology – Accès réseau Zero Trust (ZTNA) avec Twingate : oubliez votre VPN
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à déployer Twingate sur un NAS Synology dans le but d'avoir un accès distant à son NAS, et éventuellement à d'autres ressources, grâce à un mode d'accès appelé Zero Trust Network Access. Je vous préviens : ce tutoriel va vous faire oublier votre VPN traditionnel.
Nous allons commencer par un rappel sur le modèle d'accès ZTNA, avant d'évoquer la solution Twingate pour ensuite partir sur la configuration pas à pas de cet accès distant. Pour ma part, je vais utiliser un NAS Synology sous DSM 7.2. Vous avez besoin d'un NAS compatible avec "Container Manager" (Docker) pour suivre ce tutoriel.
II. Le Zero Trust Network Access
Le Zero Trust Network Access est un modèle d'accès réseau qui repose sur le concept de sécurité "Zero Trust" ("Confiance Zéro"), c'est-à-dire que l'on part du principe où l'on ne fait pas confiance à l'utilisateur et à l'appareil qui souhaitent se connecter.
Ainsi, chaque tentative d'accès à une ressource doit être contrôlée et vérifiée pour s'assurer que l'utilisateur est bien celui qu'il prétend être (authentification) et que l'utilisateur est autorisé à accéder à la ressource à laquelle il tente de se connecter (autorisation).
Pour approfondir ce sujet, consultez notre article dédié au ZTNA :
III. La solution Twingate
Créée en 2019, Twingate est une entreprise américaine, basée à Redwood City, en Californie, dont l'objectif est de sécuriser les accès distants des entreprises en appliquant le principe du "Zero Trust". La sécurité est au cœur de cette solution que l'on peut qualifier de "secure by design", car elle a été imaginée dès le départ pour sécuriser et protéger les accès.
Comme le montre le schéma de fonctionnement, les données des utilisateurs vont transiter par l'infrastructure de Twingate. Les connexions sont sécurisées grâce à des connexions TLS et les données sont chiffrées au repos et en transit. Les données au repos sont chiffrées avec de l'AES 256-bits et stockées dans une base de données sur Google Cloud Platform.
Notre NAS Synology jouera le rôle de "Twingate Connector" grâce au container Docker que nous allons installer. Tandis que le "Twingate Client" correspond à tout appareil que vous souhaitez utiliser pour accéder à vos ressources. Pour le reste, le "Twingate Controller" est géré par Twingate directement et l'authentification est effectuée via un service de gestion des identités tiers (Google, Microsoft, LinkedIn, GitHub, etc.).
"L'une des principales caractéristiques de Twingate est qu'aucun composant ne peut prendre seul la décision d'autoriser le trafic vers un autre composant ou une autre ressource de vos réseaux distants.", peut-on lire dans la documentation officielle.
La version gratuite que nous allons utiliser aujourd'hui permet d'avoir 1 compte administrateur, 5 utilisateurs et 10 réseaux distants (avec chacun leurs ressources). Cette offre gratuite donne aussi accès à des fonctions de sécurité intéressantes pour gérer les accès aux ressources. Nous héritons de fonctionnalités associées au ZTNA comme les accès temporaires (accès autorisé jusqu'à telle date), l'auto-verrouillage des accès (si un accès n'est pas utilisé pendant une période donnée, il est révoqué), le blocage de certains appareils (manuel ou en cas de non-conformité vis-à-vis d'une politique), le suivi de l'ensemble des accès avec un reporting précis, etc.
Vous pouvez obtenir plus de détails et comparer les différentes offres via cette page :
IV. Déployer Twingate sur un NAS Synology
A. Créer un compte et un réseau Twingate
Pour commencer, vous devez créer un compte sur le site Twingate. Pour cela, vous avez besoin d'une adresse e-mail ainsi que d'un compte Google, Microsoft, LinkedIn ou GitHub.
La création d'un compte est associé à la création d'un réseau. Au moment où l'étape "Finalize your network" s'affiche, vous verrez le nom de votre réseau à l'écran. Ici, il s'agit de "florianburnel.twingate.com". Pour changer, vous devez cliquer sur le lien "use a different name for your Network ?".
Pour ma part, le réseau s'appellera "itconnectdemo" et l'URL de connexion sera "itconnectdemo.twingate.com". Quand le choix est fait, cliquez sur "Go to your Network".
Pour finir, vous devez vous authentifier avec un compte Google, Microsoft, GitHub ou LinkedIn. Au choix, parmi ces 4 fournisseurs d'identité. Par la suite, ce compte sera celui que vous pourrez utiliser pour accéder à vos ressources, même si vous pouvez en ajouter d'autres.
Validez et patientez pendant la création de votre réseau Twingate.
B. Créer un réseau distant
Bienvenue sur le tableau de bord de Twingate ! Vous pouvez fermer l'assistant qui se lance la première fois. Nous déclarer un nouveau réseau distant en cliquant sur le bouton "Add Remote Network" sur la gauche.
Vous devez spécifier l'emplacement de votre réseau : "AWS", "Azure", "Google Cloud", "On premise" ou "Other". Ici, nous allons choisir "On Premise" car le NAS Synology est sur site.
Indiquez un nom et cliquez sur "Add Remote Network". Pour ma part, le réseau distant sera nommé "HomeLab".
Passons à l'étape suivante.
C. Créer un connecteur Docker
Au sein de ce réseau distant, vous devez déployer un nouveau connecteur qui permettra de faire le lien entre votre appareil (client Twingate) et la ressource à laquelle vous souhaitez accéder (l'interface Web du NAS, par exemple). Cliquez sur "Deploy Connector".
Plusieurs méthodes de déploiement sont disponibles. Choisissez "Docker" puisque nous allons créer un container Docker sur le NAS Synology. Cliquez sur le bouton "Generate Tokens" pour générer les deux jetons qui permettront à notre connecteur Twingate de s'authentifier auprès du contrôleur Twingate ("itconnectdemo.twingate.com").
Copiez les deux jetons et gardez-les de côté, nous allons en avoir besoin par la suite.
Pour information, il y a d'autres options disponibles, notamment pour que le connecteur soit accessible en Interne, et pas seulement en externe. Nous n'allons pas configurer ces options.
Un peu plus bas dans la page, Twingate vous propose une commande prête à l'emploi pour exécuter le container Docker. Nous n'allons pas l'utiliser car nous allons utiliser Docker Compose pour créer notre container.
La suite va se passer sur le NAS Synology...
D. Créer le container Docker sur le NAS
Connectez-vous sur l'interface de votre NAS Synology et installez l'application "Container Manager" à partir du Centre de paquets si vous ne l'avez pas encore sur votre NAS.
Une fois que c'est fait, et avant de créer le container, ouvrez "File Station" et créez un dossier nommé "Twingate" dans le dossier "Docker". Ce dossier sera utilisé par le container Twingate pour stocker ses données.
Ensuite, ouvrez l'application "Container Manager", puis sur la gauche, choisissez "Projet" et cliquez sur le bouton "Créer".
- Nom du projet : nommez ce projet (container) avec le nom de votre choix. Vous pouvez simplement indiquer "twingate" (en minuscules).
- Chemin : indiquez le chemin "/docker/Twingate" correspondant au dossier créé précédemment.
- Source : sélectionnez "Créer un fichier docker-compose.yml" et copiez-coller le code ci-dessous, récupéré à partir de cette page de la documentation officielle.
services:
twingate-connector:
image: twingate/connector:latest
environment:
- TWINGATE_NETWORK=<TENANT NAME>
- TWINGATE_ACCESS_TOKEN=<ACCESS TOKEN>
- TWINGATE_REFRESH_TOKEN=<REFRESH TOKEN>
Vous devez indiquer plusieurs valeurs :
- TWINGATE_NETWORK : le nom de votre réseau Twingate. Il s'agit de la valeur "itconnectdemo" pour ma part.
- TWINGATE_ACCESS_TOKEN : jeton d'accès. Collez la valeur récupérée précédemment.
- TWINGATE_REFRESH_TOKEN : jeton d'actualisation. Collez la valeur récupérée précédemment.
Quand c'est fait, cliquez sur le bouton "Suivant" et initiez la création du container. Patientez pendant que Docker télécharge l'image pour ce container, à savoir "twingate/connector" dans sa dernière version, et qu'il effectue la configuration du container.
Au final, le container doit être créé et démarré, comme ceci :
Sur l'interface de Twingate, le connecteur apparaît bien en ligne et les statuts sont verts, ce qui est plutôt bon signe !
E. Ajouter une ressource Twingate
Désormais, nous allons devoir ajouter une ressource, c'est-à-dire une application, un serveur, etc... qui sera accessible par l'intermédiaire de l'accès ZTNA. Dans cet exemple, nous allons autoriser l'accès à l'interface DSM du NAS afin de pouvoir accéder au NAS à distance sans l'exposer directement sur Internet et sans utiliser la solution QuickConnect.
Sur l'interface de Twingate, cliquez sur le bouton "Create Resource".
Il va falloir renseigner un ensemble d'informations :
- Un label, c'est-à-dire un nom. Par exemple : "NAS Synology (DSM)".
- Une adresse IP ou un nom d'hôte correspondant à cette ressource. Ici, l'adresse IP privée de ce NAS sera indiquée ("192.168.1.148")
- Une restriction sur le port, puisque nous n'allons pas autoriser tous les flux vers cette ressource. Nous allons uniquement autoriser les connexions sur le port 5001/TCP et bloquer l'UDP et le ping (ICMP). Le port 5001 correspond au port par défaut de l'interface DSM de Synology lorsque la connexion HTTPS est utilisée.
La fonction "Auto-Lock" n'est pas configurée, car je n'en ai pas l'utilité, mais elle peut s'avérer utile si vous ouvrez l'accès à une ressource à un autre utilisateur. En fait, ceci permet de définir une durée, par exemple, de 30 jours, et si l'utilisateur ne se connecte pas au moins une fois tous les 30 jours à la ressource, l'accès à cette ressource lui sera révoqué. Ceci évite d'avoir des permissions qui trainent indéfiniment si elles ne sont pas utilisées...
Ce qui donne :
À l'étape suivante, vous devez indiquer quels sont les groupes autorisés à accéder à cette ressource. Sélectionnez "Everyone" car nous n'avons pas créé d'autres groupes. Ce groupe correspond à tous les utilisateurs de votre environnement Twingate.
Poursuivez afin de finaliser la création de la ressource. C'est l'occasion de constater que la section "Recent Activity" contient la liste de toutes les connexions. Vous avez accès à l'historique de toutes les tentatives d'accès à vos ressources, avec la date, l'heure et l'utilisateur.
F. Activer le MFA pour l'accès aux ressources
Pour renforcer l'accès à la ressource que nous venons de créer, et à celles que nous pourrons créer par la suite, nous allons imposer l'utilisation du MFA. Cela signifie qu'un utilisateur devra s'authentifier avec son compte (Google, Microsoft, etc...) et valider un second facteur d'authentification.
Sur l'interface de Twingate, cliquez sur "Policies" dans le menu, puis sur "MFA not required" sur la droite.
Cliquez sur "Require MFA" et validez avec "Confirm changes". Ce second facteur d'authentification pourra être une application TOTP telle que Microsoft Authenticator ou Google Authenticator, ou encore votre empreinte digitale.
Voilà, nous sommes prêts à tester l'accès distant !
V. Tester l'accès distant
Pour accéder à notre ressource à distance, nous devons installer un client Twingate sur un appareil. Il y a des versions pour Windows, macOS, Linux, iOS, Android et ChromeOS, ce qui permet de prendre en charge la majorité des plateformes.
Dans cet exemple, un smartphone sous Android sera utilisé. Sur un smartphone Android, la première étape consiste à télécharger l'application "Twingate" à partir du Google Play Store. Libre à vous d'utiliser un autre smartphone, une tablette, un ordinateur, etc... et d'installer l'application correspondante.
Ensuite, nous devons nous connecter à notre réseau Twingate. Pour cela, nous devons préciser le nom du réseau, à savoir "itconnectdemo.twingate.com". Puis, il est nécessaire de s'authentifier avec le compte autorisé sur Twingate (compte Google, Microsoft, GitHub, LinkedIn, etc.) et de valider le second facteur d'authentification.
À partir du moment où la connexion est établie, nous pouvons voir la liste des ressources. Ici, nous avons bien la ressource "NAS Synology (DSM)" qui apparaît. Il me suffit d'ouvrir un navigateur, de saisir l'adresse IP de mon NAS, ainsi que le port 5001 utilisé par DSM, pour constater que je parviens bien à me connecter à mon NAS ! L'accès ZTNA fonctionne parfaitement !
À tout moment, vous pouvez déconnecter l'accès ZTNA, vu comme un "VPN" par Android, en appuyant sur le bouton "Disconnect".
Du côté de l'interface Twingate, nous pouvons également assurer un suivi des appareils. Ici, nous pouvons voir que mon smartphone Android a été vérifié et que Twingate a contrôlé plusieurs points de configuration : état de l'antivirus, état du verrouillage de l'écran, état du chiffrement du stockage local, etc.
VI. Conclusion
Que ce soit pour accéder à son "Home Lab" hébergé à son domicile ou simplement à son NAS à distance, Twingate est une solution très intéressante que nous pouvons gratuitement utiliser à titre personnel, car ses limites sont confortables pour cet usage. De plus, elle pourra tout à fait convenir pour un environnement professionnel avec peu de ressources et elle devrait rendre bien des services.
Elle présente l'avantage de ne pas exposer votre NAS directement sur Internet parce que le relais est effectué par l'infrastructure de Twingate et il est protégé par le ZTNA. En effet, je tiens à préciser que je n'ai pas configuré la moindre ouverture de ports (sur le NAT) pour mettre en œuvre cette solution.
En complément de ce tutoriel, vous pouvez utiliser la documentation officielle :