Hardening Debian

Renforcer la sécurité d'un serveur/machine Linux, dans notre cas sur la distro Debian

Création d'un script bash afin d'automatiser ce qui est dit ci-dessous.

#!/bin/bash

hardenfun(){
    string=$(sudo -l 2>&1) 
    if [[ $string -eq *"NOPASSWD"* ]]; then
        echo "[+] Vous êtes potentiellement vulnérables à une privesc NOPASSWD"
    else
        echo "[+] Vous n'êtes pas vulnérables à une privesc NOPASSWD"
    fi

    chmod 770 /home/*
    cut=$(ls -lha | grep 'test770' | cut -b -10)
    if [[ $cut == *"drwxrwx---"* ]]; then
        echo "oki";
    else
        echo "no";
    fi

    cut=$(ls -lha /home/* | cut -b -10 | sed '1d')
    if [[ $cut != *"drwxrwx---"* ]]; then
        echo "[+] Dossier lisible par tous les users";
    else
        echo "[+] Dossiers lisible seulement par les users auxquels ils appartiennent ";
    fi

    echo "proc    /proc    proc    defaults,nosuid,nodev,noexec,relatime,hidepid=2     0     0" >> /etc/fstab
    proc=$(cat /etc/fstab)
    if [[ $proc == *"proc    /proc    proc    defaults,nosuid,nodev,noexec,relatime,hidepid=2     0     0"* ]]; then
        echo "[+] Processus cachés pour les autres utilisateurs"
    else
        echo "[+] Processus visible par les autres utilisateurs"
    fi

    systemctl stop cron && systemctl disable cron
    status=$(systemctl status cron)
    if [[ $status == *"disabled"* ]]; then  
        echo "[+]disabled"
    else   
        echo "[+]enabled"
    fi

    groupadd sudogrp
    usermod -aG sudogrp debian && chgrp sudogrp $(which sudo)


    apt install unattended-upgrade apt-listchanges
}   
 
hardenfun

Configuration BIOS

  • Activer le SecureBoot
  • Mettre en place en password, user & admin
  • Désactiver le boot depuis des périphériques externes (clés USB, CD/DVD..)

Partitionnement
La mise en place d'un partitionnement spécifique permet de limiter les sinistres, ainsi que de les anticiper.
Partitionnement:

  • Permet de cacher le processus des utilisateurs (lien)
echo 'proc /proc proc defaults,nosuid,nodev,noexec,relatime,hidepid=2 0 0' >> /etc/fstab

Gestion SUID & droits d'éxécution

  • Retirer les SUID & les droits d'execution dans /dev/shm (lien)
    SUID:
    Droits d'executions:
echo 'tmpfs    /dev/shm    tmpfs   defaults,nodev,nosuid,noexec    0    0' >> /etc/fstab

UMASK

  • Modification de UMASK et des repetoires /home
    Les dossiers présents en /home doivent être visibles uniquement par les utilisateurs auxquels ils appartiennent.
    UMASK: user file creation mode mask, masque de création de fichier par l'utilisateur
chmod 770 /home/* sed -i 's/^UMASK.*/UMASK 0077/g' /etc/login.defs

Cron

  • Désactivation de cron
    Lorsque cron n'est pas utilisé, il est mieux de le désactiver.
    Cela empêche un utilisateur malveillant d’exploiter une commande (souvent exécutée en tant que root) afin de faire de la latéralisation voire de l’élévation de privilèges.
systemctl stop cron systemctl disable cron

Update

  • Mise à jours automatique
apt install unattended-upgrades apt-listchanges

Sudo
Il ne faut jamais mettre la directive NOPASSWD (sudo -l) dans une règle sudo car cela permet de bypass l’authentification des utilisateurs pour exécuter une commande privilégiée

Groupe dédié à l’utilisation de sudo

On créé le groupe sudogrp et donne accès au binaire seulement aux utilisateurs membres de ce groupe (ici, debian a le droit d’utiliser sudo)

Cela permet d’avoir la main sur les utilisateurs autorisés à utiliser sudo

groupadd sudogrp usermod -a -G sudogrp debian chgrp sudogrp $(which sudo) chmod 4750 $(which sudo)

Usage de sudoedit
Pour ne pas corrompre l'utilisation de sudo et le fichier sudoers, il est important d'utiliser (sudoedit)