Cómo bloquear y gestionar IPs en CSF por línea de comandos

Cómo bloquear y gestionar IPs en CSF por línea de comandos

CSF (ConfigServer Security & Firewall) es uno de los firewalls más utilizados en servidores con cPanel/WHM. Permite gestionar el acceso al servidor de forma avanzada, bloqueando o permitiendo direcciones IP desde la línea de comandos.

En este artículo aprenderás a bloquear, desbloquear, consultar y gestionar direcciones IP en CSF mediante SSH, incluyendo un método para bloqueo masivo de múltiples IPs de forma eficiente.

Requisitos previos

  1. Acceso SSH al servidor con privilegios de root.
  2. CSF instalado y activo en el servidor. Puedes verificarlo con el comando csf -v.

Bloquear una IP

Para bloquear (denegar) una dirección IP individual, ejecuta:

csf -d 1.2.3.4

Opcionalmente puedes agregar un comentario para identificar el motivo del bloqueo:

csf -d 1.2.3.4 "Ataque de fuerza bruta detectado"

Bloquear un rango de IPs (CIDR)

CSF permite bloquear rangos completos de IPs utilizando notación CIDR. Ejecuta cualquiera de los siguientes comandos de acuerdo con tus necesidades:

csf -d 111.0.0.0/8
csf -d 111.111.0.0/16
csf -d 111.111.111.0/24

Diferencia entre rangos CIDR

  1. /8 — Bloquea todas las IPs que comparten el primer octeto. Ejemplo: 111.0.0.0/8 bloquea desde 111.0.0.0 hasta 111.255.255.255 (más de 16 millones de IPs). Es el rango más amplio.
  2. /16 — Bloquea todas las IPs que comparten los primeros dos octetos. Ejemplo: 111.111.0.0/16 bloquea desde 111.111.0.0 hasta 111.111.255.255 (65,536 IPs).
  3. /24 — Bloquea todas las IPs que comparten los primeros tres octetos. Ejemplo: 111.111.111.0/24 bloquea desde 111.111.111.0 hasta 111.111.111.255 (256 IPs). Es el rango más específico y el más utilizado.

Bloquear múltiples IPs de forma masiva

Cuando necesitas bloquear una gran cantidad de IPs, existen dos métodos:

Método 1: Archivo TXT con for loop

  1. Crea un archivo de texto con las IPs que deseas bloquear (una IP por línea):
nano block.txt

Ejemplo de contenido del archivo:

1.2.3.4
5.6.7.8
9.10.11.12

  1. Ejecuta el siguiente comando para bloquear todas las IPs del archivo de una sola vez:
for i in $(cat block.txt); do csf -d $i; done

Método 2: Editar csf.deny directamente (recomendado para listas grandes)

Si necesitas bloquear cientos o miles de IPs, el método anterior puede ser lento porque CSF reinicia las reglas de iptables con cada IP. Una alternativa más eficiente es agregar las IPs directamente al archivo de denegación y reiniciar CSF una sola vez:
  1. Agrega las IPs al archivo csf.deny:
cat block.txt >> /etc/csf/csf.deny

  1. Reinicia CSF para aplicar los cambios:
csf -r

Importante: Asegúrate de que el archivo block.txt contenga únicamente IPs válidas (una por línea, sin espacios ni líneas vacías adicionales) antes de agregarlo a csf.deny.

Bloqueo temporal

Si deseas bloquear una IP por un tiempo específico y que se desbloquee automáticamente, utiliza la opción -td. El tiempo se especifica en segundos:

csf -td 1.2.3.4 3600 -p 80 "Bloqueo temporal 1 hora"

En este ejemplo, la IP 1.2.3.4 será bloqueada durante 3600 segundos (1 hora) en el puerto 80. Puedes omitir -p 80 para bloquear todos los puertos.

Desbloquear una IP

Para remover una IP de la lista de bloqueo permanente:

csf -dr 1.2.3.4

Para remover una IP de la lista de bloqueo temporal:

csf -tr 1.2.3.4

Permitir una IP (whitelist)

Para asegurarte de que una IP nunca sea bloqueada (por ejemplo, la IP de tu oficina o de un servicio externo), agrégala a la lista de permitidos:

csf -a 1.2.3.4 "IP de oficina"

Para remover una IP de la lista de permitidos:

csf -ar 1.2.3.4

Consultar el estado de una IP

Antes de bloquear una IP, es útil verificar si ya se encuentra en alguna lista de CSF (bloqueada, permitida o temporal):

csf -g 1.2.3.4

Este comando mostrará en qué listas aparece la IP y las reglas de iptables asociadas a ella.

Listar todas las IPs bloqueadas

Para ver todas las IPs bloqueadas permanentemente:

cat /etc/csf/csf.deny

Para ver las IPs bloqueadas temporalmente:

csf -t

Para ver las IPs permitidas (whitelist):

cat /etc/csf/csf.allow

Referencia rápida de comandos

  1. csf -d IP — Bloquear IP permanentemente.
  2. csf -dr IP — Desbloquear IP permanente.
  3. csf -td IP segundos — Bloquear IP temporalmente.
  4. csf -tr IP — Desbloquear IP temporal.
  5. csf -a IP — Permitir IP (whitelist).
  6. csf -ar IP — Remover IP de whitelist.
  7. csf -g IP — Consultar estado de una IP.
  8. csf -t — Listar bloqueos temporales.
  9. csf -r — Reiniciar CSF.
  10. csf -v — Ver versión de CSF.

Recomendaciones

  1. Siempre verifica el estado de una IP con csf -g antes de bloquearla para evitar duplicados o conflictos con la whitelist.
  2. Utiliza bloqueos temporales (csf -td) cuando no estés seguro de que el tráfico sea permanentemente malicioso.
  3. Para listas de más de 50 IPs, prefiere el método de editar csf.deny directamente y reiniciar CSF una sola vez.
  4. Agrega siempre la IP de tu oficina o conexión principal a la whitelist con csf -a para evitar bloquearte a ti mismo.
  5. Revisa periódicamente csf.deny para limpiar bloqueos antiguos que ya no sean necesarios.
  6. CSF tiene un límite predeterminado de entradas en csf.deny (controlado por DENY_IP_LIMIT en /etc/csf/csf.conf). Si bloqueas muchas IPs, verifica que este valor sea suficiente.