Administration et Gestion des États de Sécurité SELinux

Fonctionnement et Philosophie

Ancré historiquement dans les travaux du Flux Team de l'Université de l'Utah et de la NSA (National Security Agency), ce système de sécurité open source impose des règles globales qui prévalent même sur les privilèges root. La logique repose sur le principe du moindre privilège : chaque service ou application ne doit avoir accès qu'aux éléments strictement nécessaires à son exécution.

Contrairement aux modes d'accès classiques (DAC) qui autorisent la modification des permissions par les propriétaires, SELinux applique une politique dynamique chargée en mémoire. Cela empêche toute application compromise ou mal configurée de contourner les restrictions définies par l'administrateur, qu'il s'agisse de fichiers, de ports réseaux ou de communications inter-processus.

Vérification de l'État Actuel

Pour identifier si le module est actif et déterminer sa rigueur actuelle, la commande getenforce reste l'outil principal sur les distributions dérivées de RHEL (Red Hat Enterprise Linux) et Fedora.

# Vérification de l'état d'application des règles
$ getenforce

La sortie peut prendre trois formes distinctes :

  • Enforcing : Le système bloque activement les violations de politique et les consigne dans les journaux audit.
  • Permissive : Les infractions sont enregistrées mais non bloquées ; cette phase est idéale pour le débogage sans interruption de service.
  • Disabled : Le module est désactivé et n'intervient pas dans la gestion des accès.

Modification Temporaire des Règles

Lors de tests ou d'investigations ponctuelles, il est possible de basculer vers le mode permissif immédiatement sans redémarrage de la machine. Cela nécessite l'utilisation de setenforce suivi du paramètre numérique souhaité.

#!/bin/bash
# Script d'exemple pour gérer le mode temporaire

CURRENT_STATE=$(getenforce)

if [ "$CURRENT_STATE" == "Enforcing" ]; then
    echo "Basculement vers le mode tolérant..."
    setenforce 0
    
    if [ "$(getenforce)" == "Permissive" ]; then
        echo "Succès : SELinux maintenant en mode permissif."
    else
        echo "Erreur : Echec de basculement."
    fi
else
    echo "Le mode actuel n'est pas Enforcing."
fi

Notez que le retour au mode strict (setenforce 1) s'applique instantanément après cette session.

Configuration Permanente

Pour persister les paramètres au-delà d'un redémarrage, la modification directe du fichier /etc/selinux/config est requise. Ce fichier stocke la politique par défaut utilisée lors du boot du système.

Avant toute manipulation, il est recommandé de sauvegarder le fichier original. Voici une méthode automatisée utilisant sed pour mettre à jour la valeur ciblée :

# Définition des chemins et valeurs
CONF_FILE="/etc/selinux/config"
TARGET_MODE="disabled"

# Modification sécurisée de la ligne SELINUX
if grep -q "^SELINUX=" "$CONF_FILE"; then
    sed -i "s/^SELINUX=.*/SELINUX=$TARGET_MODE/" "$CONF_FILE"
    echo "Configuration mise à jour : $TARGET_MODE"
else
    echo "Erreur : La configuration SELinux n'a pas été trouvée."
fi

Une fois le fichier modifié, un redémarrage complet du serveur devient nécessaire pour que le changement soit pris en compte. Durant le premier démarrage suivant l'activation de SELinux (passage de disabled à enforcing/permissive), la procédure peut sembler ralentie. Ceci est dû au processus initial de marquage des contextes de sécurité pour tous les fichiers existants sur le disque.

Prérequis et Support Distributions

Le déploiement de cette technologie varie selon l'environnement :

  • RHEL / Fedora : Intégré nativement par défaut.
  • Ubuntu : Nécessite le profil Hardened.
  • Debian : Disponible via un package complémentaire.

Ressources Techniques

Pour approfondir la compréhension des contextes de sécurité et des politiques détaillées, la documentation officielle couvre des sujets tels que :

  • L'architecture de contrôle d'accès MAC.
  • La gestion des rôles et utilisateurs spécifiques.
  • L'intégration avec les conteneurs et machines virtuelles.
  • Les bibliothèques utilisées par les applications utilisateurs.

Étiquettes: SELinux Mac linux-kernel securite-informatique redhat

Publié le 4 août à 00h52