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 Web

Notifications Twitter pour Nagios

Mise à jour:
Une nouvelle version de ce billet est disponible ici

Il n’existe pas de limite pour améliorer Nagios, l’outil de supervision open-source. Au niveau des notifications (messages envoyés sur des alertes), il est possible d’utiliser les mails, les SMS, les messageries instantanées… (je vous conseille la lecture du très bon livre « Nagios au coeur de la supervision opensource » sur le sujet).

Nous allons dans ce billet apporter une pincée de Web 2.0 dans cet édifice en proposant une notification via Twitter.

Les avantages de cette solution:

  • facilité de consultation des notifcations à partir du Web et/ou de n’importe quel client Twitter
  • facilité du partage des notifications entre administrateurs (il suffit de s’abonner au Twitter en question)
  • les messages Twitter sont bien adapté aux notifications Nagios (messages courts, possibilité de lien hypertexte vers le serveur Nagios….)

Les inconveniants:

  • disponibilité du service Twitter (c’est pas son fort…)
  • confidentialité (bien que l’on puisse rendre son Twitter privé)

Avant de commencer…

Il faut bien sûr avoir un compte Twitter dédié pour ce besoin. Vous pouvez le créer en vous rendant sur cette page.

A ce stade et avant de continuer, assurez-vous que vous avez bien noté votre login et password Twitter.

Configuration de Nagios

On doit éditer le fichier de commandes (/usr/local/nagios/etc/objects/commands.cfg) et y ajouter la section suivante:

define command {
command_name twit-it
command_line /usr/bin/curl –connect-timeout 30 –max-time 60 -u YOUR_TWITTER_BOT_USER:YOUR_TWITTER_BOT_PASSWORD -d status= »$SERVICEDESC$@$HOSTNAME$ is $SERVICESTATE$ ** $SERVICEOUTPUT$ ** Date: $SHORTDATETIME$ » http://twitter.com/statuses/update.xml
}

PS: notez bien qu’il y a deux – avant

Ensuite, il faut modifier un des champs suivants dans la section contact du fichier /usr/local/nagios/etc/objects/templates.cfg:

service_notification_commands twit-it

ou

host_notification_commands alarma-twitter

On teste le tout

Il ne reste plus qu’a tester vos fichiers de configuration:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

et à relancer Nagios:

service nagios restart

ou

/etc/init.d/nagios restart

A chaque notification, un nouveau message devrait apparaître dans votre Twitter 😉

Catégories
Open-source

Actualité open-source de la semaine #41

L’actualité open-source de la semaine…

L’image de la semaine

framabook2-ubuntu-810-medium.png

Nouvelle version du Framabook « Simple comme Ubuntu »
à télécharger librement ici

Tout le monde en parle, sauf moi…

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

  • GNU/Linux 87.8% vs Windows 5%: c’est le TOP 500 du dernier classement des calculateurs (HPC).
  • OpenCL ou comment faire abstraction du matériel quand vous développez. Cette couche sera sûrement intégrée sur la prochaine version de Mac OS X (Snow Leopard).
  • Thunderbird, le client de messagerie open-source passe en version 2.0.0.18 (le retour de la vengeance du petit fils).
  • Webkit bon élève dans la classe des navigateurs Smartphone (et paf IE…).

Autres choses ?

Catégories
Image Open-source

Ajouter un reflet à un logo avec GIMP

Voici un petit tutorial Gimp permettant de réaliser un logo avec un reflet style Cover Flow de iTunes.

Tout d’abord, ouvrir le fichier dans The Gimp (nous prenons ici le logo du blog de Nicolargo).

Pour réaliser ce reflet, nous allons tout d’abord doubler la hauteur de l’image. Pour cela,

  • aller dans le menu Image / Taille du canevas

  • décocher le lien qui permet de garder les proportions (le maillon de chaine situé entre la longueur et la hauteur de l’image) et doubler la valeur de la hauteur (ici on passe de 47 à 94)

Dans la palette des calques, dupliquer l’arrière plan (ou le calque souhaité):

  • sélectionner le calque
  • aller dans le menu Calque / Dupliquer le calque
  • renommer ce nouveau calque en « Reflet« 

  • sélectionner le calque « Reflet »
  • aller dans le menu Calque / Transformer / Miroir vertical
  • déplacer le calque « Reflet » en dessous du calque principal en sélectionnant l’outil de déplacement (touche M) et en utilisant la souris ou les flèches du clavier.

Désormais, il ne reste plus qu’a créer l’effet de reflet sur ce calque. Pour cela, nous allons utiliser un Masque de Calque.

Un masque de calque sert à masquer certaines zones du calque à l’aide d’un outil de remplissage quelconque (pinceau, crayon, pot de peinture, etc.). Le fait de peindre une zone en noir sur ce masque va masquer cette zone sur le calque (et donc la rendre transparente). La couleur blanche rend la zone dessinée opaque et les niveaux de gris permettent de la rendre plus ou moins transparente.

Vérifier que le calque « Reflet » est bien sélectionné, puis aller dans le menu Calque / Masque / Ajouter un masque de calque. Dans la boite de dialogue, sélectionner « Blanc (opacité complète)« .

Si vous regardez la palette des calques, vous verrez que le calque « Reflet » possède une deuxième vignette : c’est le masque, qui est blanc pour le moment. Vous pouvez a tout moment décider de dessiner sur le calque ou sur son masque en cliquant sur la vignette appropriée.

  • sélectionnez le masque (il doit alors être entouré d’une bordure blanche) puis, à l’aide de l’outil dégradé (touche L), dessinez un dégradé vertical blanc->noir (le blanc étant en haut et le noir en bas)
  • ajuster l’opacité du claque de reflet si nécessaire

  • pour avoir un aperçu du résultat, mettre un calque de fond (noir ou blanc)

Et voilà !

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

Actualité open-source de la semaine #40

L’actualité open-source de la semaine…

L’image de la semaine


O’Reilly de retour ? Une bonne nouvelle pour le libre !

Tout le monde en parle, sauf moi…

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

Autres choses ?

Catégories
Open-source Web

Installation de Liferay sous GNU/Linux

Le but est d’installer le portail Liferay sous un système GNU/Linux. La distribution retenue est une Ubuntu Server 8.10 10.04 mais la procédure suivante devrait être valable pour d’autres systèmes Linux et BSD aux locations des fichiers de configurations près.

Liferay - Liferay Portal.jpg

Installation du système d’exploitation GNU/Linux

Je suis partie sur une installation standard en mode texte. Les modules serveurs à installer sont les suivants:

  • Serveur SSH (pour l’administration à distance)
  • Java (JRE) 1.6 ou supérieure (installé par défaut sous Ubuntu)

Une fois le serveur installé, on peut entrer dans le vif du sujet avec l’installation de Liferay. Pour la suite de ce billet, je me suis basé sur le livre « Portal Administrator’s Guide » disponible au format PDF en anglais PDF (ici pour la version 5.2).

Installation de Liferay

On commence par récupérer la dernière version de Liferay sur le site officiel. Dans notre cas, il faut récupérer l’archive nommé « Bundled with Tomcat 6.0 ». Cette version inclue Liferay + Apache + Tomcat 6.0 + BD interne.

cd /usr/src

wget http://sourceforge.net/projects/lportal/files/Liferay%20Portal/liferay-portal-tomcat-6.0-5.2.3.zip

cd /opt

unzip /usr/src/liferay-portal-tomcat-6.0-5.2.3.zip

L’ensemble des fichiers se trouvent donc dans le répertoire /opt/liferay-portal-tomcat-6.0-5.2.3. Nous allons créer un lien symbolique vers le répertoire /opt/liferay afin de simplifier les choses et facilité les prochaines migrations.

ln -s liferay-portal-5.2.3 liferay

ln -s tomcat-6.0.18 liferay/tomcat

Premier lancement de Liferay

On peut alors lancer Liferay, pour cela on utilise la séquence suivante:

cd /opt/liferay/tomcat

./bin/startup.sh && tail -f ./logs/catalina.out

Si tout est ok, vous devriez voir s’afficher la page (http://adresseipduserveur:8080):

liferay.com - Welcome.jpg

Vous pouvez utiliser le login/password suivant:

Login: test@liferay.com

Password: test

Pour une rapide introduction des fonctions de Liferay, vous pouvez lire ce billet.

Si vous souhaitez arrêter Liferay, il faut utiliser les commandes suivantes:

cd /opt/liferay/tomcat

./bin/shutdown.sh

Automatiser le lancement de Liferay

Si vous souhaitez lancer Liferay sur le port découte Web standard (TCP port 80), il faut d’abord être sûr qu’un autre serveur Web ne tourne pas. Par exemple pour empêcher Apache de se lancer au démarrage d’un système GNU/Linux Ubuntu, il faut saisir les commandes:

apache2ctl stop

update-rc.d -f apache2 remove

update-rc.d apache2 stop 80 0 1 2 3 4 5 6 .

Configurer Liferay pour écouter sur le port TCP/80. Il faut éditer le fichier /opt/liferay/conf/server.xml et changer toutes les occurences 8080 par 80.

Plusieurs solutions sont alors possibles pour automatiser le lancement du bundle Liferay lors du démarrage du système GNU/Linux Ubuntu. Personnellement, je modifie le fichier /etc/rc.local pour lui ajouter la ligne suivante:

export JAVA_HOME=/usr/lib/jvm/default-java && PATH=$JAVA_HOME/bin:$PATH && cd /opt/liferay/tomcat/bin && ./startup.sh

et le rendre executable:

chmod 744 /etc/rc.local

Il ne reste plus qu’a relancer notre serveur Liferay:

./bin/shutdown.sh

./bin/startup.sh

Puis à vérifier que le serveur Tomcat répond bien aux requêtes HTTP sur le port 80: http://adresseipduserveur

Sécuriser les connections

A ce stade de l’installation, vous devriez disposer d’un serveur Liferay opérationnel répondant aux requêtes HTTP arrivant sur son port TCP/80. C’est déjà bien mais on peut mieux faire. Par exemple en sécurisant la connexion client serveur dans un tunnel SSL (HTTPs).

Pour cela, nous allons configurer le serveur Tomcat pour répondre seulement aux requêtes HTTPs et rediriger les requêtes HTTP vers HTTPs. Pour cet exemple, nous utiliserons un certificat que nous allons généré nous même (le navigateur Web va sûrement râler la première fois que vous allez accéder à votre portail), pour un serveur en production, il faudra utiliser un certificat généré par une autorité compétente (par exemple chez VeriSign).

Génération de la clés SSL

Nous allons générer une clés qui sera stocké dans le répertoire /opt/liferay/tomcat/webapps/keystore.key:

/usr/lib/jvm/default-java/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /opt/liferay/tomcat/webapps/keystore.key

Je vous laisse répondre aux questions que keytool va vous poser (bien noter votremotdepasse).

Configuration du serveur Tomcat 6 pour la prise en compte du SSL

Il faut éditer le fichier ./conf/server.xml et remplacer la bonne section SSL (qui doit être commenté par défaut) par:

<Connector port=”443″

maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″

enableLookups=”false” disableUploadTimeout=”true”

acceptCount=”100″ debug=”0″ scheme=”https” secure=”true”

clientAuth=”false” sslProtocol=”TLS”

keystoreFile=”/opt/liferay/tomcat/webapps/keystore.key”

keystorePass=”votremotdepasse” />

Configuration du serveur Liferay pour la prise en compte du SSL

On ajoute la section suivante au fichier ./conf/web.xml (avant le tag </web-app>):

<security-constraint>

<web-resource-collection>

<web-resource-name>securedapp</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

Il ne reste plus qu’a relancer notre serveur Liferay:

./bin/shutdown.sh

./bin/startup.sh

Puis à vérifier que le serveur Tomcat répond bien aux requêtes HTTPs: https://adresseipduserveur

Utilisation du JRE SUN

A l’utilisation, j’ai remarqué une certaine instabilité de la JRE (openjava) fournie avec Ubuntu. J’ai donc remplacé la JRE par celle de SUN:

sudo apt-get install sun-java6-jre

cd /etc/alternatives/

mv java java.default

ln -s /usr/lib/jvm/java-6-sun/jre/bin/java java

cd /usr/lib/jvm

mv default-java default-java.default

ln -s default-java java-6-sun

Et voili (ne pas oublier de redémarrer Liferay après ces menues manipulations).

Conclusion

Votre portail Liferay est maintenant opérationnel, il ne reste plus qu’a le configurer pour qu’il répondre à vos besoins. Pour cela, je vous laisse lire ce PDF (en Anglais), qui est le « quick start guide » du portail.

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 😉