Catégories
Open-source Reseau Systeme

Supervision d’Asterisk avec Nagios

Les plugins pour surveiller son serveur SIP Asterisk à partir de Nagios sont assez nombreux. Mais aucun d’eux ne me convenait parfaitement. J’ai donc écrit un petit script nommé Nagisk (quel humour…) a exécuter localement sur le serveur Asterisk. J’utilise NRPE pour récupérer la sortie de ce script et l’intégrer à Nagios.

Nagisk permet de:

  • récupérer la version d’Asterisk (et donc au passage de savoir si le serveur est lancé…)
  • récupérer le nombre de d’utilisateurs SIP (online et offline)
  • récupérer le nombre de communications actives (appels en cours)

Récupération de Nagisk

J’ai créé un nouveau projet sous GitHUB ou vous pouvez télécharger la dernière version disponible de Nagisk.

Installation de Nagisk

Avant d’installer Nagisk sur votre serveur Asterisk, il faut d’abord y installer NRPE (par exemple en suivant ce tuto).

On commence par décompresser l’archive préalablement récupérée:

tar zxvf nagisk-1.2.tgz

Puis on copie le script Perl dans le répertoire des plugins Nagios:

cd nagisk

cp nagisk.pl /usr/local/nagios/libexec

On lui donne les bons droits:

chown nagios:nagios /usr/local/nagios/libexec/nagisk.pl

chmod 750 /usr/local/nagios/libexec/nagisk.pl

Certaines variables sont en durs dans le code (rien de méchant, juste le path pour accèder à Asterisk). J’utilise personnellement la commande sudo pour executé les commandes sur Asterisk afin que le script soit lancé par l’utilisateur nagios. Pour celà j’ai ajouté la ligne suivante dans le fichier /etc/sudoers:

nagios    ALL= NOPASSWD: /usr/sbin/asterisk

Configuration de NRPE pour lancer Nagisk

Il suffit d’ajouter les lignes suivantes dans le fichier de configuration de NRPE (/usr/local/nagios/etc/nrpe.conf):

command[check_asterisk_version]=/usr/local/nagios/libexec/nagisk.pl -c version

command[check_asterisk_peers]=/usr/local/nagios/libexec/nagisk.pl -c peers

command[check_asterisk_channels]=/usr/local/nagios/libexec/nagisk.pl -c channels

command[check_asterisk_zaptel]=/usr/local/nagios/libexec/nagisk.pl -c zaptel

command[check_asterisk_span]=/usr/local/nagios/libexec/nagisk.pl -c span -s 1

ps: il est possible de faire plus propre en utilisant les arguments NRPE mais je trouve cette solution plus lisible…

Une fois le fichier mofifié, il faut relancer NRPE:

/etc/init.d/nrpe restart

Configuration de Nagios pour surveiller son serveur Asterisk

Si vous souhaitez superviser un serveur SIP Asterisk dont le host_name est sip, il suffit d’ajouter les lignes suivantes dans un de vos fichiers de configurations:

define service{
use                     generic-service
host_name               sip
service_description     Check SIP
servicegroups           sip
check_command           check_nrpe!check_asterisk_version
}

define service{
use                     generic-service
host_name               sip
service_description     Check SIP peers
servicegroups           sip
check_command           check_nrpe!check_asterisk_peers
}

define service{
use                     generic-service
host_name               sip
service_description     Check SIP channels
servicegroups           sip
check_command           check_nrpe!check_asterisk_channels
}

define service{
use                     generic-service
host_name               sip
service_description     Check Zaptel card
servicegroups           sip
check_command           check_nrpe!check_asterisk_zaptel
}

define service{
use                     generic-service
host_name               sip
service_description     Check Zaptel Span 1
servicegroups           sip
check_command           check_nrpe!check_asterisk_span
}

Et voilà le résultat:

Conclusion

Nagisk semble remplir sa fonction, le script tourne depuis quelques temps chez moi sans problème. Il est distribué sous licence libre GPL v3 et il est bien sûr possible de le modifier pour l’adapter à vos besoins.

Catégories
Open-source Reseau Systeme

Installation de NRPE depuis les sources

Afin de disposer de la dernière version de NRPE (le plugin pour superviser vos serveurs GNU/Linux, BSD ou Mac OS X sous Nagios), il est parfois nécessaire de la compiler depuis les sources. Voici donc une simple procédure pour installer NRPE 2 et les plugins Nagios « standards » sous une distribution GNU/Linux.

Récupération des sources

Nous partons, bien sûr, sur l’hypothèse ou votre machine cible (c’est à dire celle ou vous aller compiler NRPE) dispose des logiciels de développement de base (configure, make, gcc…).

Si votre machine dispose d’un accès internet, vous pouvez saisir les commandes suivantes (en remplacent les numéros de versions par les dernières disponibles):

wget http://surfnet.dl.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz

wget http://heanet.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz

Préalablement à l’installation de NRPE, il faut créer un utilisateur ‘nagios’ sur votre machine:

adduser nagios

Pour des raisons de sécurité, il est préférable que cet utilisateur n’ait pas de shell:

vipw

Remplacer la ligne:

nagios:x:500:500::/home/nagios:/bin/bash

Par:

nagios:x:500:500::/home/nagios:/bin/noshell

Installation de NRPE

On lance la fameuse séquence:

tar zxvf nrpe-2.12.tar.gz

cd nrpe-2.12

./configure

make all

make install

Lors de la compilation il est possible qu’il manque des dépendances. Par exemple, si vous avez le message suivant:

checking for SSL headers… configure: error: Cannot find ssl headers

Il faut installer les librairies SSL (libssl-dev sous Ubuntu):

apt-get install libssl-dev

Installation des plugins Nagios standards

Pareil que miguel…:

tar zxvf nagios-plugins-1.4.13.tar.gz

cd nagios-plugins-1.4.13

./configure

make install

Puis une initialisation du script de configuration (/usr/local/nagios/etc/nrpe.conf):

mkdir /usr/local/nagios/etc

cp sample-config/nrpe.cfg /usr/local/nagios/etc

Correction des droits sur les fichiers

De base, les plugins sont installés avec les droits de l’utilisateur qui à lancé la compilation. Pour être sûr que NRPE puisse lancer les plugins, on doit saisir la commande suivante:

chown -R nagios:nagios /usr/local/nagios/

Lancement automatique au démarrage

Un script standard est fourni dans les sources:

cp init-script /etc/init.d/nrpe

chmod 755 /etc/init.d/nrpe

Configuration de NRPE

Sous GNU/Linux, suivre ce tutoriel, sous BSD et Mac OS X, suivre celui là.

Catégories
Hardware Open-source Systeme

RAID 1 logiciel sous FreeBSD

Certains serveurs de votre réseau sont plus sensibles que d’autres: on peut citer par exemple les serveurs DNS, LDAP ou base de données. D’un autre coté les pannes matérielles survenant sur ces mêmes serveurs viennent souvent des disques durs. En partant de ces deux constats, je vous propose dans ce billet d’utiliser la fonction de RAID 1 logicielle de FreeBSD pour sécuriser ces serveurs.

Petit rappel sur RAID 1

Le RAID 1 consiste à utiliser n disques redondants (n supérieur ou égal à 2). Chaque disque contient la même information.

150px-RAID_1.svg.png

Dans notre exemple, nous allons utiliser une configuration minimale pour du RAID 1: deux disques de taille et de caractéristiques équivalentes.

Préparation de l’installation

Il faut dans un premier temps identifier les disques sur lequel de RAID 1 va être installé. Pour celà la commande dmesg devrait vous aider:

# dmesg

ad4: 76319MB <WDC WD800AAJS-70TDA1 01.00A03> at ata2-master SATA150

ad6: 76319MB <WDC WD800AAJS-70TDA1 01.00A03> at ata3-master SATA150

Nous avons donc deux disques: ad4 et ad6.

Ensuite on regarde ou le système est installé:

# df

/dev/ad4s1a 71621288 1044946 64846640 2% /

FreeBSD est donc installé sur le disque ad4. Nous allons donc nous servir du disque ad6 pour créer le disque mirroir de ad4.

Configuration du RAID 1 sous FreeBSD

Nous allons utiliser l’utilitaire gmirror pour effectuer le « mirroring » de ad4 vers ad6.

La première chose à faire est de vérifier que votre version de FreeBSD supporte cette fonction.

# man gmirror

Si c’est le cas, le manuel de la commande devrait s’afficher.

On commence par préparer le disque « maître » (ad4 dans notre exemple):

# sysctl kern.geom.debugflags=17

# gmirror label -vb round-robin gm0 /dev/ad4

Le résultat de cette dernière commande devrait être:

Metadata value stored on /dev/ad4.

Done.

On charge ensuite le module gmirror dans le kernel.

# gmirror load

Si vous n’avez pas de message d’erreur vous pouvez automatiser le chargement du module au prochain démarrage du serveur en tapant la commande suivante:

# echo ‘geom_mirror_load= »YES »‘ >> /boot/loader.conf

On vient de créer un disque virtuel nommé gm0. Il faut donc remplacer, dans le fichier /etc/fstab, toutes les occurrences /dev/ad4 par /dev/mirror/gm0. Pour cela on utilise vi:

# cp /etc/fstab /etc/fstab.old

# vi /etc/fstab

:%s/ad4/mirror\/gm0/g

On redémarre ensuite le serveur:

# shutdown -r now

Une fois le serveur rebooté, il ne reste plus qu’a ajouter le disque ad6 (notre disque « esclave ») dans le mirroir RAID 1 (gm0).

# gmirror insert gm0 /dev/ad6

Vérification de l’état du RAID 1

On peut utiliser la commande suivante:

# gmirror status

Durant l’initialisation du disque esclave, le résultat devrait ressembler à:

Name Status Components

mirror/gm0 DEGRADED ad4

ad6 (1%)

Ensuite, le message suivant devrait apparaître:

Name Status Components

mirror/gm0 COMPLETE ad4

ad6

Et si un de mes disques plantes ?

Imaginons que le disque primaire (ad4) rende l’âme. Il suffit:

  • éteindre le serveur
  • retirer le disque ad4
  • le remplacer par un disque équivalent
  • redémarrer le serveur
  • Saisir les commande suivantes pour reconstruire le disque:

# gmirror forget gm0

# gmirror insert gm0 /dev/ad4

Il ne reste plus qu’a superviser votre RAID 1 avec votre serveur Nagios !

Catégories
Open-source

Actualité open-source de la semaine #35

L’actualité open-source de la semaine…

L’image de la semaine

00B4000000043021.png
Une enquête encourageante sur
l’utilisation du libre en Europe

Tout le monde en parle, sauf moi…

L’actualité du libre et de l’open source en vrac:

Autres choses ?

Catégories
Open-source Reseau

Installation de BASE (reporting snort)

Avoir un Firewall c’est bien, y installer un logiciel de détection d’intrusion (IDS) c’est encore mieux. Mais pour atteindre les sommets de la sécurité informatique, il faudra passer par une étape ingrate: l’analyse des logs générés par votre IDS…

SNORT est un IDS libre facile à installer sur les OS GNU/Linux et BSD. Il produit en sorti des logs avec les alertes repérées sur votre réseau. Ces logs peuvent devenir très volumineux et donc impossible à analyser. Heureusement, BASE (de SecureIdeas) est là pour vous donner un coups de main.

BASE est une interface Web permettant d’analyser les logs de SNORTS stockés dans une base de données MySQL (ou PgSQL).

capture_200810095414.jpg

Installation de base sous une GNU/Linux Fedora

On commence par installer la librairie AdoDB pour permettre à l’application BASE de communiquer avec la base de donnée.

cd /var/www

wget http://ovh.dl.sourceforge.net/sourceforge/adodb/adodb505.tgz

tar zxvf adodb505.tgz

ln -s adodb5 adodb

rm adodb505.tgz

On récupère ensuite la dernière version de BASE sur le site officiel (http://base.secureideas.net/).

wget http://ovh.dl.sourceforge.net/sourceforge/secureideas/base-1.4.1.tar.gz

tar zxvf base-1.4.1.tar.gz

ln -s base-php4 base

chown -R apache:apache base base-php4

rm base-1.4.1.tar.gz

On finalise l’installation en se rendant, à l’aide d’un navigateur Web, vers la page suivante: http://<adresse-ip-serveur>/base/

Puis on suit le wizard avec en premier la vérification des pré-requis:

capture_200810095022.jpg

on choisit ensuite la langue (1), le chemin d’accès à AdoDB (2) puis on continu (3):

capture_200810095101.jpg

on configure la base de donnée (1 et 2) puis on continu (3):

capture_200810095139.jpg

on force une authentification sur les accès à BASE (1), le login/password (2) et on continu (3):

capture_200810095241.jpg

On finalise l’installation :

capture_200810095305.jpg

capture_200810095329.jpg

Et voilà, il ne reste plus qu’a consulter régulièrement les rapports générés par ces beaux outils.

Utilisation de BASE

Il suffit de se rendre à l’URL suivante: http://<adresse-ip-serveur>/base/

Les rapports sont disponibles par jours, derniers 24h, derniers 72h, alertes les plus récentes, les plus fréquentes…

Catégories
Open-source

Sortie de VLC media player 0.9.4

Après les longs mois d’attentes qui ont précédés la sortie de la version 0.9, on peut dire que les amateurs de nouveautés et de VLC sont gâtés. En effet, vient de paraître la 2em mise à jour (0.9.4) du populaire lecteur multimédia libre.

À propos du lecteur multimédia VLC.jpg

Au chapitre des nouveautés:

  • améliorations lors de la capture d’écran avec le suivi de la souris (sous Windows uniquement) et la possibilité de ne capturer qu’un portion de l’écran (les options étaient présentent dans la version 0.9 mais pas activées)
  • support de nouveaux codecs audio: AES3 et E-AC3
  • corrections de bugs…

Pour une installation sous Ubuntu, vous pouvez suivre ce tutorial (remplacer 0.9.2 par 0.9.4).

Sur les autres OS, rendez-vous directement sur le site officiel.

Catégories
Open-source

Actualité open-source de la semaine #34

L’actualité open-source de la semaine…

L’image de la semaine

f10beta.png
Firefox Fedora 10, la bêta est dans les bacs !

Tout le monde en parle, sauf moi…

L’actualité du libre et de l’open source en vrac:

Autres choses ?

Catégories
Blog Open-source Web

200 icônes pour illustrer votre blog

Voici une petite compilation de plus de 200 icônes glanés dans différents articles de Smashing Magazine. Très utile si comme moi vous n’êtes pas très doué artistiquement parlant 😉

L’archive (au format .zip) fait 3,6 Mo et contient environ 200 icônes libre de droit.

200iconsdownload.jpg

A vos illustrations !

Catégories
Open-source Systeme

Redémarrer automatiquement un processus

Flickr Photo Download_ Shells.jpg

Certaines processus système sont plus sensibles que d’autres. Par exemple, dans le cas de l’administration d’un serveur distant, le processus SSHD est à protéger avant tout.

Voici donc le petit script que j’utilise sur mes serveurs pour relancer le daemon sshd au cas ou se dernier s’arrête (suite à un bug ou à une fausse manipulation d’un opérateur). Ce script shell est bien sûr adaptable pour d’autres processus.

#!/bin/sh

# /usr/local/bin/sshd_wrapper.sh

PROCESS_NAME=sshd

PROCESS_COMMAND=’ /usr/local/sbin/sshd’

ps auxw | grep -v grep | grep $PROCESS_NAME > /dev/null || $PROCESS_COMMAND

On rends alors ce script exécutable seulement par l’utilisateur qui doit lancer le processus.

chmod 700 /usr/local/bin/sshd_wrapper.sh

Puis on demande au système d’exécuter ce script toute les minutes:

crontab -e

* * * * * /usr/local/thales/bin/sshd_wrapper.sh > /dev/null 2>&1

et hop…

Catégories
Open-source

Actualité open-source de la semaine #33

L’actualité open-source de la semaine…

L’image de la semaine

google-chrome-screenshot.jpg
Google Chrome, le buzz qui fait pschitt ?

Tout le monde en parle, sauf moi…

L’actualité du libre et de l’open source en vrac:

Autres choses ?