
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 funciones de Snort 3:
- Admite múltiples subprocesos de procesamiento de paquetes
- Permite el procesamiento de múltiples paquetes
- Autogenerar documentación de referencia
- Utilice una configuración programable simple
- Haga que los componentes clave sean conectables
- 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 mejore su sistema Ubuntu
sudo apt update
sudo apt upgrade
Paso 2:Instale las dependencias requeridas
El repositorio predeterminado de Ubuntu tiene un 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.
Instalar 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 termine 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
Salida:
,,_ -> 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 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
Salida:
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 que LRO está fijo o LRO está habilitado.
Salida.
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
Salida.
Created symlink /etc/systemd/system/default.target.wants/snort3-nic.service → /etc/systemd/system/snort3-nic.service.
Verifica el servicio snort3-nic.con:
sudo systemctl status snort3-nic.service
Salida.
● 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 snort.lua El archivo contiene la configuración principal de Snort, lo que permite la implementación y configuración de los preprocesadores de Snort, la inclusión de archivos de reglas, el registro, los filtros de eventos, la salida, etc.
El snort_defaults.lua Los archivos 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 valor para HOME_NET variable y punto EXTERNAL_NET variable a HOME_NET variable.
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.
Ejecución de 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
Verifique el estado del servicio para confirmar si se está ejecutando.
sudo systemctl status snort3
Salida.
● 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.