Nagios: Añadir un nuevo servicio al cliente linux

Ya tenemos el NRPE y el host configurados vamos a ir añadiendo nuevos servicio que no incluyen los plugins de Nagios. Los nuevos checks se tienen que configurar en el cliente, así que nos conectaremos al cliente e iremos la libreria de servicios:

# cd /usr/local/nagios/libexec/

Vamos a instalar un servicio para monitorizar la memoria, así que nos descargaremos el check_mem.pl del Nagios Exchange. Una vez que lo tengamos descargado le cambiamos los permisos:

# chmod +x check_mem.pl
# chown nagios.nagios check_mem.pl

Añadiremos el servicio al archivo de configuración del NRPE /usr/local/nagios/etc/nrpe.cfg:

command[check_mem]=/usr/local/nagios/libexec/check_mem.pl -f -w 20 -c 10

También podríamos añadir otros servicios para monitorizar por ejemplo el disco sda1 y que tengamos activo el servicio de mysql:

command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
command[check_mysql]=/usr/local/nagios/libexec/check_procs -c 1:1 -C mysqld

Ya estaría configurado el cliente, ahora hay que añadirlo en el servidor del Nagios, en el archivo de configuración del host incluiremos los servicios:

define service{
use                            local-service
host_name                      blthd01
service_description            Memoria RAM
check_command                  check_nrpe!check_mem
}

define service{
use                            local-service
host_name                      blthd01
service_description            Particion Root
check_command                  check_nrpe!check_sda1
}

define service{
use                            local-service
host_name                      blthd01
service_description            MySQL
check_command                  check_nrpe!check_mysql
}

Solo quedará reiniciar el servicio de Nagios:

# service nagios restart

Nagios: Configurar un nuevo host y sus servicios

Una vez instalados el Nagios y el NRPE, vamos a configurar el primer host.

Los hosts los tengo configurados por carpetas, es decir, en el /usr/local/nagios/etc tengo varias carpetas, una para servidores, otra para swtich, etcetera, cada una para los hosts que son parecidos.

Lo que haremos primero será crear una carpeta:

# /usr/local/nagios/etc/servers

Añadimos la carpeta al archivo de configuración de Nagios /usr/local/nagios/etc/nagios.cfg, para escribiremos la siguiente linea:

cfg_dir=/usr/local/nagios/etc/servers

Iremos a la carpeta que hemos creado y creamos un nuevo documento finalizado por la extensión .cfg:

# nano server1.cfg

Y escribimos la configuración del servidor:

define host{
        use                     linux-server
        host_name               server1
        alias                   server1
        address                 IP-del-cliente
}

Luego añadiremos los primeros servicios:

define service{
         use                            local-service
         host_name                      server1
         service_description            Particion Root
         check_command                  check_nrpe!check_sda1
}

define service{
         use                            local-service
         host_name                      server1
         service_description            Carga CPU
         check_command                  check_nrpe!check_load
}

Una vez que tengamos esto, vamos a revisar los use, que se encuentra en el fichero templates.cfg. Revisaremos la definición del linux-server:

define host{
name                            linux-server    ; The name of this host template
use                             generic-host    ; This template inherits other values from the generic-host template
check_period                    24x7            ; By default, Linux hosts are checked round the clock
check_interval                  5               ; Actively check the host every 5 minutes
retry_interval                  1               ; Schedule host check retries at 1 minute intervals
max_check_attempts              10              ; Check each Linux host 10 times (max)
check_command                   check-host-alive ; Default command to check Linux hosts
notification_period             24x7    ; Linux admins hate to be woken up, so we only notify during the day
                                        ; Note that the notification_period variable is being overridden from
                                        ; the value that is inherited from the generic-host template!
notification_interval           30              ; Resend notifications every 30 min
notification_options            d,u,r           ; Only send notifications for specific host states
contact_groups                  admins          ; Notifications get sent to the admins by default
register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
hostgroups                      linux-servers
}

Solo he añadido el hostgroups con linuxservers, el notificaction_period que lo cambié a 24×7 y el notification_interval lo cambie de 120 minutos a 30.

Luego tendríamos que crear el archivo de configuración de hostgroups en el /usr/local/nagios/etc/objects:

# nano /usr/local/nagios/etc/objects/hostgroups.cfg

Y lo añadimos al archivo de configuración de Nagios:

cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg

En el hostgroups.cfg añadimos lo siguiente para crear los hostgroups tanto de los servidores que tengamos de linux como de windows, estos ultimos tenemos que revisar que esten incluido en el template de windows-server como hicimos con el de linux:

define hostgroup{
         hostgroup_name  windows-servers ; The name of the hostgroup
         alias           Windows Servers ; Long name of the group
}

define hostgroup{
         hostgroup_name  linux-server ; The name of the hostgroup
         alias           Linux Servers ; Long name of the group
}

Finalmente hay que comprobar que todo esta correctamente:

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

Reiniciamos el servicio de Nagios:

# service nagios restart

Ya tendremos el nuevo host monitorizando dos servicios.

Nagios: Instalación de NRPE en servidor y cliente

Ayer expliqué como instalar el Nagios, hoy explicaré como instalar el NRPE que sirve para hacer la monitorización servicios internos como discos, memoria, CPU, servicios,…

 nagios_nrpe

Lo primero que vamos configurar es un cliente, en este caso es un máquina Ubuntu Server. Lo primero que se debe hacer es generar el usuario de Nagios y ponerle el password:

# /usr/sbin/useradd nagios
# passwd nagios

Descargar los plugins de Nagios y descomprimirlos:

# wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
# tar xzf nagios-plugins-2.0.3.tar.gz
# cd nagios-plugins-2.0.3/

Instalamos lo necesario para compilar, la librería ssl y el servicio xinetd.

#apt-get install build-essential libssl-dev xinetd

Compilamos los plugins y los instalamos:

#./configure
# make
# make install

Cambiamos los permisos de la carpeta:

# chown nagios.nagios /usr/local/nagios/
# chown -R nagios.nagios /usr/local/nagios/libexec/

Descargaremos el NRPE y lo descomprimimos:

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

Compilamos el NRPE y lo instalamos:

# ./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config

Instalamos el demonio de NRPE como un servicio bajo xinetd:

# make install-xinetd

Editamos /etc/xinetd.d/nrpe y añadimos la IP del servidor donde esta instalado el Nagios:

only_from = 127.0.0.1

Añadimos la siguiente entrada para el NRPE en el /etc/services:

nrpe            5666/tcp                        # NRPE

Reiniciamos el xinetd y la red:

# service xinetd restart
# service networking restart

Comprobamos que este funcionando correctamente:

# netstat -at | grep nrpe
tcp 0 0 *:nrpe *:* LISTEN

Comprobamos que funcione correctamente el NRPE:

# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.15

Ya tendríamos instalado el NRPE en el cliente, ahora lo instalaremos en el servidor de Nagios, que nuevamente es un Ubuntu Server 14.04 LTS.

Descargaremos el NRPE y lo descomprimimos:

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

Compilamos el NRPE y lo instalamos:

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

Ya estaría instalado el NRPE en el servidor, podemos hacer una prueba para ver si funciona correctamente, por ejemplo, comprobar la carga de CPU, para ello se debe hacer:

# /usr/local/nagios/libexec/check_nrpe -H 'IP-del-cliente-Nagios' -c 'check_load'
OK - load average: 0.13, 0.11, 0.10|load1=0.130;15.000;30.000;0; load5=0.110;10.000;25.000;0; load15=0.100;5.000;20.000;0;

Habrá que añadir en el /usr/local/nagios/objects/commands.cfg el siguiente comando para utilizar el NRPE:

define command{
         command_name    check_nrpe
         command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Luego en los servicios de cada hosts que se quiera llamar utilizaremos lo siguiente, este ejemplo es para ver la carga de CPU:

define service {
            host_name                       cliente1
            service_description             Check Load
            check_command                   check_nrpe!check_load
            use                             generic-service
}

Instalación de Nagios 4.0.X en Ubuntu Server 14.04 LTS

A continuación os explicaré como instalar el software de monitorización Nagios en su versión 4.0.8, aunque sirve sin problema para cualquier versión 4.0. Lo instalaré sobre un servidor Ubuntu Server 14.04 LTS.

ubuntu-14_04Nagios-Core

Lo primero será instalar lo que vamos a necesitar, que es un Apache, sus utilidades, la libreria de PHP5 y lo necesario para la instalación del software.

# apt-get install apache2 libapache2-mod-php5 build-essential bgd2-xpm-dev apache2-utils

Creamos el usuario de Nagios y le ponemos el password:

# /usr/sbin/useradd -m -s /bin/bash nagios
# passwd nagios

Creamos el grupo Nagios y se añade el usuario:

# /usr/sbin/groupadd nagios
# /usr/sbin/usermod -G nagios nagios

Se crea el grupo nagcmd para permitir lanzar comandos externos:

# /usr/sbin/groupadd nagcmd
# /usr/sbin/usermod -a -G nagcmd nagios
# /usr/sbin/usermod -a -G nagcmd www-data

Descargamos el Nagios:

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.8.tar.gz

Lo descomprimimos:

# tar xzf nagios-4.0.8.tar.gz
# cd nagios-4.0.8/

Compilamos el código de Nagios:

# ./configure --with-command-group=nagcmd

Luego instalamos los binarios:

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

Añadimos la configuración del Nagios al Apache:

# /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-enabled/nagios.conf

Cambiamos la contraseña al usuario nagiosadmin que da acceso a la web y reiniciamos el Apache:

# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
# service apache2 restart

Añadimos el mail del administrador en el contact.cfg:

# nano /usr/local/nagios/etc/objects/contacts.cfg

A continuación instalaremos los plugins de Nagios, para ello lo primero es descargarlos y descomprimirlos:

# wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
# tar xzf nagios-plugins-2.0.3.tar.gz
# cd nagios-plugins-2.0.3

Lo compilamos y hacemos la instalación de los binarios:

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

Añadimos los módulos de CGI y Rewrite al Apache y lo reiniciamos:

# a2enmod rewrite
# a2enmod cgi
# service apache2 restart

Configuramos que se inicie el servicio de Nagios en el arranque:

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

Revisamos que este todo bien en el Nagios:

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

Reiniciamos el servicio:

# service nagios start

Para configurar el correo, instalar las utilidades de Ubuntu de correo:

# apt-get install mailutils

Yo tengo un relay así que simplemente he añadido la IP en el /etc/postfix/main.cf, después se modifica command.cfg para que envíe a través del Postfix:

# nano  /usr/local/nagios/etc/objects/commands.cfg

Cambiar las referencias de ‘/bin/mail’ a ‘/usr/bin/mail’, reiniciar el servicio de Nagios y ya estará configurado el envío de correos.

Ya se puede acceder a la web, la máquina localhost estará configurada por defecto. La dirección es http://IP-del-servidor/nagios/, pedirá usuario y contraseña de que es el de nagiosadmin.

Instalación de OTRS 4.0 en Ubuntu Server 14.04 LTS

Recientemente ha salido el nuevo OTRS 4.0, estoy haciendo pruebas con él. A continuación os explicaré como instalarlo en Ubuntu 14.04 LTS.

ubuntu-14_04otrs

Acceder a la carpeta /opt, descargar el OTRS y descomprimirlo:

 # cd /opt/
 # wget http://ftp.otrs.org/pub/otrs/otrs-4.0.1.tar.gz
 # tar -xzvf otrs-4.0.1.tar.gz

Crear el enlace a la carpeta /opt/otrs:

 # ln -s /opt/otrs-4.0.1 /opt/otrs

Instalar el MySQL y Apache:

 # apt-get install mysql-server apache2

Revisar los módulos que faltan y se instalan:

 # perl /opt/otrs/bin/otrs.CheckModules.pl
 # apt-get install libapache2-mod-perl2 libdbd-mysql-perl libtimedate-perl libnet-dns-perl \
 libnet-ldap-perl libio-socket-ssl-perl libpdf-api2-perl libdbd-mysql-perl libsoap-lite-perl \
 libgd-text-perl libtext-csv-xs-perl libjson-xs-perl libgd-graph-perl libapache-dbi-perl \
 libarchive-zip-perl libcrypt-eksblowfish-perl libdbd-odbc-perl \
 libmail-imapclient-perl libtemplate-perl libtemplate-perl libyaml-libyaml-perl

Crear el usuario de OTRS:

# useradd -d /opt/otrs/ -c 'OTRS user' otrs
# usermod -G www-data otrs

Activar los archivos de configuración predeterminados:

 # cd /opt/otrs/
 # cp Kernel/Config.pm.dist Kernel/Config.pm
 # cp Kernel/Config/GenericAgent.pm.dist Kernel/Config/GenericAgent.pm

Comprobar si todos los modulos estan instalados, la salida tiene que ser “syntax OK”:

 # perl -cw /opt/otrs/bin/cgi-bin/index.pl
 # perl -cw /opt/otrs/bin/cgi-bin/customer.pl
 # perl -cw /opt/otrs/bin/otrs.PostMaster.pl

Dar permisos a los archivos de OTRS:

 # bin/otrs.SetPermissions.pl --otrs-user=otrs --web-group=www-data /opt/otrs-4.0.1

Enlazar el configurador de apache y reiniciar el servidor web:

 # ln -s /opt/otrs/scripts/apache2-httpd.include.conf /etc/apache2/sites-available/otrs.conf
 # ls /etc/apache2/sites-available/
 # service apache2 restart

Permitir el sitio otrs.conf:

 # a2ensite otrs.conf
 # service apache2 restart

Una vez instalado el OTRS abrir el explorador y escribir:

http://<direccion-ip>/otrs/installer.pl

Primera ventana da a Next:

Leer y aceptar la licencia:

Seleccionar el tipo de base de datos y seguir:
3

Meter el usuario root y su contraseña que se seleccionó durante la instalación del servidor de MySQL y comprobar que funciona bien:

Una vez hecha la comprobación, seleccionar la contraseña para el usuario otrs:
5

La configuración de la base datos finaliza correctamente:

Asegurarnos que el FQDN es correcto y meter un correo electrónico para el administrador:

Configurar el servidor de correo que se usará:

Ya estará instalado el OTRS:
9

 

Activar los Cronjobs para usuario de OTRS:

 # cd var/cron
 # for foo in *.dist; do cp $foo `basename $foo .dist`; done
 # su otrs
 # /opt/otrs/bin/Cron.sh start

Ya se puede acceder al OTRS:

http://<direccion-ip>/otrs/installer.pl

Deshabilitar SSLv3 y habilitar TLSv1.2 en Apache Tomcat

No hace mucho instalé un certificado en un Windows Server 2012, a la hora de instalarlo active el SSLv3 que esta obsoleto ya que tiene una vulnerabilidad grave (POODLE). A continuación explicaré como deshabilitar el SSLv3 y activar el protocolo TLS.

Lo primero será ir al directorio conf de la carpeta de Tomcat y editar el fichero server.xml. Dentro buscaremos el conector:

sslProtocol="TLS"

Lo eliminamos para deshabilitar el SSL y escribimos lo siguiente:

sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1"

Esto sirve tanto si se usa Tomcat 7 como 8, si fuera Tomcat 6 es:

SSLProtocol="TLSv1"

Ahora solo hay que guarda el fichero y reiniciar el servicio de Tomcat. Con esto ya tendremos activado el protocolo TLS.

Error en Apache de ServerName

El servidor web Apache puede ser que nos de el siguiente error a la hora de instalarlo o reiniciarlo en Ubuntu:

Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

Este problema viene porque no esta seguro del nombre del servidor ya que el localhost apunta a la 127.0.0.1. Para solucionar este problema simplemente debemos editar el archivo de configuración de Apache:

$ sudo nano /etc/apache2/apache2.conf

Y añadir la siguiente línea:

ServerName localhost

Ahora solo hay que reiniciar el Apache y ya estará solucionado:

$ sudo service apache2 restart

Configurar red estática en Ubuntu Server 14.04 LTS

En Ubuntu viene por defecto el DHCP activado, a continuación os explicaré como configurar una IP estática.

ubuntu-14_04

Lo primero es abrir el documento de interfaces:

$ sudo nano /etc/network/interfaces

Dentro nos encontramos que esta configurado como DHCP, lo editaremos con la IP estática y la configuración que queramos:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0

# DHCP not needed
# iface eth0 inet dhcp
iface eth0 inet static
address 192.168.10.15
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1
dns-nameservers 8.8.8.8 8.8.4.4

Guardarmos y ahora iremos a editar resolv.conf:

$ sudo nano /etc/resolv.conf

Le añadimos:

nameserver 8.8.8.8
nameserver 8.8.4.4
search midominio.local

Lo siguiente es añadir la IP fija al archivo hosts:

$ sudo nano /etc/hosts

Y le añadimos:

192.168.10.15   vmtest01.midominio.local  vmtest01

Reiniciamos la tarjeta de red:

$ sudo ifdown eth0 && sudo ifup eth0

Lo hacemos de esa forma ya que el Ubuntu 14.04 tiene un bug, no  funciona correctamente el servicio networking, para solucionarlo debemos  hacer lo siguiente:

$ sudo apt-get install git
$ sudo git clone https://github.com/metral/restore_networking.git
$ cd restore_networking/
$ sudo ./restore_networking.sh

$ sudo service networking restart
networking stop/waiting
networking start/running

Caracteres en script Bash

Recientemente tuve que hacer un script para copiar múltiples ficheros en distintas carpetas, pero la mayoría de las carpetas tenían tildes, con lo que me daba un error el script porque los veía como otros caracteres y no encontraba la carpeta. Intente cambiar a formato UTF y Unicode pero el script también fallaba, así que buscando en la red encontré la solución, añadir la siguiente línea al inicio del script:

@Echo OFF & CHCP 1252 1>NUL

Fuente: elhacker.net

Instalación de certificado en Tomcat 8 en Windows Server 2012

A continuación dejaré los pasos para instalar un certificado en un Tomcat 8.0.14 en un sistema operativo Windows Server 2012. El certificado que yo instalé fue adquirido a Thawte. El Java es la versión JRE7.

tomcatwindows-server-2012

Lo primero es abrir el cmd como administrador y añadiremos la libreria del Java para poder trabajar con sus herramientas:

> set PATH=%PATH%;C:\Program Files\Java\jre7\bin

Luego se debe generar el almacén de claves:

> keytool -genkey -alias tomcat -keyalg RSA –keystore keystore.jsk

Y a continuación se crea el archivo csr que se envía para ser firmado por la entidad certificadora:

> keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr –keystore keystore.jsk

Una vez que se tenga el certificado firmado se procede a su instalación, lo primero será instalar el certificado Root:

> keytool -import -alias root -keystore keystore.jks -trustcacerts -file CertRoot.crt

Luego se instala el certificado intermedio:

> keytool -import -alias intermediate -keystore keystore.jks -trustcacerts -file CertCA.crt

Finalmente se instala el certificado firmado:

> keytool -import -alias tomcat -keystore keystore.jks -file certificat.crt

Se deber ir a la carpeta del Tomcat, dentro hay una carpeta conf donde esta toda la configuración, añadir el siguiente texto dentro del archivo server.xml

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keystoreFile="C:\Program Files\Tomcat 8.0\cert\keystore.jks"
           keystorePass="changeit"/>

Reiniciar el Tomcat y acceder a https://localhost/ o localhost:443 para comprobar que funciona correctamente.

También podemos comprobar que funciona correctamente con el Openssl, para ello se debe descargar de la web oficial e instalarlo, yo utilice la versión 1.0.1j de 64bits.

Una vez instalado ir al cmd como administrador y añadir la librería del OpenSSL:

> set PATH=%PATH%;C:\OpenSSL-Win64\bin

Y añadir el archivo de configuración:

> set OPENSSL_CONF=c:\OpenSSL-Win64\bin\openssl.cfg

Para comprobar el si esta funcionado correctamente el certificado escribir:

> openssl s_client –connect ticket.lapedrera.com:443

También os recomiendo la siguientes webs una vez publicado vuestro certificado para comprobar su estado:

https://www.digicert.com/help/
https://ssltools.thawte.com/checker/views/certCheck.jsp
https://www.sslshopper.com/ssl-checker.html