mar 23

WebDAV (Web enabled Distributed Authoring and Versioning) , fournit un environnement partagé aux utilisateurs pour éditer/gérer leurs fichiers sur les serveurs Web. Techniquement, DAV est une extension du protocole http. Ca ressemble un peu beaucoup au FTP et est disponible sous les principales plateformes OS.

Installation

On suppose qu’Apache2 est déjà installé sur le système cible.

Il faut installer les modules dav qui sont fournis par Apache2 mais pas activés par défaut.
On les active en créant un lien symbolique vers /etc/apache2/mods-enabled

cd /etc/apache2/mods-enabled
n -s ../mods-available/dav* .

Configuration Apache2

On ajoute un virtualhost par exemple en modifiant le fichier/etc/apache2/sites-available/default.

<VirtualHost *:80>
ServerName wpub.mondomaine
ServerAlias wpub.mondomaine
ServerAdmin webmaster@mondomaine
DocumentRoot /var/www/wpub

<Directory /var/www/wpub>
Options Indexes FollowSymLinks
#AllowOverride All
AllowOverride AuthConfig
Order allow,deny
allow from all
DAV on
AuthName “Stockage WebDAV”
AuthType Basic
AuthUserFile /etc/apache2/htpasswd-webdav
Require valid-user
<Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
</Limit>
<LimitExcept GET>
Require valid-user
</LimitExcept>
</Directory>

</VirtualHost>

nov 27

Ayant voulu marquer mon indépendance vis à vis des paquets Débian et Ubuntu, j’ai décidé de prendre les versions tarball et de les compiler comme un grand.

Installation de nagios

$ adduser nagios

  • création du répertoire d’installation de nagios

$ mkdir /usr/local/nagios
$ chown nagios:nagios /usr/local/nagios

  • trouver le user apache

www-data pour les Débien et Ubuntu sinon tapez :

$ grep “^User” /etc/apache2/apache2.conf

  • création du groupe de commande

$ /usr/sbin/groupadd nagcmd

On ajoute à ce groupe les users www-data et nagios

$ /usr/sbin/usermod -G nagcmd www-data
$ /usr/sbin/usermod -G nagcmd nagios

  • installation via script

$ tar xzf nagios-version.tar.gz
$ cd nagios-version

$ ./configure –prefix=/usr/local/nagios –with-cgiurl=/nagios/cgi-bin –with-htmurl=/nagios/ –with-nagios-user=nagios –with-nagios-group=nagios –with-command-group=nagcmd

./configure –prefix=prefix –with-cgiurl=cgiurl –with-htmurl=htmurl –with-nagios-user=someuser –with-nagios-group=somegroup –with-command-group=cmdgroup

  • prefix : répertoire d’installation (par défaut /usr/local/nagios)
  • cgiurl : répertoire pour les accès CGI ( par défaut /nagios/cgi-bin). NE PAS METTRE DE / à la fin de l’url
  • htmurl : chemin pour accéder à l’interface d’administration WEB (par défaut /nagios/)
  • someuser : nom du user nagios (par défaut nagios)
  • somegroup : nom du groupe nagios (par défaut nagios)
  • cmdgroup : nom du groupe with the name of the group running the web server (par défault nagios, dans l’exemple actuel nagcmd).

Si tout se passe bien, vous devriez obtenir un message comme :

*** Configuration summary for nagios 2.9 04-10-2007 ***:

General Options:
————————-
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagcmd
Embedded Perl: no
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Lock file: ${prefix}/var/nagios.lock
Init directory: /etc/init.d
Host OS: linux-gnu

Web Interface Options:
————————
HTML URL: http://localhost/nagios//
CGI URL: http://localhost/nagios/cgi-bin/

  • $ make all

qui donne comme résultat

make install
- This installs the main program, CGIs, and HTML files

make install-init
- This installs the init script in /etc/init.d

make install-commandmode
- This installs and configures permissions on the
directory for holding the external command file

make install-config
- This installs *SAMPLE* config files in /usr/local/nagios/etc
You’ll have to modify these sample files before you can
use Nagios. Read the HTML documentation for more info
on doing this. Pay particular attention to the docs on
object configuration files, as they determine what/how
things get monitored!

  • $ make install

pour installer nagios, CGI et fichiers HTML

  • $ make install-init

pour installer script de démarrage dans /etc/init.d/

  • $ make install-commandmode

pour installer et configurer les autorisatiosn sur les commandes externes de nagios

  • $ make install-config

pour installer les fichiers de configuration.

Installation de nagios-plugins

voir mon précédent message convernant le plugins NRPE.

Configuration du serveur HTTP

Modification d’Apache

Il faut aller modifier le fichier de configuration d’apache (dans mon cas /etc/apache2/apache2.conf) et y ajouter les éléments suivants :

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user

Alias /nagios /usr/local/nagios/share


Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user

Création de l’accès sécurisé

Comme on a protégé l’accès à l’interface HTPP via un fichier .htaccess, il va falloir créer des users (stockés dans un fichier /usr/local/nagios/etc/htpasswd.users) autorisés à y accéder.

$ htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

pour créer le fichier /usr/local/nagios/etc/htpasswd.users qui sera utilisé pour l’authentification de notre fameux user nagiosadmin.

On relance apache et on prie fort !!
Si on tape sur un navigateur http://localhost/nagios/, on devrait arriver sur la fenêtre d’accès à Nagios.

Configuration de Nagios

Les fichiers de nagios sont installés par défaut dans /usr/local/nagios/.
Le répertoire etc/ contient les fichiers de configuration de nagios essentiels.
Si on a demandé l’installation des fichiers de configuration, on trouvera alors dans /usr/local/nagios/etc/ les fichiers de configuration avec l’extension ‘.sample’…..

Test de la configuration de nagios

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

Lancer le daemon nagios

$ /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

nov 27

Entre machine Linux, on peut se passer de Samba et y préférer NFS.

Installation

sur le poste serveur :

installation

$ apt-get install nfs-kernel-server portmap

Configuration

La configuration des répertoires exportables se fait dans le fichier /etc/exports

/ubuntu *(ro,sync,no_root_squash)
/home *(rw,sync,no_root_squash)

On peut remplacer * par un nom de hostname.

Démarrage du serveur NFS

$ /etc/init.d/nfs-kernel-server start

Sur le poste Client

La commande mount est utilisée pour cela.

$ sudo mount -t nfs example.hostname.com:/ubuntu /local/ubuntu

(A noter que le point de montage /local/ubuntu doit exister!)

Une alternative consiste à utiliser le fichier /etc/fstab file.
The general syntax for the line in /etc/fstab file is as follows:

example.hostname.com:/ubuntu /local/ubuntu nfs rsize=8192,wsize=8192,timeo=14,intr

nov 27

Si vous voulez jouer (avoir le droit d’écrire, et suppression) un peu avec les partitions ntfs, il vous suffit d’installer ntfs-3g ainsi que ntfs-config (utilitaire graphique qui permet d’activer ou désactiver) l’écriture sur les partitions ntfs.

sudo apt-get install ntfs-3g ntfs-config

J’ai testé la chose et n’ai rencontré pas de soucis jusqu’à maintenant.

nov 27

XDMCP permet une connexion X distante. C’est pas vraiment raisonnable d’utiliser cela en dehors d’un réseau sécurisé (au minimum un firewall).
Visiblement, on ne peut pas utiliser SSH pour crypter les connexions TCP et UDP de XDM (si j’ai bien compris, SSH ne gère pas nativement UDP).
XDMCP utilise le port UDP 177 et TCP le port 6000 .

Les configurations de XDMCP dependent du gestionnaire de fenêtre utilisé : gnome ou kde par exemple.

Pour KDE

Editez le fichier kdmrc situé normalement dans le répertoire /etc/kde3/kdm/.
Cherchez la section correspondante à Xdmcp

[Xdmcp]
Enable=true
Willing=/etc/kde3/kdm/Xwilling
Xaccess=/etc/kde3/kdm/Xaccess

avec par exemple pour le fichier /etc/kde3/kdm/Xaccess

192.168.1.15 CHOOSER BROADCAST
192.168.1.15

192.168.1.15 étant l’IP que j’autorise.

Pour Gnome

Editez le fichier gdm.conf sirué dans /etc/gdm.

[xdmcp]
Enable=true
MaxPending=4
MaxPendingIndirect=4
MaxSessions=16
MaxWait=15
MaxWaitIndirect=15
PingIntervalSeconds=15
Port=177

Si l’on veut sécuriser un peu, il va falloir ajouter les hotes autorisés dans le fichier /etc/hosts.allow.

Sous feisty, la version Desktop ne contient pas les fameux fichiers hosts.allow, hosts.deny,….. Il faut pour cela installer tcpd.

Le principe des fichiers hosts.allow et hosts.deny est le suivant :

  • Le premier fichier lu est hosts.allow, puis hosts.deny.
  • Si une requête est autorisée dans le fichier hosts.allow alors elle est acceptée, quelque soit le contenu du fichier hosts.deny.
  • Si une requête ne satisfait aucune règle, que ce soit dans hosts.allow ou hosts.deny alors elle est autorisée.

En un mot si vous ne mettez rien dans hosts.deny, alors vous n’avez rien fait.

Si l’on veut autoriser la machine dont l’ip est 192.168.1.15 à ouvrir des sessions distantes, on peut ecrire dans hosts.allow

gdm: 192.168.1.15

nov 27

NRPE est un mécanisme qui permet d’éxécuter des commandes locales sur la machine dite “monitorée” et d’envoyer ces résultats à NAGIOS.
Pour cela, il faut installer sur le poste à monitorer le “serveur” NRPE ainsi que les plugins Nagios qui vont s’éxécuter en local puis être transmis via TCP à la machine NAGIOS.

Installation sur la machine à monitorer

Comme j’ai eu pas mal de soucis avec les paquets debian, j’ai décidé de récupérer les sources et de les compiler.

Il faut en fait installer deux composants :

  • nrpe
  • nagios plugins

En préalable, il est judicieux de créer un user et groupe nagios.

Installation nagios plugins

Aller sur le site http://www.nagios.org/download/ et récupérer la dernière version de nagios-plugins. La dernière à ce jour est la 1.4.9.

on décompacte la bête via la commande :

$ tar xzf nagios-plugins-1.4.6.tar.gz
$ cd nagios-plugins-1.4.6
$ ./configure
$ make
$ make install

Normalement, si tout se passe bien, les plugins du type check_smtp sont installés…
Ils sont installés dans /usr/lib/nagios/plugins/.
Il faut modifier les autorisations comme sivant :

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

Installation NRPE

On récupère les sources de NRPE (2.8.1).
On décompacte tjs de la même façon :

$ tar xzf nrpe-2.8.1.tar.gz

$cd nrpe-2.8.1
$ ./configure –disable-ssl pour désactiver le support ssl

Ca doit donner un truc comme :

*** Configuration summary for nrpe 2.8.1 05-10-2007 ***:

General Options:
————————-
NRPE port: 5666
NRPE user: nagios
NRPE group: nagios
Nagios user: nagios
Nagios group: nagios

Ensuite,

$ make all
$ make install-plugin
$ make install-daemon
$ make install-daemon-config

Par defaut, nrpe se marrie bien avec inetd ou xinetd.
Nous allons donc installer Xinetd.
Installation de Xinetd

$ apt-get install xinetd

Configuration de xinetd pour nrpe

Les fichiers de configuration se trouve dans /etc/xinetd.d/.
On va donc y créer un fichier nommé nrpe qui sera comme suivant :

#default: on
# description: NRPE
service nrpe
{
flags = REUSE
socket_type = stream
wait = no
port = <port TCP nrpe>
user = nagios
group = nagios
server = <chemin d’acces à nrpe>
server_args = -c <chemin du fixhier de coinfig nrpe> -n –inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 <ip_nagios_machine>
}

avec par exemple :

  • <port TCP nrpe> : par défaut, 5666…Il est de bon ton de prendre un autre numéro de port surtout si on n’a pas active le support ssl
  • <chemin d’acces à nrpe> : /usr/local/nagios/bin/nrpe
  • <chemin du fixhier de coinfig nrpe>: /etc/nagios/nrpe.cfg
  • <ip_nagios_machine> : ip de la machine hebergeant Nagios

On relance Xinetd via :

/etc/init.d/xinetd restart

installation directe dans /etc/init.d/

On peut se passer de Xinetd pour lancer automatiquement au démarrage de la machine le fameux nrpe.
Pour cela, il faut créer un fichier, par exemple nrpe dans le répertoire /etc/init.d/.
Les droits dont du genre 755 avec comme user/groupe : root/root

Ce fichier ressemble à

#! /bin/sh
#

### BEGIN INIT INFO
# Provides: nagios-nrpe-server
# Required-Start: $local_fs $remote_fs $syslog $named $network $time
# Required-Stop: $local_fs $remote_fs $syslog $named $network
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/Stop the Nagios remote plugin execution daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nagios/bin/nrpe
NAME=nrpe
DESC=nrpe
CONFIG=/usr/local/nagios/etc/nrpe.cfg

test -x $DAEMON || exit 0

if ! [ -x "/lib/lsb/init-functions" ]; then
. /lib/lsb/init-functions
else
echo “E: /lib/lsb/init-functions not found, lsb-base (>= 3.0-6) needed”
exit 1
fi

# Include nagios-nrpe defaults if available
if [ -f /etc/default/nagios-nrpe-server ] ; then
. /etc/default/nagios-nrpe-server
fi
# we also used to include this file, so if it’s there
# we include it as well
if [ -f /etc/default/nagios-nrpe ]; then
. /etc/default/nagios-nrpe
fi
if [ "$NICENESS" ]; then NICENESS=”-n $NICENESS”; fi

set -e

case “$1″ in
start)
log_daemon_msg “Starting $DESC” “$NAME”
start_daemon $NICENESS $DAEMON -n -c $CONFIG -d $DAEMON_OPTS
log_end_msg $?
;;
stop)
log_daemon_msg “Stopping $DESC” “$NAME”
start-stop-daemon –stop –quiet –oknodo –exec $DAEMON
log_end_msg $?
;;
reload|force-reload)
log_daemon_msg “Reloading $DESC configuration files” “$NAME”
start-stop-daemon –stop –signal HUP –quiet –exec $DAEMON
log_end_msg $?
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
log_failure_msg “Usage: $N {start|stop|restart|reload|force-reload}”
exit 1
;;
esac

exit 0

Il suffit ensuite, après avoir testé le script /etc/init.d/nrpe, automatiser son démarrage avec celui de la machine.

update-rc.d nrpe defaults 99

defaults utilise les paramètres par défaut, et 99 sert à indiquer que ce service démarrera après tous les autres……

Test du fonctionnement en local

On doit aussi ajouter le service nrpe/tcp dans le fichier /etc/services.
On edite ce fichier et on y ajoute nrpe

nrpe 5666/tcp

On verifie que le daemon NRPE tourne en regardant le résultat de la commande

$ netstat -at | grep nrpe

Ca doit donner :

tcp 0 0 *:nrpe *:* LISTEN

Ca montre que le daemon est bien en action !!

Puisqu’on a installer le fameux chek_nrpe (issue de la ligne de commande make install-plugin) pour tester la configuration en local, on va lancer :

$ /usr/local/nagios/libexec/check_nrpe -H localhost

qui doit nous retourner du genre

NRPE v2.8.1

Si tout ca est bon, alors, il ne reste plus qu’à autoriser le port tcp/5666 entre les deux machines si présence de firewall : la machine nagios et le machine à monitorée (celle sur laquelle on a installer less éléments précédents).

Configuration de nrpe.local

Il se trouve chez moi dans /etc/nagios/nrpe.cfg

# PID FILE
pid_file=/var/run/nrpe.pid

# PORT NUMBER
server_port=5666

# SERVER ADDRESS
server_address=<ip machin nagios>

# NRPE USER
nrpe_user=nagios
nrpe_group=nagios

# ALLOWED HOST ADDRESSES
allowed_hosts=127.0.0.1,<ip machine nagios>

# Values: 0=do not allow arguments, 1=allow command arguments
dont_blame_nrpe=0

# DEBUGGING OPTION
# Values: 0=debugging off, 1=debugging on
debug=1

command_timeout=60

# COMMAND DEFINITIONS
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_disk1]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hda1
command[check_disk2]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hdb1
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200

# local configuration:
# if you’d prefer, you can instead place directives here
include=/etc/nagios/nrpe_local.cfg

C’est dans la zone #COMMAND DEFINITIONS que l’on va pouvoir mettre nos petites fonctions comme ci dessous si l’on veut vérifier par exemple les mises à jour disponibles :

command[check_apt]=/usr/lib/nagios/plugins/check_apt

Configuration de la machine Nagios

Sur la machine Nagios, comme on suppose que celui-ci est deja installé, il ne nous reste qu’à installer le fameux check_nrpe qui se trouve dans les sources de nrpe comme décrit plus haut.

$ tar xzf nrpe-2.8.1.tar.gz
$ cd nrpe-2.8.1
$ ./configure
$ make all
$ make install-plugin

On teste l’installation en local via la commande :

$ /usr/local/nagios/libexec/check_nrpe -H localhost

Maintenant, on teste la connexion avec la machine à monitorer :

$ /usr/lib/nagios/plugins/check_nrpe -H -n -p

-c -t 100

__Remarque :__
* le “-n” correspond à la non activation des supports SSL.
* le ‘t 100′ est le temps de temporisation (par defaut, 10).

Si tout marche alors, il ne reste plus qu’à créer les commandes spécifiques pour que la machine à monitorer par Nagios.

Les fichiers de configuration pour Nagios 2 sur ma bécane sont dans /etc/nagios2/
Le fichier nagios.cfg contient notamment une entrée pour cfg_dir qui spécifie le répertoire des fichiers de configuration.

exemple : cfg_dir=/etc/nagios2/maconfamoi.

C’est dans ce répertoire que je vais coller les fichiers spécifiques à ma machine à monitorer.

nov 25

Il est possible de lancer des applications X distantes à travers un tunnel SSH

Il suffit de lancer depuis un terminal X la commande de connexion SSH à un host distant du style ssh user@monserveur-distant.
ensuite, on lance par exemple xterm& et une fenêtre apparait alors….

Facile

Sur le poste client, il faut aller modifier le fichier /etc/ssh/ssh_config de façon à authoriser le ForwardX11.
Il suffit de mettre

ForwardX11 yes.

On relance le serveur ssh et le tour est joué…

nov 25

Quand on veut installer des paquets “testing” sur une distribution Debian “stable” par exemple, on peut utiliser la technique “package pinning” avec APT sans mettre tous les paquets en “testing”.

Une des utilités est de pouvoir remplacer certains paquets par la version disponible dans une autre release. On peut aussi remplacer certains paquets officiels par d’autres non officiels, sans pour autant casser toutes les dépendances de la distribution.
Le principe repose sur un ordre de priorité que l’on donne aux differents paquets.

Tout se joue dans le fichier /etc/apt/preferences

Mixer plusieurs distributions

Dans notre exemple, on va donner priorité la plus haute aux paquets de la “Stable” comme ci-dessous.

# Tous les paquets de la cible testing ont une priorité de 200
# le a=testing est là pour dire à apt quelle archive utiliser
Package: *
Pin: release a=testing
Pin-Priority: 300

# Les paquets de la cible stable reste avec un priorité supérieure, pour
# éviter que les paquets de testing remplacent tous ceux de stable.
Package: *
Pin: release a=stable
Pin-Priority: 900

Si l’on veut installer un paquet de la “testing”, on devra alors lancer la commande apt :

apt-get install -t testing monpaquet

Remplacer certains paquets

J’ai besoin pour une application spécifique (par exemple nagios-nrpe-server), d’utiliser les paquets de la “testing” en place de ceux de la “stable”.

# Tous les paquets de la cible testing ont une priorité de 200
# le a=testing est là pour dire à apt quelle archive utiliser
Package: *
Pin: release a=testing
Pin-Priority: 300

# Les paquets de la cible stable reste avec un priorité supérieure, pour
# éviter que les paquets de testing remplacent tous ceux de stable.
Package: *
Pin: release a=stable
Pin-Priority: 900
#
# Paquets speciaux forcés sur testing
Package: nagios-nrpe-server
Pin: release a=testing
Pin-Priority: 991

Pour installer ce fameux nagios-nrpe-serve, plus besoin de spécifier “-t testing” à la commande apt, il suffit de faire classiquement :

apt-get install nagios-nrpe-server

nov 25

Il suffit d’éditer le fichier /etc/apt/apt.conf et de lui ajouter ces lignes magiques :

APT::Periodic::Update-Package-Lists “1″;
APT::Periodic::Download-Upgradeable-Packages “0″;
APT::Periodic::AutocleanInterval “0″;
APT::Periodic::Unattended-Upgrade “0″;

Ca automatise les update des listes des sources d’Apt.

nov 25

commande pour effacer fichiers + vieux de 15jours

find mon-repertoire/ -ctime +15 -exec rm -fr {} \;

Attention cette fonction est récursive