Snort o Suricata. Parte 2: instalación y configuración inicial de Suricata

Si se cree en las estadísticas, el volumen del tráfico de red aumenta aproximadamente un 50% cada año. Esto provoca un aumento en la carga del equipo y, en particular, eleva las demandas de rendimiento de IDS/IPS. Se puede comprar hardware especializado costoso, pero hay una opción más económica: implementar uno de los sistemas de código abierto. Muchos administradores principiantes piensan que instalar y configurar un IPS gratuito es bastante complicado. En el caso de Suricata, esto no es del todo cierto: se puede instalar y comenzar a mitigar ataques típicos con un conjunto de reglas gratuitas en cuestión de minutos.

Snort o Suricata. Parte 2: instalación y configuración inicial de Suricata
Snort o Suricata. Parte 1: eligiendo un IDS/IPS gratuito para proteger la red corporativa

¿Por qué se necesita otro IPS de código abierto?

Durante mucho tiempo, el sistema Snort, considerado estándar, ha sido desarrollado desde finales de los años noventa, por lo que originalmente era de un solo hilo. A lo largo de los años, ha adquirido todas las características modernas, como el soporte para IPv6, la capacidad de análisis de protocolos de nivel de aplicación o un módulo de acceso a datos universal.

El motor básico Snort 2.X aprendió a trabajar con múltiples núcleos, pero siguió siendo de un solo hilo y, por lo tanto, no puede aprovechar de manera óptima las ventajas de las plataformas de hardware modernas.

El problema fue resuelto en la tercera versión del sistema, pero su desarrollo tardó tanto que en el mercado ya había surgido Suricata, escrita desde cero. En 2009, se comenzó a desarrollar como una alternativa multihilo a Snort, con funciones de IPS incluidas de forma nativa. El código se distribuye bajo la licencia GPLv2, pero los socios financieros del proyecto tienen acceso a una versión privada del motor. Algunos problemas de escalabilidad en las primeras versiones del sistema surgieron, pero se resolvieron rápidamente.

¿Por qué Suricata?

Suricata tiene varios módulos (al igual que Snort): de captura, recolección, decodificación, detección y salida. Por defecto, el tráfico capturado es decodificado en un solo hilo, aunque esto carga más el sistema. Si es necesario, los hilos se pueden dividir en la configuración y distribuirse entre los procesadores: Suricata está muy bien optimizado para hardware específico, aunque esto ya no es un nivel HOWTO para principiantes. También cabe destacar la presencia en Suricata de herramientas avanzadas de inspección HTTP basadas en la biblioteca HTP. Estas también pueden utilizarse para el registro de tráfico sin detección. El sistema también admite la decodificación de IPv6, incluidos túneles IPv4-en-IPv6, IPv6-en-IPv6 y otros.

Para la interceptación de tráfico se pueden utilizar diferentes interfaces (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), y en modo Unix Socket se puede analizar automáticamente archivos PCAP capturados por otro sniffer. Además, la arquitectura modular de Suricata facilita la incorporación de nuevos elementos para la captura, decodificación, análisis y procesamiento de paquetes de red. También es importante señalar que en Suricata el bloqueo de tráfico se lleva a cabo mediante el filtrado nativo del sistema operativo. En GNU/Linux hay dos opciones de funcionamiento de IPS: a través de la cola NFQUEUE (modo NFQ) y mediante zero copy (modo AF_PACKET). En el primer caso, el paquete que cae en iptables se dirige a la cola NFQUEUE, donde puede ser procesado a nivel de usuario. Suricata lo evalúa según sus reglas y emite uno de tres veredictos: NF_ACCEPT, NF_DROP y NF_REPEAT. Los dos primeros no requieren explicación, y el último permite marcar los paquetes y enviarlos de vuelta al inicio de la tabla actual de iptables. El modo AF_PACKET se caracteriza por un mayor rendimiento, pero impone ciertas restricciones al sistema: debe tener dos interfaces de red y funcionar como un gateway. Un paquete bloqueado simplemente no se reenvía a la segunda interfaz.

Una característica importante de Suricata es la posibilidad de utilizar desarrollos de Snort. Al administrador se le ofrecen, entre otros, los conjuntos de reglas Sourcefire VRT y OpenSource Emerging Threats, así como Commercial Emerging Threats Pro. La salida unificada se puede analizar utilizando backend populares y también se soporta la salida en PCAP y Syslog. Las configuraciones del sistema y las reglas se almacenan en archivos de formato YAML, que son fáciles de leer y pueden ser procesados automáticamente. El motor Suricata reconoce numerosos protocolos, por lo que no es necesario vincular las reglas a un número de puerto. Además, en las reglas de Suricata se practica activamente el concepto de flowbits. Para rastrear la activación, se utilizan variables de sesión que permiten crear y aplicar diferentes contadores y flags. Muchos IDS consideran diferentes conexiones TCP como entidades separadas y pueden no ver la relación entre ellas, que indica el inicio de un ataque. Suricata intenta ver el panorama completo y en muchos casos reconoce el tráfico malicioso distribuido a través de diferentes conexiones. Se puede hablar mucho de sus ventajas, pero mejor pasemos a la instalación y configuración.

¿Cómo instalar?

Vamos a instalar Suricata en un servidor virtual que funciona con Ubuntu 18.04 LTS. Todos los comandos deben ejecutarse como superusuario (root). La opción más segura es conectarse al servidor por SSH con los derechos de un usuario normal y luego aplicar la utilidad sudo para elevar privilegios. Primero, necesitamos instalar los paquetes que nos serán necesarios:

sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-https

Conectamos el repositorio externo:

sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update

Instalamos la última versión estable de Suricata:

sudo apt-get install suricata

Si es necesario, ajustamos los archivos de configuración de nombre, reemplazando el eth0 predeterminado por el nombre real de la interfaz externa del servidor. La configuración predeterminada se encuentra en el archivo /etc/default/suricata, y la personalizada en /etc/suricata/suricata.yaml. La configuración del IDS se limita en gran medida a la modificación de este archivo de configuración. Contiene numerosos parámetros cuyos nombres y propósitos coinciden con sus equivalentes en Snort. Sin embargo, la sintaxis es completamente diferente, pero el archivo es mucho más fácil de leer que las configuraciones de Snort, además está bien comentado.

sudo nano /etc/default/suricata

Snort o Suricata. Parte 2: instalación y configuración inicial de Suricata

y

sudo nano /etc/suricata/suricata.yaml

Snort o Suricata. Parte 2: instalación y configuración inicial de Suricata

¡Atención! Antes de iniciar, se deben verificar los valores de las variables en la sección vars.

Para completar la configuración, será necesario instalar suricata-update para actualizar y cargar las reglas. Hacer esto es bastante sencillo:

sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-update

A continuación, necesitamos ejecutar el comando suricata-update para instalar el conjunto de reglas Emerging Threats Open:

sudo suricata-update

Snort o Suricata. Parte 2: instalación y configuración inicial de Suricata

Para ver la lista de fuentes de reglas, ejecutamos el siguiente comando:

sudo suricata-update list-sources

Snort o Suricata. Parte 2: instalación y configuración inicial de Suricata

Actualizamos las fuentes de reglas:

sudo suricata-update update-sources

Snort o Suricata. Parte 2: instalación y configuración inicial de Suricata

Revisamos nuevamente las fuentes actualizadas:

sudo suricata-update list-sources

Si es necesario, se pueden habilitar las fuentes gratuitas disponibles:

sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklist

Después de eso, es necesario actualizar las reglas una vez más:

sudo suricata-update

Con esto, la instalación y configuración inicial de Suricata en Ubuntu 18.04 LTS se puede considerar finalizada. A continuación, comenzará lo más interesante: en el siguiente artículo, conectaremos el servidor virtual a la red de oficina a través de VPN y comenzaremos a analizar todo el tráfico entrante y saliente. Prestaremos especial atención al bloqueo de ataques DDoS, la actividad de malware y los intentos de explotación de vulnerabilidades en los servicios accesibles desde redes públicas. Para mayor claridad, se simularán ataques de los tipos más comunes.

Snort o Suricata. Parte 2: instalación y configuración inicial de Suricata

Snort o Suricata. Parte 2: instalación y configuración inicial de Suricata

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster