Plugin de prise en main à distance de Nagios (Http,RDP,SSH,Telnet)

Plugin de prise en main à distance de Nagios (Http,RDP,SSH,Telnet)

Posted by on Apr 29, 2009 in Linux

Prise en main par HTTP :

Jusque là, c’est la seule fonction que j’utilisais sous nagios. Par exemple, avec mes switchs / routeurs pour activer le contrôle via leur interface web, on ajoute cette option dans /usr/local/nagios/etc/hosts.cfg :

define host {
use switch-host
host_name SWT01
alias Switch Netgear 100 Mbps
adress 10.0.2.1
hostsgroups Switchs
action_url http://$HOSTADDRESS$
}

Winexe : l’outil de bas:

Winexe permet d’exécuter des commandes à distance et de manière interactive sur des postes sous WindowsNT/2000/XP/2003 depuis un system GNU/linux (ici debian etch). Quand on lit les pré-recquis de l’outil, ce qui  frappe, c’est qu’ on a ici une configuration de base d’un environnement windows  (”Printer and File Sharing”, ADMIN$…). Afin de pouvoir utiliser l’outil il faut bien entendu un compte administrateur sur les machines distantes.  Il est le même sur tous les serveurs NT. Il faut récupérer la source depuis l’url http://eol.ovh.org/winexe/winexe-source-071026.tar.bz2. Décompresser l’archive, renommer le fichier extrait en winexe et le placer dans /usr/bin avec les bons droits :

tar -xjfv winexe-source-071026.tar.bz2
mv winexe-static-071026 /usr/bin/winexe
chmod 755 /usr/bin/winexe

Prise en main par RDP : Configuration nagios:

Je préfére utiliser les fichiers de configuration de type “template” afin que tous mes serveurs windows récupèrent la fonction action_url de prise en main à distance.

define host {
name             Windows-template
use              generic-host
action_url       http://RACINE_NAGIOS/mstsc.php?ip=%24HOSTNAME
}

MSTSC.php : Plugin Nagios RDP:

 

cd /usr/local/nagios/share/
wget http://feilongwork.free.fr/wp-content/uploads/sources/mstsc.tar.bz
tar xvzf mstsc.tar.bz

Trois lignes à expliquer sur le mstsc.php :

” $parFile= trim($_GET[“ip”]);  ”          On récupère ici l’adresse IP du serveur microsoft.
” $client = $_SERVER[“REMOTE_ADDR”]; ”      On récupère ici l’adresse IP du client.

On peut donc lancer notre shell avec nos deux paramètres par :
” $output = shell_exec(”mstsc.sh $client $parFile”); ”

Pour autoriser apache d’exécuter notre shell il faut désactiver la fonction safe_mode dans la configuration de php et relancer le serveur apache:

vi /etc/php5/apache2/php.ini
safe_mode = Off
/etc/init.d/apache2 reload

pour plus de sécurité:

safe_mode_exec_dir = /usr/local/nagios/libexec/safe/ dans le php.ini

et placer notre shell "mstsc.sh" dans ce dossier...

Shell MSTSC.sh :

vi /usr/bin/mstsc.sh :

#!/bin/sh /usr/bin/winexe --interactive=1 --reinstall --uninstall --system -U adminlocal%mot_de_pass //$1  "mstsc /v:$2 /F" &

Quelques explications rapides :

  • –interactive=1 : Active le mode interactif, c’est mieux pour lancer mstsc.exe sur la machine distante.
  • –reinstall : Force l’installation du service winexesvn utilisé par winexe sur la machine distante.
  • –uninstall : Force la désinstallation du service winexesvn une fois le process terminé.
  • –system : Obliger d’utiliser le le compte SYSTEM pour des commandes interactives.
  • -U adminlocal%mot_de_pass : Compte NT administrateur local et mot de pass de la machine cible.
  • //$1 : //adresse IP de la machine cible, ici le premier paramètre lancé à notre shell.
  • “mstsc /v:$2 /F” & : Lance la commande MSTSC de prise en main à distance sur le serveur dont le nom est le deuxième paramètre envoyé à notre shell.

Reste plus qu’à recharger la configuration de nagios pour qu’il prenne en compte les mofications apportées à ses fichiers de configuration :

/etc/init.d/nagios reload

et voila!!!

Post a Reply

Your email address will not be published. Required fields are marked *