Comment configurer les tunnels Cloudflare sur Ubuntu

Sécurisez Votre Hébergement : Découvrez les Avantages des Tunnels Cloudflare

Comment configurer les tunnels Cloudflare sur Ubuntu
Gracieuseté de Daniel Jerez / Unsplash

Introduction aux tunnels Cloudflare

Dans un post récent, j'ai expliqué que j'utilisais un script pour maintenir à jour l'adresse IP de mes sites web. 

Configurer un “Dynamic Domain Name System” (DDNS)
Comment héberger à domicile un site web, adresses IP dynamiques et la notion de DNS dynamique

Étant donné que mon fournisseur d'accès Internet modifie régulièrement l'adresse IP de mon routeur, j'ai dû utiliser un DDNS tel qu'expliqué ci-dessus. Utiliser un service DDNS permet de lier une adresse IP dynamique à un nom de domaine. Cela permet d'associer un nom de domaine fixe à l'adresse IP changeante du routeur. De plus, le renouvellement de l'adresse IP et sa propagation sur les serveurs de domaine prennent un certain temps, durant lequel les sites sont indisponibles.

Au cours des deux derniers mois, j'ai optimisé l'hébergement de mes sites web en utilisant Cloudflare Tunnels (anciennement Argo Tunnel). Ce service gratuit de Cloudflare crée un lien direct entre votre réseau local et Cloudflare. Cette solution m'a permis de :

  • Retirer mon proxy inverse Nginx de l'accès extérieur
  • Fermer complètement les ports 80 et 443 de mon réseau
  • Augmenter la sécurité en réduisant les vecteurs d'attaque

Désormais, le trafic vers mon site web passe d'abord par Cloudflare, qui sert le contenu via le tunnel configuré. Les utilisateurs n'interagissent plus directement avec mon réseau, Cloudflare agissant comme proxy.

Considérations importantes

Il est crucial de noter que cette configuration implique une grande confiance envers Cloudflare, car ils agissent comme intermédiaires pour tout le trafic web des sites configurés avec ce tunnel. Si cela vous préoccupe, il est recommandé de continuer à utiliser un proxy inverse traditionnel.

Processus de configuration

Ce guide suppose une configuration sur un serveur Ubuntu, bien que Cloudflare fournisse également de la documentation pour Windows et MacOS.

Prérequis

  • Un compte Cloudflare gratuit
  • Un nom de domaine géré par Cloudflare

Installation de Cloudflared

Compte tenu du fait que j'exploite un serveur Proxmox et un conteneur LXC qui héberge Nginx Proxy Manager, j'ai choisi d'installer le tunnel sur ce conteneur.

Commencez par installer la dernière version du package cloudflared :

wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb

dpkg -i cloudflared-linux-amd64.deb

Authentification

Exécutez la commande suivante et suivez les instructions :

cloudflared tunnel login

Please open the following URL and log in with your Cloudflare account:

https://dash.cloudflare.com/argotunnel?aud=&callback=https%3A%2F%2Flogin.cloudflareaccess.org%2FbNkBKept4SfLyOytUHAj2efmwOl1LYFCq1GYwSutRWc%3D

Leave cloudflared running to download the cert automatically.

Vous êtes dirigé vers une URL unique pour authentifier votre compte Cloudflare.

Création du tunnel

Il est maintenant temps de créer votre tunnel à l'aide de la commande :


cloudflared tunnel create nom_du_tunnel

Notez l'UUID généré pour une utilisation ultérieure.

Fichier de configuration  config.yml

Créez un fichier config.yml dans /etc/cloudflared avec le contenu suivant :

tunnel: <UUID_du_tunnel>
credentials-file: /chemin/vers/credentials/<UUID>.json

ingress:
  - hostname: exemple.com
    service: http://10.10.10.123:1234
  - hostname: sous-domaine.exemple.com
    service: http://10.10.10.123:8888
  - service: http_status:404

Le fichier d'informations d'identification du site dans ~/.cloudflared, mais le vôtre peut différer

Création d'enregistrements DNS

Utilisez la commande suivante pour chaque nom d'hôte :

cloudflared tunnel route dns <UUID_ou_NOM_du_tunnel> exemple.com

Démarrage du tunnel

Testez le tunnel avec :

cloudflared tunnel run <UUID_ou_NOM_du_tunnel>

Configuration en tant que service

Pour exécuter cloudflared automatiquement, installez-le en tant que service :

cloudflared --config /chemin/vers/config.yml service install

Conclusion

Les tunnels Cloudflare offrent une solution sécurisée pour l'hébergement de sites web à domicile. Ils permettent de fermer des ports supplémentaires, renforçant ainsi la sécurité de votre réseau. Après plusieurs mois d'utilisation, je n'ai rencontré aucun problème majeur.