- Prevención y herramientas de seguridad contra hackers
- Hardening seguridad de servidores y sistemas operativos
Suricata que es capaz de realizar análisis multihilo, de forma nativa decodificar flujos de red y ensamblar archivos de secuencias de red mientras realiza el análisis.
Esta herramienta es muy escalable esto significa que puede ejecutar varias instancias y equilibrando la carga si tenemos varios procesadores permitiendo la utilizacion de todo el potencial de un equipo. Esto permite que no tengamos problemas de consumo de recursos mientras ejecutamos un análisis.
Los protocolos más comunes son reconocidos automáticamente por Suricata, tanto http, https, ftp, smtp, pop3 y otros, permitiendo así que podamos configurar reglas para los permisos y el filtrado del trafico que entra y sale, además controlamos el puerto por el que se accede a cada protocolo.
Otro de los servicios que brinda es la identificación Archivo, sumas de verificación MD5 y control de archivos comprimidos. Suricata puede identificar que tipos de archivo están tranfiriéndose o accediéndose en la red. Si queremos acceder a un archivo, esta tarea hará que Suricata cree un archivo en el disco con formato de metadatos que describe la situación y el la tarea realizada. La suma de verificación MD5 sirve para determinar que el archivo de metadatos que guarda la información de las tareas realizadas no ha sido modificado.
Instalar Suricata en nuestro sistema operativo
Suricata se puede utilizar en cualquier plataforma Linux, Mac, FreeBSD, UNIX y Windows lo podemos descargar desde su pagina oficial o bien si tenemos Linux instalar desde los repositorios.
Instalaremos Suricata en este tutorial en Linux Mint. Para instalar Suricata abrimos una ventana de terminal y escribimos los siguientes comandos:
sudo add-apt ppa-repositorio: oisf / suricata estable sudo update apt-get sudo apt-get install suricataCon esto estaría instalado.
Configurar Suricata en un servidor
Desde Linux deberemos acceder a la terminal en modo administrador, comenzaremos con la creación de una carpeta donde almacenar la información que ira recogiendo y registrando Suricata.
sudo mkdir /var/log/suricataDeberemos además verificar que el sistema se encuentre en la carpeta etc, sino lo creamos:
sudo mkdir /etc/suricataYa tendremos instalado Suricata y el Sistema de detección de intrusiones y analizador de trafico de red. En esta etapa no hay reglas definidas para filtrar por ello deberemos crear reglas o bien utilizar. Emerging Threats que es un repositorio de reglas y amenazas conocidas para Snort y Suricata, algo así como la base de datos de un antivirus pero para intrusiones utilizar las reglas de Emerging Threats es libre y gratuito.
A continuación podemos descargar archivos de reglas desde la terminal con los siguientes comandos:
wget http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gzLuego deberemos descomprimir el archivo y copiarlo a la carpeta /etc/suricata
tar zxvf emerging.rules.tar.gz cp -r rules /etc/suricata/A continuación deberemos configurar el motor de análisis de Suricata, con la configuración por defecto utilizará las interfaces de red eth0 con reglas que contenga y definamos en el archivo signatures.rules, para configurar nuevas reglas debemos utilizar el siguiente comando:
suricata -c suricata.yaml -s signatures.rules -i eth0Serán configuradas las reglas.
Interfaces de red disponibles
Para comprobar las conexiones o de interfaces de red disponibles, desde una ventana de terminal escribimos el siguiente comando:
Ifconfig
Ahora se puede ver cual queremos auditar sabiendo la IP de cada una y su nombre. Para iniciar el motor y asignar una interfaz de red por ejemplo la red wifi, escribimos el siguiente comando:
sudo suricata -c /etc/suricata/suricata.yaml -i wlan0Si queremos auditar la red cableada utilizaremos eth0. Para ver si el motor está funcionando correctamente y realmente esta realizando inspecciones en la red deberemos utilizar el siguiente comando:
cd /var/log/suricata tail http.logEsto nos mostrará un listado con la fecha la hora y la web o la ip a la que se accedió y a través de que puerto. Si miramos el archivos statslog, podremos observar, el flujo de tráfico y las alertas detectadas, debemos distinguir la páginas que navegamos de aquellas que se redireccionan mediante publicidad.
tail -f stats.logTambién podemos descargar los archivos de log y abrirlos con un editor de texto o un software propio para mejorar la lectura.
Un ejemplo es un archivo Json que se denomina even.json
Aquí podemos ver los puertos utilizados y las ip podemos observar que la ip 31.13.85.8 se corresponde a Facebook, también detectamos un acceso a c.live.com, que sería la web de correo de Outlook.
Veamos otro log donde donde detectamos accesos desde Google Chrome a la web de Solvetic.com.
Para no controlar todo el tráfico podemos determinar el monitor de un grupo o de un usuario determinado con el siguiente comando.
sudo suricata -c /etc/suricata/suricata.yaml -D -i eth0 --user=jose01 --group=contabilidadDebemos tener en cuenta que ejecutar los conjuntos de reglas, incluso de tamaño modesto para hacer un monitoreo de un flujo de tráfico HTTP utilizando el repositorios de las amenazas completo y su conjunto de reglas requerirá aproximadamente una un consumo de recursos de CPU y memoria RAM equivalente a un trafico de 50 Mb por segundo aunque no es mucho como para afectar un servidor.
Reglas para ignorar trafico
En algunos casos hay razones para ignorar cierto tráfico que no nos interesa monitorear. Tal vez un host o red de confianza o un sitio web.
Veremos algunas estrategias para ignorar el tráfico con suricata. Mediante los filtros de captura se le puede decir a Suricata, que seguir y que no. Por ejemplo, un sencillo filtro de protocolo tcp sólo auditara los paquetes TCP.
Si algunos equipos o redes deben ser ignorados, deberemos utilizar not IP1 o ip/ 24, para ignorar todos los equipos de una red.
Aprobar un paquete y su trafico
Para aprobar reglas con Suricata y determinar que no se filtre un paquete por ejemplo proveniente de una determinada ip y del protocolo TCP entonces utilizaremos el siguiente comando en los archivos de reglas establecidos en la carpeta /etc/suricata/rules
Pass 192.168.0.1 any <> any any (msg: "Aceptar todo el tráfico de esta ip";)Para ver que módulos tenemos activados de Suricata abriremos una ventana de terminal y luego escribimos el siguiente comando:
suricata --build-infoHemos visto como Suricata con sus servicio IDS basado en reglas para controlar el tráfico de red y proporcionar alertas al administrador del sistema cuando se producen eventos sospechosos, es muy útil para que acompañado por otros sistemas de seguridad de red permita proteger nuestros datos de accesos indebidos.
Suricata cuenta con la funcionalidad y opciones de bibliotecas que pueden añadirse mediante plugins para incorporarse como monitor o API en otras aplicaciones.
Algo importante es conocer que servicios están activos y que debemos monitorear para no tener informes larguísimos de servicios o puertos que no funcionan.
Si por ejemplo los servidores son solo para web y solo necesitan el puerto 80 para HTTP, no hay razón para monitorear el servicio SMTP que es para enviar correo.