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:
-
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. -
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.
-
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
-
Acceda a su servidor a través de SSH.
-
Cree el archivo de script:
nano /root/imunify_blocker.sh -
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 -
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.
-
Cree el archivo de servicio:
nano /etc/systemd/system/imunify-blocker.service -
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 -
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.
-
Edite el archivo cron raíz:
nano /var/spool/cron/root -
Añade esta línea al final:
0 * * * * echo "" > /tmp/imunify_strikes.tmp -
Guardar y salir.
-
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.


