Modifier le nombre d'essais maximum de connexions au panel admin

MordredMordred Member
novembre 2011 modifié dans Modifications
Salut !

Ceci est mon premier message posté sur ce forum, je suis un utilisateur de PluXml depuis quelques années désormais, et je ne peux que vous féliciter pour votre travail, ça fait plaisir de voir des CMS de blog léger, rapide et simple.
Désormais j'essaierais donc de donner mes modestes contributions ! (Je n'ai pas pensé à regarder si un topic similaire avait déjà été posté, si c'est le cas je m'en excuse d'avance !)
________________________________________

Comment bloquer le nombre d'essais de connexion au panel admin à un nombre précis d'essais ? Cela peut avoir plusieurs intérêts, éviter que quelqu'un trouve par hasard votre mot de passe en effectuant beaucoup d'essais, et cela empêchera également les scripts de brute force basé sur des dictionnaires d'attaquer votre formulaire de connexion. Un peu plus de sécurité donc, c'est toujours utile :) !

Nous allons commencer par éditer le fichier auth.php, situé dans : /core/admin/, téléchargez ce fichier via un client FTP, enregistrez le puis ouvrez-le avec un éditeur de texte.

La partie de code nous intéressant est située aux lignes 60 - 70.
Nous allons déclarer une variable de session, et l'incrémenter à chaque fois qu'un nouvel essai de connexion sera tenté. Si le nombre de connexion est supérieur à n, on arrêtera le script.

Ajoutez après :
if(!empty($_POST['login']) AND !empty($_POST['password'])) {
Le code suivant :
/* Modification anti cracking formulaire admin */
if(!isset($_SESSION['maxtry'])) $_SESSION['maxtry'] = 1; // Si la sessvar maxtry existe pas on la met à 1 dès qu'une tentative est faite
else $_SESSION['maxtry']++; // Si elle existe, on l'incrémente
/***********************************************/
Ensuite, ajoutez ceci après la ligne 59, après la condition suivante :
if(!empty($_GET['d']) AND $_GET['d']==1) {
// Reste du code Pluxml volontairement supprimé
}
/* Modification anti cracking formulaire admin */
if($_SESSION['maxtry'] >= 3) exit();
/***********************************************/
Il vous suffit ensuite de ré-uploader le fichier auth.php via votre client FTP.

Et voilà, désormais le script d'administration s'arrêtera purement et simplement au bout de n essais, paramétrez la condition maxtry >= 3 avec votre chiffre désiré.

Si vous êtes malin, vous me direz qu'en désactivant les cookies, il est possible de contourner cela, sauf que si les cookies sont désactivés, j'ai remarqué que PluXml refuse d'executer la page d'administration, il n'y a donc aucun soucis de ce côté là.

Have fun :) ! (Le lien complet de l'article) Petite ombre : Il suffit de vider ses sessions pour pouvoir recommencer, mais désormais avec le nombre d'ip dynamique qu'il y a, même en bannissant une adresse IP, il suffit de redémarrer son routeur, ou voir de passer par un proxy, pour contourner cela :s Il n'y a donc malheureusement aucune méthode de bannissement fiable à 100%.

Mordred, Pluxmlement votre.

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    Tout d'abord bienvenue sur le forum
    Merci pour cette modification et les explications très claires sur le fonctionnement et sa mise en place

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bonjour Mordred,

    Très intéressant. :)
    Pour ma part, comme sur ma machine GNU/Linux j'utilise le HIPS fail2ban, j'ai ajouté une ligne dans le module core/admin/auth.php pour journaliser les tentatives dans les logs PHP. C'est vers la fin des lignes de codes "#Authentification", soit après la ligne "$error = 'error';" :
    error_log("Host:".$_SERVER['REMOTE_ADDR']."-PluXml: Login failed");
    
    En revanche, sur d'autres OS, je ne connaît pas les solutions équivalentes.
  • Très bonne idée. Je viens d'en faire un plugin.
Connectez-vous ou Inscrivez-vous pour répondre.