LinuxParty
Con incesantes amenazas de seguridad, los sistemas de detección de intrusos (IDS) se han convertido en uno de los requisitos más críticos en entornos de centros de datos de hoy en día. Sin embargo, a medida que más y más servidores de actualización de sus tarjetas de red a 10 GB / 40 GB Ethernet, cada vez es más difícil de poner en práctica la detección de intrusiones informáticas intensivas por hardware a velocidades de línea. Un enfoque para escalar el rendimiento IDS es IDS multi-hilo, donde la carga de trabajo de inspección profunda de paquetes intensiva de la CPU está paralelizado en múltiples tareas simultáneas. Dicha inspección paralelizada puede aprovechar el hardware multi-núcleo para ampliar IDS throughput fácilmente. Dos esfuerzos de código abierto bien conocidos en esta área son Suricata y Bro.
En este tutorial, voy a demostrar cómo instalar y configurar Suricata IDS en el servidor Linux.
Instalar Suricata IDS en Linux
Vamos a crear Suricata desde el código fuente. En primer lugar, es necesario instalar varias dependencias necesarias de la siguiente manera.
Instalar dependencias en Debian, Ubuntu o Linux Mint
$ sudo apt-get install wget build-essential libpcre3-dev libpcre3-dbg automake autoconf libtool libpcap-dev libnet1-dev libyaml-dev zlib1g-dev libcap-ng-dev libjansson-dev
Instalar dependencias en CentOS, Fedora o RHEL
$ sudo yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel
Una vez que instale todos los paquetes requeridos, seguir adelante e instalar Suricata de la siguiente manera.
En primer lugar, descargar el último código fuente Orcinus de http://suricata-ids.org/download/, y construirlo. Al escribir estas líneas, la última versión era la 2.0.8.
$ wget http://www.openinfosecfoundation.org/download/suricata-2.0.8.tar.gz
$ tar -xvf suricata-2.0.8.tar.gz
$ cd suricata-2.0.8
$ ./configure --sysconfdir=/etc --localstatedir=/var
Aquí está la salida ejemplo de configuración.
Suricata Configuration: AF_PACKET support: yes PF_RING support: no NFQueue support: no NFLOG support: no IPFW support: no DAG enabled: no Napatech enabled: no Unix socket enabled: yes Detection enabled: yes libnss support: yes libnspr support: yes libjansson support: yes Prelude support: no PCRE jit: yes LUA support: no libluajit: no libgeoip: no Non-bundled htp: no Old barnyard2 support: no CUDA enabled: no
Ahora compilarlo e instalarlo.
$ make
$ sudo make install
El código fuente de Suricata viene con archivos de configuración por defecto. Vamos a instalar estos archivos de configuración por defecto de la siguiente manera.
$ sudo make install-conf
Como saben, Suricata es inútil sin los conjuntos de reglas del IDS. Convenientemente, el Makefile trae la opción de instalación con las reglas IDS. Para instalar reglas de IDS, ejecute el siguiente comando.
$ sudo make install-rules
El comando de instalación de regla anterior descarga la instantánea actual de los conjuntos de reglas disponibles en la comunidad de EmergingThreats.net , y los almacena en /etc/suricata/rules
Configurar Suricata IDS por primera vez
Ahora es el momento de configurar Suricata. El archivo de configuración se encuentra en /etc/suricata/suricata.yaml. Abra el archivo con un editor de texto para su edición.
$ sudo vi /etc/suricata/suricata.yaml
Éstas son algunas reglas de configuración básica para que usted pueda comenzar.
La palabra clave "default-log-dir" debe apuntar a la ubicación de los archivos de registro Suricata.
default-log-dir: /var/log/suricata/
Bajo la sección "vars", encontrará varias variables importantes utilizados por Suricata. "HOME_NET" debe apuntar a la red local para ser inspeccionado por Suricata. "!$ HOME_NET" (asignado a EXTERNAL_NET) se refiere a cualquier otra red que la red local. "XXX_PORTS" indica el número de puerto(s), utilizado por diferentes servicios. Tenga en cuenta que Suricata puede detectar automáticamente el tráfico HTTP independientemente del puerto que utiliza. Por lo tanto, no es crítica para especificar la variable HTTP_PORTS correctamente.
vars: HOME_NET: "[192.168.122.0/24]" EXTERNAL_NET: "!$HOME_NET" HTTP_PORTS: "80" SHELLCODE_PORTS: "!80" SSH_PORTS: 22
La sección de "host-os-policy" se utiliza para defenderse de algunos ataques bien conocidos que explotan el comportamiento de pila de red de un sistema operativo (por ejemplo, el reensamblaje TCP) para evadir la detección. Como contramedida, los IDS modernos recurrieron a la llamada inspección "por objetivos" "target-based", cuando el motor de inspección afina su algoritmo de detección basado en un sistema operativo de destino del tráfico. Por lo tanto, si usted sabe lo que los OS anfitriones locales individuales están ejecutando, se puede alimentar esa información para Suricata para mejorar potencialmente la tasa de detección. Esto es cuando se utiliza la sección "host-os-policy". En este ejemplo, la política de IDS por defecto es Linux; si no hay información del OS es conocido por una dirección IP en particular, Suricata aplicará la inspección basada en Linux. Cuando se captura el tráfico de 192.168.122.0/28 y 192.168.122.155, Suricata se aplicará la política de inspección basado en Windows.
host-os-policy: # These are Windows machines. windows: [192.168.122.0/28, 192.168.122.155] bsd: [] bsd-right: [] old-linux: [] # Make the default policy Linux. linux: [0.0.0.0/0] old-solaris: [] solaris: ["::1"] hpux10: [] hpux11: [] irix: [] macos: [] vista: [] windows2k3: []
windows2k3: []
Bajo la sección "threading", puede especificar afinidad de CPU para los diferentes hilos Suricata. Por defecto, la afinidad de la CPU está desactivado ( "set-cpu-affinity: no"), lo que significa que las discusiones de Suricata serán programados en cualquiera de núcleos de CPU disponibles. De forma predeterminada, Suricata creará un hilo "detectar" para cada núcleo de CPU. Puede ajustar este comportamiento especificando "detect-thread-ratio: N". Esto creará N * M detectar hilos, donde M es el número total de núcleos de CPU en el host.
threading: set-cpu-affinity: no detect-thread-ratio: 1.5
Con la configuración de roscado anteriores, Suricata creará 1,5 * hilos de detección M, donde M es el número total de núcleos de CPU en el sistema.
Para obtener más información sobre la configuración Suricata, se puede leer el archivo de configuración por defecto en sí, que está fuertemente comentó para mayor claridad.
Realizar detección de intrusiones con Suricata
Ahora es el momento de probar a ejecutar Suricata. Antes de su lanzamiento, hay un paso más que hacer.
Cuando se utiliza el modo de captura de pcap, es muy recomendable desactivar cualquier característica de paquetes offloead (por ejemplo, LRO / GRO) en la tarjeta de red, que está escuchando en Suricata, ya que esas funciones pueden interferir con la captura de paquetes en vivo.
Así es cómo puede desactivar LRO/GRO en la interfaz de red eth0:
$ sudo ethtool -K eth0 gro off lro off
Tenga en cuenta que dependiendo de su tarjeta de red, es posible que aparezca el siguiente mensaje de advertencia, que puede pasar por alto. Simplemente significa que la tarjeta de red no es compatible con LRO.
No se puede cambiar a gran recibir-offload
Cannot change large-receive-offload
Suricata es compatible con varios modos de funcionamiento. Un RunMode determina cómo los diferentes hilos se utilizan para el IDS. El siguiente comando muestra todos los runmodes disponibles .
$ sudo /usr/local/bin/suricata --list-runmodes
El RunMode predeterminado utilizado por Suricata es autofp (que significa "auto equilibrio para flujos altos de carga" o" auto flow pinned load balancing"). En este modo, los paquetes de cada flujo distinto se asignan a una sola hilo "detectar". Los flujos se asignan a las discusiones con el menor número de paquetes sin procesar.
Por último, vamos a comenzar Suricata, y a verlo en acción.
$ sudo /usr/local/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 --init-errors-fatal
En este ejemplo, estamos monitoreando una interfaz eth0 red en un sistema de 8 núcleos. Como puede observarse, Suricata crea 13 hilos de procesamiento de paquetes y 3 hilos de gestión. Los hilos de procesamiento de paquetes consisten en un hilo PCAP captura de paquetes, y 12 detectan hilos (igual a 8 * 1.5). Esto significa que los paquetes capturados por un hilo de captura son de equilibrio de carga de 12 hilos para detectar IDS. Los hilos de gestión son un gestor de flujo y dos contadores / Estadísticas hilos relacionados.
Aquí hay un hilo-vista del proceso de Suricata (tramado por H TOP ).
los registros de detección Suricata se almacenan en / var / directorio / log suricata.
/var/log/suricata/fast.log $ tail-f
01/04 / 2015-15: 47: 12.559075 [**] [1: 2.200.074: 1] SURICATA TCPv4 suma de comprobación no válida [**] [Clasificación: (null)] [Prioridad: 3] {} TCP 172.16.253.158:22 -> 172.16.253.1:46997 01/04 / 2015-15: 49: 06,565901 [**] [1: 2.200.074: 1] SURICATA TCPv4 suma de comprobación no válida [**] [Clasificación: (null)] [Prioridad: 3] {} TCP 172.16.253.158:22 -> 172.16.253.1:46317 01/04 / 2015-15: 49: 06,566759 [**] [1: 2.200.074: 1] SURICATA TCPv4 suma de comprobación no válida [**] [Clasificación: (null)] [Prioridad: 3] {} TCP 172.16.253.158:22 -> 172.16.253.1:46317
Para facilitar la importación, el registro también está disponible en formato JSON:
$ tail -f /var/log/suricata/eve.json
{"timestamp":"2015-04-01T15:49:06.565901","event_type":"alert","src_ip":"172.16.253.158","src_port":22,"dest_ip":"172.16.253.1","dest_port":46317,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2200074,"rev":1,"signature":"SURICATA TCPv4 suma de comprobación no válida "," categoría: "severidad" "," ": 3}} {"timestamp":"2015-04-01T15:49:06.566759","event_type":"alert","src_ip":"172.16.253.158","src_port":22,"dest_ip":"172.16.253.1","dest_port":46317,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2200074,"rev":1,"signature":"SURICATA TCPv4 suma de comprobación no válida "," categoría: "severidad" "," ": 3}}
Conclusión
En este tutorial, he demostrado cómo se puede configurar Suricata IDS en un servidor multi-núcleo Linux. A diferencia de un solo subproceso Snort IDS , Suricata puede beneficiarse fácilmente de hardware multi-core / núcleo muchas de ellas con múltiples hilos. Hay gran cantidad de personalización en Suricata para maximizar su rendimiento y detección de cobertura. Suricata personas mantienen en línea Wiki bastante bien, por lo que recomiendo encarecidamente que verlo si desea implementar Suricata en su entorno.
¿Está utilizando actualmente Suricata? Si es así, puedes compartir tu experiencia libre.
-
Hackers
- 116 paquetes de malware encontrados en el repositorio PyPI que infectan sistemas Windows y Linux
- La reputación sombría de Tor solo terminará si todos lo usamos
- La hacker SexyCyborg, es la hacker más sexy del mundo
- Que signifca ser un hacker millonario menor de 25 años
- Cómo recuperar la contraseña de root olvidada en Rocky Linux / AlmaLinux
- SharkBot, el nuevo virus de Android que roba cuentas bancarias y criptomonedas
- Los gobiernos desactivan y detienen al grupo de Ransomware REvil
- Paquetes maliciosos de NPM detectados ejecutando Cryptomineros en dispositivos Windows, Linux y macOS
- Cómo utilizar Conspy para ver y controlar consolas virtuales Linux remotas en tiempo real
- Las mejores 20 herramientas de hacking y penetración en Linux
- La Policía británica le dice a los padres: Si tu hijo usa Discord, Kali Linux o VirtualBox, llamanos
- CamScanner, la app de Android infectada con un virus, que ahora debes comprobar y borrar, si procede.
- El bot que aterroriza a Internet: te graba cuando ves porno
- Top de la Mejores Chicas Hacker del Mundo
- El malware más complejo de la historia que ha estado 5 años escondido