En el mundo de la administración de sistemas, garantizar la seguridad del servidor es una prioridad máxima. Los servidores Linux, conocidos por su estabilidad y flexibilidad, no son excepción. Sin embargo, enfrentarse a ataques DDoS o a intentos de acceso no autorizado provenientes de múltiples direcciones IP es un reto común. Una herramienta potente para mitigar este tipo de amenazas es ipset.
¿Qué es ipset?
ipset es una utilidad para Linux que permite administrar conjuntos de direcciones IP y portales de red de una manera eficaz. Es especialmente útil para implementar reglas en iptables basadas en múltiples direcciones IP sin necesidad de crear numerosas reglas individuales, lo que puede ahorrar significativamente recursos y tiempo de procesamiento.
Instalación de ipset
Antes de poder utilizar ipset, asegúrate de que esté instalado en tu sistema. En la mayoría de las distribuciones Linux, ipset puede ser instalado utilizando el gestor de paquetes predeterminado. Por ejemplo, en sistemas basados en Debian y Ubuntu, puedes instalarlo con:
sudo apt-get update
sudo apt-get install ipset
Para sistemas basados en Red Hat como CentOS, CloudLinux, AlmaLinux o RockyLinux, el comando sería:
sudo yum install ipset
Cómo utilizar ipset para bloquear direcciones IP
Paso 1: Crear un nuevo conjunto de ipset
Primero, crea un conjunto (set) donde puedas agregar las direcciones IP que deseas bloquear. Considerando que querrás bloquear direcciones IP específicas, puedes crear un conjunto del tipo hash:ip con el siguiente comando:
sudo ipset create blacklist hash:ip
Aquí, blacklist
es el nombre del conjunto, pero puedes nombrarlo como prefieras.
Paso 2: Agregar direcciones IP al conjunto
Para agregar direcciones IP al conjunto que acabas de crear, utiliza:
sudo ipset add blacklist 192.168.1.100
Reemplaza 192.168.1.100
con la dirección IP que deseas bloquear.
Paso 3: Integrar ipset con iptables
Ahora que tienes un conjunto de ipset con las direcciones IP a bloquear, el siguiente paso es utilizar iptables para rechazar paquetes de esas direcciones. Puedes lograr esto con el siguiente comando:
sudo iptables -I INPUT -m set --match-set blacklist src -j DROP
Este comando instruye a iptables a rechazar todo el tráfico entrante (INPUT
) que coincida con las direcciones IP en el conjunto blacklist
.
Automatización y mantenimiento
Para asegurarte de que las reglas de ipset persistan después de reiniciar el servidor, puedes guardar la configuración de ipset en un archivo y restaurarla en el arranque del sistema.
Guardar la configuración:
sudo ipset save > /etc/ipset.conf
Restaurar la configuración al inicio (puedes agregar el siguiente comando a tu archivo rc.local
o a un script de inicio de systemd):
sudo ipset restore < /etc/ipset.conf
Además, es importante mantener tu lista de direcciones IP bloqueadas actualizada. Puedes automatizar el proceso de actualización con scripts que revisen listas de direcciones IP maliciosas conocidas y las añadan a tu conjunto de ipset periódicamente.
En resumen, ipset es una herramienta extremadamente poderosa para gestionar el acceso a tu servidor Linux, permitiéndote bloquear eficientemente múltiples direcciones IP y protegerte contra ataques maliciosos. Su integración con iptables hace que sea una solución robusta para la seguridad de tu servidor. Recuerda siempre mantener tus listas actualizadas y revisar las reglas con regularidad para asegurar la máxima protección de tu infraestructura.