Aller au contenu

Durcissement des systèmes Linux

1. Objectif du cours

Présenter une méthodologie opérationnelle de durcissement Linux appliquée à des serveurs critiques (ex. MediData) : préparation, durcissement du noyau et des fichiers, gestion des comptes, sécurisation des services réseau et validation continue.

2. Notions et définitions essentielles

  • DAC (Contrôle d'Accès Discrétionnaire) : permissions Unix classiques (owner/group/others).
  • MAC (Contrôle d'Accès Obligatoire) : couches additionnelles (SELinux/AppArmor).
  • Capabilities : granularisation des privilèges root pour processus.
  • Durcissement itératif : cycles courts, sauvegarde, test, documentation avant déploiement en production.
  • Baseline : collecte de métriques de performance (CPU, mémoire, disque, réseau) servant de référence.

3. Fonctionnement et principes

  • Défense en profondeur via couches complémentaires (DAC / MAC / capabilities) : une couche peut atténuer la compromission d'une autre.
  • Principe de moindre privilège : limiter droits des comptes, processus et services (éviter root systématique).
  • Approche méthodique : inventaire des services, sauvegardes multiniveaux, désactivation des services inutiles, tests et validation avant chaque changement.
  • Contrôle des flux réseau par firewall “deny by default” : n'autoriser que les flux explicitement nécessaires.
  • Documentation et monitoring continus pour détecter dérives et garantir la maintenabilité.

4. Commandes et manipulations

Regroupées par procédure — seules les commandes présentes dans le PDF sont listées, avec rôle succinct.

  • Sauvegardes / rollback
  • lvcreate -L1G -s -n backup-root /dev/vg0/root : créer snapshot LVM.
  • tar -czf /backup/config-$(date +%Y%m%d).tar.gz /etc /boot/grub : sauvegarde configs.
  • iptables-save > /backup/iptables.rules : exporter règles firewall.
  • dd if=/dev/sda of=/backup/system-image.img : image complète disque.

  • Inventaire et diagnostic

  • systemctl list-units --type=service --state=running : lister services actifs systemd.
  • ss -tuln : lister ports réseau ouverts.
  • ps aux --sort=-%cpu : processus triés par consommation CPU.
  • sar -A 300 > /tmp/baseline.txt : collecte automatique de métriques (exemple).

  • Noyau / paramètres sysctl

  • création d’un fichier dédié /etc/sysctl.d/99-security.conf + sysctl -p (ou sysctl -p /etc/sysctl.d/99-security.conf) : appliquer paramètres de sécurité.

  • Modules & capabilities

  • lsmod : lister modules kernel chargés.
  • getcap / setcap : audit/assignation de capabilities.

  • Permissions et comptes

  • chmod / chown exemples pour restreindre accès (/etc/shadow, clés SSH, /etc, /root, logs, /tmp).
  • usermod -L -s /bin/false daemon : verrouiller compte système.

  • SSH et clés

  • ssh-keygen -t rsa -b 4096 -C "admin@medidata.fr" ; ssh-copy-id : génération et distribution de clés.
  • systemctl restart sshd : appliquer configuration SSH.

  • Pare-feu

  • Exemples iptables pour autoriser services et policy DROP ; iptables-save / iptables-restore pour persistance.
  • Utilisation d’iptables-persistent (package) sur Debian pour restaurer règles au démarrage.

  • Audit & surveillance

  • systemctl enable auditd ; auditctl -w /etc/passwd -p wa -k account_changes : surveillance modifications comptes.
  • pam_tally2 utilisé pour verrouillage/relevé des comptes.

5. Sécurité et bonnes pratiques

  • Méthode itérative : « une modification à la fois, un test à la fois, une validation à la fois » ; maintenir session ouverte pendant les modifications.
  • Sauvegardes multiniveaux (snapshot, tar, export règles, image disque) avant toute modification.
  • Collecte de baseline pendant au moins 48 h pour comparer impact des changements.
  • Tester les désactivations de modules kernel et autres changements dans un laboratoire avant production.
  • Ne pas éditer le fichier système par défaut pour sysctl : préférer des fichiers .conf dédiés dans /etc/sysctl.d.
  • Automatiser uniquement les mises à jour de sécurité critiques et prévoir fenêtres de maintenance, notifications et rollback.
  • Documenter chaque modification (état initial, commande, test, rollback) et centraliser la documentation (wiki interne).
  • Surveiller et alerter sur connexions root et créations de comptes ; journaliser les actions sudo.

6. Points essentiels à retenir pour le TSSR

  • Prioriser les serveurs selon données sensibles : DB > proxy > web.
  • Principe « deny by default » pour le firewall : n’autoriser que ce qui est nécessaire.
  • Durcir noyau via sysctl (réduire informations exposées, protéger contre SYN flood, redirections ICMP).
  • Verrouiller comptes système et limiter sudo par règles granulaires.
  • Privilégier authentification par clés SSH et désactiver l’accès root direct.
  • Sauvegardes multiniveaux et stratégies de rollback indispensables avant durcissement.
  • Auditer initialement avec outils automatisés (Lynis/OpenVAS) et mesurer progrès via mêmes outils.
  • Contrôler persistances : règles firewall, configurations sysctl et services.
  • Mettre en place monitoring d’intégrité (checksums, auditd) et centralisation des logs.
  • Automatiser uniquement les patchs de sécurité avec tests post-installation.

7. Tableau récapitulatif

Élément Objectif principal Risque si absent Exemples d’application
DAC vs MAC vs Capabilities Défense en profondeur Escalade par contournement d’une couche Combinaison de permissions, SELinux/AppArmor, setcap
Backups multiniveaux Rollback / restauration sélective Perte de disponibilité en cas d’erreur Snapshot LVM / tar configs / image dd
Firewall (deny by default) Réduction surface d’attaque Services exposés non intentionnels Politique INPUT DROP, règles ciblées
PAM renforcé Protection auth et anti-brute force Verrous de comptes manquants, mots faibles Verrouillage après échecs, complexité mots de passe
Monitoring & audits Détection dérives et intrusions Dérive silencieuse des configurations Auditd, checksums, Lynis/OpenVAS scans

8. Vérifications pratiques

  • Comparer score Lynis et nombre de vulnérabilités OpenVAS avant/après durcissement.
  • Vérifier que les paramètres sysctl de sécurité sont actifs (état appliqué).
  • Contrôler journalisation des paquets martiens dans les logs noyau pour détecter usurpations IP.
  • Confirmer verrouillage/déverrouillage de comptes suite à échecs d’authentification (audit pam_tally2).
  • Tester l’authentification SSH par clés (connexion sans mot de passe) et absence d’accès root direct.
  • Valider persistance des règles firewall au redémarrage (restore automatique).
  • Contrôler intégrité des fichiers critiques via checksums et alertes d’auditd.
  • Effectuer scans de vulnérabilité et tests de pénétration basiques (reconnaissance, brute force, web) pour valider résistance aux attaques courantes.
  • Exécuter scripts de validation post-mise à jour pour vérifier disponibilité des services critiques.

9. Flashcards Anki

Quelles sont les trois couches complémentaires de sécurité Linux ? :: DAC, MAC et capabilities Commande exemple pour créer un snapshot LVM mentionnée dans le document :: lvcreate -L1G -s -n backup-root /dev/vg0/root Quel paramètre sysctl active la protection contre les SYN flood ? :: net.ipv4.tcp_syncookies = 1 Quel fichier est recommandé pour stocker les paramètres sysctl de sécurité ? :: /etc/sysctl.d/99-security.conf Options recommandées pour monter /tmp afin d’empêcher exécution et escalation ? :: noexec,nosuid,nodev Module PAM cité pour bloquer un compte après 3 échecs pendant 10 minutes :: pam_tally2.so deny=3 unlock_time=600 Commande indiquée pour sauvegarder les règles iptables dans le document :: iptables-save > /backup/iptables.rules Directive à mettre dans sshd_config pour interdire les connexions root directes :: PermitRootLogin no Outil d’audit Linux utilisé et cité avec score avant/après durcissement :: Lynis Mesure recommandée pour forcer le chiffrement des connexions MySQL :: require_secure_transport = ON