Ajouter un logfile au panel d'administration
Mordred
Member
dans Modifications
B'jour à tous,
Continuant de m'amuser avec PluXml, j'ai ajouté un petit fichier contenant les logs d'accès au panel d'administration, si vous aussi vous êtes paranoïaque (Comme moi, quoi), j'expliquerais ici la mise en place de ce log.
Ciao à tous.
Continuant de m'amuser avec PluXml, j'ai ajouté un petit fichier contenant les logs d'accès au panel d'administration, si vous aussi vous êtes paranoïaque (Comme moi, quoi), j'expliquerais ici la mise en place de ce log.
Dans cet article, j'expliquerais la mise en place d'un fichier contenant les logs de certaines actions :
1 : Tentative de connexion au panel d'administration
2 : Connexion au panel d'administration
3 : Déconnexion du panel d'administration
De cette manière, vous saurez exactement ce qu'il se passe lorsque vous n'êtes pas là. Et ça, c'est bien.
Etape 1 : Modification du auth.php (base)
Nous allons commencer par ajouter deux fonctions au fichier /pluxml/core/admin/auth.php, fonctions qui nous seront utiles pour ajouter des entrées à notre log.
Commencez par sauvegarder votre fichier auth.php (Juste au cas où !), puis connectez vous à votre FTP contenant votre dossier pluxml avec votre client FTP préféré, parcourez les dossiers /pluxml/core/admin/ et téléchargez le fichier auth.php, puis enfin ouvrez le avec votre éditeur de texte favoris.
Nous allons ajouter deux fonctions PHP au fichier auth.php ainsi que 3 variables que nous utiliserons plus tard, les voici :
/************************************************************************************************** ** Modification permettant la mise en log des visiteurs ayant essayés d'allez sur le panel admin * ** Je recommande de mettre ce code au début du fichier /pluxml/core/admin/auth.php * **************************************************************************************************/ // Fonction ajoutant une entrée au logfile : $str : La chaine, $action : L'action (Essai connexion, disconnect, connection...) function addInLogFile($str, $action) { if(!is_dir("logs")) { mkdir("logs", 0764); } $dh = fopen("logs/logs.php","a"); fputs($dh, $str."$action<br /><br />"); fclose($dh); } // Fonction retournant l'hostname de l'adresse IP function getHostname($ip) { $ptr = implode(".",array_reverse(explode(".",$ip))).".in-addr.arpa"; $host = dns_get_record($ptr); return $host; } // Et enfin on note quelques informations de l'utilisateur $ip = htmlspecialchars($_SERVER['REMOTE_ADDR']); // Oui, je suis paranoïaque $usr = htmlspecialchars($_SERVER['HTTP_USER_AGENT']); $h = print_r(getHostname($ip), true); /************************************************************************************************** ** Fin des modifications * **************************************************************************************************/
Je vous recommande de les ajouter au début du fichier auth.php, juste après ceci :
<?php /** * Page d'authentification * * @package PLX * @author Stephane F et Florent MONTHEL **/
Etape 2 : Modification du fichier auth.php (Ajouts aux log)
Nous allons ensuite ajouter le code d'ajout au log :
1) Tentative de connexion :
Après les lignes suivantes (130 et 131 dans Pluxml 5.1.6) :
else { $msg = L_ERR_WRONG_PASSWORD;
Ajoutez ceci :
// Ajoute les essais de connexions erronés au logfile $l = htmlspecialchars($_POST['login']); $pwd = htmlspecialchars($_POST['password']); addInLogFile("<br>".date("d-m-Y")." @ ".date("H:i")." ".$ip." <br> ".$usr."<br>".$h."<br />","Login failed : $l / $pwd ");
2) Connexion réussie au panel d'administration :
Après la ligne suivante (122 dans Pluxml 5.1.6) :if($connected) {
Ajoutez ceci :
// Modification ajoutant les connexions au log $_SESSION['isConnected'] = 1; addInLogFile("<br>".date("d-m-Y")." @ ".date("H:i")." ".$ip." <br> ".$usr."<br>".$h."<br />","Login successfull");
3) Déconnexion du panel d'administration :
Après la ligne suivante (78 dans Pluxml 5.1.6) :
if(!empty($_GET['d']) AND $_GET['d']==1) {
Ajoutez ceci :
// Modification ajoutant au logfile les deconnexions du panel admin addInLogFile("<br />".date("d-m-Y")." @ ".date("H:i")." ".$ip." <br /> ".$usr."<br />".$h."<br />","Admin disconnect");
Et bien entendu, réuploadez le fichier auth.php, en écrasant l'ancien.
Désormais, lorsque quelqu'un essaiera de se connecter à votre panel d'administration, lorsque quelqu'un se connectera et lorsque quelqu'un se déconnectera de votre panel d'administration, ceci sera notifié dans le fichier /pluxml/core/admin/logs/logs.php
Sécuriser le fichier logs.php
La dernière étape (Très importante) sera de sécuriser le fichier logs/logs.php, afin que tout le monde ne puisse pas y accéder. Il vous faudra être connecté au panel d'administration Pluxml pour pouvoir y accéder.
Nous allons commencer par créer le fichier logs/logs.php : Vous pouvez sois le créer manuellement, ou vous pouvez simplement vous déconnecter & reconnecter à votre panel d'administration Pluxml : Celui-ci sera créer automatiquement.
Téléchargez ensuite le fichier logs.php, ouvrez le avec votre éditeur de texte, puis ajoutez ceci à la toute première ligne :
<?php session_start(); if(!isset($_SESSION['isConnected'])) { header('Location:http://perdu.com'); exit(); } ?>
Toute personne essayant d'accéder au fichier logs.php sans être connecté sera redirigé, et ne pourra donc pas y accéder. Réuploadez le fichier logs.php en écrasant l'ancien, et voilà, le tour est joué.
Ciao à tous.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Et sous la forme d'un plugin, n'est pas faisable ?
Tu disposes de plusieurs hook :
- AdminAuthPrepend,
- AdminAuthEndHead,
- AdminAuthTop,
- AdminAuth,
- AdminAuthEndBody
qui permettent d'éviter la modification des fichiers core directement tout en permettant l'ajout de telles fonctionnalités.
EDIT : aussitôt dit, aussitôt fait, voici le plugin
J'avais pensé à faire ça sous la forme de plugin intégré à PluXml, seulement je savais pas trop quelle classe utiliser, etc ... D'ailleurs il faudrait que je m'y mette.
Merci à toi pour avoir inclus ceci sous forme de plugin, ça m'arrangera moi aussi (J'étais réticent à chaque update de PluXml, vu que j'utilise une version un peu personnalisée ...)