Utilisation des tunnels TCP avec Cloudflare : une solution sécurisée pour la gestion des connexions distantes
Le recours aux tunnels TCP avec Cloudflare Tunnel s’avère être une solution à la fois efficace et sécurisée pour gérer les connexions à des services non basés sur HTTP(S), tels que SSH, RDP et des bases de données comme Postgres. Cette technologie permet aux administrateurs systèmes et développeurs d’accéder à leurs infrastructures depuis n’importe où dans le monde via un canal chiffré, évitant ainsi d’exposer directement leurs services sur Internet.
Pourquoi utiliser des tunnels TCP avec Cloudflare ?
L’exposition de services tels que les bases de données à Internet présente des risques de sécurité considérables. Les méthodes traditionnelles, comme les VPN ou l’utilisation d’adresses IP fixes, peuvent mener à des configurations complexes et à des vulnérabilités potentielles. Avec Cloudflare Tunnel, les connexions sont gérées via le réseau de Cloudflare, offrant ainsi plusieurs avantages clés :
- Sécurité accrue : Aucune nécessité d’ouvrir des ports ni d’exposer des services directement sur le réseau public.
- Accès flexible : Connexion possible depuis n’importe quel endroit sans avoir besoin d’un VPN.
- Intégration avec Cloudflare Access : Possibilité de contrôler et de restreindre l’accès grâce à l’authentification multifacteur.
- Simplicité de configuration : Utilisation de commandes simples pour établir et maintenir la connexion.
Configuration d’un tunnel TCP avec Cloudflare
Pour configurer un tunnel TCP avec Cloudflare, il est nécessaire d’installer et d’authentifier cloudflared
à la fois sur le serveur et sur les clients accédant au service.
1. Installation de cloudflared
La première étape consiste à mettre à jour le système et à installer cloudflared
:
sudo apt-get update
sudo apt-get -y install cloudflared
2. Authentification et création du tunnel
Pour permettre au serveur d’initier la connexion avec Cloudflare, cloudflared
doit être authentifié :
cloudflared tunnel login
En exécutant cette commande, un lien s’ouvrira dans le navigateur où il faudra se connecter à Cloudflare et autoriser l’accès.
Ensuite, il faut créer le tunnel avec un identifiant unique :
cloudflared tunnel create postgres
Cette commande générera un UUID pour identifier le tunnel dans la configuration de Cloudflare.
3. Configuration du DNS
Pour assurer que le trafic est bien acheminé, un enregistrement DNS doit être configuré dans Cloudflare :
cloudflared tunnel route dns <tunnel_uuid> database.<your_domain>.com
Cela crée un CNAME qui dirige database.<your_domain>.com
vers le tunnel Cloudflare.
4. Configuration du tunnel sur le serveur
Il est nécessaire de configurer cloudflared
dans le fichier de configuration YAML situé à ~/.cloudflared/config.yaml
:
tunnel: <tunnel_uuid>
credentials-file: <path_to_tunnel_uuid>.json
ingress:
- hostname: database.<your_domain>.com
service: tcp://<private_internal_ip>:<port>
- service: http_status:404
Ce fichier définit le tunnel et la manière dont le trafic sera redirigé vers la base de données ou le service souhaité.
5. Démarrage du tunnel en tant que service
Pour s’assurer que le tunnel démarre automatiquement au démarrage du système, le service doit être installé sur Linux :
sudo cloudflared --config ~/.cloudflared/config.yml service install
Des ajustements peuvent être faits dans le fichier de configuration du service situé à /etc/systemd/system/cloudflared.service
. Pour vérifier que le service est actif, il suffit d’exécuter :
systemctl status cloudflared
6. Connexion depuis le client
Le client doit aussi avoir cloudflared
installé et authentifié. Pour établir la connexion avec la base de données, il s’exécute :
cloudflared access tcp --hostname database.<your_domain>.com --url 127.0.0.1:<local_port_forward>
Cette commande redirige le trafic du port local (par exemple, 5432
pour Postgres) vers le serveur distant via le tunnel Cloudflare.
Dès lors, la connexion à la base de données se fait comme si elle était hébergée localement :
psql -h 127.0.0.1 -p 5432 -U utilisateur -d basedatos
Conclusion
L’implémentation de tunnels TCP avec Cloudflare Tunnel offre une alternative efficace et sécurisée pour la gestion des connexions distantes à des services sensibles. En éliminant la nécessité d’exposer des ports et en réduisant la dépendance à des VPN traditionnels, cette solution facilite l’administration tout en augmentant la sécurité de l’infrastructure informatique.
De plus, son intégration avec Cloudflare Access permet d’établir des règles d’accès avancées, améliorant ainsi le contrôle sur qui accède aux ressources internes. Pour les organisations et les administrateurs systèmes cherchant à optimiser leur sécurité sans compromettre l’accessibilité, cette technologie représente une option hautement recommandée.
Source : Ryan Schachte et CloudFlare.