Le Laboratoire Virtuel & Terminal Pratique est en ligne :

Ouvrir le Labo
Volume 2 : Linux, Terminal & Bash Scripting Avancé/Module 2 : Scripting Bash & Automatisation d'Audit

PROJET 01 : Développement d'un Script d'Audit Système et Durcissement

Labo Virtuel >_

PROJET 01 : Script d'Administration & Audit de Sécurité Linux



Dans le cadre du Projet 01 de CyberPath, vous allez développer un outil d'inspection automatisé en Bash capable de dresser un bilan de sécurité rapide sur tout serveur Debian ou Ubuntu fraîchement provisionné.

---

1. Objectifs Techniques du Script d'Audit



Le script doit vérifier automatiquement : 1. Les comptes utilisateurs anormaux : Repérer tout compte autre que root possédant l'identifiant UID 0 dans /etc/passwd. 2. Les mots de passe vides : Vérifier qu'aucun compte n'a de champ de mot de passe vide dans /etc/shadow. 3. Les binaires SUID non standards : Inventorier les exécutables ayant le bit SUID activé. 4. Les ports TCP en écoute : Vérifier quels démons écoutent sur 0.0.0.0 (exposés à Internet). 5. La configuration SSH : Vérifier si PermitRootLogin et PasswordAuthentication sont autorisés dans /etc/ssh/sshd_config.

---

2. Implémentation Complète du Script (audit_securite.sh)



Voici le script complet, commenté et conforme aux standards de production :

``bash #!/usr/bin/env bash

=============================================================================

RAYLAB SECURITY TOOLKIT - PROJET 01 CYBERPATH

Script d'Audit Rapide de Durcissement Linux

Usage : sudo ./audit_securite.sh

=============================================================================



set -euo pipefail

Couleurs pour le terminal

RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color

echo -e "${BLUE}=====================================================${NC}" echo -e "${BLUE} AUDIT DE SÉCURITÉ SYSTÈME LINUX — RAYLAB ${NC}" echo -e "${BLUE}=====================================================${NC}" echo -e "Date de l'audit : $(date '+%Y-%m-%d %H:%M:%S')" echo -e "Hôte audité : $(hostname -f) ($(uname -srm))\n"

1. Vérification des privilèges d'exécution

if [[ $EUID -ne 0 ]]; then echo -e "${RED}[!] ERREUR : Ce script d'audit doit être exécuté en root (sudo).${NC}" exit 1 fi

2. Vérification des comptes UID 0

echo -e "${YELLOW}[*] Vérification des comptes avec UID 0 (Privilèges root) :${NC}" comptes_uid0=$(awk -F: '($3 == 0) {print $1}' /etc/passwd) for compte in $comptes_uid0; do if [[ "$compte" == "root" ]]; then echo -e " [+] Compte root légitime identifié : ${GREEN}root${NC}" else echo -e " ${RED}[ALERTE CRITIQUE] Compte suspect avec UID 0 détecté : $compte${NC}" fi done

3. Vérification des binaires SUID critiques

echo -e "\n${YELLOW}[*] Inventaire des binaires SUID critiques dans /usr/bin :${NC}" suid_critiques=("bash" "sh" "python" "python3" "perl" "ruby" "vim" "nano" "nmap" "find") for binaire in "${suid_critiques[@]}"; do if find /usr/bin -name "$binaire" -perm -4000 2>/dev/null | grep -q "$binaire"; then echo -e " ${RED}[DANGER SUID GTFOBINS] Binaire exploitable en root : /usr/bin/$binaire${NC}" fi done echo -e " ${GREEN}[✓] Contrôle des binaires SUID dangereux terminé.${NC}"

4. Vérification de la configuration SSH

echo -e "\n${YELLOW}[*] Audit de la configuration SSH (/etc/ssh/sshd_config) :${NC}" if [[ -f /etc/ssh/sshd_config ]]; then root_login=$(grep -Ei '^\s*PermitRootLogin' /etc/ssh/sshd_config || echo "PermitRootLogin non spécifié (défaut)") echo -e " Statut Root Login : ${root_login}" auth_pass=$(grep -Ei '^\s*PasswordAuthentication' /etc/ssh/sshd_config || echo "PasswordAuthentication non spécifié") echo -e " Statut Mot de Passe : ${auth_pass}" else echo -e " ${BLUE}[i] Aucun service SSH installé sur cet hôte.${NC}" fi

5. Vérification des ports TCP en écoute

echo -e "\n${YELLOW}[*] Services en écoute sur toutes les interfaces (0.0.0.0) :${NC}" ss -tulpn | grep LISTEN | grep '0.0.0.0' | while read -r line; do echo -e " ${YELLOW}->${NC} $line" done

echo -e "\n${GREEN}=====================================================${NC}" echo -e "${GREEN} RAPPORT D'AUDIT TERMINÉ ${NC}" echo -e "${GREEN}=====================================================${NC}"
`

---

3. Recommandations de Durcissement (CIS Benchmarks)



À l'issue de cet audit, voici les trois règles immédiates à appliquer : 1. Désactiver la connexion directe en root sous SSH :
PermitRootLogin no. 2. Imposer l'authentification par clé publique SSH (Ed25519) et désactiver les mots de passe : PasswordAuthentication no. 3. Supprimer les permissions SUID superflues sur les utilitaires administratifs : chmod u-s /usr/bin/find`.
Informations
Formatinteractive
Durée50 min
StatutEn cours
Laboratoire Virtuel Pratique

Pratiquez cette le?on dans le Terminal Linux et l'ex?cuteur WebAssembly Python en direct.

Ouvrir dans le Labo >_