Sécurité

URL admin randomisée

L'une des premières cibles des outils de scan automatique est l'URL d'administration d'un CMS. WordPress expose /wp-admin/, Joomla /administrator/, TYPO3 /typo3/. Ces chemins prévisibles permettent à des bots de tester des listes de mots de passe sans même avoir identifié le CMS utilisé. QuietCMS élimine ce vecteur d'attaque à la racine en générant une URL admin entièrement aléatoire au moment de l'installation.

Génération à l'installation

Lors de la procédure d'installation, deux valeurs aléatoires sont générées :

  • ADMIN_SLUG : un slug alphanumérique de 12 caractères (ex. k7m2pxrq9nwt) qui forme le chemin public de l'administration.
  • ADMIN_LOGIN_FILE : un nom de fichier aléatoire de 10 caractères pour la page de connexion (ex. c4hj8zve2a.php).

Ces deux valeurs sont stockées comme constantes dans config.php :

define('ADMIN_SLUG', 'k7m2pxrq9nwt');
define('ADMIN_LOGIN_FILE', 'c4hj8zve2a.php');

Configuration .htaccess

Le fichier .htaccess racine inclut une règle qui route l'URL randomisée vers le dossier admin/, tout en bloquant l'accès direct au chemin /admin/ :

# Route l'URL admin aléatoire vers le dossier admin/
RewriteRule ^k7m2pxrq9nwt(/.*)?$ admin/index.php [L,QSA]

# Bloque l'accès direct au dossier /admin/
RewriteRule ^admin(/.*)?$ - [F,L]

En pratique, ADMIN_SLUG est injecté dynamiquement dans le .htaccess lors de l'installation. Si le slug est modifié ultérieurement dans config.php, le .htaccess doit être mis à jour en conséquence (une fonction utilitaire est fournie à cet effet dans l'interface d'administration).

Ce qui n'est jamais exposé

Le slug admin ne figure dans aucun endroit indexable ou public :

  • Absent de robots.txt
  • Absent du sitemap.xml
  • Absent du code source HTML des pages publiques
  • Absent des en-têtes HTTP de réponse

Bénéfice sécurité concret

Cette mesure élimine efficacement les attaques par force brute menées par des scanners automatiques (Shodan, Nuclei, scripts personnalisés) qui ciblent les chemins CMS connus. Un attaquant qui ne connaît pas le slug doit d'abord l'identifier — ce qui nécessite soit un accès au serveur, soit une fuite d'information.

Il s'agit bien de sécurité par l'obscurité : une couche défensive supplémentaire, pas un substitut à une authentification robuste. QuietCMS combine cette obscurité avec des mots de passe hachés en bcrypt, des tokens CSRF et un rate limiting par IP — chaque couche renforçant les autres.

En cas de compromission du slug

Si le slug venait à être divulgué (capture de trafic réseau non chiffré, fuite de config.php), la procédure de remédiation est simple :

  1. Modifier ADMIN_SLUG dans config.php.
  2. Mettre à jour la règle RewriteRule correspondante dans .htaccess.
  3. Vérifier les logs d'accès pour détecter d'éventuelles connexions suspectes.

La nature flat-file de QuietCMS facilite ce type de rotation : aucune table de base de données à modifier, aucune migration à exécuter.

Articles similaires