Bloqueo de la extensión Fail2ban

Created:

2016-11-16 13:22:44 UTC

Modified:

2017-08-16 17:26:02 UTC

5

Was this article helpful?


Have more questions?

Enviar una solicitud

Bloqueo de la extensión Fail2ban

Applicable to:

  • Plesk for Linux

Síntomas

Tras la habilitación de un jail, no es posible reiniciar o detener el servicio de Fail2ban.

El estado del servicio no se muestra correctamente, ya que no muestra la lista de jails:

# service fail2ban status
fail2ban-server (pid 3291) is running

/var/log/fail2ban.log muestra que el servicio se detuvo cuando se añadieron archivos de registro a su inventario de monitorización:

2014-07-27 21:09:25,487 fail2ban.filter [25047]: INFO    Added logfile = /var/www/vhosts/system/dom1.com/logs/proxy_access_log
2014-07-27 21:09:25,985 fail2ban.filter [25047]: INFO Added logfile = /var/www/vhosts/system/domain.com/logs/proxy_access_ssl_log

Causa

Fail2ban tiene activados los jails plesk-apache-badbot y plesk-apache u otros jails grandes. Dicho jail fuerza a Fail2ban a analizar todos los registros de errores y acceso para cada host virtual, así como el registro de acceso de Apache.

Si existe una gran cantidad de registros de acceso al host virtual, el servicio se bloquea debido a un uso excesivo de los recursos al intentar analizarlos.

NOTA : cuando active este jail en Plesk, puede que vea la siguiente advertencia:

Warning: Fail2Ban might not work well if there are many domains and Fail2Ban has to monitor too many log files.

Resolución

Si existen menos de 300 dominios, efectúe los pasos descritos a continuación para así reducir el número de archivos de registro en el jail:

  1. Elimine los procesos bloqueados mediante PID. Tenga en cuenta que puede ser una buena idea examinar primero los PIDs que se eliminarán, omitiendo la última parte del comando detrás de | ):

    # ps aux | grep fail2ban|awk '{print $2}'|xargs kill -9
  2. Elimine el archivo .pid :

    # rm -f /var/run/fail2ban/fail2ban.pid
  3. Reduzca el número de registros a analizar para el jail plesk-apache-badbot o bien desactive el jail. Abra el archivo /etc/fail2ban/jail.d/plesk.conf y cambie la máscara de la ruta a los registros de '*access*log' a '*access_log' :

    [plesk-apache-badbot]

    enabled = true
    filter = apache-badbots
    action = iptables-multiport[name=BadBots, port="http,https,7080,7081"]
    logpath = /var/www/vhosts/system/*/logs/*access_log
    /var/log/httpd/*access_log
  4. Si el servicio Fail2ban está en ejecución, ejecute fail2ban-client reload . De lo contrario, inicie el servicio.

Los pasos detallados a continuación son aplicables en el caso de disponer de un gran número de dominios (más de 300).

Fail2ban puede utilizar una cantidad elevada de RAM en el servidor si este monitoriza varios jails con un gran número de archivos de registro. Antes de realizar estos pasos, compruebe que el servidor no quedará sin memoria. De ser así, desactive algunos jails.

Si dispone de un gran número de dominios en su servidor Plesk y esta solución provisional no le ayuda a resolver el problema, divida los registros en distintos jails para que así se carguen uno a uno. De esta forma se minimizará el número de registros en un jail.

Como la causa de esta incidencia reside en un único jail muy grande y con un gran número de registros, puede resultarle útil crear más jails para que así cada uno de ellos tenga una cantidad inferior de registros.

Ejecute los comandos detallados a continuación para crear distintos jails para los dominios de acuerdo con el dígito o la letra del primer nombre:

  1. Obtenga el email admin:

    admin_email=`mysql -Ns -uadmin -p\\`cat /etc/psa/.psa.shadow\\` psa -Ne"select email from clients where login='admin'"`
  2. Defina jails plesk-apache :

     for i in a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0;do find /var/www/vhosts/system/$i*/logs/error_log 2>/dev/null 1>/dev/null; found=`echo $?`;if [ $found == "0" ];then echo "[[\\"usedns\\",\\"no\\"],[\\"logpath\\",\\"\\\\/var\\\\/www\\\\/vhosts\\\\/system\\\\/$i*\\\\/logs\\\\/error_log\\"],[\\"enabled\\",\\"true\\"],[\\"filter\\",\\"apache-auth\\"],[\\"maxretry\\",\\"6\\"],[\\"__source__\\",\\"jail.d\\\\/plesk.conf\\"],[\\"action\\",\\"iptables-multiport[name=apache, port=\\\\\\"http,https,7080,7081\\\\\\"]\\"],[\\"ignoreip\\",\\"127.0.0.1\\/8\\"],[\\"bantime\\",\\"600\\"],[\\"destemail\\",\\"$admin_email\\"],[\\"findtime\\",\\"600\\"],[\\"backend\\",\\"auto\\"]]"|/usr/local/psa/admin/bin/f2bmng --set-jail plesk-apache-$i ;fi;done
  3. Defina jails plesk-apache-badbot :

     for i in a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0;do find /var/www/vhosts/system/$i*/logs/error_log 2>/dev/null 1>/dev/null; found=`echo $?`;if [ $found == "0" ];then echo "[[\\"usedns\\",\\"no\\"],[\\"logpath\\",\\"\\\\/var\\\\/www\\\\/vhosts\\\\/system\\\\/$i*\\\\/logs\\\\/*access_log\\"],[\\"enabled\\",\\"true\\"],[\\"filter\\",\\"apache-badbots\\"],[\\"maxretry\\",\\"100\\"],[\\"__source__\\",\\"jail.d\\\\/plesk.conf\\"],[\\"action\\",\\"iptables-multiport[name=BadBots, port=\\\\\\"http,https,7080,7081\\\\\\"]\\"],[\\"ignoreip\\",\\"127.0.0.1\\/8\\"],[\\"bantime\\",\\"172800\\"],[\\"destemail\\",\\"$admin_email\\"],[\\"findtime\\",\\"600\\"],[\\"backend\\",\\"auto\\"]]" |/usr/local/psa/admin/bin/f2bmng --set-jail plesk-apache-badbot-$i;fi;done
  4. En los jails plesk-apache-badbot y plesk-apache estándar, deje únicamente las rutas a los archivos de registro de errores/acceso generales:

    plesk-apache-badbot :

    /var/log/httpd/*error_log

    plesk-apache :

    /var/log/httpd/*access_log
  5. En los pasos 2 y 3, solo creamos jails si existían algunos dominios que tenían la misma primera letra o dígito en el nombre de dominio. De lo contrario, Fail2ban no podrá iniciarse debido a errores de configuración. Ahora necesitamos configurar un script que añada un jail cuando se creen nuevos dominios:

    • Descargue el script adjunto , transfiéralo a su servidor y concédale permisos de ejecución:

      wget https://support.plesk.com/hc/article_attachments/115004544269/add_jails.sh

      chmod +x add_jails.sh
    • Cree tareas en el Administrador de eventos de Plesk con los siguientes parámetros:

      Domain created lowest (0) root /root/add_jails.sh <new_domain_name>

      Default domain (the first domain added to a subscription or webspace) created lowest (0) root /root/add_jails.sh <new_domain_name>

  6. De ser necesario, realice los pasos detallados arriba para reiniciar Fail2ban.

¿Tiene más preguntas? Enviar una solicitud
Inicie sesión para dejar un comentario.