CDN : optimisation et sécurité WordPress

malekalmorte

Création :

18 février 2019

Modification :

Les CDN (content delivery network) pour réseau de diffusion de contenu sont des réseaux de serveurs de part le monde afin de réduire les temps d’accès des sites WEB.
Le but est de proposer des serveurs le plus proche possible des internautes.

Initialement réservé aux sites internet importants comme Facebook, Twitter etc.
Des offres de CDN ont vu le jour notamment pour viser les sites internet en WordPress.
Le but est d’accélérer les temps de réponse en déposant certains contenus statiques comme les images, Javascript, le CSS, etc.
Enfin certains CDN peuvent aussi apporter un gain en sécurité grâce au WAF (Web Application Firewall).

Voici quelques explications autour de ces CDN dans l’optique d’accélérer et optimiser WordPress.

CDN : optimisation et sécurité WordPress

Pourquoi utiliser les CDN ?

Tout simplement car Google et les moteurs en général prennent de plus en plus en compte la vitesse de réponse et temps de chargement des sites WEB dans le référencement.
Plus votre site internet est rapide mieux conçu, mieux, il sera placé dans les résultats des moteurs de recherche.
Cela joue donc considérablement sur le trafic final du site.

Dans un second temps, si vous utilisez les publicités sur votre site, une meilleur vitesse peut engendrer de meilleurs revenus.

Les CDN permettent d’améliorer sensiblement la vitesse de votre site internet.
Première parce qu’ils sont au plus près des internautes.
Toutefois, cela est utile que pour les sites internationaux et ces derniers devront choisir un CDN avec des datacenters bien réparties dans le monde.

La réparation des serveurs du CDN Cloudflare dans le monde

En second lieu, cela permet de décharger votre serveur WEB puisqu’une partie du trafic sera géré par le CDN.

Schéma d'une infrastructure avec et sans CDN (source KeyCDN)

Enfin certains CDN jouent aussi la carte de la sécurité en proposant des offres de WAF.
Il s’agit de Firewall applicatif capables de bloquer des requêtes HTTP en amont de votre serveur WEB.
On peut aussi utiliser les CDN pour protéger un site WEB contre les attaques par déni de service.

Comment les CDN fonctionnent

Les CDN ont des serveurs réparties dans différents datacenter de part le monde.
Lorsque qu’un internaute se connecte à votre site, il sera automatiquement redirigé vers le serveur du CDN le plus proche.

D’un point de vue technique, le CDN fonctionne comme un proxy-reverse.
Ce dernier se place en amont de votre site WEB et met en cache certains contenus statiques ou le site en entier.
Ainsi, lorsque l’internaute charge ce contenu, il est pris sur le CDN et non sur votre serveur WEB.
Cela permet de décharger votre serveur WEB.
En utilisant un CDN vous pouvez donc prendre des serveurs dédiés ou mutualisés de moindre importance tout en étant moins pénaliser par les pics d’activité.

On distingue deux fonctionnements de CDN pour WordPress.

CDN sur le contenu statique

Cette première utilisation vise à faire passer que le contenu statique comme les images, Javascript et autres sur le CDN.
Pour se faire, on prend une offre de CDN (voir plus bas) puis on utilise une extension pour réécrire les requêtes liées aux contenus statique.

Celle-ci peut se faire par une extension dédiée comme CDN Enabler ou une extension de cache capable de gérer les CDN.
La plupart des extensions de cache le fond mais sont dédiés à des CDN en particulier.

Déclaration CDN dans WP-Rocket
Déclarer un CDN dans CDN Enabler

Full CDN (via DNS)

La deuxième méthode est une redirection totale du trafic WEB via le CDN.
Pour se faire on change les entrées DNS vers les adresses du CDN.
Ce dernier vous fournit ces adresses lors de la souscription.

Il en résulte que lorsqu’un internaute se connecte à votre site WEB, il va se connecter au CDN.
Cela apporte plusieurs plusieurs gains intéressants :

  • La vitesse de réponse est en général meilleur
  • Vous bénéficiez du cache du CDN
  • Si ce dernier propose des fonctionnalités de WAF : les attaques peuvent bloquer. De même pour les attaques DDoS.

Interface de gestion des CDN

Les CDN offrent des interfaces de gestion (DashBoard) avec les informations à déclarer mais aussi un suivi et logs des connexions (logs, graphiques, etc).

Ci-dessous l’interface de StackPath avec quelques statistiques comme la bande passante utilisée, la géolocalisation et le cache hit.

Statistiques sur les requêtes et bande passante
La géolocalisation des connexions sur les Datacenter
Les informations de caches depuis l'interface de gestion
Le Dashboard de MaxCDN

WAF et Anti-DDoS

Le WAF est donc un Firewall applicatif au niveau HTTP.
Selon le contenu des requêtes HTTP, le firewall peut interdire l’accès à une ressources et retourner une erreur 403.

La plupart des CDN offrent des fonctions de WAF.
Voici par exemple ce que propose Sucuri :

  • Liste noire et blanche d’adresse IP
  • Bloquer l’accès à une page WEB, à un User-Agent, Référant ou Cookies.
  • Un filtrage de géo-localisation est aussi possible
  • Protéger l’accès à une page WEB (mot de passe, Google Authentification, Captcha).

Lorsqu’une opération interdite ou attaque est détectée, le Firewall (WAF) bloque l’accès.

Le WAF Sucuri bloque l'accès à la page d'admin de WordPress
 Le WAF Sucuri bloque une attaque RFI

Bien entendu, Sucuri offre des informations sur les accès ou blocage effectués par le Firewall.

Les logs de blocages Sucuri

A titre informatif, il est possible de monter son propre WAF notamment avec l’extension modsecurity disponible pour Apache ou Nginx.
L’article suivant présente l’extension : Présentation modsecurity pour Apache
Le problème est que cela alourdit le serveur WEB et peut entraîner des hausses du temps de réponse.

Enfin notez que Nginx est capable de bloquer l’accès à des ressources sur la geoip sans modsecurity.

Plus de détails sur notre article :

Par exemple le web Firewall de Cloudflare :

Quelques offres de CDN

Il existe beaucoup d’offres de CDN dont certaines sont très axés WordPress.
Souvent des extensions pour utiliser ces derniers sont créés ou compatibles avec les extensions de cache.

Voici une liste des CDN plutôt dédiés WordPress.
Les prix d’un CDN pour WordPress sont d’environ 10 à 20/25 euros par mois.
Certains ont des offres gratuites limitées à un certain volume de données mensuel.

  • CDN77 (Offre gratuite d’essai)
  • CloudFlare (Réputé pour sa protection DDoS)
  • Incapsula (plutôt accès Anti-DDoS)
  • Photon by Jetpack
  • Sucuri (Plutôt accès sécurité pour WordPress)
  • KeyCDN
  • MaxCDN
  • MetaCDN (Offre gratuite d’essai)
  • Rackspace
  • eyCDN (Offre gratuite d’essai)
  • StackPath (Offre gratuite d’essai)

Les CDN qui suivent proposent la mise en ligne de bibliothèques comme Jqery par exemple.

  • Cdnjs
  • jsDeliver
  • Bootstrap CDN

Enfin les CDN plus généralistes.

  • AWS Cloudfront
  • Google Cloud CDN
  • Microsoft Azure CDN
  • Cloudinary

Exemple d’une architecture avec CDN

Le site malekal.com a été passé sur un CDN à partir de février 2019.
Voici un exemple avec le CDN Sucuri :

ou encore avec Cloudflare :

Conclusion

Si votre site WordPress commence à prendre de l’importance alors vous devez vous poser la question de l’utilisation d’un CDN.
Bien entendu, il faut de bonnes pratiques pour vraiment rendre votre site le plus rapide possible.
La page suivante peut vous y aider :



Le site malekal.com a été basculé sur Sucuri récemment.
Pour plus de détails sur l’architecture et les impacts, lire l’article : Optimisation WordPress : WP-Rocket + Sucuri

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.