Utilisation des tunnels TCP avec Cloudflare Tunnel : sécurité et accessibilité améliorées

Cloudflare renforce la protection contre les bots IA avec la nouvelle fonction de blocage du « Web Scraping »

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 :

  1. Sécurité accrue : Aucune nécessité d’ouvrir des ports ni d’exposer des services directement sur le réseau public.
  2. Accès flexible : Connexion possible depuis n’importe quel endroit sans avoir besoin d’un VPN.
  3. Intégration avec Cloudflare Access : Possibilité de contrôler et de restreindre l’accès grâce à l’authentification multifacteur.
  4. 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.