Prevención contra escaneos y tráfico sospechoso
No es necesario ser totalmente paranoico
Prohibir una dirección IP es un beneficio limitado por:
- Una IP puede ser suplantada de manera fácil.
- Las IPs no son identificadores únicos, la mayoría de ISPs usan DHCP, por lo que se podría prohibir tráfico legítimo también.
- Una nueva IP es fácil de obtener.
- Muchos escáneres vienen de máquinas comprometidas (parece descuidado utilizar una dirección IP real para escanear).
- Muchas IPs son compartidas. Por ejemplo, una dirección IP pública puede ser compartida por una gran organización o por una institución educativa, por lo que una vez más se podría bloquear tráfico legítimo.
- Las listas negras de IPs muchas veces dañan más al tráfico legítimo que “los crackers”.
psad es la colección de tres “procesos demonio” (dos demonios principales y un demonio ayudante) que analizan los mensajes de registro (logs) de iptables para detectar escaneos de puertos y tráfico sospechoso.
- /usr/sbin/fwcheck_psad
- /usr/sbin/psad
- /usr/sbin/psadwatchd
Una implementación común consiste en ejecutar psad para gestionar ciertas reglas de respuesta en el “Firewall”.
PSAD (Port Scan Attack Detector) es una herramienta util para detectar diversos tipos de tráfico sospechoso, incluyendo scaneo de puertos con herramientas como nmap, ataques DDos y otros esfuerzos utilizando fuerza bruta contra ciertos protocólos del sistema. Analizando los archivos de registro (logs), psad no sólo reconoce ciertos patrones de ataque, también gestiona adecuadamente ciertas reglas del “Firewall” para responder correctamente contra actividades sospochosas.
Detección y respuesta contra ataques
Cobertura significativa sobre psad, incluyendo un análisis completo de sus capacidades de análisis de logs de iptables y su capacidad para interactuar con software de representación gráfica como AfterGlow y Gnuplot, se puede encontrar en el libro “Linux Firewalls: Attack Detection and Response with iptables, psad, and fwsnort.”
Instalación
wget http://www.cipherdyne.org/psad/download/psad-VERSION.tar.gz tar -xvzpf psad-VERSION.tar.gz cd psad-VERSION ./install.pl iptables -A INPUT -j LOG iptables -A FORWARD -j LOG
En caso de usar UFW:
/sbin/iptables -I ufw-before-input -j LOG --log-level warning /sbin/iptables -I ufw-before-forward -j LOG --log-level warning
Archivo de configuración
vi /etc/psad/psad.conf
Para ignorar o pesar ciertas IPs/Redes
vi /etc/psad/auto_dl
Actualización de “signatures”
psad --sig-update psad -H
Probemos ¿Sí funciona?
Para probar psad, hay que observar el comportamiento de las reglas iptables en el Servidor que se encuentra protegido con su respectivo “Firewall” y psad:
Desde una computadora de la red (192.168.0.22), fuera de las IPs/Redes ignoradas:
sudo nmap -p- -sV -sS -O 192.168.0.1
Desde el servidor (192.168.0.1):
iptables -L | egrep -i 'PSAD|DROP|REJECT'
Archivos log
ls -la /var/log/psad/ tree ls -la /var/log/psad/
Iniciar, parar y re-iniciar
/etc/init.d/psad start /etc/init.d/psad stop /etc/init.d/psad restart
Algunas opciones interesantes
Listar las reglas en las cadenas iptables usadas por psad en modo “auto-blocking”:
psad --fw-list-auto
Estado de los procesos psad:
psad -S
Eliminar todas las reglas de bloqueo auto-generadas:
psad -F
Eliminar una IP/Red de las cadenas de bloqueo auto-generadas:
psad --fw-rm-block-ip 192.168.0.22
psad es desarrollado pensando en:
- La buena seguridad de una red se inicia con un “Firewall” correctamente configurado.
- Una cantidad significativa de datos de detección de intrusos se puede extraer de los registros log del “Firewall”, especialmente si los registros proporcionan información sobre la red y las cabeceras de transporte.
- El tráfico sospechoso no debe ser detectado a costa de tratar de bloquear ese tráfico también.