Erreurs critiques dans la configuration VIP double avec Keepalived : Analyse approfondie

Problèmes de sécurité et d'exécution des scripts de survelilance

Les scripts de surveillance vrrp_script sont essentiels pour évaluer l'état des nœuds, mais leur contexte d'exécution est souvent négligé. Une erreur fréquente consiste à exécuter ces scripts avec des privilèges excessifs ou sans contrôles de sécurité appropriés.

Problème : Utilisation de l'utilsiateur root ou permissions de fichier incorrectes. Spécifier script_user root dans global_defs présente des risques de sécurité importants. De plus, sur les systèmes avec SELinux activé (comme CentOS/RHEL 7+), le contexte de sécurité des fichiers et répertoires doit être correctement défini pour permettre l'accès au domaine keepalived_t.

Une approche plus sécurisée consiste à créer un utilisateur dédié avec des permissions minimales requises.

Configuration sécurisée d'un script de surveillance

Création de l'utilisateur et du groupe dédiés :

sudo groupadd moniteur_keepalived
sudo useradd -r -s /sbin/nologin -g moniteur_keepalived moniteur_keepalived

Préparation du répertoire pour les scripts :

sudo mkdir -p /etc/keepalived/scripts_moniteur
sudo chown moniteur_keepalived:moniteur_keepalived /etc/keepalived/scripts_moniteur
sudo chmod 750 /etc/keepalived/scripts_moniteur

Exemple de script de vérification pour un service web :

#!/bin/bash
# Vérifie si le service Apache est opérationnel
if systemctl is-active --quiet httpd; then
    # Test supplémentaire de connectivité sur le port 8080
    if nc -z localhost 8080 &> /dev/null; then
        exit 0  # Service sain
    else
        exit 1  # Service actif mais port inaccessible
    fi
else
    exit 1  # Service non actif
fi

Attribution des permissions et contexte SELinux :

sudo chown moniteur_keepalived:moniteur_keepalived /etc/keepalived/scripts_moniteur/verif_httpd.sh
sudo chmod 750 /etc/keepalived/scripts_moniteur/verif_httpd.sh
# Si SELinux est actif
sudo chcon -t keepalived_script_exec_t /etc/keepalived/scripts_moniteur/verif_httpd.sh

Configuration correspondante dans keepalived.conf :

global_defs {
    script_user moniteur_keepalived
    ...
}

vrrp_script verif_service_web {
    script "/etc/keepalived/scripts_moniteur/verif_httpd.sh"
    interval 3   # Fréquence de vérification en secondes
    timeout 4    # Délai d'expiration de l'exécution
    weight -20   # Impact sur la priorité en cas d'échec
    rise 2       # Nombre de succès requis pour considérer le service comme stable
    fall 2       # Nombre d'échecs pour déclencher une défaillance
}

Étiquettes: Keepalived VRRP ha-cluster Monitoring SELinux

Publié le 9 septembre à 21h51