Para variar y diversificar los artículos, hoy te hablaré sobre seguridad. Te mostraré cómo detectar un ataque de fuerza bruta en los servidores SSH y FTP usando la herramienta Fail2ban.
Introducción
Cada día oigo noticias relacionadas con la ciberdelincuencia. Por ejemplo, algunos usuarios o robots maliciosos han logrado sortear algunos sitios web o servicios públicos. En artículos anteriores, mostré varias técnicas de fuerza bruta y conexión. Por lo tanto, es importante implementar medidas de seguridad, como IDS/IPS en el firewall, para defender nuestros servidores/clientes durante la configuración.
IPS (sistema de prevención de intrusiones): Examina el tráfico entrante para realizar una detección de intrusos, luego bloquea los incidentes, elimina paquetes maliciosos, prohíbe el tráfico de una IP incriminada…
¿Qué es Fail2ban?
Fail2ban es una aplicación que analiza los registros de varios servicios (SSH, Apache, FTP…) buscando coincidencias entre patrones definidos en sus filtros y las entradas de los registros. Busca intentos repetidos de conexiones fallidas en los archivos de registro y procede a un bloqueo agregando una regla al firewall iptables o nftables para bloquear la IP de origen.
Ataque de fuerza bruta en ausencia de IPS
Supongo que todos conocen la herramienta hydra, así que no necesito hacer un repaso. Comienzo, para mostrarte mejor usaré una máquina Ubuntu como objetivo y Parros OS como atacante. Como información, creé mis propias listas de palabras (user.txt
y pass.txt
).
Entonces, primero inicio mi ataque en el servidor SSH:
hydra -L user.txt -P pass.txt 192.168.1.112 ssh -f
¡Listo! Ha logrado encontrar los datos de autenticación del lado SSH. Ahora, ejecutaré un comando muy similar para el servidor FTP:
hydra -L user.txt -P pass.txt 192.168.1.112 ftp -f
Hasta aquí todo bien, también funciona. El objetivo es bloquear la fuerza bruta, así que instalaré la herramienta en cuestión para continuar.
Instalación y configuración de Fail2ban
Usando Ubuntu me facilité la tarea, ya que ya tiene el paquete. Para instalarlo, nada complicado, solo escribe el comando:
sudo apt-get install fail2ban
Pero antes, quiero mostrarte la lista de reglas iptables, para eso usa esto:
sudo iptables -S
NOTA:
Al configurar fail2ban en tu ordenador local, debes tener acceso root o puedes usar un usuario sin privilegios de root con derechos sudo.
sudo apt-get install fail2ban
Una vez finalizada la instalación, pasaré a la fase de configuración. El servicio Fail2ban tiene sus archivos de configuración predeterminados “jail.local
” en el directorio /etc/fail2ban
, por lo tanto, no debo modificar este archivo, pero puedo reemplazarlo con el archivo jail.local para configurarlo según mis necesidades.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
y luego
sudo gedit /etc/fail2ban/jail.local
Aquí es donde configuraré todo para bloquear los ataques. Debo definir la IP que Fail2ban debe ignorar, el número máximo de intentos del usuario y el tiempo de prohibición:
Para esta parte he terminado.
SSH
Ahora debo buscar las líneas referentes a SSH y configurarlas como en la imagen de abajo:
¡Listo! Debo reiniciar el servicio Fail2ban y luego observar el estado del cliente ssh. Para ver si mis parámetros se han guardado, compruebo iptables:
sudo fail2ban-client status
sudo fail2ban-client status ssh
sudo iptables -S
¡Genial! Una pequeña prueba para ver si funciona. ¡Vamos! Vuelvo a iniciar mi ataque de fuerza bruta SSH en el mismo servidor:
hydra -L user.txt -P pass.txt 192.168.1.112 ssh -f
¡Sí! Funciona muy bien. Imposible obtener información de conexión. Echaré un vistazo al estado y al archivo de registro:
sudo fail2ban-client status ssh
sudo tail /var/log/auth.log
Genial, veo la IP del atacante. Bueno, es bueno bloquear, pero hay que desbloquear la IP:
fail2ban-client -i
Set ssh unbanip 192.168.1.164
exit
sudo fail2ban-client status ssh
Debo reiniciar el servicio fail2ban para tener en cuenta los cambios:
service fail2ban restart
sudo fail2ban-client status ssh
Ahora vuelvo a probar para ver si puedo usar fuerza bruta:
hydra -L user.txt -P pass.txt 192.168.1.112 ssh -f
Genial, vuelve a funcionar, así que la seguridad se ha quitado.
FTP
Para el servidor FTP , debo modificar el archivo jail.local
cambiando el logpath, el filtro y maxretry, así como verificar que enabled = true
:
Lo intento para ver si funciona:
hydra -L user.txt -P pass.txt 192.168.1.112 ftp -f
¡Listo! Estoy bloqueado y además mi IP atacante está mencionada en iptables:
Te dejo la libertad de quitar el bloqueo tú mismo para familiarizarte con los comandos y comprender el proceso.
Conclusión
Este es el final del artículo. Espero que haya sido bastante instructivo y sobre todo comprensible. No dudes en volver a contactarme o intercambiar información en las diferentes redes sociales con nuestra comunidad si es necesario.
Te sugiero que uses los comandos varias veces con diferentes ejemplos para dominar realmente la herramienta.
¡Hasta muy pronto para un próximo artículo lleno de información!