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