Como comentábamos en una entrada anterior, EPSMS es una herramienta de administración de sistemas, que incluye varias utilidades para monitorizar alertas, visualizar gráficas de rendimientos, gestionar inventarios hardware/software y chequear vulnerabilidades.
Existe una demo online disponible en https://epsms.eps.ua.es (usuario: epsms contraseña: epsms) y una versión descargable desde Github https://github.com/EPSAlicante/EPSMS
En esta entrada explicaremos cómo instalar y configurar EPSMS para monitorizar un entorno de equipos como el de la Demo.
Infraestructura Inicial
En primer lugar describimos la infraestructura inicial:
Subred: 192.168.0.0/27
Dominio: epsms.eps.ua.es
Router por defecto: 192.168.0.1
Equipos:
Nombre | Sistema Operativo | IP |
---|---|---|
debian.epsms.eps.ua.es | Debian 7 | 192.168.0.3 |
fedora.epsms.eps.ua.es | Fedora 19 | 192.168.0.4 |
ubuntu.epsms.eps.ua.es | Ubuntu 14.04 | 192.168.0.5 |
freebsd.epsms.eps.ua.es | FreeBSD 9.2 | 192.168.0.6 |
solaris.epsms.eps.ua.es | SunOS Solaris 5.11 | 192.168.0.7 |
gentoo.epsms.eps.ua.es | Gentoo | 192.168.0.8 |
opensuse.epsms.eps.ua.es | OpenSUSE 13.2 | 192.168.0.9 |
slackware.epsms.eps.ua.es | Slackware 14.0 | 192.169.0.10 |
arch.epsms.eps.ua.es | Arch Linux | 192.168.0.11 |
openbsd.epsms.eps.ua.es | OpenBSD 5.6 | 192.168.0.12 |
win2008.epsms.eps.ua.es | Windows Server 2008 | 192.168.0.13 |
win2000.epsms.eps.ua.es | Windows Server 2000 | 192.168.0.14 |
Servidor (prerrequisitos)
Para poder gestionar nuestra red con EPSMS necesitaremos un nuevo servidor con CentOS 6 (64 bits) en el que instalar y configurar el software. En este caso, nuestro servidor EPSMS será:
Nombre | Sistema Operativo | IP |
---|---|---|
epsms.eps.ua.es | CentOS 6 | 192.168.0.2 |
Descargamos el software desde Github. En la carpeta install tenemos los ficheros que necesitamos para instalarlo:
- INSTALL (un fichero de ayuda de la instalación)
- ansible.tgz (el fichero que contiene el software a instalar)
- install.py (el instalador, hecho en python)
Una vez descargados los ficheros a nuestro servidor EPSMS (192.168.0.2), leemos al fichero INSTALL para ver los prerrequisitos que debe cumplir nuestro servidor:
- Linux CentOS 6 (64 bits)
- Python 2.6 o 2.7 instalado
- Variable de entorno LANG como UTF-8 (definido en /etc/sysconfig/i18n)
- Repositorio EPEL disponible y habilitado (enabled=1)
Instalación
Si cumplimos todos los prerrequisitos, ya podemos instalar el software ejecutando el script install.py como usuario root. Se instala el paquete ansible (y otros paquetes auxiliares) en /etc/ansible con todo el código fuente. Caso de existir un directorio /etc/ansible anterior, se guardará copia como /etc/ansible-timestamp.
Permisos
Una vez instalado, nos indica que el menú de control para poder configurar el software se encuentra disponible en /etc/ansible/menu.py, y que la opción a ejecutar será la (1) Configure System.
Pero antes de configurar el software debemos tener bien claro la insfraestructura de servicios que va a ser instalada y los permisos necesarios para que ésta funcione correctamente.
Todos los servicios serán instalados en el servidor EPSMS (pero también podríamos instalar cada servicio en un servidor diferente para repartir la carga). En concreto se va a instalar:
- Servicio de control con ‘Ansible’ (comunicación con los equipos)
Ansible necesita acceso por SSH a todos los equipos (Linux/Unix) a monitorizar (los llamaremos nodos). Los equipos que no sean accesibles tendrán una monitorización mucho menor (se llamarán outsiders).
También podrá conectarse a equipos Windows mediante WMI (Window Managemenet Instumentation). En este caso les llamaremos winNodos.
- Servicio Nagios (monitorización de alertas)
Nagios necesita acceso al puerto TCP/5666 de los nodos, en los que se instalará el software NRPE (agente de Nagios).
También necesita acceso al puerto TCP/5666 de los winNodos, sólo que en este caso habrá que instalar el software NRPE de manera manual.
También necesita acceso al puerto TCP/8086 del servicio InfluxDB (lo vamos a instalar en el mismo servidor) para poder traspasarle los datos recogidos.
- Servicio Munin (gráficas de rendimientos)
Munin necesita acceso al puerto TCP/4949 de los nodos, en los que se instalará el software Munin-client (cliente de Munin).
También necesita acceso al puerto TCP/4949 de los winNodos, sólo que en este caso habrá que instalar el software Muninclient de manera manual.
Así mismo, necesita acceso al puerto TCP/8086 del servicio InfluxDB (lo vamos a instalar en el mismo servidor) para poder traspasarle los datos recogidos.
- Servicio Mysql (Base de datos donde almacenar información de inventario)
No requiere ningún acceso especial.
- Servicio InfluxDB (Base de Datos para mostrar información en Grafana)
InfluxDB necesitará acceso al repositorio http://repos.influxdata.com para su instalación.
- Servicio Grafana (controles de mando con información de Munin y Nagios)
Grafana necesitará acceso a los repositorios https://packagecloud.io y https://grafanarel.s3.amazonaws.com para su instalación.</p<
- Servicio Openvas (chequeo de vulnerabilidades)
Openvas necesitará acceso a los repositorios http://mirrors.hosting.in.th y http://mirrors.thzhost.com para su instalación.
Openvas requiere acceso a todos los puertos de los equipos (nodos u outsiders) para realizar los chequeos.
Además necesitaremos configurar SELinux (o bien deshabilitarlo) para permitir los chequeos.
- Servicio Web (entorno web de acceso a todos los servicios ofertados)
Acceso al puerto TCP/3306 del servicio Mysql (base de datos donde se almacenan todos los datos de inventario).
Acceso al puerto TCP/443 del servicio Nagios (Web de visualización de las alertas).
Acceso al puerto TCP/443 del servicio Munin (Web de visualización de las gráficas de rendimiento).
Acceso al puerto TCP/8083 del servicio InfluxDB (Web de gestión de la base de datos InfluxDB).
Acceso al puerto TCP/3000 (Web de visualización de los controles de mando).
Acceso al puerto TCP/9392 (Web de gestión de los chequeos de vulnerabilidades).
Es muy recomendable (durante la configuración), permitir las conexiones externas para poder instalar el software, y deshabilitar SELinux para evitar problemas.
Una vez habiendo dado los permisos requeridos para el despliegue de la infraestructura y su correcto funcionamiento, procederemos a la configuración.
Configuración
Ejecutamos el /etc/ansible/menu.py como usuario root y seleccionamos la opción (1) Configure System. A continuación se nos pedirán una serie de parámetros para realizar la configuración:
- Remote user to connect: ‘ansible’
Usuario con el que el servidor de control se conectará a los nodos por SSH.
- Working subnets: ‘192.168.0.0/27’
Redes que monitorizará EPSMS (introducimos nuestra subred en formato CIDR).
- IPs to be exclude: ‘192.168.0.1’
Podemos excluir IPs de las subredes anteriores para que sean monitorizadas. En este caso excluimos el router.
- Mysql Host: ‘192.168.0.2’
IP del servidor en el que instalaremos la base de datos Mysql (la instalamos en epsms.eps.ua.es).
- Nagios Host: ‘192.168.0.2’
IP del servidor en el que instalaremos el servicio Nagios (lo instalamos en epsms.eps.ua.es).
- Munin Host: ‘192.168.0.2’
IP del servidor en el que instalaremos el servicio Munin (lo instalamos en epsms.eps.ua.es).
- Web Host: ‘192.168.0.2’
IP del servidor en el que instalaremos el Web (lo instalamos en epsms.eps.ua.es).
- Grafana Host: ‘192.168.0.2’
IP del servidor en el que instalaremos el servicio Grafana y la base de datos InfluxDB (los instalamos en epsms.eps.ua.es).
- Openvas Host: ‘192.168.0.2’
IP del servidor en el que instalaremos el servicio Openvas (lo instalamos en epsms.eps.ua.es).
- Password Admin user: ‘nuestra contraseña’
Dispondremos de un usuario admin para poder acceder a todos los servicios (introducimos la contraseña que queramos).
También podremos disponer (si lo necesitamos) de un usuario de sólo lectura, con su propia contraseña e IPs desde las que acceder (podremos configurar este usuario posteriormente desde la opción (2) del menú de control).
- Password Mysql root user: ‘nuestra contraseña para root’
En el caso de la base de datos, además del usuario admin (con el que podemos acceder a los datos almacenados por EPSMS) existe un usuario root (introducimos la contraseña que queramos).
- Hosts administrators: ‘La IP de nuestro equipo’
Podemos filtrar el acceso a los servicios desde ciertas IPs. Pondremos la IP de nuestro PC.
- Frequency to check Installed Software or fixed time: ‘4’
EPSMS comprueba la instalación y la configuración de la infraestructura a una frecuencia configurable (lo configuramos para que lo chequee cada 4 horas).
Es importante ajustar las frecuencia a la potencia de nuestro servidor para evitar que se cargue demasiado. En ese caso habría que ajustarlo bajando la frecuencia.
- Frequency to check new hosts in subnets or fixed time: ’05:00′
EPSMS comprueba la existencia de nuevos equipos (y su catalogación como nodos u outsiders) en la subred a una frecuencia configurable (lo configuramos para que lo chequee todos los días a las 05:00 AM).
- Frequency to check vulnerabilities in hosts: ‘3’
EPSMS chequea las vulnerabilidades de los equipos a una frecuencia configurable (lo configuramos cada tres meses). Podemos fijar el día y la hora en la opción (2) del menú de control.
Podemos excluir ciertos equipos para que no sean escaneados, desde la opción (2) del menú de control.
También podemos crear un grupo de equipos que sean chequeados a una frecuencia diferente (bien porque son importantes y queremos escanearlos a una mayor frecuencia, o bien escanearlos a una frecuencia menor) desde la opción (2) del menú de control.
Hay que tener en cuenta que esta tarea conlleva una importante carga de trabajo.
- Frequency to get Info from Nodes or fixed time: ‘2’
EPSMS se conecta a todos los nodos (equipos accesibles por ssh mediante ansible) para obtener información base de inventario y configurar el servicio nagios con los puertos a chequear. Podemos configurar la frecuencia de obtención de información (lo configuramos cada dos horas).
- Frequency to get Info Packages from Nodes or fixed time: ’12’
EPSMS se conecta a todos los nodos para obtener información específica sobre el software instalado (está opción puede tar algo más que la anterior, por lo que tiene una frecuencia específica). La configuramos para que realice la obtención de datos cada 12 horas (a las 12:00 y a las 00:00).
- Frequency to get Info Executables from Nodes or fixed time: ’24’
EPSMS se conecta a todos los nodos para obtener información sobre los ficheros ejecutable existentes (que firmará y luego servirá para poder detectar cambios, ver ejecutables con SETUID o SETGID activos, etc). Esta operación generalmente tarda mucho tiempo (podemos restringir los directorios de búsqueda desde la opción (2) del menú de control para limitar el tiempo). Lo configuramos cada 24 horas (cada día a las 00:00).
- Do you want to configure hosts as nodes (ssh connection with ‘root’ required)? ‘y’
Tenemos la posibilidad de gestionar equipos (Linux/UNIX) de nuestra subred para que durante la configuración sean detectados como nodos.
Siempre existe la posibilidad de hacerlo posteriormente desde la opción (3) del menú de control.
Para ‘convertir’ un equipo en un ‘nodo’, necesitaremos conectarnos por SSH como root (nos pedirá la contraseña) para que añada en el equipo el usuario remoto ‘Remote user to connect’, conceda permiso de acceso sin contraseña (para el usuario creado, mediante authorized_keys) desde el servidor EPSMS, y añada en el sudo permisos para cualquier operación sin contraseña.
Es muy importante asegurar el acceso al servidor EPSMS, ya que dispondrá de acceso al resto de equipos a monitorizar.</p<
Esta conexión como root sólo necesitamos hacerla en este punto determinado, posteriormente sólo es necesario el permiso de acceso con el usuario creado.
Si no queremos permitir el acceso como root en ningún momento, siempre podemos realizar a mano los pasos indicados anteriormente.
La configuración, por tanto, nos irá preguntando IPs o nombres de equipos a configurar como nodos, para a continuación pedirnos la contraseña de ‘root’. Tras cada equipo nos vuelve a repetir la pregunta (‘Do you want to configure hosts as nodes (ssh connection with ‘root’ required)?’). Si le indicamos ‘n’ continuamos al siguiente paso.
- Do you want to check windows hosts as nodes?: ‘y’
EPSMS es capaz de conectarse a equipos Window para obtener información para el inventario.
En nuestro caso, tenemos dos equipos Windows de los que queremos obtener inventario.
Para conectarse a un equipo Windows necesitamos configurarlos a mano (no existe la opción automatizada como hemos visto con los equipos Linux/Unix). Ayuda disponible en https://technet.microsoft.com/es-es/library/cc771551(v=ws.11).aspx (hay que tener en cuenta que además es probable que tengamos que configura el firewall para permitir la conexión al WMI).
Si queremos disponer en los equipos Windows de las gráficas de Munin, tendremos que instalar a mano el software cliente Munin-node-win32, disponible en Github https://github.com/munin-monitoring/munin-node-win32
De igual manera podemos hacer habilitar el cliente Nagios (NRPE) en los equipos Windows, instalando manualmente el software NSCLient++ disponible en https://docs.nsclient.org/howto/nrpe.
- Remote user to connect to Windows nodes: ‘ansible’
Este es el usuario con el el que nos conectaremos a los equipos windows para obtener información (le llamaremos igual que el usuario de conexión a los equipos Linux/UNIX).
- Password Windows User Nodes: ‘nuestra contraseña para el usuario de conexión’
Establecemos la contraseña del usuario de conexión a los equipos Window.
Obviamente tendremos que crear a mano el usuario (con esta contraseña) en cada equipo Windows a monitorizar (winNodos). Una vez creado le damos permisos de acceso al WMI (siguiendo los pasos del enlace anterior) y configuramos el firewall para permitir el acceso.
- Frequency to get Info from Windows Nodes or fixed time: ‘2’
Ajustamos la frecuencia a la que EPSMS se conectará a los winNodos para obtener información de inventario (la configuramos para que se conecte cada 2 horas).
Una vez ajustados los parámetros, se nos mostrará un resumen con todos ellos y se nos pregunta si queremos realizar la configuración. Respondemos ‘y’ y se inicia el despliegue de la infraestructura.
Despliegue de la Infraestructura
El primer paso será instalar los servicios Ansible (servicio de control), Mysql, Munin, Nagios, Web, InfluxDB y Grafana(todos ellos los instalará en el servidor epsms.eps.ua.es con IP 192.168.0.2). El servicio Openvas lo instalará al final, ya que tarda mucho tiempo y mientras tanto EPSMS empezará a recoger información.
Una vez instalados los servicios (excepto Openvas), se inicia un escaneo de la subred (192.168.0.0/27 excepto la IP del router excluida, la 192.168.0.1) para detectar equipos, y clasificarlos en nodos (accesible por ssh y ansible), winNodos (accesible por WMI) u outsiders (no accesibles).
Acto seguido se conecta a los nodos para instalarles el software cliente de Nagios (NRPE) y Munin (Munin-client) y configurarlos.
Los dos siguientes pasos se encargarán de obtener información de inventario de los nodos y los winNodos. En el caso de los nodos sólo se obtendrá la información base, no la de paquetes y ejecutables (obtener esta información consume mucho tiempo, y se deja para que la realice EPSMS a la frecuencia configurada, en lugar de atrasar el despliegue de la infraestructura).
En este momento se realiza la instalación y configuración del servicio Openvas. La configuración suela tardar más de 30 minutos debido a la carga de todas las firmas de chequeos.
Los dashsboards (cuadros de mando) se configuran en este momento, ya que para ello se consulta la información almacenada en la base de datos InfluxDB, y durante el tiempo de configuración del Openvas ha dado tiempo a Nagios y Munin a obtener datos de monitorización y traspasáserla. Posteriormente podemos cambiarlos al gusto (en caso de querer volbver a la versión inicial, lo borramos y EPSMS la volverá a crear).
Finalmente se añaden en el crontab del servidor de control las operaciones a realizar a las frecuencias configuradas, para que EPSMS continúe trabajando en background.
Toda la operación de despliegue suele tardar entre hora y media a dos horas (depende de la potencia del hardware disponible). Durante el proceso se nos mostrará información sobre las tareas realizadas en cada momento, y se detendrá si algo falla, mostrando el error (en ese caso tendremos que solucionar el problema y reconfigurar el sistema de nuevo).
Una vez finalice se nos muestra un mensaje con la dirección URL del servicio Web desde el que podemos empezar a cosultar los resultados obtenidos. En nuestro caso la URL será https://epsms.eps.ua.es
Configuración adicional
Desde la opción (2) Configure Extra Variables del menú de control podemos afinar la configuración si nos interesa (entre otras opciones):
- Añadir un usuario de lectura.
- Cambiar los directorios de búsqueda (o bien seleccionar directorios a saltar) de ejecutables para acelerar esta tarea.
- Tipo de chequeo de vulnerabilidades (Openvas).
- Ajuste del día, hora y minutos del chequeo general Openvas.
- Equipos donde no hay que realizar chequeos de vulnerabilidades.
- Grupos de equipos con chequeo especial (diferente frecuencia del chequeo general).
Personalización
En este momento dispondremos de una infraestructura de monitorización que podremos personalizar a nuestro gusto:
- Añadiendo los chequeos Nagios que necesitemos monitorizar en los nodos.
- Creando los plugins Munin para obtener gráficas personalizadas.
- Modificando los dashboards de Grafana (o bien creando nuevos) dependiendo de nuestras necesidades.
- Modificando las aplicaciones web para acceder a la información de inventario.
- Cambiando el programa (código fuente en /etc/ansible) para personalizarlo según necesitemos añadiendo nuevas funcionalidades.
Ayuda adicional
Podremos obtener información adicional (en inglés) en la opción Help de la Demo (usuario: epsms contraseña: epsms)
Tendremos disponible información sobre:
- Readme
Resumen sobre la funcionalidad de EPSMS (formato PDF)
- Description
Descripción general sobre la instalación, configuración, despliegue y funcionamiento general de EPSMS
- Menu
Información sobre la funcionalidad de cada una de las opciones del menú de control (el menú incluye ayuda integrada la opción (0))
- Configuration
Explicación sobre cada una de los parámetros requeridos en la configuración de EPSMS
- Extra Configuration
Explicación sobre cada una de los opciones de configuración adicional
- Structure
Información detallada sobre toda la estructura de directorios y ficheros de /etc/ansible, imprescindible para poder modificar y personalizar la funcionalidad de EPSMS
- FAQ
Compendio de preguntas-respuestas (agrupadas por temas) sobre los aspectos más importantes de EPSMS
- Example
Descripción paso a paso de la configuración de EPSMS tomando como ejemplo la Demo online
2 Replies to “EPSMS: Instalación y configuración”