Saltar al contenido principal
Imprimir

Cómo Auto-Bloquear Atacantes en Imunify360 en Servidor LiteSpeed en WHM/cPanel (Script Avanzado).

Meta Descripción: Maximice su cortafuegos Imunify360 integrando un analizador de registros en tiempo real personalizado. Aprenda a eliminar automáticamente IP y subredes maliciosas al instante en servidores LiteSpeed evitando falsos positivos.


Imunify360 es posiblemente la mejor suite de seguridad para servidores cPanel, ofreciendo WAF avanzado y defensa proactiva. Sin embargo, durante un “Log Flood” masivo -donde los bots generan miles de errores 404 o 403 por segundo- esperar a que se activen las reglas estándar a veces puede ser demasiado lento para los servidores LiteSpeed bajo una carga pesada.

En este tutorial, vamos a salvar la brecha mediante la creación de un Script de integración Pro-Grade (v19). Este script analiza los registros de LiteSpeed en tiempo real, extrae datos detallados de los ataques y ordena a Imunify360 que DROP al atacante al instante.

¿Utilizando LCR? Si su servidor utiliza CSF en lugar de Imunify360, consulte nuestro Guía de bloqueo automático del LCR.

La ventaja “v19

A diferencia de los guiones básicos, esta edición cuenta con:

  1. Filtro de seguridad: Ignora automáticamente las IP privadas (como 10.0.6.2) para evitar que el script banee accidentalmente su propio Gateway o Load Balancer.

  2. Optimización de la CPU: Comprueba la lista blanca de Imunify sólo después de que se confirme que una IP es maliciosa, ahorrando enormes recursos del sistema.

  3. Registro preciso: El comentario de bloqueo en Imunify le dirá exactamente qué dominio fue atacado y el tipo de ataque.


Requisitos previos

  • Un servidor con Servidor web LiteSpeed.

  • Imunify360 instalado y funcionando.

  • Acceso SSH raíz.


Paso 1: Crear el script de integración

  1. Acceda a su servidor a través de SSH.

  2. Cree el archivo de script:

    nano /root/imunify_blocker.sh
    
  3. Pegue el Profesional v19 (Edición Imunify) código de abajo:

    #!/bin/bash
    # =================================================================
    # Bloqueador de defensas avanzadas LiteSpeed/Apache - v19 (IMUNIFY SAFE)
    # Característica: Auto-Ignora IPs Privadas/Locales (10.x, 192.x, 127.x)
    # =================================================================
    
    ACCESO_LOG="/usr/local/apache/logs/access_log"
    ERROR_LOG="/usr/local/apache/logs/error_log"
    STRIKE_FILE="/tmp/imunify_strikes.tmp"
    IMUNIFY="/usr/bin/imunify360-agent"
    
    # Asegúrese de que existe el archivo strike y límpielo al arrancar.
    toque "$STRIKE_FILE"
    echo "" > "$STRIKE_FILE"
    
    cola -Fn0 "$ACCESS_LOG" "$ERROR_LOG" | mientras que leer -r línea; do
        [[ "$line" == "==>"* ]] && continuar
    
        si [[ "$line" == *"] ["* ]]; entonces log_type="Error"; si no log_type="Acceso"; fi
    
        # 1. Extracción IP
        ip=$(echo "$line" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)
    
        # --- FILTRO DE SEGURIDAD (Ignora IPs Privadas) ---
        si [[ -z "$ip" || "$ip" == "127.0.0.1" || "$ip" == "::1" ]]; entonces continuar; fi
        si [[ "$ip" == 10.* || "$ip" == 192.168.* || "$ip" == 172.1[6-9].* || "$ip" == 172.2[0-9].* || "$ip" == 172.3[0-1].* ]]; entonces continuar; fi
        # ------------------------------------------
    
        subred=$(echo "$ip" | cut -d. -f1-3).0
    
        # 2. Extracción de rutas
        si [[ "$log_tipo" == "Acceso" ]]; entonces
            path=$(echo "$line" | grep -oP '"(GET|POST|HEAD|PUT) \K[^ ]+' | head -1 | cut -c1-35)
        si no
            path=$(echo "$line" | grep -oP '(?<=contexto [)[^\]]+|(?<=encontrado [)[^\]]+' | head -1)
            [[ -z "$path" ]] && path=$(echo "$line" | grep -oP '(GET|POST|HEAD) [^ ]+' | head -1)
        fi
        [[ -z "$path" ]] && path="/"
    
        domain=$(echo "$line" | grep -oP '(?<=APVH_)[a-zA-Z0-9.-]+' | head -1)
        [[ -z "1TP6Dominio" ]] && domain="Desconocido"
    
        # --- CASO A: ATAQUES CRÍTICOS ---
        si echo "$line" | grep -qE "RECAPTCHA|ACL|Acceso al contexto|ModSecurity"; entonces
            trigger=$(echo "$line" | grep -oE "RECAPTCHA|ACL|ModSecurity" | head -1)
            echo "SEC_IP:$ip" >> "$STRIKE_FILE"
            echo "SEC_SUB:$subred" >> "$STRIKE_FILE"
    
            si [ $(grep -c "SEC_IP:$ip" "$STRIKE_FILE") -ge 3 ]; entonces
                si ! $IMUNIFY lista-ip local list --purpose white | grep -wq "$ip"; entonces
                    $IMUNIFY lista-ip local add --purpose drop "$ip" --comentario "LS_Block: Crítico (3) | 1TP6Disparador | 1TP6Dominio | $path" > /dev/null 2>&1
                    sed -i "/SEC_IP:$ip/d" "$STRIKE_FILE"
                fi
            fi
            si [ $(grep -c "SEC_SUB:$subred" "$STRIKE_FILE") -ge 10 ]; entonces
                si ! $IMUNIFY lista-ip local list --purpose white | grep -wq "$ip"; entonces
                    $IMUNIFY lista-ip local add --purpose drop "$subred/24" --comentario "LS_Block: Critical Subnet (10) | 1TP6Disparador" > /dev/null 2>&1
                    sed -i "/SEC_SUB:$subred/d" "$STRIKE_FILE"
                fi
            fi
    
        # --- CASO B: ESCÁNERES ---
        elif echo "$line" | grep -qE "400 | 401 | 403 | 404 | 405 | 500 |Archivo no encontrado"; entonces
            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$subred" >> "$STRIKE_FILE"
    
            si [ $(grep -c "SCAN_IP:$ip" "$STRIKE_FILE") -ge 7 ]; entonces
                si ! $IMUNIFY lista-ip local list --purpose white | grep -wq "$ip"; entonces
                    $IMUNIFY lista-ip local add --purpose drop "$ip" --comentario "LS_Block: Scan (7) | Código 1TP6Código | 1TP6Dominio | $path" > /dev/null 2>&1
                    sed -i "/SCAN_IP:$ip/d" "$STRIKE_FILE"
                fi
            fi
            si [ $(grep -c "SCAN_SUB$subred" "$STRIKE_FILE") -ge 20 ]; entonces
                si ! $IMUNIFY lista-ip local list --purpose white | grep -wq "$ip"; entonces
                    $IMUNIFY lista-ip local add --purpose drop "$subred/24" --comentario "LS_Block: Escanear subred (20)" > /dev/null 2>&1
                    sed -i "/SCAN_SUB:$subred/d" "$STRIKE_FILE"
                fi
            fi
        fi
    hecho
    
  4. Guardar y salir (Ctrl+X -> Y -> Entre en).


Paso 2: Establecer permisos

Haz que el script sea ejecutable:

chmod +x /root/imunify_blocker.sh

Paso 3: Automatizar con Systemd

Crearemos un servicio para mantener este script ejecutándose en segundo plano.

  1. Cree el archivo de servicio:

    nano /etc/systemd/system/imunify-blocker.service
    
  2. Pega lo siguiente:

    [Unidad]
    Descripción=LiteSpeed Puente Imunify Avanzado
    En=network.target lsws.service
    
    [Servicio]
    ExecStart=/bin/bash /root/imunify_blocker.sh
    Reinicie=siempre
    Usuario=raíz
    
    [Instalar]
    Se buscaEn=objetivo.multiusuario
    
  3. Guardar y salir.


Paso 4: Habilitar el servicio

Ejecute los siguientes comandos para iniciar la protección inmediatamente:

systemctl daemon-reload
systemctl active imunify-blocker
systemctl start imunify-blocker

Compruebe el estado para confirmar que está funcionando:

systemctl status imunify-blocker

Paso 5: Mantenimiento por horas

Para evitar que el archivo de memoria temporal crezca infinitamente, debemos borrarlo cada hora.

  1. Edite el archivo cron raíz:

    nano /var/spool/cron/root
    
  2. Añade esta línea al final:

    0 * * * * echo "" > /tmp/imunify_strikes.tmp
    
  3. Guardar y salir.

  4. Importante: Recargue el servicio cron para que el cambio surta efecto al instante.

    service crond reload
    

Conclusión

Su servidor LiteSpeed ahora alimenta direcciones IP maliciosas directamente a la lista de “Descartes” de Imunify360 en tiempo real. Mediante la implementación de este puente avanzado, se asegura de que los ataques de gran volumen se detienen a nivel de red, manteniendo su tráfico legítimo seguro y el uso de la CPU del servidor bajo.

Proteja sus activos con Alojamiento VPS gestionado en la India o escalar globalmente con nuestra Alojamiento en la nube soluciones en myglobalHOST.

Índice
Cerrar
Consigue 75% + 10% de descuento extra en planes de alojamiento web de myglobalHOST

10% extra de descuento

Código de cupón

EXTRA10

Aplicable el

100 rupias de descuento

Código de cupón

FLAT100

Aplicable el

Cómo beneficiarse: Simplemente busque el plan de alojamiento más adecuado para usted y benefíciese de un descuento adicional en todos los pedidos.