Sécuriser WordPress avec Nginx : bloquer .git et les backups UpdraftPlus

Quand on héberge un site WordPress sur Nginx, il faut éviter d’exposer certains fichiers sensibles publiquement.

Deux problèmes fréquents :

  • le dossier .git visible depuis le navigateur ;
  • les backups UpdraftPlus accessibles dans /wp-content/updraft/.

Ces deux cas peuvent être dangereux.

Pourquoi bloquer le dossier .git ?

Si le dossier .git est présent dans le dossier public du site, par exemple :

« `text
/var/www/seo500france.com/.git

alors un visiteur peut parfois accéder à des URLs comme :

https://www.seo500france.com/.git/HEAD https://www.seo500france.com/.git/config

Si ces URLs répondent en 200, le dossier Git est exposé.

Un attaquant peut alors essayer de reconstruire le dépôt Git, lire du code source, retrouver d’anciens fichiers supprimés, ou découvrir des informations sensibles oubliées dans l’historique.

Pourquoi bloquer UpdraftPlus ?

UpdraftPlus stocke souvent ses fichiers dans :

/wp-content/updraft/

On peut donc tester :

https://www.seo500france.com/wp-content/updraft

Si cette URL répond en 200, le dossier est accessible publiquement.

C’est risqué, car des fichiers de sauvegarde peuvent contenir :

  • la base de données ;
  • les fichiers WordPress ;
  • les plugins ;
  • les thèmes ;
  • parfois des informations sensibles.

Solution : créer un snippet Nginx réutilisable

Sur le serveur, créer ce fichier :

sudo nano /etc/nginx/snippets/wp-security.conf

Ajouter ce contenu :

location ^~ /wp-content/updraft/ {
    deny all;
    return 403;
}

location ~ /\.(?!well-known/) {
    deny all;
}

location ~* \.(sql|sqlite|db|bak|old|orig|save|swp|tar|tgz|gz|zip|7z|rar)$ {
    deny all;
    return 403;
}

Ce snippet fait trois choses :

  • il bloque /wp-content/updraft/ ;
  • il bloque les fichiers cachés comme .git, .env, .svn ;
  • il bloque les fichiers de sauvegarde comme .sql, .zip, .gz, .bak.

Ajouter la règle dans le vhost Nginx

Ouvrir la configuration du site :

sudo nano /etc/nginx/sites-available/seo500france.com.conf

Dans le bloc server principal, celui qui contient le root, ajouter :

include snippets/wp-security.conf;

Exemple :

server { listen 443 ssl; server_name www.seo500france.com; root /var/www/seo500france.com; index index.php index.html; include snippets/wp-security.conf; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.4-fpm.sock; } }

Attention : il faut mettre l’include dans le bloc qui sert vraiment le site, pas seulement dans un bloc de redirection.

Tester Nginx

Après modification :

sudo nginx -t

Si tout est OK :

sudo systemctl reload nginx

Vérifier que c’est bien bloqué

Tester avec curl :

curl -I https://www.seo500france.com/.git/HEAD curl -I https://www.seo500france.com/.git/config curl -I https://www.seo500france.com/wp-content/updraft/

Le résultat attendu est :

403 Forbidden

ou :

404 Not Found

Mais il ne faut jamais obtenir :

200 OK

Important : supprimer aussi le dossier .git

La règle Nginx bloque l’accès depuis le web, mais le mieux reste de ne pas laisser .git dans le dossier public.

Si le dossier existe :

ls -la /var/www/seo500france.com/.git

Le supprimer :

sudo rm -rf /var/www/seo500france.com/.git

Ou le déplacer hors du dossier public.

Que faire si le site était déjà exposé ?

Si .git ou UpdraftPlus étaient accessibles publiquement, il faut considérer que certaines données ont pu être lues.

À faire :

  • changer le mot de passe de la base de données ;
  • régénérer les clés et salts WordPress ;
  • changer les mots de passe FTP/SFTP/SSH concernés ;
  • révoquer les clés API présentes dans le code ;
  • vérifier les fichiers suspects dans WordPress ;
  • nettoyer les backups anciens dans /wp-content/updraft/.

Résumé

Pour sécuriser un site WordPress sous Nginx :

  1. Créer /etc/nginx/snippets/wp-security.conf.
  2. Ajouter include snippets/wp-security.conf; dans le bon bloc server.
  3. Tester avec sudo nginx -t.
  4. Recharger Nginx.
  5. Vérifier que .git et /wp-content/updraft/ répondent en 403 ou 404.
  6. Supprimer .git du dossier public.

Cette petite règle est simple, réutilisable, et elle évite une grosse fuite de données.

mai 1, 2026 alex