Catégories
Open-source Reseau Systeme

Notifications Nagios par SMS

url.jpgCe billet fait suite à une demande pressente de plusieurs lecteurs de ce blog qui ont en commun le besoin d’envoyer des notifications Nagios par SMS afin que leurs administrateurs/utilisateurs puissent les recevoir sur un simple téléphone portable.

Avant de commencer…

… ce qui Nagios ne sait pas faire: envoyer des SMS !!!

Et oui, il n’y a pas de miracle, Nagios ne sait pas envoyer directement de SMS (il n’est pas fait pour cela…). Il va falloir donc passer par un serveur offrant les fonctions suivantes:

  • recevoir les notifications venant de Nagios (par mail, http ou autre…)
  • transformer ce message en SMS
  • envoyer le SMS sur le réseau téléphonique GSM

Pas la peine de chercher bien loin, une requête du type serveur SMS dans gOOgle devrait vous mettre sur la bonne voie. Dans l’exemple si dessous, j’ai choisi l’opérateur 123-SMS qui propose un service sans abonnement (on crédite son compte en fonction de ses besoins) et avec des interfaces diverses et variées (Mail, HTTP, Socket, Curl…).

Il faut dans un premier temps créer un compte et le créditer

Je vous conseille de créer le compte en question en donnant l’adresse mail de l’utilisateur Unix qui lance Nagios (par exemple nagios@votredomaine.com).

Configuration de Nagios

Il faut créer une nouvelle commande de notification dans le fichier de configuration …:

define command{

command_name notify-service-by-sms

command_line /usr/bin/printf « %b » « ** $NOTIFICATIONTYPE$ alert – $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ ** » | /usr/bin/mail -s « MOTDEPASSE:$CONTACTPAGER$ » sms@123-sms.net

}

define command{

command_name notify-host-by-sms

command_line /usr/bin/printf « %b » « Host $HOSTSTATE$ alert for $HOSTNAME$! » | /usr/bin/mail -s « MOTDEPASSE:$CONTACTPAGER$ » sms@123-sms.net

}

avec:

  • MOTDEPASSE est le mot de passe fournie par votre opérateur de SMS
  • CONTACTPAGER sera automatiquement remplacer par Nagios par le numéro de téléphone portable (PAGER) du contact à prévenir
  • sms@123-sms.net est l’adresse mail du serveur de votre opérateur SMS (le serveur qui va envoyer le SMS sur le réseau GSM)

Il ne reste plus qu’a ajouter cette notification aux administrateurs/utilisateurs (par exemple le pauvre gars nommé James qui a comme numéro de téléphone 06007007) que l’on souhaite prévenir:

define contact{

contact_name monadminquivapasdormirdelanuit

alias James

service_notification_period 24×7

host_notification_period 24×7

service_notification_options w,u,c,r

host_notification_options d,u,r

service_notification_commands notify-service-by-sms

host_notification_commands notify-host-by-sms

pager 336007007

}

Et voilà, il ne reste plus qu’a relancer Nagios et attendre les premiers SMS…

Catégories
Open-source Systeme

Transferts de gros fichiers avec SMB sous GNU/Linux

Je ne sais pas si vous avez déjà essayé de transferer un gros fichier (à partir de 300 Mo) sur un partage Windows (SMB) à partir de Nautilus sous GNU/Linux mais il y a de forte chance que ce dernier n’arrive jamais à destination… Comme on peut le lire sur ce forum, il semble y avoir un problème de « time out » sur les transferts de fichiers.

La solution proposée passe par « un montage à la mimine » des partages Windows. Voici la procédure à suivre pour accèder au partage « share » (protégé par un login/password) sur un serveur nommé « windaube » (\\windaube\share) et ce à partir d’une distribution GNU/Linux Ubuntu.

Installation des pré-requis

Pour accèder au partage Windows, nous allons utiliser le protocole SMB, pour celà, il faut installer le package smbfs:

sudo apt-get install smbfs

Ensuite nous allons créer un répertoire local ou se fera le montage:

mkdir /media/share

Configuration du point de montage

Notre partage est protégé par un mot de passe, nous devons créer un fichier contenant ces informations:

sudo vim /root/.share-credentials

username=login
password=password

Enfin, il reste à modifier le fichier centralisant les « montages » réseau (/etc/fstab):

sudo vim /etc/fstab

//windaube/share /media/share cifs    credentials=/root/.share-credentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0

Tester le point de montage

On lance la commande:

sudo mount -a

Et voili, vous devriez voir le contenu de votre partage Windows dans le répertoire /media/share. Des transferts de fichiers de plusieurs Giga ne devraient plus poser problèmes…

Source utilisée pour ce billet: http://ubuntuforums.org/showthread.php?t=288534

Catégories
Open-source Systeme

Des livres de chevet pour GNU/Linux

Plusieurs lecteurs de ce blog, débutants ou utilisateurs dans le monde GNU/Linux, m’ont demandés si il existait des ouvrages faisant références dans le monde GNU/Linux.

Vaste question à laquelle je répond souvent par d’autres questions:

  • len Anglais ou en Français ?
  • focalisé sur une distribution ou générale ?
  • spécialisé sur un sujet (administration, utilisation, sécurité…) ?

Si vous répondez à ces questions par: Français, générale et tout les sujets alors les éditions Eyrolles ont peut être les « bibles » que vous cherchez. En effet, pas moins de 5 ouvrages couvrants tout les sujets, vont être publié par cet éditeur (3 sont actuellement disponibles).

J’ai eu entre les mains le premier tome et j’ai été agréablement surpris par l’habille mélange entre la théorie et la pratique (on est quand même là pour taper sur un clavier ;)).

Tome 1 – Les bases de l’administration système

51Q12V897WL._SL160_.jpg

Sommaire:

* Introduction

* L’installation

* Les commandes

* La lecture de scripts shell

* Les utilisateurs et les droits

* Les disques et les systèmes de fichiers

* La sauvegarde

* Les applications

* Installer des applications

* L’arrêt/démarrage

* Le réseau

* L’impression

* L’environnement graphique

* La sécurité

* Annexes

Tome 2 – Administration système avancée

51pznweM6zL._SL160_.jpg

Sommaire:

* Administration Linux professionnelle

* L’installation

* Le noyau

* La gestion des périphériques

* Les systèmes de fichiers

* Compléments sur les disques et les FS

* Le RAID

* Le LVM

* La sauvegarde

* Le démarrage

* La gestion des performances

* Le dépannage

* Compléments

* Annexes

Tome 3 – Sécuriser un serveur Linux

517DXj-klqL._SL160_.jpg

Sommaire:

* Quelques conventions de notation

* Progression pédagogique

* Introduction

* La cryptologie

* La sécurité locale

* PAM

* SELinux

* SSH

* PKI et SSl

* Kerberos

* Les pare-feu

* VPN

* Sécurisation des applications

* Audit

* Sécuriser un serveur

* Annexes

* Index

Je mettrais à jour cette page quand les tomes 4 et 5 seront publiés.

Catégories
Open-source Systeme

Toutes les expressions régulières sur une page A4

… enfin presque toutes… C’est sur le site AddedBytes que j’ai trouvé cet aide mémoire centralisant toutes les expressions régulières sur une simple page A4. Idéal pour les administrateurs Unix !

regular-expressions-cheat-sheet-v2.png

A imprimer et a garder sur vos bureaux !

Catégories
Open-source Systeme

Synchronisation de deux répertoires avec rsync

Rsync est un utilitaire présent sur tout les systèmes Unix (de Linux à FreeBSD en passant par Mac OS X et même sous Windows en passant par Cygwin) et ayant pour but la synchronisation de fichiers/répertoires. Cette synchronisation peut se faire soit de manière locale (par exemple deux répertoire d’un même disque) soit par le réseau (via le protocole SSH).

Un petit exemple valant mieux qu’un long discours…

Imaginons que l ‘on veuille synchroniser un répertoire (/home/nicolargo/src) avec un autre stocké sur une clés USB (/media/uskkey/dst).

Le répertoire src contient 3 fichiers:

ls /home/nicolargo/src

1

2

3

Le répertoire dst est vide:

ls /media/usbkey/dst

Pour synchroniser le répertoire dst avec le contenu du répertoire src, il faut saisir la commande suivant:

rsync –delete -av /home/nicolargo/src/ /media/usbkey/dst

Attention: mettre deux – avant le delete

building file list … done

./

1

2

3

wrote 231 bytes read 80 bytes 622.00 bytes/sec

total size is 0 speedup is 0.00

/home/nicolargo/src est le répertoire source.

/media/usbkey/dst est le répertoire destination.

L’option -a (pour archive) permet de garder les propriétés des fichiers (droits, propriétaire, lien symbolique) intactes. L’option -v (verbose) permet d’afficher ce que fait rsync pendant sont exécution.

Si vous souhaitez que rsync ne créé par un répertoire src dans le répertoire dst mais qu’il mette directement les fichiers contenus dans src, il faut penser à mettre un / à la fin du répertoire source.

On vérifie que le répertoire destination contient bien les 3 fichiers.

ls /media/usbkey/dst

1

2

3

Nous allons maintenant vérifier que la commande « delete » fonctionne correctement. L’option –delete (noté le double – avant la commande) permet de supprimer dans le répertoire destination les fichiers non présents dans le répertoire source.

Nous pouvons le tester simplement en supprimant le fichier 1 du répertoire source:

rm /home/nicolargo/src/1

Puis en re-synchronisant:

rsync –delete -av /home/nicolargo/src/ /media/usbkey/dst

Attention: mettre deux – avant le delete

building file list … done

deleting 1

./

wrote 104 bytes read 20 bytes 248.00 bytes/sec

total size is 0 speedup is 0.00

On vérifie que le répertoire destination contient seulement 2 fichiers.

ls /media/usbkey/dst

2

3

Quelques options utiles…

Rsync fourmille d’options (je vous laisse consulter le man page pour une liste exhaustive). Voici quelques options que je trouve utile de détailler.

Synchronisation à travers un tunnel SSH

Si votre répertoire destination se trouve sur une autre machine disposant d’un serveur SSH correctement configuré (nommé serveur dans mon exemple ci-dessous), il est possible de faire une synchronisation à travers le réseau grâce à la commande suivante:

rsync –delete  -avz -e ssh /home/nicolargo/src/ serveur:/home/nicolargo/dst

Attention: mettre deux – avant le delete

J’ai ici ajouté l’option -z afin de compresser les données avant de les envoyer dans le réseau.

Utilisation de Rsync comme d’un daemon

Il est possible de lancer Rsync en mode daemon en utilisant l’option –daemon. Dans ce cas, on peut se passer d’un serveur SSH. Le daemon écoutera (sur le port TCP/873) les requêtes de synchronisation venant de machine lancant Rsync en mode client (voir la syntaxe dans les chapitre précédant).

Vous trouverez un exemple de configuration de Rsync en mode daemon ici.

Exclure des fichiers de la synchronisation

Si l’on souhaite exclure certain fichier de la synchronisation, on peut utiliser l’option –exclude.

Exemple ou l’on souhaite synchroniser tous les fichiers sauf ceux ayant pour extension .log:

rsync –delete  -av –exclude « *.log » /home/nicolargo/src/ /media/usbkey/dst

Attention: mettre deux – avant le delete et le exclude

Et si je veux simuler

Très facile Simone, il suffit d’utiliser l’option -n. Utilisée avec l’option -v, on aura la liste des fichiers qui seront copiés ou effacés…

Pour finir…

Et voilà pour cette très courte introduction à ce précieux outils. Si vous utilisez ce logiciel et que vous avez des options intéressantes à expliquer, les commentaires sont fait pour ça 😉

Catégories
Open-source Systeme

La bible de FreeBSD

Si vous suivez régulièrement ce blog, vous savez tout le bien que je pense du système d’exploitation FreeBSD. C’est celui-ci que j’utilise sur mes serveurs critiques nécessitant des fonctions réseaux stables et performantes.

Sans rentrer dans un jeu de troll avec les « aficionados » d’autres systèmes d’exploitation, FreeBSD a un avantage que je trouve énorme pour un administrateur: la clarté de l’arborescence des fichiers de configuration. Un sentiment de propreté que je n’ai pas retrouvé sous GNU/Linux. Pour moi, le système d’information idéal, serait composé de serveur sous FreeBSD et de client sous GNU/Linux, on en est malheureusement encore loin dans la plupart des entreprises Françaises…

Mais revenons au but pricipal de ce billet qui est l’annonce de la publication d’un livre sur la dernière version de FreeBSD: « FreeBSD 7.0 Le guide complet de FreeBSD » aux éditions Broché.

51mbmb4lnzl_sl160_.jpg

C’est ce que l’on appelle une « bible » dans le jargon des bouquins techniques, un livre référence auquel on revient immanquablement. La structure du livre est à la fois adaptée à ceux qui ne connaissance pas encore les systèmes BSD et ceux qui l’utilise depuis de nombreuses années.

Peux de livre sont indispensables pour un administrateur réseau (la faute à Internet…), mais celui-ci en fait parti…

Catégories
Open-source Systeme

Ubuntu 8.10 est là (par P2P)

200810301559.jpg

Pour ne pas effondrer les serveurs de téléchargement, le plus simple est encore d’utiliser les serveurs P2P.

Zou, à vos Transmission !

Catégories
Open-source Reseau Systeme

Nagisk passe en version 1.1

Nagisk, le script Perl permettant de surveiller son serveur Asterisk à partir de Nagios passe en version 1.1.

Les nouveautés sont les suivantes:

  • supervision des cartes Zaptel connecté(s) au serveur
  • supervision des ports des cartes Zaptel

Toutes les infos (procedure d’installation/configuration) sont disponibles sur cette page.

Catégories
Open-source Systeme

apt-get à travers un proxy HTTP

Un petit mémo à usage interne…

Si, comme moi, vous avez besoin d’installer (ou de mettre à jours) une machine GNU/Linux en utilisant apt-get et que celle-ci se trouve sur un réseau qui force l’utilisation d’un proxy HTTP, il faut saisir la commande suivante (à adapter à votre réseau):

export http_proxy=http://login:password@adresseduproxy:portduproxy

Exemple pour un serveur proxy Squid sans authentification:

export http_proxy=http://proxy.free.fr:3128

Voili…

Catégories
Open-source Reseau Systeme

Durées et fréquences des checks Nagios

nagios_logo.pngPour surveiller votre réseau, Nagios utilise un certain nombre d’objets (machines, services, contacts…). Par défaut, un objet hérite une grande partie de ses paramètres du template nommé « generic-* ». Nous allons dans ce billet nous focaliser sur les notions de temps et de fréquences de ces objets.

Pour rappel, à un instant t, un objet peut avoir un des les états suivants:

  • OK: tout va bien, votre objet fonctionne correctement
  • WARNING: votre objet ne fonctionne pas nominalement
  • CRITICAL: votre objet ne fonctionne plus
  • UNKNOWN: impossible de déterminer l’état de votre objet

Un exemple: imaginons un service qui surveille la débit de votre liaison Internet…

  • OK: le débit est inférieure à 70% de la bande passante totale
  • WARNING: la débit est supérieure à 70% de la bande passante totale
  • CRITICAL: la liaison Internet est DOWN (plus de connectivité avec Internet)
  • UNKNOWN: impossible de récupérer les valeurs du débit

Définition de la période d’activité d’un objet

La variable check_period permet de définir l’intervalle de temps durant lequel l’objet est actif. On définie une période de temps en utilisant la structure timeperiod.

Par exemple pour définir une période de temps correspondant aux heures ouvrées de votre entreprise vous pouvez utiliser la définition suivante:

define timeperiod {

timeperiod_name workhours

alias Heures ouvrées

monday 09:00-18:00 ; Lundi

tuesday 09:00-18:00; Mardi

wednesday 09:00-18:00; Mercredi

thursday 09:00-18:00; Jeudi

Friday 09:00-18:00; Vendredi

}

La déclaration de cette période de temps dans notre objet (par exemple un service) se fera ainsi:

define service {

check_period workhours

}

Définition des intervalles de vérification d’un objet

Quand on se trouve dans une période d’activité d’un service, plusieurs paramètres rentrent en jeu pour fixer la durée et la fréquence des vérifications (checks) du objet en question.

Quand un objet est OK, il est vérifié toutes les check_interval minutes. Si il passe WARNING, CRITICAL ou UNKNOWN, il est alors vérifié max_check_attempts fois à un intervalle de retry_interval minutes. Si l’état de l’objet n’est pas revenu à OK au bout des max_check_attempts essais, l’intervalle de vérification redevient de check_interval minutes…

Je sais ce n’est pas très simple mais ce schéma devrait vous aider à comprendre.

nagios-check.jpg
Un exemple de paramètrage avec un valeur de check_interval (quand tout va bien) à 10 minutes puis un retry_interval (quand cela commence à aller mal) à 2 minutes et un nombre de max_check_attempts à 3:

define service {

check_interval 10

retry_interval 2

max_check_attempts 3

}

Et les notifications ?

Il existe des variables permettant de fixer comment les notifications sont remontés aux administrateurs.

La première variable est first_notification_delay. Elle permet de définir le temps (en secondes) que Nagios doit attendre avant d’envoyer une notification quand un objet passe d’un état OK à un état WARNING, CRITICAL ou UNKNOWN. Une valeur de 0 permet d’envoyer la notification dès ce changement d’état.

La variable notification_interval permet, en cas de problème sur un objet, de fixer l’intervalle de temps (en minutes) entre deux notifications. Pour que Nagios n’envoie qu’une seule fois une alerte, il faut fixer cette variable à 0.

Par exemple, pour que la première notification se fasse immédiatement, sans répétition, un objet doit être défini ainsi:

define service {

first_notification_delay 0

notification_interval 0

}

Conclusion

Comme on vient de le voir il est relativement facile de configurer finement les fréquences et durées de vérifications en fonction de l’importance des objets à surveiller.