traphandler supplémentaire ?

giantgoab
Messages : 235
Enregistré le : 06 avril 2009, 13:57

Re: traphandler supplémentaire ?

Message par giantgoab » 27 avril 2009, 10:07

voila j'enregistre les traps dans mysql,
par contre j'ai eu quelques petits soucis avec ca.

Depuis mon handler en php, toute tentative de connexion à la base se soldait par un beau
Access denied for user 'root'@'localhost' (using password: NO)
alors que je pouvais me connecter en mode console ^^

Donc dans ma grande noobitude j'ai décidé de mettre un mot de passe à root (en l'occurence "toto")
et là, c'est le drame, non seulement la connexion depuis php nefonctionnait touours pas, mais en plus même la console m'envoyait ch*** !

J'ai voulu réinitialiser le mot de passe en me connectant à mysql avec l'option --skip-grant-tables,
mais quoi que je fasse, rien ne fonctionnait ! Même avec un nouveau mot de passe (pourtant dûment crypté avec la fonction password())
il m'était impossible de me connecter.

bon bah comme je travaillais sur une machine virtuelle, ca s'est fini par un "restore older snapshot" datant du 6 avril .... yooupie ! :roll:
j'ai quasiment tout remis en place et le même problème est survenu.

J'ai créé un compte user dans mysql et là php arrive à s'y connecter..... :evil:
(j'ai des envies de meurtre des fois)

Serait-ce une sécurité de mysql (ou de php) qui m'enpêche ca ou bien c'est totalement sans rapport ?
Parce que c'est un truc qui m'était jamais arrivé avant et pourtant l'accès à une bdd en php ca fait une paye que ca me connait...

Au cas ou ca puisse servir à quelqu'un, je colle le code de mon handler ici:

Code : Tout sélectionner

<?PHP

// ###########################################################
//#############################################################
//## ce script PHP récupère les traps via l'entrée standard  ##
//## a condition que le fichier snmptrapd.conf soit          ##
//## configuré de manière appropriée.                        ##
//##                                                         ##
//## Ex: traphandle default /chemin_absolu/traphandler.php   ##
//##                                                         ##
//## Une fois le trap récupéré, ce script va l'analyser et   ##
//## l'enregistrer dans une base de données ainsi que dans   ##
//## un ou plusieurs fichiers de log.                        ##
//##                                                         ##
//#############################################################
//  ########################################################
//    ######### Avril 2009: Jean nicolas FRITZ ##########
//      ###############################################
//        ####### Pour le compte de l'hopital #######
//          ########## de Lunéville (54) ##########
//            ###################################


error_reporting(E_ALL);
system("clear");
/*****************************************************
[][][][][][][][][][][][][][][][][][][][][][][][][][][]
[][][][][][] Paramètres et configurations [][][][][][]
[][][][][][][][][][][][][][][][][][][][][][][][][][][]
******************************************************/

//#################################################
//# Parametrage et connexion à la base de données #
//#################################################

$addr="localhost";
$login="user";
$pass="traps";
$base="traps";

$lien=mysql_connect($addr,$login,$pass) or die(mysql_error());
mysql_select_db($base,$lien);


//#####################################################################
//# déclaration des fichiers de log et fichiers temporaires utilisés. #
//#####################################################################

$all_traps='/reciever/traps_all';
$switchs_traps='/reciever/traps_switch';
$printer_traps='/reciever/traps_printer';
$temp_file='/reciever/temp_trap_file';
$handler_eon='/srv/eyesofnetwork/snmptt/bin/snmptthandler';

//#######################################
//# Déclaration des variables utilisées #
//#######################################

$use_output=$all_traps; //fichier d'écriture des traps généraux
$res_sys=0; //variable de retour de l'appel au handler EON
$string_sys="test"; // chaîne de retour de l'appel au handler EON
$ip_machine=""; // ip récupérée dans le trap
$nom_machine=""; // nom récupéré dans le trap
$evenement=""; // raison du trap
$trap_total=""; // texte total du trap
$trap_port=0; // port concerné
$trap_cible=""; // port relié à la machine concernée
$trap_info[0]=""; // tableau utilisé pour le retour des regexp
$date=date("Y-m-d H:i:s");


//########################################
//# Tests préliminaires sur les fichiers #
//########################################

//###################################
//# Test de l'existence et création #
//###################################

if(!file_exists($all_traps)){ system("echo '' > ".$all_traps);}
if(!file_exists($switchs_traps)){ system("echo '' > ".$switchs_traps);}
if(!file_exists($printer_traps)){ system("echo '' > ".$printer_traps);}
if(!file_exists($temp_file)){ system("echo '' > ".$temp_file);}

//#################################################
//# Tests des droits d'écriture dans les fichiers #
//#################################################

if(!is_writable($all_traps)){
        die("Impossible de continuer, le fichier ".$all_traps. " n'est pas accessible");
}
if(!is_writable($switchs_traps)){
        die("Impossible de continuer, le fichier ".$switchs_traps. " n'est pas accessible");
}
if(!is_writable($printer_traps)){
        die("Impossible de continuer, le fichier ".$printer_traps. " n'est pas accessible");
}
if(!is_writable($temp_file)){
        die("Impossible de continuer, le fichier ".$temp_file. " n'est pas accessible");
}


/***********************************************************
************************************************************
******* Fin des Tests, début du programme principal ********
************************************************************
************************************************************/

//########################
//# Récupération du trap #
//########################

$trap=fread(STDIN,300);
// variable de test
$test=0;

//###############################################
//# Séparation et récupération des informations #
//###############################################

ereg("(.*)UDP:",$trap,$trap_info);
 // :([0-9]{1,6})",$trap,$trap_info);
$nom_machine=str_replace("\n","",$trap_info[1]);

ereg("\[([0-9]{1,3}.[[0-9]{1,3}.[[0-9]{1,3}.[[0-9]{1,3})\]",$trap,$trap_info);
$ip_machine=$trap_info[1];

ereg("\]:([0-9]{1,6})",$trap,$trap_info);
$trap_port=$trap_info[1];

$trap_total=$trap;

//###################################################
//# Détermination du type de trap et enregistrement #
//# dans les fichiers de logs spécifiques           #
//###################################################

if(ereg("port ([A-Z0-9]{1,3}) is Blocked by STP",$trap,$trap_info)){
        // Le trap est au sujet d'un blocage par STP
        $test=1;
        $use_output=$switch_traps;
        $evenement="Blocage par STP";
        $trap_cible=$trap_info[1];

}elseif(ereg("port ([A-Z0-9]{1,3}) Duplex Mismatch.",$trap,$trap_info)){
        // Le trap est envoyé suite au problème de duplex mismatch
        $test=2;
        $use_output=$switch_traps;
        $evenement="Duplex mismatch";
        $trap_cible=$trap_info[1];

}elseif(ereg("port ([A-Z0-9]{1,3}) is now off-line",$trap,$trap_info)){
        // L'extinction de l'equipement dépendant du port en question
        // a provoqué l'envoi du trap
        $test=3;
        $use_output=$switch_traps;
        $evenement="Equipement hors-ligne";
        $trap_cible=$trap_info[1];

}elseif(ereg("port ([A-Z0-9]{1,3}) is now on-line",$trap,$trap_info)){
        // Le démarage de l'equipement dépendant du port en question
        // a provoqué l'envoi du trap
        $test=4;
        $use_output=$switch_traps;
        $evenement="Equipement en-ligne";
        $trap_cible=$trap_info[1];

}else{
        //Le trap a une autre cause => on le rebalance sur le traphandler
        //défini par EON
        $test=5;

        // Pour cela on écrit le trap dans un fichier
        // avant de le repasse au handler via son entrée standard

        $tmpfd=fopen($temp_file,"w");
        fwrite($tmpfd,$trap);
        $string_sys=system($handler_eon.' < '.$temp_file,$res_sys);
        if($string_sys=="FALSE"){
                die("Erreur lors de l'appel au traphandler de EON:\n".$string_sys);
        }
        $evenement="trap générique";
}

//########################################
//# Vérification des données et mise en  #
//# conformité en vue de l'insertion     #
//# dans la base de données              #
//########################################

if($trap_cible==""){ $trap_cible="Cible inconnue ou sans objet";}
if($ip_machine==""){ die("Erreur lors de l'exploitation du trap (1)");}
if($nom_machine==""){ die("Erreur lors de l'exploitation du trap (2)");}
if($evenement==""){ $trap_evenement="Evenement générique ou inconnu";}
if($trap_port==""){ $trap_port="Port inconnu ou sans objet";}
$trap_total=str_replace("\"","\\\"",$trap_total);
$trap_total=str_replace("\\n","",$trap_total);




echo "\nIP equipement: ".$ip_machine."\n";
echo "Nom equipement: ".$nom_machine."\n";
echo "Port concerné (opt): ".$trap_port."\n";
echo "Evenement lié: ".$evenement."\n";
echo "Equipement concerné: ".$trap_cible."\n";

//########################################
//# écriture dans le fichier log général #
//########################################

$fd=fopen('/tmp/traps_all','a');
fwrite($fd,$trap);
fclose($fd);

// écriture dans le fichier de log associé
$fd=fopen($use_output,'a');
fwrite($fd,$trap);
fclose($fd);

//##########################################
//# Enregistrement dans la base de données #
//##########################################

//##########################
//# création de la requête #
//##########################


$req="insert into traps values
('','".$ip_machine."','".$nom_machine."','".$evenement."','";
$req.=$trap_total."','".$trap_port."','".$trap_cible."','".$date."')";
echo "\nRequête: \n".$req;

//###################################################################
//# Exécution de la requête et affichage de message en cas d'erreur #
//###################################################################

mysql_query($req,$lien) or die("Erreur lors de la sauvegarde du trap:\n".mysql_error());
echo "\ntrap sauvegardé\n";
?>
Et j'ai appris quelues astuces qui peuvent être utiles à d'autres et dont je vais vous faire profiter:

Code : Tout sélectionner

snmptrapd -f -Le
Cette commande lance le démon ( :twisted: ) snmptrapd dans un terminal, vous permettant de voir les traps que vous recevez.

Code : Tout sélectionner

snmptrap -v1 -c public votre_adresse .1.3.6.1.2.1.25.3.3.1.2.8 0 1 i 1
Envoie un trap bidon à l'adresse spécifiée

avec ces deux commandes là on peut tester le bon fonctionnement de son snmptrapd, analyser la structuer d'un trap ect...
- redémarrage des process à distance [=======>] 100% Done
- Documentation v1.1 [====> ] 70% [En cours]
- Détection automatisée des processus et services à monitorer [=====>] 100% (envoyé pour vérification)

Avatar du membre
Seb
Messages : 3558
Enregistré le : 11 février 2009, 17:35
Localisation : Limoges
Contact :

Re: traphandler supplémentaire ?

Message par Seb » 27 avril 2009, 14:27

Hello!
Euh par defaut,il y a deja un mot de passe root sur les bases sql de EoN !
User root et mdp root66...
Attention en droppant et recreant les bases car des users sql sont definies par defaut comme cacti,eon,fruity...toujours mdp root66...tu retrouveras les script de conf et modele de base sql vide sous /srv/eyesofnetworkconf/
J'espere que ça t'aide un peu
"Mieux vaut cent chevaux sous une selle que d'un âne assis dessus"
Joe dans son bar servant un de ses clients...JBT

giantgoab
Messages : 235
Enregistré le : 06 avril 2009, 13:57

Re: traphandler supplémentaire ?

Message par giantgoab » 27 avril 2009, 14:52

Euh par defaut,il y a deja un mot de passe root sur les bases sql de EoN !
User root et mdp root66...
euuuuuuuuh dans ce cas comment j'arrive à me connecter en tant que root sans mot de passe moi ??

merci pour le dossier de conf, j'irais y jeter un coup d'oeil
- redémarrage des process à distance [=======>] 100% Done
- Documentation v1.1 [====> ] 70% [En cours]
- Détection automatisée des processus et services à monitorer [=====>] 100% (envoyé pour vérification)

Avatar du membre
Seb
Messages : 3558
Enregistré le : 11 février 2009, 17:35
Localisation : Limoges
Contact :

Re: traphandler supplémentaire ?

Message par Seb » 27 avril 2009, 15:50

Parce que tu es root et qu'il n'y a pas de pass pour mysqladmin, mysqldump, etc...par contre si tu te connecte a fruity par ex, c'est
mysql fruity -u root --password=root66 et la ça marche! voili voilo voila!
Et sur ces bases il y a un GRANT ALL PRIVILEGE *.* to (user@localhost) ....ou a la place de user on trouve ceux utiliser par EoN a savoir sur la base fruity, user= fruity mdp root66
cacti, user=cacti mdp root66...
;)
"Mieux vaut cent chevaux sous une selle que d'un âne assis dessus"
Joe dans son bar servant un de ses clients...JBT

giantgoab
Messages : 235
Enregistré le : 06 avril 2009, 13:57

Re: traphandler supplémentaire ?

Message par giantgoab » 27 avril 2009, 16:09

mysql fruity -u root --password=root66 et la ça marche! voili voilo voila!
ah ?

Code : Tout sélectionner

mysql -u root fruity
=>

Code : Tout sélectionner

Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql> 
è_é pas besoin de pass pour ca non plus visiblement
quand on attaque avec un script php, avec le pass root66 sur la bdd fruity ca passe pas plus
- redémarrage des process à distance [=======>] 100% Done
- Documentation v1.1 [====> ] 70% [En cours]
- Détection automatisée des processus et services à monitorer [=====>] 100% (envoyé pour vérification)

Avatar du membre
Seb
Messages : 3558
Enregistré le : 11 février 2009, 17:35
Localisation : Limoges
Contact :

Re: traphandler supplémentaire ?

Message par Seb » 27 avril 2009, 18:17

Oui mais tu as viré le pass root précédemment non?
De plus si je t'ai rajouté des ex de users c'est parceque pour des raisons de secu EoN n'utilise pas le compte root mais les comptes annexes sql pour chaque appli...je serai toi fait pareil pour avoir un ensemble cohérent!
"Mieux vaut cent chevaux sous une selle que d'un âne assis dessus"
Joe dans son bar servant un de ses clients...JBT

giantgoab
Messages : 235
Enregistré le : 06 avril 2009, 13:57

Re: traphandler supplémentaire ?

Message par giantgoab » 28 avril 2009, 08:44

non je n'ais pas viré le pass root ^^
(après mon beau plantage je suis reparti d'un snapshot avec juste la distrib installée)

oki pour les mots de passe annexes, j'avais pas compris ca comme ca.
j'ai fais la même chose pour mon module de traphandler, créé une base de données traps un utilisateur traps etc...
- redémarrage des process à distance [=======>] 100% Done
- Documentation v1.1 [====> ] 70% [En cours]
- Détection automatisée des processus et services à monitorer [=====>] 100% (envoyé pour vérification)

giantgoab
Messages : 235
Enregistré le : 06 avril 2009, 13:57

Re: traphandler supplémentaire ?

Message par giantgoab » 29 avril 2009, 12:45

hey hey ca fonctionne ^^

j'ai un récepteur de traps qui traite les traps et les enregistre dans une base de données
et à coté j'ai une interface web qui permet la consultation et l'archivage des traps.

J'ai réussi à intégrer mon interface dans Eonweb en modifiant le fichier de menu
/srv/eyesofnetworks/eonweb/include/language/menus-fr.xml

bon j'ai du virer l'onglet "projet" (enfin commenté lol) parce qu'il refusait d'en afficher un de plus,
certainement à cause de la taille de la barre de menu après, et j'ai rajouté le mien:

Code : Tout sélectionner

<menutab id="1" name="Trap reciever">
         <menusubtab id="8" name="Traps reçus">
                  <link name="Les 10 derniers traps" url="../../last10traps.php" target="main"></link>
                 <link name="Les derniers UP" url="../../UPtraps.php" target="main"></link>
                 <link name="Les derniers DOWN" url="../../DOWNtraps.php" target="main"></link>
                 <link name="Traps d'aujourd'hui" url="../../daytraps.php" target="main"></link>
                 <link name="Traps d'hier" url="../../day-1traps.php" target="main"></link>
                 <link name="Traps d'un jour" url="../../onedaytraps.php" target="main"></link>
                 <link name="Tous les traps" url="../../alltraps.php" target="main"></link>

        </menusubtab>
        <menusubtab id="9" name="Traps archivés">
                <link name="Reçus tel jour " url="../../onedayarchive.php" target="main"></link>
                <link name="Archivés tel jour" url="../../dayarchive.php" target="main"></link>
        </menusubtab>
  </menutab>

Bon bah je crois que j'ai tout de ce coté là !(à part quelques traps pas encore supportés mais bientôt)
- redémarrage des process à distance [=======>] 100% Done
- Documentation v1.1 [====> ] 70% [En cours]
- Détection automatisée des processus et services à monitorer [=====>] 100% (envoyé pour vérification)

Avatar du membre
Seb
Messages : 3558
Enregistré le : 11 février 2009, 17:35
Localisation : Limoges
Contact :

Re: traphandler supplémentaire ?

Message par Seb » 29 avril 2009, 16:00

Sinon dans le menu_fr tu pouvait rajouter une catégorie et les liens!
Par exemple dans l'onglet disponibilité j'ai rajouté une categorie "criticité,journaux" et dedans mis le lien "vue application" = nagiobp et "logs" = syslog puisque je fait tourner syslogng et son plugin cacti!
L'avantage c'est que la restriction des users se fait sur les onglets dispo,capacité,projet....
Et que si tu modifie pas les autres liens de "projet" ça va poser un problème...quid de la gestion des accès de groupe au portail web, ou il faut cocher projet,dispo,capa,....
Ensuite tu peux affiner par un httpd conf pour permettre aux users ayant la vue dispo a "1" de visualiser les traps mais bloquer les remove et autre si il n'ont pas la vue administration a "1"....c'est une idée comme ça et c'est ce que j'ai fait en tout cas!

Ceci étant, félicitation à toi pour cette manip qui servira a d'autre, dont moi lol!
....
"Mieux vaut cent chevaux sous une selle que d'un âne assis dessus"
Joe dans son bar servant un de ses clients...JBT

giantgoab
Messages : 235
Enregistré le : 06 avril 2009, 13:57

Re: traphandler supplémentaire ?

Message par giantgoab » 30 avril 2009, 08:47

L'avantage c'est que la restriction des users se fait sur les onglets dispo,capacité,projet....
Et que si tu modifie pas les autres liens de "projet" ça va poser un problème...quid de la gestion des accès de groupe au portail web, ou il faut cocher projet,dispo,capa,....
oui je me doutais bien qu'il y avait un truc comme ca ^^
du coup je vais chercher comment modifier pour que les permissions fonctionnent :p
à priori ca doit pas ête bien compliqué, pis si ca l'est bah tant pis je le ferais quand même XD
(en plus je reprend l'identifiant du menu que j'ai commenté alors qui sait ... ^^)

j'avais pensé rajouter juste une sous-catégorie mais j'ai un peu trop de liens à mettre après ca fait fouillon,
j'en suis déjà à ma3ème sous catégorie ^^
mais c'est ce que je ferais si j'arrive pas à configurer la gestion de droits
Modifié en dernier par giantgoab le 30 avril 2009, 10:40, modifié 1 fois.
- redémarrage des process à distance [=======>] 100% Done
- Documentation v1.1 [====> ] 70% [En cours]
- Détection automatisée des processus et services à monitorer [=====>] 100% (envoyé pour vérification)

Répondre