🔹 Laboratorio: Ataque y Defensa de FTP con Kali Linux y Ubuntu Server
#Ciberseguridad #FTP #Hydra #Fail2Ban #KaliLinux #UbuntuServer #AtaquesDeFuerzaBruta #SeguridadDeRed #PenetrationTesting #EthicalHacking #Linux #Nmap #SeguridadEnRed #SSH #vsftpd #ProtecciónDeServidor #CiberseguridadPráctica #FuerzaBruta #SeguridadInformática #AtaqueYDefensa
🔹 Laboratorio: Ataque y Defensa de FTP con Kali Linux y Ubuntu Server
1️⃣ Configuración del Servidor FTP en Ubuntu
-
Actualización de paquetes y instalación de vsftpd
sudo apt update sudo apt install vsftpd
-
Iniciar y verificar el estado del servicio
sudo systemctl start vsftpd sudo systemctl status vsftpd
-
Obtener la IP del servidor
hostname -I
- La IP obtenida fue
192.168.0.118
.
- La IP obtenida fue
-
Conexión desde Kali Linux al servidor FTP
ftp 192.168.0.118
- Esto confirma que el servicio FTP está corriendo en el puerto por defecto (
21
).
- Esto confirma que el servicio FTP está corriendo en el puerto por defecto (
2️⃣ Escaneo con Nmap desde Kali
-
Ejecutamos un escaneo agresivo con Nmap para detectar servicios abiertos
nmap -p- -sS -sC -sV --min-rate=5000 -n -vvv -Pn 192.168.0.118
-
Resultado del escaneo inicial:
- Puerto 21/tcp (FTP) abierto →
vsftpd 3.0.5
- Puerto 111/tcp (SSH) abierto →
OpenSSH 9.6p1 Ubuntu
- Puerto 21/tcp (FTP) abierto →
3️⃣ Cambio del Puerto del Servidor FTP
-
Editamos la configuración de vsftpd
sudo nano /etc/vsftpd.conf
-
Se cambia el puerto de
21
a110
:Este código se pone debajo del todo en el archivo.
listen_port=110
-
-
Reiniciamos el servicio para aplicar cambios
sudo systemctl restart vsftpd
-
Verificación con un nuevo escaneo de Nmap
nmap -p- -sS -sC -sV --min-rate=5000 -n -vvv -Pn 192.168.0.118
- Ahora el puerto 21/tcp ya no aparece abierto.
- El servicio FTP ahora corre en 110/tcp.
-
Conexión desde Kali Linux usando el nuevo puerto
ftp 192.168.0.118 -P 110
- Confirmamos que el cambio de puerto fue exitoso.
4️⃣ Prueba de Fuerza Bruta con Hydra
-
Ejecutamos Hydra para atacar el servicio FTP en el nuevo puerto 110
hydra -l jeremyserver -P /usr/share/wordlists/rockyou.txt.gz ftp://192.168.0.118 -s 110
-
Resultado:
- Hydra encuentra credenciales válidas:
- Usuario:
jeremyserver
- Contraseña:
password1
- Usuario:
- Esto confirma que el servidor FTP aún es vulnerable a ataques de fuerza bruta.
- Hydra encuentra credenciales válidas:
5️⃣ Instalación y Configuración de Fail2Ban
-
Instalamos Fail2Ban en Ubuntu
sudo apt install fail2ban
-
Creamos una regla específica para vsftpd
sudo nano /etc/fail2ban/jail.d/vsftpd.local
-
Configuración del archivo:
[vsftpd] enabled = true port = 110 filter = vsftpd logpath = /var/log/vsftpd.log maxretry = 5 bantime = 600
crtl+o para guardar ctrl+x para salir
-
-
Reiniciamos y verificamos el estado de Fail2Ban
sudo systemctl restart fail2ban sudo systemctl status fail2ban sudo fail2ban-client status vsftpd
6️⃣ Comprobación de Bloqueo tras un Nuevo Ataque de Fuerza Bruta
-
Repetimos el ataque con Hydra
hydra -l jeremyserver -P /usr/share/wordlists/rockyou.txt.gz ftp://192.168.0.118 -s 110
-
Resultado:
-
Hydra falla y muestra un error:
[ERROR] all children were disabled due to too many connection errors
-
La IP atacante (
192.168.0.121
) ha sido bloqueada por Fail2Ban.
-
-
Verificamos en el servidor que la IP ha sido bloqueada
sudo fail2ban-client status vsftpd
7️⃣ Desbloqueo de la IP Bloqueada
-
Si queremos desbloquear la IP atacante, usamos:
sudo fail2ban-client set vsftpd unbanip 192.168.0.121
-
Verificación de acceso al FTP tras el desbloqueo
ftp 192.168.0.118 -P 110
- Ahora la máquina atacante puede conectarse nuevamente.
-
Si repetimos un ataque de fuerza bruta con Hydra, la IP será bloqueada otra vez.
📌 Repaso y mejoras
1. Configuración inicial del servidor FTP (Ubuntu):
- Actualizaste paquetes:
sudo apt update
- Instalaste vsftpd:
sudo apt install vsftpd
- Iniciaste el servicio:
sudo systemctl start vsftpd
- Verificaste la dirección IP:
hostname -I
(192.168.0.118)
2. Conexión inicial desde Kali (prueba básica):
- Usaste
ftp 192.168.0.118
(puerto 21 por defecto) - Confirmaste que el servicio FTP respondía correctamente
3. Escaneo inicial con Nmap:
- Comando:
nmap -p- -sS -sC -sV...
- Resultados:
- Puerto 21 (FTP) abierto con vsftpd 3.0.5
- Puerto 111 (SSH) abierto con OpenSSH 9.6p1
4. Cambio de puerto del servicio FTP:
- Modificaste
/etc/vsftpd.conf
agregandolisten_port=110
- Reiniciaste el servicio:
sudo systemctl restart vsftpd
5. Verificación del cambio de puerto:
- Nuevo escaneo Nmap mostró:
- Puerto 110 abierto (FTP)
- Puerto 111 (SSH) permaneció igual
- Conexión FTP exitosa con
ftp 192.168.0.118 -P 110
6. Ataque de fuerza bruta con Hydra:
- Comando:
hydra -l jeremyserver... ftp://192.168.0.118 -s 110
- Resultado exitoso: Contraseña encontrada (
password1
) - Vulnerabilidad expuesta: No había protección contra intentos fallidos
7. Implementación de Fail2Ban:
- Instalación:
sudo apt install fail2ban
- Creación de archivo de configuración personalizado:
-
Ruta:
/etc/fail2ban/jail.d/vsftpd.local
-
Configuración:
[vsftpd] enabled = true port = 110 filter = vsftpd logpath = /var/log/vsftpd.log maxretry = 5 bantime = 600
-
8. Prueba de Fail2Ban:
- Nuevo ataque con Hydra resultó en:
[ERROR] all children were disabled due too many connection errors
- La IP atacante (192.168.0.121) fue bloqueada
- Verificación con
sudo fail2ban-client status vsftpd
mostró la IP en la lista de baneados
9. Gestión de baneos:
- Desbloqueo manual de IP:
sudo fail2ban-client set vsftpd unbanip 192.168.0.121
- Restauración de acceso FTP después del desbloqueo
Análisis de seguridad:
- Cambio de puerto: Ofrece seguridad por ofuscación pero no es una medida real de protección
- vsftpd 3.0.5: Versión actualizada (buena práctica)
- Fail2Ban: Implementación efectiva para prevenir ataques de fuerza bruta
- Configuración de baneo:
- 5 intentos fallidos (maxretry)
- Baneo de 10 minutos (600 segundos)
- Monitoreo del archivo de log
/var/log/vsftpd.log
Posibles mejoras:
- Configurar autenticación con certificados SSL/TLS para FTP
- Limitar usuarios permitidos para FTP
- Usar listas de acceso (allow/deny) para IPs conocidas
- Implementar contraseñas más fuertes
- Actualizar el tiempo de baneo en Fail2Ban (
bantime
) a valores más altos - Habilitar logging detallado en vsftpd
- Considerar el uso de SFTP (SSH) en lugar de FTP
Lección clave: La combinación de:
- Actualización de servicios
- Cambio de puertos
- Herramientas de detección de intrusos (Fail2Ban)
- Monitoreo proactivo
Forma una estrategia de defensa en profundidad efectiva contra ataques comunes como fuerza bruta.
📌 Conclusión
✔️ Se cambió el puerto del servicio FTP para evitar ataques dirigidos al puerto por defecto.
✔️ Se detectó una vulnerabilidad (fuerza bruta exitosa con Hydra).
✔️ Se implementó Fail2Ban para mitigar ataques de fuerza bruta.
✔️ El sistema bloquea automáticamente IPs que intentan múltiples intentos de login fallidos.
Este proceso mejora la seguridad del servidor FTP al ocultarlo en un puerto no estándar y al aplicar Fail2Ban como protección contra ataques automatizados. 🚀
1- Protección del Protocolo SSH 5- Cómo Crear un Servidor SSH con OPENSSH