DNS Dynamique avec cloudflare et NGINX reverse proxy

DNS Dynamique avec cloudflare et NGINX reverse proxy

Cloudflare est un CDN composé de centaines de nodes autour du monde qui permet de protéger votre site web contre des attaques internet

  • Injection SQL
  • DOS
  • DDOS,
  • XSS,
  • etc

Cloudflare offre aussi un service de caching donc il visite votre site régulièrement et en garde une copie sur leur serveurs pour offrir une version de votre site le plus près possible de vos visiteurs et ce, partout autour du monde. Ce qui augmente drastiquement la vitesse de votre site.

Cloudflare offre certains de leur service gratuitement. Il permet, entres autres, de vous offrir un certificat SSL pour tous les domaines qu'il a proxifier à partir des certificats Let's encrypt.

Ce dont vous avez besoin

  • Un nom de domaine
  • Un compte cloudflare
  • Un serveur NGINX qui fera office de reverse proxy
  • Un serveur WEB

Il existe plusieurs registraire pour les noms de domaines.

Une fois votre nom de domaine en poche, vous devez vous créer un compte sur cloudflare.com. Ensuite, il vous demande d'ajouter votre site (votre nom de domaine) puis vous choississez le plan gratuit.

Cloudflare va ensuite scanner votre nom de domaine et vous demandera de remplacer les nameservers sur votre domaine par les siens.

Par la suite, vous vous authentifier sur le portail de votre registraire de domaine et vous changez les nameservers par défaut par ceux que cloudflare.

À partir de maintenant, cloudflare est responsable de router le traffic vers votre serveur.


Configuration de vos DNS Records

Premièrement, vous devez configurer un A Records qui pointera sur un sous-domaine de votre adresse publique

Vous devez donc sélectionner Add record

Ensuite vous ajoutez les informations suivantes:

  • Type: A
  • Name: home (vous pouvez prendre ce que vous voulez, ça n'a pas d'importance)
  • IPV4: Si vous connaissez votre IP publique vous pouvez l'ajouter dès maintenant
  • TTL: Auto

CNAME

Prochaine étape: Créer un CNAME

Un CNAME est un record qui permet de spécifier un alias pour un autre domaine.

Exemple: Un A record pour patate.com et un CNAME pour www.patate.com qui pointe vers patate.com

Donc, cliquer une autre fois sur Add record

Mais cette fois, le type sera CNAME et le target sera home.<nom de domaine>


DDClient

Pour mettre à jour votre ip publique sur cloudflare vous pouvez utiliser ddclient. La documentation pour ddclient pour faire l'installation est ici

Voici un exemple de fichier de config ddclient.conf

daemon=600
pid=/var/run/ddclient.pid
use=web web=checkip.dynu.com
web-skip='IP Address'
verbose=yes
protocol=cloudflare
zone=<votre domaine.tld>

login=<cloudflare login>
password=<global api key>
syslog=yes
home.<votre domain.tld>

Si tout fonctionne, vous devriez voir ce message dans votre syslog

SUCCESS: home.domain.tld -- Updated Successfully to x.x.x.x


NGINX

Jusqu'à maintenant vous avez:

  • Un nom de domaine
  • Un compte sur cloudflare
  • Un processus qui met votre ip publique à jour sur cloudflare

La prochaine étape est de configurer le reverse proxy

Un reverse proxy est un serveur proxy entre le firewall et les backend servers qui redirige les requêtes vers le bon serveur backend.

Une fois NGINX installé vous devez créer un fichier sous /etc/nginx/sites-available/proxy_config.conf

Dans le haut du fichier vous ajoutez:

add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options nosniff;

Ensuite, vous entrez les informations qui indique à NGINX quoi et où rediriger la requête.

server {
listen 443 ssl;
server_name blog.guillaumebriere.me guillaumebriere.me;
location / {
proxy_set_header HOST $host;
proxy_pass
<url interne de votre site>;
}
}

Ensuite, il ne reste qu'à repartir NGINX

sudo service restart nginx