# THOMAS
Pour appliquer ces mesures nous avons fait un script au prealable sur la machine afin de voir notre score sans aucne modifications

Nous avons donc choisi de faire un script avec toutes les mesures non activé dans le rapport lynis.
Voila le contenu du script bash :
#!/bin/bash
# Activer le pare-feu (UFW)
sudo apt install ufw -y
sudo ufw default deny incoming # Définir la politique par défaut pour les connexions entrantes comme refusée
sudo ufw default allow outgoing # Définir la politique par défaut pour les connexions sortantes comme autorisée
sudo ufw enable # Activer le pare-feu UFW
# Installer l'outil d'audit de paquets (debsecan)
sudo apt install debsecan -y
# Configurer les paramètres du mot de passe
sudo sed -i 's/PASS_MAX_DAYS.*/PASS_MAX_DAYS 30/' /etc/login.defs # Limiter la durée maximale du mot de passe à 30 jours
sudo sed -i 's/PASS_MIN_DAYS.*/PASS_MIN_DAYS 30/' /etc/login.defs # Définir la durée minimale avant changement de mot de passe à 30 jours
sudo sed -i 's/PASS_MIN_LEN.*/PASS_MIN_LEN 8/' /etc/login.defs # Définir la longueur minimale du mot de passe à 8 caractères
# Installer PAM Cracklib
sudo apt install libpam-cracklib -y
echo "password requisite pam_pwquality.so retry=3" | sudo tee -a /etc/pam.d/common-password # Configurer le module PAM pour la qualité du mot de passe
# Installer un outil d'intégrité des fichiers (AIDE)
sudo apt install aide -y
# Activer AppArmor
sudo apt install apparmor -y
sudo systemctl enable apparmor # Activer AppArmor au démarrage
sudo systemctl start apparmor # Démarrer le service AppArmor
# Activer le logging des échecs de connexion et installer fail2ban
sudo apt install fail2ban -y
sudo systemctl enable fail2ban # Activer fail2ban au démarrage
sudo systemctl start fail2ban # Démarrer le service fail2ban
# Installer un scanner de malware (rkhunter)
sudo apt install rkhunter -y
# Configurer le noyau pour désactiver le dump core
echo "* hard core 0" | sudo tee -a /etc/security/limits.conf # Limiter la création de fichiers core
# Mettre à jour Lynis
sudo apt install lynis -y
# Vérifier le fichier resolv.conf
# Ajouter une sauvegarde nameserver si possible (à configurer manuellement)
# Installer debsums pour la vérification des paquets
sudo apt install debsums -y
# Installer apt-show-versions pour la gestion des correctifs
sudo apt install apt-show-versions -y
# Configurer SSH (à configurer manuellement)
# (Port, AllowAgentForwarding, AllowTcpForwarding, ClientAliveCountMax, Compression, LogLevel, MaxAuthTries, MaxSessions, TCPKeepAlive, X11Forwarding)
# Voici une configuration recommandée :
sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config # Changer le port SSH par défaut
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config # Désactiver la connexion directe en tant que root
sudo sed -i 's/AllowAgentForwarding yes/AllowAgentForwarding no/' /etc/ssh/sshd_config # Désactiver la transmission d'agent SSH
sudo sed -i 's/AllowTcpForwarding yes/AllowTcpForwarding no/' /etc/ssh/sshd_config # Désactiver la redirection de port TCP
sudo sed -i 's/ClientAliveCountMax 3/ClientAliveCountMax 2/' /etc/ssh/sshd_config # Limiter le nombre d'essais avant la déconnexion
sudo sed -i 's/Compression yes/Compression no/' /etc/ssh/sshd_config # Désactiver la compression SSH
sudo sed -i 's/LogLevel INFO/LogLevel VERBOSE/' /etc/ssh/sshd_config # Augmenter le niveau de journalisation
sudo sed -i 's/MaxAuthTries 6/MaxAuthTries 3/' /etc/ssh/sshd_config # Limiter le nombre d'essais d'authentification
sudo sed -i 's/MaxSessions 10/MaxSessions 2/' /etc/ssh/sshd_config # Limiter le nombre de sessions simultanées
sudo sed -i 's/#TCPKeepAlive yes/TCPKeepAlive no/' /etc/ssh/sshd_config # Désactiver les sondages TCP KeepAlive
sudo sed -i 's/X11Forwarding yes/X11Forwarding no/' /etc/ssh/sshd_config # Désactiver le transfert X11
echo "Les recommandations de sécurité ont été appliquées avec succès."
Apres nous avons lancé un scan lynis pour voir si il y a du changement entre les deux.

## Quelles sont les differences entre les deux rapports
Dans le premier rapport, il y avait deux avertissements :
* FIRE-4512 : Le module iptables était chargé, mais aucune règle n'était active.
* NETW-2705 : Impossible de trouver 2 serveurs DNS réactifs.
**Ajouts dans le deuxième rapport :**
Dans le deuxième rapport, plusieurs recommandations ont été ajoutées :
* Installation d'un module PAM pour le test de la force du mot de passe (AUTH-9262).
* Configuration des durées de mot de passe dans /etc/login.defs (AUTH-9286).
* Ajout de bannières légales à /etc/issue et /etc/issue.net (BANN-7126 et BANN-7130).
* Installation de fail2ban pour bloquer automatiquement les hôtes avec plusieurs erreurs d'authentification (DEB-0880).
* Installation d'un outil d'intégrité des fichiers comme rkhunter (FINT-4350).
* Désactivation explicite du vidage noyau dans /etc/security/limits.conf (KRNL-5820).
* Installation de debsums et apt-show-versions pour la vérification des packages (PKGS-7370 et PKGS-7394).
* Diverses recommandations SSH (SSH-7408).
* Désactivation des drivers firewire et USB storage non utilisés (STRG-1846 et USB-1000).
**Modification de la dureté :**
* Le premier rapport avait un indice de durcissement de 63, tandis que le deuxième rapport a un indice de durcissement de 70.
**Suppression dans le deuxième rapport :**
* Le deuxième rapport ne signale plus la nécessité de restreindre l'accès aux drivers firewire et USB storage lorsque non utilisés (STRG-1846 et USB-1000).