Cómo bloquear automáticamente a los atacantes en CSF en el servidor LiteSpeed en WHM/cPanel (Script avanzado).
Dirigir un negocio de alojamiento web requiere mantener estables los servidores, especialmente cuando se ofrecen alojamiento WordPress barato donde se comparten recursos. Uno de los mayores retos para los administradores de cPanel/WHM es hacer frente a los “escáneres de bots” y a los ataques distribuidos que eluden las reglas estándar de los cortafuegos.
Aunque LiteSpeed Web Server es increíblemente rápido, los ataques de alta frecuencia pueden aumentar el uso de la CPU. En esta guía, vamos a configurar un Analizador avanzado de registros en tiempo real (v19). A diferencia de los simples scripts fail2ban, esta solución personalizada distingue entre errores inofensivos y los peligrosos hits de ModSecurity, banea subredes enteras de forma inteligente, y -lo más importante- incluye un Filtro de seguridad para evitar la prohibición de sus propias IP de puerta de enlace interna.
¿Utiliza Imunify360? Si su servidor utiliza Imunify360 en lugar de CSF, consulte nuestro Guía de bloqueo automático de Imunify360.
¿Por qué utilizar esta solución personalizada?
-
La seguridad ante todo: Ignora automáticamente las IP privadas (por ejemplo,
10.0.x.x,192.168.x.x) para evitar autoprohibiciones accidentales. -
Categorización inteligente: Distingue entre un inofensivo error 404 y un peligroso intento de inyección SQL.
-
Pruebas detalladas: La razón de bloque en LCR le mostrará exactamente que y que la ruta del archivo provocó la prohibición.
-
Bot Farm Protection: Prohíbe automáticamente toda la subred (
/24) si una granja de bots te ataca desde múltiples IPs.
Requisitos previos
-
Un servidor VPS o dedicado con acceso root.
-
Servidor web LiteSpeed instalado.
-
CSF (ConfigServer Seguridad y Cortafuegos) instalado y activo.
Paso 1: Crear el script del bloqueador avanzado
Crearemos un script bash que monitorice sus registros de acceso a LiteSpeed en tiempo real.
-
Inicie sesión en su servidor a través de SSH como
raíz. -
Cree el archivo de script:
nano /root/litespeed_blocker.sh -
Pegue lo siguiente Profesional v19 código. Esta versión incluye la crítica Filtro de seguridad para ignorar las IP internas.
#!/bin/bash # ================================================================= # LiteSpeed/Apache Advanced Defense Blocker - v19 (CSF SAFE EDITION) # Feature: Auto-Ignores Private/Local IPs (10.x, 192.x, 127.x) # ================================================================= ACCESS_LOG="/usr/local/apache/logs/access_log" ERROR_LOG="/usr/local/apache/logs/error_log" STRIKE_FILE="/tmp/litespeed_strikes.tmp" CSF_BIN="/usr/sbin/csf" CSF_ALLOW="/etc/csf/csf.allow" CSF_IGNORE="/etc/csf/csf.ignore" # Ensure strike file exists and clean on startup touch "$STRIKE_FILE" echo "" > "$STRIKE_FILE" tail -Fn0 "$ACCESS_LOG" "$ERROR_LOG" | while read -r line; do [[ "$line" == "==>"* ]] && continue # Detect Log Type if [[ "$line" == *"] ["* ]]; then log_type="Error"; else log_type="Access"; fi # 1. IP Extraction ip=$(echo "$line" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1) # --- SAFETY FILTER (Ignore Private IPs) --- if [[ -z "$ip" || "$ip" == "127.0.0.1" || "$ip" == "::1" ]]; then continue; fi if [[ "$ip" == 10.* || "$ip" == 192.168.* || "$ip" == 172.1[6-9].* || "$ip" == 172.2[0-9].* || "$ip" == 172.3[0-1].* ]]; then continue; fi # ------------------------------------------ subnet=$(echo "$ip" | cut -d. -f1-3).0 # 2. Path Extraction if [[ "$log_type" == "Access" ]]; then path=$(echo "$line" | grep -oP '"(GET|POST|HEAD|PUT) \K[^ ]+' | head -1 | cut -c1-35) else path=$(echo "$line" | grep -oP '(?<=context \[)[^\]]+|(?<=found \[)[^\]]+' | head -1) [[ -z "$path" ]] && path=$(echo "$line" | grep -oP '(GET|POST|HEAD) [^ ]+' | head -1) fi [[ -z "$path" ]] && path="/" # 3. Domain Extraction domain=$(echo "$line" | grep -oP '(?<=APVH_)[a-zA-Z0-9.-]+' | head -1) [[ -z "$domain" ]] && domain="Unknown" # --- Helper: Check Whitelist --- is_whitelisted() { if grep -q "$1" "$CSF_ALLOW" || grep -q "$1" "$CSF_IGNORE"; then return 0; else return 1; fi } # --- CASE A: CRITICAL ATTACKS (ModSec/ACL) --- if echo "$line" | grep -qE "RECAPTCHA|ACL|Access to context|ModSecurity"; then trigger=$(echo "$line" | grep -oE "RECAPTCHA|ACL|ModSecurity" | head -1) echo "SEC_IP:$ip" >> "$STRIKE_FILE" echo "SEC_SUB:$subnet" >> "$STRIKE_FILE" if [ $(grep -c "SEC_IP:$ip" "$STRIKE_FILE") -ge 3 ]; then if ! is_whitelisted "$ip"; then $CSF_BIN -d "$ip" "LS_Block: Critical (3) | $trigger | $domain | $path" > /dev/null 2>&1 sed -i "/SEC_IP:$ip/d" "$STRIKE_FILE" fi fi if [ $(grep -c "SEC_SUB:$subnet" "$STRIKE_FILE") -ge 10 ]; then if ! is_whitelisted "$ip"; then $CSF_BIN -d "$subnet/24" "LS_Block: Critical Subnet (10) | $trigger" > /dev/null 2>&1 sed -i "/SEC_SUB:$subnet/d" "$STRIKE_FILE" fi fi # --- CASE B: SCANNERS (403/404/500) --- elif echo "$line" | grep -qE " 400 | 401 | 403 | 404 | 405 | 500 |File not found"; then code=$(echo "$line" | grep -oE "\s(40[0-9]|4[1-4][0-9]|50[0-9])\s" | tr -d ' ' | head -1) echo "SCAN_IP:$ip" >> "$STRIKE_FILE" echo "SCAN_SUB:$subnet" >> "$STRIKE_FILE" if [ $(grep -c "SCAN_IP:$ip" "$STRIKE_FILE") -ge 7 ]; then if ! is_whitelisted "$ip"; then $CSF_BIN -d "$ip" "LS_Block: Scan (7) | Code $code | $domain | $path" > /dev/null 2>&1 sed -i "/SCAN_IP:$ip/d" "$STRIKE_FILE" fi fi if [ $(grep -c "SCAN_SUB:$subnet" "$STRIKE_FILE") -ge 20 ]; then if ! is_whitelisted "$ip"; then $CSF_BIN -d "$subnet/24" "LS_Block: Scan Subnet (20) | Code $code" > /dev/null 2>&1 sed -i "/SCAN_SUB:$subnet/d" "$STRIKE_FILE" fi fi fi done -
Guardar y salir (Pulse
Ctrl+X, entoncesY, entoncesEntre en).
Paso 2: Establecer permisos
Haz que el script sea ejecutable para que el sistema pueda ejecutarlo.
chmod +x /root/litespeed_blocker.sh
Paso 3: Crear el servicio de fondo
Para asegurar que esta protección funciona 24/7, crearemos un archivo de servicio systemd.
-
Crea el archivo:
nano /etc/systemd/system/litespeed-blocker.service -
Pegue la siguiente configuración:
[Unidad] Descripción=LiteSpeed Bloqueador Avanzado de LCR En=network.target lsws.service [Servicio] ExecStart=/bin/bash /root/litespeed_blocker.sh Reinicie=siempre Usuario=raíz [Instalar] Se buscaEn=objetivo.multiusuario -
Guardar y salir.
Paso 4: Activar e iniciar el servicio
Ahora, registre el servicio e inícielo inmediatamente.
systemctl daemon-reload
systemctl active litespeed-blocker
systemctl start litespeed-blocker
Para comprobar que funciona, compruebe el estado:
systemctl status litespeed-blocker
Debería ver Activo (en funcionamiento) en verde.
Paso 5: Configurar el mantenimiento por horas
Tenemos que borrar la “Lista de bloqueados” cada hora. Esto evita que el script bloquee a usuarios legítimos que cometieron pequeños errores (como escribir una contraseña incorrecta) días atrás.
-
Abra el archivo cron raíz:
nano /var/spool/cron/root -
Añade esta línea al final:
0 * * * * echo "" > /tmp/litespeed_strikes.tmp -
Guardar y salir.
-
Paso crucial: Recargue el servicio cron para aplicar este cambio inmediatamente.
service crond reload
Conclusión
Ha desplegado con éxito un Bloqueador automático Pro-Grade para su servidor LiteSpeed. Ahora su sistema detectará instantáneamente los ataques, los cruzará con su lista blanca y prohibirá las IP o subredes maliciosas directamente en CSF, todo ello mientras mantiene segura su red interna.
Proteja sus activos con Alojamiento VPS gestionado en la India o escalar globalmente con nuestra Alojamiento en la nube soluciones en myglobalHOST.


