miércoles, 23 de mayo de 2012

Configurar Postfix para enviar correo a través de Gmail

Como muchos sabrán, Gmail, Hotmail, y muchos otros servidores, no permiten la recepción de correos enviados desde IP públicas que no está registradas,(las IP dinámicas de todos los usuarios domésticos), por lo que configuraremos nuestro servidor postfix para que se valide en el servidor SMTP de Gmail y lo utilice para entregar nuestro correo.
Necesitamos tener instalados los siguientes paquetes:
postfix-tls 
libsasl2
libsasl2-modules
ca-certificates
Para enviar correo utilizando el servidor SMTP de Gmail la conexión tiene que estar cifrada con TLS, para lo que debemos añadir la Autoridad Certificadora adecuada y autenticada, para lo que utilizaremos un nombre de usuario (dirección de correo) y contraseña del servicio. 
Para configurar el servidor es necesario editar /etc/postfix/main.cf y añadir las líneas siguientes:
relayhost = [smtp.gmail.com]:587 smtp_use_tls = yes
smtp_tls_security_level=encrypt
smtp_tls_loglevel = 1
smtp_sasl_auth_enable = yes
smtp_tls_CAfile = /etc/ssl/certs/Equifax_Secure_CA.pem
smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd
smtp_sasl_security_options = noanonymous 

Pero primero haremos una copia de seguridad del archivo.
root@excellondonsrv2:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.backup
root@excellondonsrv2:~# nano /etc/postfix/main.cf
Se le indica que use el smtp de gmail por el puerto 587, usando TSL, con el certificado Equifax_Secure_CA.pem, que es el que actualmente utiliza para la autentificación, y la información de la autentificación se encuentra en /etc/postfix/sasl/passwd Para generar el fichero con la información de autentificación se crea el fichero /etc/postfix/sasl/passwd con el siguiente contenido:
[smtp.gmail.com]:587 unacuenta@gmail.com:unacontraseña.
root@excellondonsrv2:~# nano /etc/postfix/sasl/passwd
Y lo protegemos adecuadamente con:
root@excellondonsrv2:~# chmod 600 /etc/postfix/sasl/passwd

El fichero de configuración hay que transformarlo a un fichero indexado de tipo hash mediante la instrucción:

root@excellondonsrv2:~# postmap /etc/postfix/sasl/passwd

que creará el fichero /etc/postfix/sasl/passwd.db

Es necesario reiniciar postfix.

Para probar si todo ha ido bien:

mail -s "test" cuenta_correo@gmail.com
Para enviarlo pulsar Ctrl+D

El único inconveniente es que el remitente del correo será la cuenta de gmail que hemos usado para la autentificación.

Añadir un remitente nuevo en nuestra cuenta de gmail

Si tenemos configurado nuestro servidor con algún servicio de DNS dinámico, como dyndns, podemos añadir el remitente en nuestra cuenta de Gmail.
Abrimos en el navegador la página de Gmail, vamos a Configuración > Cuentas e importación > Enviar mensaje como y añadimos como nuevo remitente la dirección de correo de nuestro servidor de correo (usuario@mimaquina.dyndns.org). 
Para verificar que somos usuarios legítimos de la misma gmail nos enviará un mensaje con un código de verificación, que nos llegará a nuestra cuenta local. Una vez verificada la cuenta, gmail permitirá que se envíen mensajes con ese remitente y no lo modificará. 


Más información:
http://support.google.com/mail/bin/answer.py?hl=es&ctx=mail&answer=22370

martes, 22 de mayo de 2012

Personalizar el entorno Nagios

En la web se pueden encontrar multitud de añadidos para cambiar el aspecto de Nagios.
http://exchange.nagios.org/directory/Addons/Frontends-%28GUIs-and-CLIs%29
Pero nos conformaremos con cambiar un poco el aspecto de nuestro entorno básico, añadiendo iconos representativos a las configuraciones.
root@excellondonsrv2:/usr/local/nagios/etc/objects# nano localhost.cfg 
define host{
        use                     linux-server            ; Name of host template to use
        host_name               localhost
        alias                   Servidor Nagios
        icon_image              debian.gif
        vrml_image              debian.png
        statusmap_image         debian.gd2
        address                 127.0.0.1
        }

Monitorización de BBDD SQLServer con Nagios

Descargas el siguiente plugin:
http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=497&cf_id=24

root@excellondonsrv2:/usr/local/nagios/libexec# cp /home/user/Downloads/check_mssql check_mssql
root@excellondonsrv2:/usr/local/nagios/libexec# chmod +x check_mssql
Para realizar la prueba, utilizaremos el usuario por defecto de SQLServer "sa"

root@excellondonsrv2:/usr/local/nagios/libexec# ./check_mssql -H 192.168.10.2 -U sa -P London2011

Si todo ha ido bien, procedemos a configurar el comando en Nagios.
define command{
command_name check_mssql
command_line $USER1$/check_mssql -H $HOSTADDRESS$ $ARG1$
}
root@excellondonsrv2:/usr/local/nagios/libexec# nano ../etc/objects/commands.cfg 
Y añadimos el servicio en la plantilla de windows.cfg
#Servicio para monitorizar SQLServer
define service{
        use                     generic-service
        host_name               excellondonsrv1
        service_description     MS SQL Server
        check_command           check_mssql!-U sa -P London2011
}
root@excellondonsrv2:/usr/local/nagios/libexec# nano ../etc/objects/windows.cfg
Reiniciamos Nagios y ya está activo el nuevo servicio.
root@excellondonsrv2:/usr/local/nagios/libexec# service nagios reload

Configurar Nagios para que monitorice una base de datos MySQL ubicada en un Linux

Para esta monitorización vamos a crear un usuario "nagios" en mysql, con permiso de lectura y que se podrá conectar desde cualquier IP a la base de datos "mysql".

root@excellondonsrv2:~# mysql -u root -p
mysql> GRANT select ON mysql.* TO 'nagios'@'%' IDENTIFIED BY 'nagios';
mysql> flush privileges;
mysql> quit

Añadimos al final de /usr/local/nagios/etc/objects/localhost.cfg

root@excellondonsrv2:~# nano /usr/local/nagios/etc/objects/localhost.cfg 
#Servicio para monitorizar la base de datos "mysql"
define service{
use local-service
host_name localhost
service_description BD_Test
check_command check_mysql!-d mysql -u nagios -p nagios
}
y reiniciamos nagios.

root@excellondonsrv2:~# service nagios reload

Configurar Nagios para que monitorice una página Web hospedada en Linux

Para que nos monitorice el contenido de una página web, sólo tenemos que añadir un nuevo servicio, en nuestro caso en localhost.cfg para que compruebe que la página index.html contiene "IesCesarManrique.net"

root@excellondonsrv2:~# nano /usr/local/nagios/etc/objects/localhost.cfg 

#Servicio para monitorizar la web index.html
define service{
     use                local-service
     host_name      localhost
     service_description       index.html
     check_command          check_http!-H localhost -u "/index.html" -f follow -s "IesCesarManrique.net"
}

Configurar Nagios para que monitorice la interfaz de red de un equipo Linux


Para esta tarea utilizaremos el plugin check_ifstatus, que requiere que configuremos un servidor SNMP en la máquina linux.

root@skillredes01-debian:~# apt-get install snmpd
Editaremos el archivo de configuración y descomentamos la línea
rocommunity public localhost
para tener acceso completo desde local.
root@skillredes01-debian:~# nano /etc/snmp/snmpd.conf
Reiniciamos el servicio y realizamos una prueba.
root@skillredes01-debian:~# service snmpd restart

root@skillredes01-debian:~# /usr/local/nagios/libexec/check_ifstatus -H localhost
Y añadimos el servicio en el nrpe.cfg
root@skillredes01-debian:~# nano /usr/local/nagios/etc/nrpe.cfg
command[check_ifstatus]=/usr/local/nagios/libexec/check_ifstatus -H localhost

Ya sólo nos queda añadir el servicio también en el servidor.
Para poder emplear "check_ifstatus" con cualquier host que disponga de SNMP, tendremos que añadir la definición del comando en el archivo "command.cfg"

# 'check_ifstatus' definición de comando
define command{
        command_name    check_ifstatus
        command_line    $USER1$/check_ifstatus -h $HOSTADDRESS$ -C public -x $ARG1$
}
Pero como nosotros lo vamos a ejecutar a través de NRPE, la configuración quedaría así:

root@excellondonsrv2:/usr/local/nagios/etc/objects# nano skillredes01-debian.cfg 
# check_ifstatus

define service{
        use                             local-service
        host_name                       skillredes01-debian
        service_description             Estado Interfaces de Red
        check_command                   check_nrpe!check_ifstatus
}         




Configuración de Nagios para monitorizar un Linux a través del nombre del equipo

Para poder monitorizar un equipo remoto, tendremos que usas el añadido NRPE, que instalaremos en el equipo a monitorizar y en el servidor. Se trata de un demonio que nos permitirá ejecutar en remoto los plugins que instalaremos en la máquina a monitorizar, y le pasará los datos al servidor Nagios.

1º Instalaremos los plugins de Nagios en el cliente.

root@skillredes01-debian:~# useradd nagios
root@skillredes01-debian:~# passwd nagios
La contraseña que utilizaremos será "nagios".
Para poder instalar todas las dependencias tendremos que asegurarnos de tener los siguientes repositorios en la lista:
deb http://ftp.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.debian.org/debian/ squeeze main contrib non-free
root@skillredes01-debian:~# nano /etc/apt/sources.list
root@skillredes01-debian:~# apt-get update
root@skillredes01-debian:~# apt-get install libmysqld-dev libmysqlclient-dev php5-sybase php-db libsnmp-perl snmp snmp-mibs-downloader libssl-dev libyaml-perl
root@skillredes01-debian:~# perl -MCPAN -e shell
cpan[1]> install Net::SNMP
cpan[2]> exit
root@skillredes01-debian:~# exit
manuel@skillredes01-debian:~$ mkdir Descargas
manuel@skillredes01-debian:~$ cd Descargas/
manuel@skillredes01-debian:~/Descargas$ tar xzf nagios-plugins-1.4.15.tar.gz 
manuel@skillredes01-debian:~/Descargas$ cd nagios-plugins-1.4.15/
manuel@skillredes01-debian:~/Descargas/nagios-plugins-1.4.15$ ./configure --with-nagios-user=nagios --with-nagios-group=nagios
manuel@skillredes01-debian:~/Descargas/nagios-plugins-1.4.15$ make
manuel@skillredes01-debian:~/Descargas/nagios-plugins-1.4.15$ su -l
root@skillredes01-debian:~# cd /home/manuel/Descargas/nagios-plugins-1.4.15/
root@skillredes01-debian:/home/manuel/Descargas/nagios-plugins-1.4.15# make install
root@skillredes01-debian:/home/manuel/Descargas/nagios-plugins-1.4.15# chown nagios.nagios /usr/local/nagios
root@skillredes01-debian:/home/manuel/Descargas/nagios-plugins-1.4.15# chown -R nagios.nagios /usr/local/nagios/libexec

lunes, 21 de mayo de 2012

Configuración de Nagios para monitorizar una base de datos MySQL ubicada en Windows Server 2008

Como vimos en el artículo anterior, gracias a XAMPP tenemos un servidor MySQL instalado en nuestro Windows 2008. 
Para esta monitorización vamos a crear un usuario "nagios" en mysql, con permiso de lectura y que se podrá conectar desde cualquier IP a la base de datos "test".
c:\xampp\mysql\bin\mysql -u root
mysql> GRANT select ON test.* TO 'nagios'@'%' IDENTIFIED BY 'nagios';
mysql> FLUSH PRIVILEGES;
mysql> exit;

Añadimos en /usr/local/nagios/etc/objects/commands.cfg
# 'check_mysql' command definition
define command{
command_name check_mysql
command_line $USER1$/check_mysql -H $HOSTADDRESS$ $ARG1$
}


Configuración de Nagios para monitorizar una página Web hospedada en Windows Server 2008

Para los siguientes puntos instalaremos la suite XAMPP en el servidor de Windows, que incluye un servidor Apache, MySQL, PHP, Perl y FTP.

Para que el Apache funcione correctamente, tendremos que instalar el "Paquete redistribuible de Microsoft Visual C++ 2008".

Configurar Nagios para que monitorice la interfaz de red de un equipo Windows Server 2008

Para monitorizar la interfaz de red hay varias formas, a través del protocolo SNMP, con WMI o a través de contadores, que es el método que explicaremos aquí. 
Lo que haremos será crear contadores en el servidor que consultaremos desde Nagios, con la ayuda de la herramienta administrativa Monitor de confiabilidad y rendimiento.
En el monitor de confiabilidad y rendimiento, en monitor de rendimiento, creamos un nuevo contador, para la Interfaz de red. Elegiremos para esta demostración, los datos de Bytes enviados/s y recibidos/s.
Una vez configuradas las colas en Windows, procederemos a configurar Nagios para que lea esos datos. 
Muy importante:
El nombre de la cola debe estar escrito de forma correcta o no dará los datos requeridos.
Añadimos al final de /usr/local/nagios/etc/objects/windows.cfg

#Servicio para monitorizar la Interfaz de red enviados
define service{
use generic-service
host_name excellondonsrv1
service_description Bytes enviados/s
check_command check_nt!COUNTER!-l "\\Interfaz de red(Conexión de red Intel[R] PRO_1000 MT)\\Bytes enviados/s"
}


#Servicio para monitorizar la Interfaz de red
define service{
use generic-service
host_name excellondonsrv1
service_description Bytes recibidos/s
check_command check_nt!COUNTER!-l "\\Interfaz de red(Conexión de red Intel[R] PRO_1000 MT)\\Bytes recibidos/s"
}
root@excellondonsrv2:~# nano /usr/local/nagios/etc/objects/windows.cfg

y reiniciamos nagios.

root@excellondonsrv2:~# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
root@excellondonsrv2:~# service nagios reload

Configuración Nagios para monitorizar un Windows Server 2008 a través del nombre del equipo


Los pasos a seguir para la monitorización de un equipo con Windows son:
1.- Realizar los prerequisitos de la primera vez
2.- Instalar un agente de control en la máquina Windows
3.- Crear nuevas definiciones de anfitrión y de servicios para el control de la máquina de Windows
4.-Reiniciar el demonio de Nagios

1.- Prerequisitos

Los prerequisitos consisten en modificar el archivo de configuración de Nagios para habilitar el archivo de configuración para los equipo con Windows, borrando "#" de la línea "#cfg_file=/usr/local/nagios/etc/objects/windows.cfg"

root@excellondonsrv2:/home/user/Download# nano /usr/local/nagios/etc/nagios.cfg 

2.- Instalar un agente de control en la máquina Windows

En el equipo Windows, instalaremos el complemento NSClient++, que puede ser localizado en http://sourceforge.net/projects/nscplus. Este agente nos permitirá monitorizar la máquina.




Ahora que ya tenemos instalado y configurado NSClient, continuaremos con la configuración del servidor linux.

1º Haremos una cópia de seguridad del archivo de configuración de windows.

root@excellondonsrv2:~# cp /usr/local/nagios/etc/objects/windows.cfg /usr/local/nagios/etc/objects/windows.cfg.backup


2º Modificamos el archivo windows.cfg y sustituimos "winserver" por el nombre de nuestro servidor. En nuestro caso activaremos todos los servicios por defecto.

root@excellondonsrv2:~# nano /usr/local/nagios/etc/objects/windows.cfg


3º La protección con clave que pusimos nos obliga a modificar el archivo commands.cfg para que envíe la clave cuando realice las peticiones. Eso se consigue modificando la línea command-line de la definición de "CHECK_NT" para que quede como sigue:
"$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$ "
root@excellondonsrv2:~# nano /usr/local/nagios/etc/objects/commands.cfg 


4º Ya podemos comprobar la configuración y reiniciar Nagios.
root@excellondonsrv2:~# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

root@excellondonsrv2:~# service nagios restart

Proceso de instalación de Nagios Core sobre una máquina Virtual.


Partiremos de una máquina en VMWare con Debian 6.0.4 Squeeza instalado previamente.
Para comprobar que tenemos instalados el servidor Web, la librería GD, PHP y el compilador, utilizaremos los siguientes comandos:
root@excellondonsrv2:~# dpkg --get-selections |grep apache
root@excellondonsrv2:~# dpkg --get-selections |grep php
root@excellondonsrv2:~# dpkg --get-selections |grep gd
root@excellondonsrv2:~# dpkg --get-selections |grep gcc

O simplemente ejecutamos los comandos para su instalación, que es la opción más aconsejable:

root@excellondonsrv2:~# apt-get install apache2 php5 build-essential postfix libgd-graph-perl libgd2-xpm-dev libgd2-xpm

"build-essential" nos proporciona el entorno de compilación, "postfix" el servidor de correos para entregar las alertas, que sustituirá al instalado por defecto exim4 y libgd la librería GD.
Durante el proceso de instalación, se nos pedirá que configuremos el servidor de correo Postfix.

A continuación crearemos el usuario y grupo necesarios para utilizar Nagios:
root@excellondonsrv2:~# useradd -m nagios
root@excellondonsrv2:~# passwd nagios
“nagios” es la contraseña que utilizaremos.
Para poder trabajar con el entorno web sin problemas, añadiremos el usuario www-data al grupo nagios.

root@excellondonsrv2:~# usermod -a -G nagios www-data
Ya tenemos listo el entorno para poder compilar nuestro Nagios, por lo que procederemos a la descarga de Nagios Core y sus Plugins. 
La versión actual de Nagios Core es la 3.4.1 y la versión estable de los plugins la 1.4.15.
Como no es conveniente la descarga y la descompresión la realizaremos con el usuario normal.
root@excellondonsrv2:~# exit
user@excellondonsrv2:~$ mkdir Download
user@excellondonsrv2:~$ cd Download/

Requisitos para su instalación en una distribución Linux


Según indica el manual, Nagios solo necesita de una máquina con Linux (o una variante de UNIX) ejecutándose, que tenga acceso a red y un compilador de C instalado (si se quiere instalar desde el código fuente).
No estamos obligados a utilizar los CGIs que se incluyen con Core Nagios. Sin embargo, si se decide utilizarlas, es necesario tener instalado el software siguiente:
1.- Un servidor Web (preferiblemente Apache).
2.- La librería GD de Thomas Boutell versión 1.6.3 o superior (que es necesaria para las CGIs “statusmap” y “trends”)
3.- PHP
A lo largo de las siguientes entradas, procederemos a resolver todas las dependencias de librerías que surja para la correcta instalación y configuración de Nagios Core en una distribución Debian 6.0.4 Squeeze.

¿Qué es Nagios?

Nagios es un sistema de monitorización de redes de código abierto ampliamente utilizado, que vigila los equipos (hardware) y servicios (software) que se especifiquen, alertando cuando el comportamiento de los mismos no sea el deseado. Entre sus características principales figuran la monitorización de servicios de red (SMTP, POP3, HTTP, SNMP...), la monitorización de los recursos de sistemas hardware (carga del procesador, uso de los discos, memoria, estado de los puertos...), independencia de sistemas operativos, posibilidad de monitorización remota mediante túneles SSL cifrados o SSH, y la posibilidad de programar plugins específicos para nuevos sistemas.
Se trata de un software que proporciona una gran versatilidad para consultar prácticamente cualquier parámetro de interés de un sistema, y genera alertas, que pueden ser recibidas por los responsables correspondientes mediante (entre otros medios) correo electrónico y mensajes SMS, cuando estos parámetros exceden de los márgenes definidos por el administrador de red.
Llamado originalmente Netsaint, nombre que se debió cambiar por coincidencia con otra marca comercial, fue creado y es actualmente mantenido por Ethan Galstad, junto con un grupo de desarrolladores de software que mantienen también varios complementos.
Nagios fue originalmente diseñado para ser ejecutado en GNU/Linux, pero también se ejecuta bien en variantes de Unix.
Nagios está licenciado bajo la GNU General Public License Version 2 publicada por la Free Software Fundation.