Comment bloquer automatiquement les attaquants dans CSF sur le serveur LiteSpeed dans WHM/cPanel (Script avancé)
L'exploitation d'une entreprise d'hébergement web nécessite de maintenir la stabilité de vos serveurs, en particulier lorsque vous offrez hébergement WordPress bon marché où les ressources sont partagées. L'un des plus grands défis pour les administrateurs de cPanel/WHM est de faire face aux “bot scanners” et aux attaques distribuées qui contournent les règles standard des pare-feux.
Bien que le Serveur Web LiteSpeed soit incroyablement rapide, les attaques à haute fréquence peuvent toujours faire grimper l'utilisation du CPU. Dans ce guide, nous allons mettre en place un Analyseur avancé de journaux en temps réel (v19). Contrairement aux simples scripts fail2ban, cette solution personnalisée fait la distinction entre les erreurs inoffensives et les hits dangereux de ModSecurity, interdit des sous-réseaux entiers de manière intelligente et, plus important encore, inclut une fonction de contrôle de l'accès au réseau. Filtre de sécurité pour éviter d'interdire vos propres IP de passerelle interne.
Vous utilisez Imunify360 ? Si votre serveur utilise Imunify360 au lieu de CSF, veuillez vous référer à notre Guide de blocage automatique Imunify360.
Pourquoi utiliser cette solution personnalisée ?
-
La sécurité avant tout : Ignore automatiquement les IP privées (par exemple,
10.0.x.x,192.168.x.x) afin d'éviter l'auto-banalisation accidentelle. -
Catégorisation intelligente : Distingue une erreur 404 inoffensive d'une dangereuse tentative d'injection SQL.
-
Preuves détaillées : Le motif de blocage dans le CCA vous indiquera exactement qui et qui a déclenché l'interdiction.
-
Protection des exploitations agricoles : Interdit automatiquement l'ensemble du sous-réseau (
/24) si une ferme de robots vous attaque à partir de plusieurs adresses IP.
Conditions préalables
-
Un VPS ou un serveur dédié avec accès à la racine.
-
Serveur Web LiteSpeed installés.
-
CSF (ConfigServer Security & Firewall) installés et actifs.
Étape 1 : Création du script de blocage avancé
Nous allons créer un script bash qui surveille vos logs d'accès LiteSpeed en temps réel.
-
Connectez-vous à votre serveur via SSH en tant que
racine. -
Créer le fichier de script :
nano /root/litespeed_blocker.sh -
Collez les éléments suivants Professionnel v19 code. Cette version comprend les éléments critiques suivants Filtre de sécurité pour ignorer les IP internes.
#!/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 -
Sauvegarder et quitter (Appuyer sur
Ctrl+X, alorsY, alorsEntrer).
Étape 2 : Définir les autorisations
Rendez le script exécutable afin que le système puisse l'exécuter.
chmod +x /root/litespeed_blocker.sh
Étape 3 : Créer le service d'arrière-plan
Pour que cette protection fonctionne 24 heures sur 24 et 7 jours sur 7, nous allons créer un fichier de service systemd.
-
Créer le fichier :
nano /etc/systemd/system/litespeed-blocker.service -
Collez la configuration suivante :
[Unité] Description=LiteSpeed Advanced CSF Blocker Après=réseau.cible lsws.service [Service] ExecStart=/bin/bash /root/litespeed_blocker.sh Redémarrage=toujours Utilisateur=root [Installer] WantedBy=multi-user.target -
Sauvegarder et quitter.
Étape 4 : Activer et démarrer le service
Maintenant, enregistrez le service et démarrez-le immédiatement.
systemctl daemon-reload
systemctl permettre litespeed-blocker
systemctl start litespeed-blocker
Pour s'assurer qu'il fonctionne, vérifiez l'état :
systemctl status litespeed-blocker
Vous devriez voir Actif (en cours) en vert.
Étape 5 : Configuration de la maintenance horaire
Nous devons effacer la “Strike List” toutes les heures. Cela empêche le script de bloquer des utilisateurs légitimes qui ont fait de petites erreurs (comme taper un mauvais mot de passe) il y a quelques jours.
-
Ouvrez le fichier cron racine :
nano /var/spool/cron/root -
Ajoutez cette ligne tout en bas :
0 * * * * écho "" > /tmp/litespeed_strikes.tmp -
Sauvegarder et quitter.
-
Étape cruciale : Rechargez le service cron pour appliquer cette modification immédiatement.
service crond reload
Conclusion
Vous avez maintenant déployé avec succès un Pro-Grade Auto-Blocker pour votre serveur LiteSpeed. Votre système détectera instantanément les attaques, les croisera avec votre liste blanche, et bannira les IP ou sous-réseaux malveillants directement dans CSF, tout en gardant votre réseau interne en sécurité.
Protégez vos actifs avec Hébergement VPS géré en Inde ou s'étendre à l'échelle mondiale grâce à nos Hébergement en nuage à l'adresse myglobalHOST.


