LinuxParty

Ratio:  / 0
MaloBueno 

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.

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Encuesta de LinuxParty

Crees que la robotización traerá acarreada...

Que la gente abandonará las ciudades para vivir en los pueblos. - 16.4%
Que en los pueblos la robotización se frenará por los humanos - 13.1%
Que a la gente no les gustarán sus vecinos robots. - 3.3%
Que los negocios pequeños sufrirán la carencia de clientes humanos. - 9.8%
Que los humanos achacarán su desgracia a los robots y pasará algo grave. - 19.7%
Que los robots se levantarán contra los humanos y nos exterminarán. - 37.7%

Total votes: 61
The voting for this poll has ended on: 30 Sep 2017 - 00:00

Donar a LinuxParty

La mejor forma de darnos las gracias, es hacer una donación.


Tutorial de Linux

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política