Une migration réussie vers le CDN Cloudflare
C'est aujourd'hui la 3ème génération de Dedibox que j'utilise depuis le crash de ma précédente Dedibox cet été pour héberger ce blog personnel.
Cette dernière migration m'a permis de supprimer de nombreux sous-domaines inutiles et de faire le ménage dans une majeure partie de la configuration NGINX du serveur qui devenait de plus en plus complexe à maintenir.
J'ai profité de ce nettoyage pour tester l'offre gratuite de Cloudflare, j'ai ainsi basculé l'ensemble de mes sites Web personnels sur cette solution de CDN gratuite.
Quel est le principe du CDN Cloudflare ?
D'après les derniers chiffres partagés par Cloudflare, 20% du trafic Web passe au travers de leurs serveurs. Ces serveurs assurent une mise en cache des contenus Web, optimisent les temps de téléchargement des ressources et vont jusqu'à la compression des ressources statiques.
Si vous souhaitez comprendre plus en détail l'architecture d'un CDN, je vous invite à découvrir l'excellente vidéo de ByteByteGo récemment diffusée sur Youtube :
Cette solution de CDN va me permettre d'économiser des precieuses ressources physiques sur mon serveur Linux et gagner en scalabilité lors des pics de visites.
Au-delà des économies de ressources et de l'augmentation de la scalabilité, Cloudflare permet de renforcer la sécurité d'accès aux ports de mon serveur et d'optimiser le temps de chargement des pages Web du site pour les visiteurs notament grâce à l'utilisation de HTTP/3 & QUIC.
Cette option est disponible depuis l'onglet "network" et permettra de réduire le temps d'affichage de vos pages Web sur des terminaux avec de plus fortes latences réseau.
Quels sont les autres services connus de Cloudflare ?
En plus de son offre de CDN, vous devez probablement connaitre l'adresse IP 1.1.1.1 qui héberge le serveur DNS public de Cloudflare et qui se présente comme 28% plus rapide que les autres solutions de DNS.
C'est notamment le serveur DNS qu'utilise la solution de filtrage parental Adguard que je vous avais présentée il y a quelques mois.
Enfin, pour les développeurs, Cloudflare fournit aussi une plateforme de mise en cache des scripts Javascript : https://cdnjs.com/
La majorité des librairies telles que JQuery, font-awesome, Angular y sont cachées et compressées pour un téléchargement plus rapide.
Comment est réalisé le chiffrement SSL/TLS ?
Le chiffrement du site est assuré de bout en bout. Cloudflare me fournit un certificat pour les navigateurs, mais aussi un pour mon serveur en backend.
Ces certificats sont gérés par Cloudflare, vous pouvez aussi utiliser vos propres certificats à condition de souscrire à l'offre entreprise.
Comment s'est déroulée la migration vers le CDN Cloudflare ?
La migration s'est faite sans difficulté. Vous devez changer les DNS primaires et secondaires de votre nom de domaine au sein de votre "registrar" vers les serveurs DNS de Cloudflare.
Après quelques minutes, Cloudflare valide que vous êtes bien le propriétaire du domaine et vous propose de configurer les options disponibles.
La seconde étape est de remplacer les certificats SSL de votre serveur par ceux proposés gratuitement par Cloudflare dans l'onglet "SSL/TLS -> Origin Server".
Une fois votre service Web redémarré, vous pouvez passer au mode strict au niveau du profil de sécurité pour éviter toute attaque de type MITM.
Pour tester le bon fonctionnement de la migration, vous pouvez purger le DNS de votre PC / Mac et vérifier que votre site Internet s'affiche toujours dans votre Navigateur. Si une erreur de certificat s'affiche, il est possible que la modification de DNS prenne quelques minutes en fonction des TTL positionnés sur les serveurs intermédiaires. Dans ce cas, vous pouvez toujours forcer le changement de DNS manuellement le temps que la réplication soit réalisée.
Quels sont les points de vigilance au niveau de la configuration du CDN ?
Par défaut, Cloudflare va exploiter les entêtes de mise en cache des ressources qui lui sont transmises. Si ces entêtes HTTP ne sont pas correctes, Cloudflare peut potentiellement mettre en cache des ressources qui ne devraient pas l'être.
Vous devez donc ajouter des règles de bypass du cache sur les URL sur lesquelles vous savez qu'un cache est risqué et inutile. Dans le cadre du CMS Ghost, il est conseillé d'exclure le portail d'administration du cache du CDN au travers d'une règle dédiée.
Enfin, il existe une options payante pour ralentir les latences réseau entre l'infrastructure Cloudflare et vos serveurs. Cette option s'appelle Argo Smart Routing et est facturée environ 5€ du giga octet. Il faut être vigilant quand son activation, si votre site Web échange beaucoup de données, vous pourriez rencontrer quelques soucis au niveau de la facturation du service.
Comment renforcer la sécurité de votre serveur Web après la migration ?
Maintenant que votre serveur Web doit communiquer uniquement avec le CDN, vous pouvez modifier votre firewall pour autoriser uniquement la communication des serveurs Cloudflare avec votre serveur Web.
Pour simplifier cette tâche, il existe un script shell capable de récupérer dynamiquement la liste des serveurs Cloudflare et d'appliquer des règles de filtrage sur le firewall de votre serveur.
Voici un exemple de script développé David Manouchehri par et disponible sur Github :
# Source:
# https://www.cloudflare.com/ips
# https://support.cloudflare.com/hc/en-us/articles/200169166-How-do-I-whitelist-CloudFlare-s-IP-addresses-in-iptables-
for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -I INPUT -p tcp -m multiport --dports http,https -s $i -j ACCEPT; done
for i in `curl https://www.cloudflare.com/ips-v6`; do ip6tables -I INPUT -p tcp -m multiport --dports http,https -s $i -j ACCEPT; done
# Avoid racking up billing/attacks
# WARNING: If you get attacked and CloudFlare drops you, your site(s) will be unreachable.
iptables -A INPUT -p tcp -m multiport --dports http,https -j DROP
ip6tables -A INPUT -p tcp -m multiport --dports http,https -j DROP
En conclusion
Cette migration m'a pris au total deux soirées, j'ai été clairement surpris de la simplicité d'utilisation du service. Je verrai dans un second temps si l'offre PRO est nécessaire pour Geeek.org qui est actuellement le site sur lequel j'ai le plus de visiteurs.
L'utilisation du CDN me permet à priori d'économiser plus de 90% de la bande passante de mon serveur Linux et de le protéger contre des attaques / robots malveillants.
L'inconvénient du CDN concerne son niveau de disponibilité. En cas de crash majeur, l'ensemble des sites qu'il proxifie seront indisponibles sur le Web. Cela peut représenter un potentiel SPOF si celui-ci se fait pirater.
Vous souhaitez discuter CDN ? Je vous invite à passer dire "bonjour" sur le serveur Discord Geeek.
Remarque : Cet article n'est pas sponsorisé et ne possède aucun lien sponsorisé