Al configurar un servidor SFTP para permitir el intercambio seguro de archivos a través de Internet, la seguridad se convierte en una preocupación primordial. Una medida esencial para protegerlo contra ataques de fuerza bruta y otras amenazas es implementar herramientas como fail2ban e ipset. Estas soluciones trabajan en conjunto para detectar y bloquear actividades maliciosas, proporcionando una capa adicional de defensa para tu servidor.
En este artículo, te guiaré a través del proceso de configuración de fail2ban e ipset en un servidor Ubuntu, asegurando así que tu servidor SFTP esté protegido contra posibles intrusiones.
Instalación y Configuración de fail2ban
Lo primero que debemos hacer es instalar fail2ban. Si estás utilizando Ubuntu, puedes hacerlo fácilmente ejecutando el siguiente comando en tu terminal:
sudo apt install fail2ban
Una vez instalado, copiaremos el archivo de configuración predeterminado a uno local para personalizarlo según nuestras necesidades:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime = 1d
findtime = 10m
maxretry = 5
[ssh-with-ufw]
enabled = true
port = 22
filter = sshd
action = ufw[application="OpenSSH", blocktype=reject]
logpath = /var/log/auth.log
maxretry = 3
Para integrar fail2ban con el firewall UFW de Ubuntu, ajustaremos la configuración en jail.local. Aquí hay un ejemplo de configuración para proteger el servicio SSH:
Después de ajustar la configuración, reiniciamos el servicio de fail2ban para que los cambios surtan efecto:
sudo systemctl restart fail2ban
Configuración de ipset
Para añadir otra capa de protección, implementaremos ipset utilizando un script que gestiona una lista negra de direcciones IP conocidas por actividades maliciosas. Para ello, descargaremos el script y configuraremos las listas negras:
sudo wget -O /usr/local/sbin/update-blacklist.sh https://raw.githubusercontent.com/trick77/ipset-blacklist/master/update-blacklist.sh sudo chmod +x /usr/local/sbin/update-blacklist.sh sudo mkdir -p /etc/ipset-blacklist sudo wget -O /etc/ipset-blacklist/ipset-blacklist.conf https://raw.githubusercontent.com/trick77/ipset-blacklist/master/ipset-blacklist.conf
Una vez descargados los archivos, podemos personalizar la configuración según nuestras necesidades. Por ejemplo, podemos ajustar las listas negras que se utilizan para bloquear direcciones IP conocidas por actividades maliciosas.
Para automatizar la actualización de la lista negra, crearemos un pequeño script que agregará automáticamente las direcciones IP detectadas por fail2ban a la lista negra de ipset:
bashCopy code#!/bin/bash
filecontent=(`zgrep 'Ban' /var/log/fail2ban.log* | awk '{print $8}'`)
blacklist=/etc/ipset-blacklist/ip-blacklist-custom.list
blacklist1=$( cat $blacklist )
touch $blacklist.1
for ip in "${filecontent[@]}"
do
if [[ " $blacklist1" =~ "$ip" ]]
then
echo "" > /dev/null 2>&1
else
echo "$ip" >> $blacklist.1
fi
done
sort -u $blacklist.1 >> $blacklist
sed -i '/^$/d' $blacklist
rm $blacklist.1
/usr/local/sbin/update-blacklist.sh /etc/ipset-blacklist/ipset-blacklist.conf
Finalmente, configuraremos este script en el cron para que se ejecute periódicamente y mantenga actualizada la lista negra:
@hourly root /usr/local/sbin/update-blacklist-custom.sh
Con fail2ban e ipset correctamente configurados, tu servidor estará mejor protegido contra ataques de fuerza bruta y otras amenazas