Introducción
Los sistemas de detección de intrusos se utilizan para registrar conexiones sospechosas e informar cuando parece que se está produciendo una actividad inusual.
La herramienta Detectar intentos de intrusión en la red (PSAD), que significa Detección de ataques de escaneo de puertos, es un software que monitorea activamente los registros del firewall para determinar si un evento de escaneo o ataque está en progreso. Luego puede alertar a los administradores o tomar medidas activas para disuadir la amenaza.
En esta guía, explicaremos cómo instalar y configurar psad en un VPS Ubuntu 18.04 LTS.
Instalar psad
Psad está disponible en los repositorios predeterminados de Ubuntu, por lo que se puede instalar fácilmente a través de apt:
sudo apt update
sudo apt install psad
Para configurar alertas de correo electrónico para el administrador del servidor, se le pedirá que configure el servidor de correo postfix.
En la mayoría de los casos, puede seleccionar "Sitio de Internet" y luego ingresar el nombre de dominio asociado con su servidor. Esta será la parte del dominio del nombre que se usa en el campo "De" en los correos electrónicos generados por psad.
Configurar las reglas de IPTables
Psad detecta actividad en los puertos del servidor al monitorear los registros producidos por un firewall. Ubuntu viene con el firewall iptables por defecto.
Para ver las reglas predefinidas, desde el tipo de terminal:
sudo iptables -S
Deberías tener estas reglas:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
Si desea restaurar las reglas predeterminadas después de agregar las que discutiremos en esta guía, emita el siguiente comando:
sudo iptables -F
Podemos comenzar a configurar iptables, luego eliminar las conexiones que no necesitamos o agregar las que queremos aceptar.
La primera regla permitirá todo el tráfico generado por nuestro servidor, dirigido a nuestro servidor:
sudo iptables -A INPUT -i lo -j ACCEPT
A continuación, queremos agregar una regla para permitir explícitamente todo el tráfico relacionado con una conexión existente. Esto permitirá que nuestras sesiones en curso continúen sin interrupciones:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
A continuación, podemos agregar los servicios que queremos mantener abiertos como SSH. Para SSH, podemos agregar una línea como esta, si usamos el puerto predeterminado 22:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Si usamos un servidor web, el puerto predeterminado para habilitar es 80 para conexiones HTTP o 443 para HTTPS:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Si desea habilitar otros puertos, modifique el parámetro de protocolo y port_num a los necesarios:
sudo iptables -A INPUT -p protocol --dport num_porta -j ACCEPT
Una vez que terminemos de agregar los servicios necesarios, eliminaremos todas las conexiones restantes. Sin embargo, antes de hacer eso, debemos agregar la regla que le dice a iptables que comience a registrar el tráfico.
sudo iptables -A INPUT -j LOG
sudo iptables -A FORWARD -j LOG
Ahora podemos bloquear todo el tráfico extraño, no permitido por nuestras reglas:
sudo iptables -A INPUT -j DROP
De forma predeterminada, iptables no mantiene sus reglas si se reinicia el servidor, por lo que después de probar la configuración y asegurarse de que hace lo que desea, puede descargar y habilitar una herramienta que mantenga estas reglas persistentes:
sudo apt install iptables-persistent
sudo service netfilter-persistent start
Configurar psad
Podemos comenzar a configurar psad para comenzar a analizar los registros.
Abramos el archivo de configuración principal de psad con privilegios de root:
sudo nano /etc/psad/psad.conf
Ingrese la dirección de correo electrónico a la que desea recibir los correos electrónicos de notificación de psad. También ingrese su nombre de host:
EMAIL_ADDRESSES [email protected], [email protected];
HOSTNAME tuodominio.com;
Asegúrese de terminar cada una de sus líneas con un punto y coma ;
Los "niveles de peligro" son una forma de psad para clasificar los niveles de amenaza.
Se determinan automáticamente por la cantidad de paquetes involucrados en un evento, pero ciertos tipos de tráfico también pueden asignarse a un cierto nivel de peligro. Los umbrales predefinidos para cada nivel a alcanzar son:
DANGER_LEVEL1 5;
DANGER_LEVEL2 15;
DANGER_LEVEL3 150;
DANGER_LEVEL4 1500;
DANGER_LEVEL5 10000;
Puede cambiar estos niveles según el nivel de sensibilidad que desee para las alertas.
También es posible configurar cómo psad será sensible a través del parámetro PORT_RANGE_SCAN_THRESHOLD que determina la cantidad de puertos en un rango que se deben escanear antes de que se genere una advertencia:
PORT_RANGE_SCAN_THRESHOLD 1;
Una de las cosas más importantes para configurar es el parámetro IPT_SYSLOG_FILE, porque actualmente no apunta a un archivo que syslog usa por defecto.
Cambie esto para que apunte al archivo syslog, donde psad realmente tendrá la oportunidad de examinar los registros activos:
IPT_SYSLOG_FILE /var/log/syslog;
Podemos configurar psad para ignorar ciertos puertos, por lo que no recibiremos advertencias sobre puertos ignorados:
IGNORE_PORTS porte_da_ignorare;
De manera similar, puede ignorar los mensajes basados en otros parámetros como IGNORE_PROTOCOLS, IGNORE_INTERFACES e IGNORE_LOG_PREFIXES.
Si nota que recibe alertas con demasiada frecuencia, puede establecer el umbral en los correos electrónicos ajustando el nivel que debe alcanzar antes de que se envíe un correo electrónico:
MIN_DANGER_LEVEL 1;
EMAIL_ALERT_DANGER_LEVEL 1;
Puede establecer directamente el límite de correos electrónicos para recibir:
EMAIL_LIMIT 0;
Cero significa que no hay límite.
Guarde y cierre el archivo.
Iniciar psad
Ahora que tenemos una configuración básica de psad, completa con capacidades de alerta, podemos activar nuestro sistema.
Antes de comenzar, debemos actualizar las definiciones de firmas de psad para que pueda reconocer correctamente los tipos de ataques conocidos:
sudo psad --sig-update
Reiniciamos psad:
sudo service psad restart
Para ver el estado actual de los eventos detectados por psad, escriba:
sudo psad -S
La salida que debería recibir se ve así:
[-] psad: pid file /var/run/psad/psadwatchd.pid does not exist for psadwatchd on MIOIP
[+] psad_fw_read (pid: 7292) %CPU: 0.0 %MEM: 0.9
Running since: Fri May 11 18:46:54 2018
[+] psad (pid: 7289) %CPU: 0.0 %MEM: 1.0
Running since: Fri May 11 18:46:54 2018
Command line arguments: [none specified]
Alert email address(es): [email protected]
[+] Version: psad v2.4.3
[+] Top 50 signature matches:
[NONE]
[+] Top 25 attackers:
[NONE]
[+] Top 20 scanned ports:
[NONE]
[+] iptables log prefix counters:
[NONE]
Total protocol packet counters:
[+] IP Status Detail:
[NONE]
Total scan sources: 0
Total scan destinations: 0
[+] These results are available in: /var/log/psad/status.out
Aún no se ha detectado nada. También podemos ver los diferentes archivos de registro de psad en la siguiente ruta /var /log /psad /.
Prueba de escaneo
Desde otra computadora, deberíamos intentar escanear los puertos de nuestro servidor. Podemos hacer esto con la utilidad nmap o usando sitios específicos para esta función.
Realizaremos un escaneo del puerto tcp SYN desde otra computadora:
sudo nmap -PN -sS dominio_oppure_ip
Producción:
Starting Nmap 7.01 ( https://nmap.org ) at 2018-05-11 18:48 CEST
Nmap scan report for MIOIP (MIOIP)
Host is up (0.00043s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
443/tcp open https
Podemos intentar dar el comando nuevamente para verificar el estado de psad:
sudo psad -S
Debería ver una lista de alertas mucho más amplia. Si ha configurado alertas por correo electrónico, también debería haber recibido un correo electrónico.
Prevención de intrusiones
Eventualmente podemos implementar un mecanismo de prevención en el que psad puede modificar automáticamente las reglas de iptables para prohibir los escáneres.
Abramos el archivo auto_dl:
sudo nano /etc/psad/auto_dl
Este archivo especifica qué nivel de peligro debemos establecer para ciertas direcciones IP. Por ejemplo, si tenemos un atacante que continuamente intenta sondear nuestro sistema, podemos configurarlo automáticamente en el nivel de peligro 5:
Indirizzo_Ip_aggressore 5;
También es posible eximir ciertas direcciones IP de las verificaciones de psad. Podemos agregar nuestra dirección IP local y la IP de la computadora de nuestra casa u oficina para evitar ser bloqueados. Simplemente establezca el valor en "0".
computer_locale_ip 0;
Guarde y cierre el archivo.
Abramos el siguiente archivo:
sudo nano /etc/psad/psad.conf
Busque el parámetro llamado ENABLE_AUTO_IDS. Esta es la regla que permite a psad modificar nuestro firewall para bloquear ciertas direcciones:
ENABLE_AUTO_IDS Y;
Podemos establecer qué nivel de amenaza consideramos lo suficientemente grave como para bloquear una dirección IP:
AUTO_IDS_DANGER_LEVEL 5;
La opción fundamental es AUTO_BLOCK_TIMEOUT, que es cuánto tiempo estará bloqueada la dirección IP, en segundos.
AUTO_BLOCK_TIMEOUT 3600;
Guarde y cierre el archivo.
Prueba de prevención de intrusiones
Podemos probar cómo funciona prohibiéndonos temporalmente. En el mismo archivo de configuración, configuraremos estos parámetros:
ENABLE_AUTOIDS Y;
AUTO_IDS_DANGER_LEVEL 4;
AUTO_BLOCK_TIMEOUT 60;
Esto activará la configuración automática del cortafuegos, establecerá el umbral en el nivel de peligro 4, que activaremos con un escaneo SYN normal y configuraremos el tiempo de bloqueo en 60 segundos.
Guarde y cierre el archivo.
Abramos el archivo auto_dl si ha agregado la dirección IP de su casa u oficina y comentelo temporalmente:
sudo nano /etc/psad/auto_dl
#local_computer_ip 0;
Reiniciamos psad:
sudo service psad restart
Desde su computadora, inicie el escaneo:
sudo nmap -PN -sS dominio_oppure_ip
Después de unos segundos, si está conectado al servidor con psad a través de SSH, se desconectará. No podrá acceder a él durante 60 segundos.
Esto se debe a que psad tomó medidas cuando su escaneo alcanzó suficientes puertos para alcanzar el nivel de amenaza 4. Cambió las reglas de iptables para desviar el tráfico y bloquear su IP.
Una vez que inicie sesión nuevamente, podrá ver que PSAD ha bloqueado el tráfico que generó:
sudo iptables -S
Ahora que ha probado esta función, restablezca los parámetros que desea usar nuevamente. También debe volver a agregar las direcciones IP deseadas, como oficina o casa:
Abramos el archivo auto_dl:
sudo nano /etc/psad/auto_dl
local_computer_ip 0;
Abramos el siguiente archivo:
sudo nano /etc/psad/psad.conf
ENABLE_AUTOIDS Y;
AUTO_IDS_DANGER_LEVEL 5;
AUTO_BLOCK_TIMEOUT 3600;
Ahora puedes reiniciar psad:
sudo service psad restart
La instalación y configuración de PSAD en Ubuntu 18.04 LTS ha finalizado