# 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.* ```console: #!/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](https://www.cyberciti.biz/faq/linux-hide-processes-from-other-users/)) ```console= 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](https://unix.stackexchange.com/questions/670362/mounting-dev-shm-with-noexec)) SUID: Droits d'executions: ```console 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 ```console= 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. ```console= systemctl stop cron systemctl disable cron ``` **Update** * Mise à jours automatique ```console= 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 ```console= 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](https://www.tutorialspoint.com/unix_commands/sudoedit.htm))