Article ID: 122407, created on Nov 5, 2015, last review on Jun 17, 2016

  • Applies to:
  • Plesk Onyx for Linux
  • Plesk 12.5 for Linux
  • Plesk 12.0 for Linux
  • Plesk 11.5 for Linux

Symptômes

Après l'activation d'une jail, le service Fail2ban ne peut pas être redémarré ou arrêté.

Le statut du service n'est pas affiché correctement, il ne contient pas la liste des jails :

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

/var/log/fail2ban.log indique que le service est arrêté lors de l'ajout des fichiers de log à son pool de monitoring :

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

Cause

Les jails plesk-apache-badbot et plesk-apache (ou d'autres jails volumineuses) de Fail2ban sont activées.Cette jail/ce jails forcent Fail2ban à analyser tous les logs d'accès et d'erreurs pour chaque hôte virtuel et chaque log d'accès Apache.

Si les log d'accès de l'hôte virtuel sont nombreux, le service reste bloqué, car les ressources sont surutilisées lors de la tentative d'analyse.

REMARQUE : si vous activez cette jail dans Plesk, l'avertissement ci-dessous s'affiche.

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

Résolution

Appliquez les instructions ci-après s'il y a moins de 300 domaines et si le nombre de fichiers de logs dans la jail doit être réduit.

  1. Arrêtez les processus bloqués par PID (Attention : vérifiez quel PID doit être arrêté d'abord. Pour cela, exécutez la commande sans la partie après | ):

    # ps aux | grep fail2ban|awk '{print $2}'|xargs kill -9
    
  2. Supprimez le fichier .pid :

    # rm -f /var/run/fail2ban/fail2ban.pid
    
  3. Réduisez le nombre de fichiers de logs à analyser pour la jail plesk-apache-badbot (ou désactivez la jail). Ouvrez le fichier /etc/fail2ban/jail.d/plesk.conf et remplacez le masque du chemin d'accès aux fichiers de log '*access*log' par '*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 le service Fail2ban est en cours de fonctionnement, exécutez fail2ban-client reload. Sinon, démarrez le service.

Les instructions suivantes s'appliquent à un grand volume de domaines (plus de 300) :

Fail2ban peut utiliser beaucoup de RAM sur le serveur s'il surveille de nombreuses jails avec un grand nombre de fichiers de logs. Assurez-vous que le serveur ne sera pas à court de mémoire avant d'appliquer cette solution. Si oui, désactivez certaines jails.

Si vous avez de nombreux domaines sur votre serveur Plesk et si la solution ci-dessus n'a pas fonctionné, fractionnez les logs en fonctions des différentes jails afin qu'ils soient chargés l'un après l'autre. Cela réduit le nombre de logs par jail.

Étant donné que le problème est causé par une jail volumineuse avec de nombreux logs, si vous créez plus de jails avec de plus petits volumes, cela devrait résoudre le problème.

Utilisez les commandes ci-après pour créer des jails distinctes pour les domaines selon la première lettre / le premier chiffre :

  1. Obtenez le mail admin :

    admin_email=`mysql -Ns -uadmin -p\`cat /etc/psa/.psa.shadow\` psa -Ne"select email from clients where login='admin'"`
    
  2. Définissez les 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. Définissez les 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. Dans les jails normales plesk-apache-badbot et plesk-apache, conservez uniquement les chemins d'accès vers les fichiers de logs d'erreurs ou d'accès :

    plesk-apache-badbot:

    /var/log/httpd/*error_log
    

    plesk-apache:

    /var/log/httpd/*access_log
    
  5. Pendant les étapes 2 et 3, nous avons créé uniquement des jails si certains domaines correspondaient à la première lettre / au premier chiffre du nom de domaine. Sinon, Fail2ban ne redémarrera pas en raison d'erreurs de configuration. Désormais, nous pouvons créer un script qui ajoute une jail lors de l'ajout de nouveaux domaines :

    • Téléchargez le script en pièce jointe, ajoutez-le à votre serveur et accordez-lui les droits d'exécution :

      wget http://kb.plesk.com/Attachments/kcs-32570/add_jails.sh
      
      chmod +x add_jails.sh
      
    • Créez les tâches dans le Gestionnaire d'événements de Plesk avec les paramètres suivants :

      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. Utilisez les instructions ci-dessus pour redémarrer Fail2ban le cas échéant.

29d1e90fd304f01e6420fbe60f66f838 56797cefb1efc9130f7c48a7d1db0f0c a914db3fdc7a53ddcfd1b2db8f5a1b9c 2a5151f57629129e26ff206d171fbb5f e335d9adf7edffca6a8af8039031a4c7 01bc4c8cf5b7f01f815a7ada004154a2 0a53c5a9ca65a74d37ef5c5eaeb55d7f 742559b1631652fadd74764ae8be475e 31017699f1904665788bf685dabf68e3

Email subscription for changes to this article
Save as PDF