snmptrap : suite et fin... en tout cas je l'espere... - réseaux et sécurité - Linux et OS Alternatifs
Marsh Posté le 18-05-2005 à 14:11:32
J'ai lu dans le log :
couldn't open udp:162 -- errno 13 ("Permission denied" ) |
Je me connecte alors en tant que root.
Cette fois-ci il y a écrit :
couldn't open udp:162 -- errno 98 (Address already in use" ) |
dois-je comprendre qu'un autre programme utilise le port 162 !?
comment faire pour en être sur et savoir quel programme l'utilise ???
Marsh Posté le 18-05-2005 à 14:39:29
- soit un autre programme utilise le port 162
- soit ton programme n'a pas les droits suffisants pour ouvrir un port < 1024*sache que seul root ( administreateur ) peut ouvrir un port < 1024 ou des utilisateurs avec les privilèges suffisants.
pour voir l'utilisation de tes ports :
netstat - laputen
pour check le 162 :
netstat -laputen | grep 162
Rem : pkoi mets tu le fichier de conf dans ton rep perso ?
Citation : |
Marsh Posté le 18-05-2005 à 14:55:56
Dark_Schneider a écrit : - soit un autre programme utilise le port 162 |
J'ai scanné les ports avec Nmap et voici ce qui apparait :
|
est-ce que c'est normal de voir snmptrap au lieu de snmptrapd ???
J'ai ensuite redémarrer mon pc en faisant en sorte que les snmpd et snmptrapd ne se lance pas au démarrage et j'ai toujours la même chose...
Dark_Schneider a écrit :
|
parce que c'est un script php qui doit écrire dans le fichier et lancer la commande à partir d'un navigateur internet, et que apache n'a pas les droits d'écriture dans /etc/snmp/
Marsh Posté le 18-05-2005 à 15:41:50
bon j'arrive à attraper les traps snmp...
par contre j'ai encore un problème :
snmptrapd se lance au démarrage de Mandrake. mais qd je reçois des traps rien ne se passe
je suis obligé d'aller dans le panneau DrakeConf pour arrêter le service et ensuite de tapper cette ligne là :
/usr/sbin/snmptrapd |
je comprend pas
Marsh Posté le 19-05-2005 à 23:28:49
andlio a écrit : bon j'arrive à attraper les traps snmp...
|
Logique, snmptrapd est un demon donc il est lancer au demarrage de ta machine. Par contre
comme de bien entendu il demarre avec le fichier de configuration spécifié par l'init de ta
distribution: cf /etc/rc.d/init.d/snmptrap.
Normalement il utilise par defaut /etc/snmp/snmptrapd.conf donc si c'est celui que tu a modifier
il est pris en compte quand tu lance le demon sans arguments.
Citation : parce que c'est un script php qui doit écrire dans le fichier et lancer la commande à partir d'un navigateur internet, et que apache n'a pas les droits d'écriture dans /etc/snmp/ |
Ton approche n'est pas la bonne, en effet changer le fichier de configuration via un script
php ne suffira pas meme si tu a les droits d'ecriture, il te faudra ensuite redmarrer snmptrapd,
hors pour cela il te faut etre root (problemes d'autorisation pour les port <1024).
La seule solution pour ce genre de problemes c'est le mandataire.
Ie tu fait ton script php qui propose une interface pour changer la configuration,
celui ci ecrit les nouveaux parametres quelque part (base de donnée, fichier texte, etc)
et ensuite un demon ou un script croné va examiner ce fichier, eventuellement validé les arguments
pour eviter que n'importe qui fasse n'importe quoi, modifier la config de snmptrapd et redemarrer celui
ci.
L'autre methode plus sale est la solution du cgi executé via suExec.
Marsh Posté le 20-05-2005 à 09:07:02
MaxMaverick a écrit : Ton approche n'est pas la bonne, en effet changer le fichier de configuration via un script |
Quand tu dis "modifier la config de snmptrapd", tu veux dire qu'il aille modifier le fichier /etc/snmp/snmptrapd.conf ?
Le "script croné" aura-t-il les droits nécessaires pour modifier le fichier et redémarrer snmptrapd ?
mon application doit marcher sans intervention du root (en tout cas si c'est possible)
Marsh Posté le 20-05-2005 à 12:00:56
andlio a écrit : Quand tu dis "modifier la config de snmptrapd", tu veux dire qu'il aille modifier le fichier /etc/snmp/snmptrapd.conf ? |
Oui mettont que le but de l'interface web soit de changer un flag. Bon tu fait ta page php,
et quand elle est appellée elle crée un fichier /tmp/snmptrap_php_value qui contient la nouvelle
valeur du flag (ex 4).
Ensuite prenont le cas simple d'un script cron executé toutes les 5minutes:
*/5 * * * * root /usr/local/sbin/snmptrap_cron.sh
Celui ci n'aura qu'a verifer la presence du fichier /tmp/snmptrap_php_value ([ -e /tmp/snmptrap_php_value ] en bash)
et dans ce cas il lit le contenu tu fichier ( read flag < /tmp/snmptrap_php_value en bash ), verifier
si la valeur est bien dans les contraintes ([ $flag -lt 5 ] par exemple) et si tout va bien
il recréer le fichier /etc/snmp/snmptrapd.conf:
Citation : |
Puis un simple '/etc/rc.d/init.d/snmptrapd restart" al a fin redemarrera le demon.
Maintenant il est aussi possible de laisser snmptrapd faire son log des traps puis a toi de faire un
outils pour relire ses logs et les mettre en forme. Ca evite le redemarrage du demon et tout
Marsh Posté le 20-05-2005 à 15:56:46
MaxMaverick a écrit : */5 * * * * root /usr/local/sbin/snmptrap_cron.sh |
c'est quoi la commande root ???
il faut que je planifie le test en tant que root c'est ça !?
il n'existe pas un moyen de faire en tant que simple utilisateur ???
j'ai écris un script restart.sh :
Code :
|
j'ai ensuite modifier le fichier sudoers grâce à la commande visudo afin d'autoriser apache à éxecuter ce script, mais la commande service n'est visible quand tant que root... une solution?
Marsh Posté le 20-05-2005 à 16:00:11
dans la crontab on peut ajouter l'utilisateur qui exécutera la commande
[horaire] [utilisateur] [commande]
Marsh Posté le 20-05-2005 à 16:02:01
jlighty a écrit : dans la crontab on peut ajouter l'utilisateur qui exécutera la commande (man crontab) |
ah ok
et il faut qd mm renter un mot de passe !!??
Marsh Posté le 20-05-2005 à 16:04:12
non pas besoin, car si la crontab appartient à root pas besoin de mot de passe
Marsh Posté le 20-05-2005 à 16:09:59
dans ce cas là, c'est bien ce que je dis, il faut être connecté en tant que root...non !? désolé je suis débutant sous Linux...
Marsh Posté le 20-05-2005 à 16:18:54
oui pour ajouter
Citation : */5 * * * * root /usr/local/sbin/snmptrap_cron.sh |
dans la crontab
Marsh Posté le 20-05-2005 à 16:28:06
ok merci...
je ne sais pas si tu as lu un peu plus haut, mais au cas où... je vais le recopier :
j'ai écris un script restart.sh :
Code :
Code :
|
j'ai ensuite modifier le fichier sudoers grâce à la commande visudo afin d'autoriser apache à exécuter ce script, mais la commande service n'est visible quand tant que root...
est-ce que tu aurais une solution pour qu'un utilisateur puisse exécuter ce script ?
Marsh Posté le 20-05-2005 à 16:58:10
je préfèe plutôt la solution de maxmaveric qui consiste à utiliser cron pour vérifier le bon fonctionnement de snmptrapd et dans le cas écheant de relancer immédiatement celui-ci.
De cette manière l'utilisateur Apache ne se servira pas de sudo (un petit plus pour la sécurité)
Marsh Posté le 18-05-2005 à 11:54:10
Salut !!!
ce topic est la suite du topic http://forum.hardware.fr/hardwaref [...] 8965-1.htm
il traite tjr d'un pb avec snmptrap... mais pas le même
J'avais un peu de mal à installer net-snmp sous Mandrake 10.0.
J'ai finalement réussi à installé snmpd et snmptrapd... ... mais je n'arrive tjr pas à l'utiliser...
j'ai modifier le fichier /home/lionel/snmptrapd.conf :
traphandle IF-MIB:linkUp /usr/bin/php PATH/script.php
j'ai ensuite tappé la commande suivante :
/usr/sbin/snmptrapd -c /home/lionel/snmptrapd.conf
j'ai également vérifié que je recevais bien les traps à l'aide de Ethereal.
mais rien ne se passe... mon script qui est censé créer un fichier dans le répertoire /tmp ne fait rien du tout, alors qu'il marche très bien quand je le lance manuellement...
quelqu'un pourrait-il m'aider ???
Message édité par andlio le 20-05-2005 à 16:14:34