Category: GNU/Linux

Nagios, Nconf e Nrpe su Debian/Ubuntu parte 3/3

Configurazione NRPE

Configurazione nella macchina remota:
Creare un nuovo utente nagios e assegnare una password.
/usr/sbin/useradd nagios
passwd nagios

Download e estrai nagios plugins
wget https://www.nagios-plugins.org/download/nagios-plugins-1.5.tar.gz

apt-get install libssl-dev
tar zxvf nagios-plugins-1.5.tar.gz
cd nagios-plugins-1.5

Compila e installa il plugins.
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

I permessi al plugin hanno bisogno di essere fixati, quindi eseguire questi comandi.
chown nagios.nagios /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios/libexec

Installa il demone NRPE come servizio su xinetd.
apt-get install xinetd

wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
tar zxvf nrpe-2.15.tar.gz
cd nrpe-2.15

./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/i386-linux-gnu/
make all

Per gli utenti 64bit:
ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/libssl.so
./configure
make all

Installa il plugin NRPE (per testare), daemon, e gli esempi del file daemon config.
make install-plugin
make install-daemon
make install-daemon-config

Installa il servizio NRPE daemon su xinetd.
make install-xinetd

Edita il file /etc/xinetd.d/nrpe e aggiungi l'indirizzo IP del server dove è installato Nagios nella sezione only_from.
only_from = 127.0.0.1 <nagios_ip_address>

Salva ed esci
:wq

Aggiungi questa riga per il daemon NRPE sul file /etc/services
nrpe 5666/tcp # NRPE

Salva ed esci
:wq

Riavvia il servizio xinetd
service xinetd restart

Test NRPE localmente
Assicurarsi che NRPE daemon sia funzionante sotto xinetd
netstat -at | grep nrpe

L'output dovrebbe essere qualcosa del genere:
tcp 0 0 *:nrpe *:* LISTEN

Configuration in Nagios Machine:
Installa NRPE plugin nella macchina dove si trova nagios
wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
tar zxvf nrpe-2.15.tar.gz
cd nrpe-2.15

./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/i386-linux-gnu/
make all
make install-plugin

per gli utenti 64bit:
ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/libssl.so
./configure
make all
make install-plugin

Provare la comunicazione tra la macchina host e la macchina remota.
/usr/local/nagios/libexec/check_nrpe -H <ip_address_remote_machine>

L'output visualizzato dovrebbe essere tipo questo:
NRPE v2.15

Configurare Nconf con i comandi NRPE (alcuni di essi)
Nel file /usr/local/nagios/etc/nrpe.cfg è possibile vedere queste linee:

#Check current users
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10      

#Current Load
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20

#Root Partition
command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1

#Zombie Processes
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z

#Total Processes
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

#Swap Usage
command[check_remote_swap]=/usr/local/nagios/libexec/check_swap -w 70% -c 90%

Prima di usare check_disk assicurarsi du avere il giusto percorso di /dev/xxx come nell'esempio:

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       109G   18G   86G  17% /

Configurare Nconf per usare NRPE:
Nel menù Nconf cliccare su ADD nell'opzione checkcommands e scrivere

:

check command name: check_users
default service name: Check Users
check command line: $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_users

Default service template: generic_service

Poi cliccare su submit.

Ora il comando è pronto per essere aggiunto come servizio in una delle macchine da monitorare.

 

Nagios, Nconf e Nrpe su Debian/Ubuntu parte 2/3

Passiamo all'installazione e configurazione di nconf 1.3.0

spostarti sulla directory /var/www

cd /var/www
wget http://sourceforge.net/projects/nconf/files/nconf/1.3.0-0/nconf-1.3.0-0.tgz
tar zxvf nconf-1.3.0-0.tgz

cd /var/www/nconf
chmod 777 config/
chmod 777 output/
chmod 777 static_cfg/
chmod 777 temp/

ora dal browser digitare:

http://indirizzo_ip/nconf

Iniziare la configurazione di Nconf

inserire i dati del database

Path di Nconf: /var/www/nconf

path di Nagios: /usr/local/nagios/bin/nagios

per una maggiore sicurezza abilitate auth_enabled ed inserite una password.

Prima di cliccare su finish eliminare di seguenti files:

rm -rf INSTALL
rm -rf UPDATE
rm INSTALL.php
rm UPDATE.php

ora non resta che cliccare su finish ad inserire username e password
username: admin
password: quella che avete scelto

Bug: anche nconf ha un bug. Per risorverlo da questo website scaricate la patch:
http://forum.nconf.org/viewtopic.php?f=17&t=872#p3050

nconf-1.3.0-0_not_used_advanced_services_wont_be_written.patch.zip

unzip nconf-1.3.0-0_not_used_advanced_services_wont_be_written.patch.zip
cp nconf-1.3.0-0_not_used_advanced_services_wont_be_written.patch /var/www/nconf
patch -p0 --verbose < nconf-1.3.0-0_not_used_advanced_services_wont_be_written.patch

Hmm…  Looks like a unified diff to me…
The text leading up to this was:
————————–
|— bin/lib/NConf/ExportNagios.pm.orig    2011-12-24 13:57:38.620626845 +0100
|+++ bin/lib/NConf/ExportNagios.pm    2011-12-24 14:02:16.870751718 +0100
————————–
Patching file bin/lib/NConf/ExportNagios.pm using Plan A…
Hunk #1 succeeded at 1014.
Hunk #2 succeeded at 1078.
Hunk #3 succeeded at 1111.
done

ora copiare nagios.cfg in /var/www/nconf/static_cfg
prima creare una copia di backup di nagios.cfg

cp /usr/local/nagios/etc/nagios.cfg /usr/local/nagios/etc/nagios.cfg.orig
cp /usr/local/nagios/etc/nagios.cfg /var/www/nconf/static_cfg/

editare il file nconf.cfg in /var/www/nconf/static_cfg
vim nagios.cfg

commentare tutti i cfg_file e cfg_dir ed inserire questi:

cfg_dir=/usr/local/nagios/etc/global
cfg_dir=/usr/local/nagios/etc/Default_collector

salvare ed uscire:
:wq

Ora impostare i permessi su etc e nagios.log
chmod 777 /usr/local/nagios/var/nagios.log
chmod -R 777 /usr/local/nagios/etc/

altro bug di nconf:

Aggiungere la riga "define('CHECK_STATIC_SYNTAX', 0);" al file /config/nconf.php

salvare ed uscire:
:wq

poi copiare i loghi delle immagini:

cp -R /var/www/nconf/img /usr/local/nagios/share/images

Configurare il Deploy automatico su nagios:

aprire il file /var/www/nconf/config/deployment.ini
modificare le seguenti linee come scritto qui:

vim /var/www/nconf/config/deployment.ini

;; LOCAL deployment ;;

[extract config]
type        = local
source_file = "/var/www/nconf/output/NagiosConfig.tgz"
target_file = "/tmp/"
action      = extract

[copy collector config]
type        = local
source_file = "/tmp/Default_collector/"
target_file = "/usr/local/nagios/etc/Default_collector/"
action      = copy

[copy global config]
type        = local
source_file = "/tmp/global/"
target_file = "/usr/local/nagios/etc/global/"
action      = copy

[copy nagios.cfg]
type        = local
source_file = "/tmp/static_cfg/nagios.cfg"
target_file = "/usr/local/nagios/etc/nagios.cfg"
action      = copy
reload_command = "echo password | sudo /etc/init.d/nagios reload"

Salvare ed uscire:
:wq

il reload di nagios deve essere fatto da super utente, quindi la mia soluzione prevede  "echo password | sudo /etc/init.d/nagios reload"

Ora Nconf è configurato per interagire con Nagios.

Nagios, Nconf e Nrpe su Debian/Ubuntu parte 1/3

Environment:
Unico requisito per questa guida è avere una debian oppure ubuntu

Installare i pacchetti necessari:
apt-get install wget build-essential apache2 php5-gd wget libgd2-xpm libgd2-xpm-dev libapache2-mod-php5

scaricare nagios e plugin:

wget http://sourceforge.net/projects/nagios/files/nagios-4.x/nagios-4.0.1/nagios-4.0.1.tar.gz
# wget https://www.nagios-plugins.org/download/nagios-plugins-1.5.tar.gz

cd nagios-4.0.1
useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios

tar zxvf nagios-4.0.1.tar.gz

attenzione: questa versione di nagios (4.0.1) ha un bug nella sezione map (statusmap.c). Per risolverlo scaricare la seguente patch e installarla

prima di inziare l'intallazione di nagios.

Scaricare la patch da questo link:
http://tracker.nagios.org/view.php?id=470

prelevare il file: nagios-4-statusmap-2.patch

Per applicare la patch eseguire questo comando:

patch -p0 --verbose < nome_patch

la patch corregge 2 files:
directory_nagios/cgi/statusmap.c
directory_nagios/common/objects.c

Anche se la patch è per la versione 4.0.0, funziona anche per la 4.0.1.
Quando si riceve un errore di percorso, inserite manualmente il path dei sorgenti di nagios.

Dopo applicata la patch provvediamo alla configurazione e installazione di nagios:

cd nagios-4.0.1

./configure --with-nagios-group=nagios --with-command-group=nagcmd --with-mail=/usr/bin/sendmail

make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf

cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Altro bug in nagios e precisamente in /etc/init.d/nagios
bisogna cambiare tutto il file con un codice "hack".
scaricate il codice da questo sito e copiatelo al posto di /etc/init.d/nagios
http://support.nagios.com/forum/viewtopic.php?f=7&t=12038&start=20#p64091

Installare daemon
apt-get install daemon

ora è possibile avviare nagios

/etc/init.d/nagios start

ora creiamo l'user per nagios:

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

Passiamo al plugin:

apt-get install libssl-dev

tar zxvf nagios-plugins-1.5.tar.gz

cd nagios-plugins-1.5

./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install

ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Ora se tutto è andato bene dovreste avere il vostro nagios funzionante sul browser:

http://<your.nagios.server.ip>/nagios


SSH e SCP senza password

Questa è la procedura da eseguire per connettere via ssh o eseguire scp serverA e serverB senza inserire la password

Avviso:
Non sono responsabile di danneggiamenti di alcun genere. Se seguite questa guida è a vostro rischio e pericolo.

ServerA
Per prima cosa bisogna generare le chiavi pubbliche e private
ATTENZIONE! Assicurarsi di non avere già le chiavi altrimenti verranno sostituite con quelle nuove. Controllare la loro presenza in /root/.ssh/

Generazione della chiave:

root@kali:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): (premere invio)
Enter same passphrase again: (premere invio)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
77:c2:b2:59:7e:48:e1:bd:a9:c8:24:eb:ec:9a:18:2e root@kali
The key's randomart image is:

+–[ RSA 2048]—-+
|                 |
|                 |
|          .      |
|         o o     |
|        S B o    |
|         O + o   |
|  .   . + o +    |
|E. o o = . o     |
| .o o+= o .      |
+—————–+

La chiave pubblica RSA è contenuta nel file /root/.ssh/id_rsa.pub

root@kali:~# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCRlQnl7KMpOviNWRf9ckQWeCx59nUpc3kiZMkd9aaAMRZaVmA8BYs3UvZRvLr7fcxKAyZPWLvSEbV5YiQqkwq7/mgpnG7UsVLjxG5q00UF/QrqT97Mzo4w1WX+6kTtPIaJwqyjXRb+dn3E8NhKuAGwyTVz5CB3zoa7NiWBG/f+c8gtAeJXreABAn3biv3FJkCFVfQLBFWT90a/C3Da9qoRhqUlYqwn06NCrlsG1zzDy0ag5V7cxIkrRrEFiLTS/fsdSqEqmBCZGI2enSZYhmaCG11p5n0HMnjizPC3BxVEcD7UrZn5CizkVw0FqXCe54b4WLtFPfjR4Mu2th1hyCr root@kali

copiare la chiave begli appunti.

ServerB
Loggarsi al ServerB come root e copiare la chiave pubblica RSA del ServerA nel file /root/.ssh/authorized_keys del serverB.

root@serverB:~# vi /root/.ssh/authorized_keys
incollare la chiave pubblica in questo file. Se esiste un'altra chiave allora copiatela nella linea successiva.

Questo è un esempio di come il file authorized_keys dovrebbe essere:
root@serverB:~# cat /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCRlQnl7KMpOviNWRf9ckQWeCx59nUpc3kiZMkd9aaAMRZaVmA8BYs3UvZRvLr7fcxKAyZPWLvSEbV5YiQqkwq7/mgpnG7UsVLjxG5q00UF/QrqT97Mzo4w1WX+6kTtPIaJwqyjXRb+dn3E8NhKuAGwyTVz5CB3zoa7NiWBG/f+c8gtAeJXreABAn3biv3FJkCFVfQLBFWT90a/C3Da9qoRhqUlYqwn06NCrlsG1zzDy0ag5V7cxIkrRrEFiLTS/fsdSqEqmBCZGI2enSZYhmaCG11p5n0HMnjizPC3BxVEcD7UrZn5CizkVw0FqXCe54b4WLtFPfjR4Mu2th1hyCr root@kali
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwWtdgN2UAgYC54h6z+g1fMeKMjQug5G27FfNtzS4Dw++Awf6hOh6QNfkMjPsGMzq4wg3l7fkz+9Baux83eT9x1Go/t0g0gi2tpssem1Vskvqqn3zwpktWPSTrZMWobK690h9RUVmdirMcLAB+iS47JQMapm+dI9AsD5tX6B4uSrZGAvXhYApj/CZrRcrrTYrdRE2WC9tFTC3XrzibxNqMqWXXkD+tqdnJSnMg/Zhbq3EyB8wPdCNd2e+QqdS3LRhYdW02Z1IskwxZp8SA6xbA5FGjCdxYyXcyijtqEAi2m+oAA1wrFtwnXWc+SGh6z32bZPFa1Fu38r4cSI7F0Cu9 root@debian

Come è possibile vedere ci sono 2 chiavi pubbliche. Significa che 2 servers possono connettersi via ssh o scp senza password al ServerB.

Se nella directory root non è presente .ssh allora è possibile crearla con il seguente comando:
root@serverB:~# mkdir -p /root/.ssh/

Se non è presente authorized_keys nella directory .ssh allora è possibile crearla per poi copiare la chiave pubblica:
root@serverB:~# vi /root/.ssh/authorized_keys

Ora è possibile provare la connessione:
On serverA try to ssh in ServerB

root@kali:~# ssh root@serverB (o root@indirizzo_ip)
root@serverB:~#     (questo è il prompt del ServerB)