Cómo instalar Snort en Ubuntu 20.04 | Ubuntu 21.10

Cómo instalar Snort en Ubuntu 20.04 | Ubuntu 21.10

 

Snort es un sistema de prevención de intrusiones de red ligero de código abierto para ejecutar un sistema de detección de intrusiones de red (NIDS). Snort se usa para monitorear los datos del paquete enviados/recibidos a través de una interfaz de red específica. Los sistemas de detección de intrusos en la red pueden detectar amenazas que se dirijan a las debilidades y vulnerabilidades de su sistema utilizando tecnologías de análisis de protocolos y detección basadas en firmas.

Cuando el software NIDS está instalado y configurado correctamente, puede identificar diferentes tipos de ataques y sospechas, como ataques CGI, violaciones de políticas de red, sondeos SMB, infecciones de malware, un sistema comprometido, escaneo de puertos ocultos, etc.

En este tutorial, aprendemos cómo instalar Snort 3 en Ubuntu 20.04 .

Algunas de las nuevas características de Snort 3:

  • Admite múltiples subprocesos de procesamiento de paquetes
  • Permite el procesamiento de paquetes múltiples
  • Documentación de referencia autogenerada
  • Use una configuración programable simple
  • Haga que los componentes clave sean enchufables
  • Permite a los usuarios escribir sus propios complementos.
  • Configuración compartida y tabla de atributos
  • Permite que las reglas se ejecuten más rápido

Paso 1: Actualizar el sistema

Primero, actualice y actualice su sistema Ubuntu

sudo apt update
sudo apt upgrade

Paso 2: Instale las dependencias requeridas

El repositorio predeterminado de Ubuntu tiene el paquete snort. El paquete de snort disponible allí es la versión anterior. Para instalar Snort 3, tenemos que construir desde la fuente. Antes de instalar Snort 3, debemos instalar los requisitos previos y las bibliotecas requeridas.

Instale los paquetes de dependencias de Snort 3 con el siguiente comando:

sudo apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev

Después de instalar las dependencias, crea un directorio donde compilas y guardas los archivos fuente para Snort con el siguiente comando:

mkdir snort-source-files cd snort-source-files

Luego, descargue e instale la última versión de la biblioteca de adquisición de datos de Snort (LibDAQ). Para instalar LibDAQ , necesitaremos compilarlo e instalarlo desde la fuente con el siguiente comando.

git clone https://github.com/snort3/libdaq.git cd libdaq ./bootstrap ./configure make
make install

La siguiente dependencia es Tcmalloc, que optimizará la asignación de memoria y proporcionará un mejor uso de la memoria.

Instale Tcmalloc con el siguiente comando.

cd ../
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9/gperftools-2.9.tar.gz tar xzf gperftools-2.9.tar.gz 
cd gperftools-2.9/ ./configure make 
make install

Paso 3: Instale Snort 3 en Ubuntu 20.04

 

Después de configurar las dependencias, vamos a descargar e instalar Snort 3 en Ubuntu 20.04.

01. Repositorio oficial de GitHub de Clone Snort 3.

cd ../
git clone git://github.com/snortadmin/snort3.git

02. Cambia el directorio a Snort3

cd snort3/

03. Desde allí configure y habilite tcmalloc con el siguiente comando.

./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc

04. Navegue hasta el directorio de compilación y compile e instale Snort 3 usando make y make install con el siguiente comando.

cd build
make 
make install

05. Cuando finalice la instalación, actualice las bibliotecas compartidas.

sudo ldconfig

Snort por defecto está instalado en el directorio /usr/local/bin/snort, es una buena práctica crear un enlace simbólico para /usr/sbin/snort

sudo ln -s /usr/local/bin/snort /usr/sbin/snort

06. Verificar la instalación de Snort 3

snort -V

Producción:

,,_     -> Snort++ <-
   o"  )~   Version 3.1.10.0
    ''''    By Martin Roesch & The Snort Team
            http://snort.org/contact#team
            Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved.
            Copyright (C) 1998-2013 Sourcefire, Inc., et al.
            Using DAQ version 3.0.4
            Using LuaJIT version 2.1.0-beta3
            Using OpenSSL 1.1.1f  31 Mar 2020
            Using libpcap version 1.9.1 (with TPACKET_V3)
            Using PCRE version 8.39 2016-06-14
            Using ZLIB version 1.2.11
            Using LZMA version 5.2.4

Si ve un resultado similar, entonces Snort 3 se instaló correctamente.

Configurar tarjetas de interfaz de red

Encuentre la interfaz en la que Snort escucha el tráfico de red y habilite el modo promiscuo para poder ver todo el tráfico de red que se le envía.

ip link set dev eh0 promisc on

Verifique con el siguiente comando.

ip add sh eth0

Producción:

2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER UP> mtu 1500 qdisc mq state UP group default qlen 1000
     link/ether f2:3c:92:ed:7e:d8 brd ff:ff:ff:ff:ff:ff
     inet 74.207.230.186/24 brd 74.207.230.255 scope global dynamic eth0
        valid_lft 72073sec preferred_lft 72073sec
     inet6 2600:3c02::f03c:92ff:feed:7ed8/64 scope global dynamic mngtmpaddr noprefixroute 
        valid_lft 60sec preferred_lft 20sec
     inet6 fe80::f03c:92ff:feed:7ed8/64 scope link 
        valid_lft forever preferred_lft forever

A continuación, deshabilite la descarga de la interfaz para evitar que Snort 3 trunque paquetes grandes, con un máximo de 1518 bytes. Compruebe si esta función está habilitada con el siguiente comando.

ethtool -k eth0 | grep receive-offload

Si ve este resultado, GRO está habilitado mientras LRO está fijo o LRO está habilitado.

Producción.

generic-receive-offload: on
large-receive-offload: on

Desactívelo con el siguiente comando.

ethtool -K eth0 gro off lro off

Dos asegurar que los cambios persistan durante el reinicio del sistema, necesitaremos crear y habilitar una unidad de servicio systemd para implementar los cambios.

sudo nano /etc/systemd/system/snort3-nic.service

Pegue la siguiente configuración que apunta a su interfaz de red.

[Unit] Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot After=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/ip link set dev eth0 promisc on
ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off 
TimeoutStartSec=0 
RemainAfterExit=yes

[Install]
WantedBy=default.target

Vuelva a cargar los ajustes de configuración de systemd:

sudo systemctl daemon-reload

Inicie y habilite el servicio en el arranque con el siguiente comando:

sudo systemctl enable --now snort3-nic.service

Producción.

Created symlink /etc/systemd/system/default.target.wants/snort3-nic.service → /etc/systemd/system/snort3-nic.service.

Verifica el servicio snort3-nic.service con:

sudo systemctl status snort3-nic.service

Producción.

● snort3-nic.service - Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
      Loaded: loaded (/etc/systemd/system/snort3-nic.service; enabled; vendor preset: enabled)
      Active: active (exited) since Sat 2021-09-18 12:35:17 UTC; 4min 59s ago
     Process: 182782 ExecStart=/usr/sbin/ip link set dev eth0 promisc on (code=exited, status=0>
     Process: 182783 ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off (code=exited, status=0>
    Main PID: 182783 (code=exited, status=0/SUCCESS)
 Sep 18 12:35:17 li72-186 systemd[1]: Starting Set Snort 3 NIC in promiscuous mode and Disable >
 Sep 18 12:35:17 li72-186 systemd[1]: Finished Set Snort 3 NIC in promiscuous mode and Disable >

Instalar conjuntos de reglas de la comunidad de Snort 3

En Snort, los conjuntos de reglas son la principal ventaja para el motor de detección de intrusos. Hay tres tipos de Reglas de Snort: Reglas de la comunidad, Reglas registradas, Reglas de suscriptores. Las reglas de la comunidad son enviadas por la comunidad de código abierto o los integradores de snort.

Vamos a mostrar cómo instalar las Reglas de la comunidad.

Primero, cree un directorio para las Reglas en /usr/local/etc/snort

mkdir /usr/local/etc/rules

Descarga las reglas de la comunidad de Snort 3. Puedes encontrarlo en la página de descarga oficial de Snort3 .

wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz

Extraiga las reglas descargadas y colóquelas en el directorio que creamos previamente /usr/local/etc/rules/

tar xzf snort3-community-rules.tar.gz -C /usr/local/etc/rules/

Snort 3 incluye dos archivos de configuración principales, snort_defaults.lua y snort.lua .

El archivo snort.lua contiene la configuración principal de Snort, permitiendo la implementación y configuración de preprocesadores de Snort, inclusión de archivos de reglas, registro, filtros de eventos, salida, etc.

Los archivos snort_defaults.lua contienen valores predeterminados, como rutas a reglas, AppID, listas de inteligencia y variables de red.

Cuando se extraen y colocan los archivos de reglas, vamos a configurar uno de estos archivos de configuración llamado snort.lua. Abra el archivo con su editor favorito y verá una configuración similar.

... -- HOME_NET and EXTERNAL_NET must be set now -- setup the network addresses you are protecting HOME_NET = 'server_public_IP/32' -- set up the external network addresses. -- (leave as "any" in most situations) EXTERNAL_NET = 'any' EXTERNAL_NET = '!$HOME_NET' ... 

Establezca la red que desea proteger contra ataques como el valor de la variable HOME_NET y apunte la variable EXTERNAL_NET a la variable HOME_NET .

Guardar y Salir.

También puede editar los valores predeterminados de Snort en /usr/local/etc/snort/snort_defaults.lua y en la sección IPS puede definir la ubicación de sus reglas

ips =  {     
-- use this to enable decoder and inspector alerts     
--enable_builtin_rules = true,     

-- use include for rules files; be sure to set your path     
-- note that rules files can include other rules files     
include = '/usr/local/etc/rules/snort3-community-rules/snort3-community.rules'  }  ...

Guardar y Salir.

Ejecutar Snort como servicio

Si va a ejecutar Snort como un demonio de servicio en segundo plano, también es posible crear una unidad de servicio systemd para Snort. Es prudente ejecutarlo como un usuario del sistema sin privilegios

Cree una cuenta de usuario del sistema sin inicio de sesión.

sudo useradd -r -s /usr/sbin/nologin -M -c SNORT_IDS snort

Luego, cree una unidad de servicio systemd para que Snort se ejecute como un usuario de snort. Ajuste y combine con su interfaz de red.

sudo nano /etc/systemd/system/snort3.service

Pegue la siguiente configuración.

[Unit] Description=Snort 3 NIDS Daemon After=syslog.target network.target [Service] Type=simple ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i eht0 -m 0x1b -u snort -g snort [Install] WantedBy=multi-user.target

Vuelva a cargar la configuración de systemd.

sudo systemctl daemon-reload

Establezca la propiedad y los permisos en el archivo de registro.

sudo chmod -R 5775 /var/log/snort
sudo chown -R snort:snort /var/log/snort

Inicie y habilite Snort para que se ejecute en el arranque del sistema:

sudo systemctl enable --now snort3

Compruebe el estado del servicio para confirmar si se está ejecutando.

sudo systemctl status snort3

Producción.

● snort3.service - Snort 3 NIDS Daemon
      Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled)
      Active: active (running) since Sat 2021-09-18 12:44:32 UTC; 6s ago
    Main PID: 182886 (snort)
       Tasks: 2 (limit: 1071)
      Memory: 62.6M
      CGroup: /system.slice/snort3.service
              └─182886 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none >
 Sep 18 12:44:32 li72-186 systemd[1]: Started Snort 3 NIDS Daemon.

Conclusión

En este tutorial cómo instalar el sistema de detección de intrusos en la red Snort 3 en Ubuntu 20.04.

Linux no es 100% inmune a virus y cosas sospechosas, siempre es mejor tener alguna herramienta instalada y asegurarse de que nadie esté intentando algo sospechoso en su dispositivo y red. Otras alternativas para Snort que puedes investigar: Ossec, Next-Generation Firewall de Palo Alto Networks, Next-Generation Intrusion Prevention System (NGIPS).

Gracias por leer, proporcione sus comentarios y sugerencias en la sección de comentarios.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.