Linux - principes de base

Principes de Base

Principe du Moindre Privilège :

  • Limiter les privilèges des utilisateurs et des processus aux droits strictement nécessaires.

  • Utiliser des outils comme sudo, les permissions utilisateurs et groupes, et le Contrôle d'accès discrétionnaire (DAC).


Contrôle d'Accès Obligatoire (MAC) : SELinux et AppArmor

Les systèmes Linux utilisent des frameworks de Contrôle d'Accès Obligatoire (Mandatory Access Control ou MAC) pour imposer des restrictions de sécurité supplémentaires. Deux des plus populaires sont SELinux et AppArmor.

SELinux (Security-Enhanced Linux)

SELinux est un module de sécurité intégré principalement dans les distributions basées sur Red Hat (comme RHEL, CentOS et Fedora). Il fournit une couche de sécurité avancée en utilisant une politique de sécurité de type MAC. Voici les éléments clés de SELinux :

  • Fonctionnement : SELinux applique des politiques de sécurité définies qui contrôlent strictement les accès des utilisateurs et des processus aux ressources système. Les actions sont autorisées ou refusées en fonction de politiques prédéfinies.

  • Politiques et Contextes :

    • Politiques de sécurité : SELinux utilise un ensemble de politiques qui spécifient quels objets (fichiers, processus, ports) peuvent être accédés par quel sujet (utilisateur, processus).

    • Contextes de sécurité : Chaque objet (fichier, dossier, processus) dans le système est étiqueté avec un contexte de sécurité, par exemple user_u:object_r:httpd_sys_content_t pour des fichiers de contenu d’un serveur Web. Les processus et utilisateurs ne peuvent accéder qu’aux objets pour lesquels ils ont des permissions.

  • Modes de Fonctionnement :

    • Enforcing : SELinux applique strictement les politiques de sécurité et bloque les actions interdites.

    • Permissive : SELinux enregistre les actions interdites mais ne les bloque pas, utile pour le débogage.

    • Disabled : SELinux est désactivé.

  • Avantages :

    • Réduit le risque de compromission, même en cas de vulnérabilité dans une application.

    • Utile pour les environnements où la sécurité des données et l’isolation des processus sont cruciaux.

  • Utilisation et Configuration :

    • Commandes principales : sestatus pour vérifier l’état de SELinux, getenforce et setenforce pour changer le mode, et semanage pour gérer les politiques.

    • Politique ciblée (targeted policy) : Mode de base, restreint l'accès de certains services critiques.

    • Politique stricte (strict policy) : Applique des restrictions pour tous les processus ; plus difficile à configurer mais offre une sécurité renforcée.

AppArmor

AppArmor est un autre framework de MAC qui se concentre sur la sécurité des applications et est fréquemment utilisé dans les distributions comme Ubuntu et SUSE. AppArmor est différent de SELinux car il se base sur des profils pour contrôler les actions des applications.

  • Fonctionnement :

    • AppArmor limite les actions des applications à ce qui est spécifié dans leurs profils. Cela signifie qu’une application ne peut accéder qu’à certaines ressources (fichiers, réseaux) prédéfinies, et aucune autre.

  • Profils d’application :

    • Profils stricts : Restreignent toutes les actions non spécifiées, limitant les applications aux permissions strictement nécessaires.

    • Profils d’apprentissage : AppArmor enregistre les actions effectuées par les applications, permettant de créer des profils adaptés aux besoins réels de chaque application.

  • Avantages :

    • Plus facile à configurer et à utiliser que SELinux.

    • Idéal pour des applications spécifiques (comme des navigateurs web ou des services critiques), car il permet de confiner une application sans impacts sur d’autres parties du système.

  • Utilisation et Configuration :

    • Commandes principales : aa-status pour vérifier l’état d’AppArmor, aa-enforce pour activer un profil, aa-complain pour mettre un profil en mode permissif, et aa-genprof pour créer des profils.

    • Chaque application protégée par AppArmor a un profil distinct qui décrit quelles ressources elle peut utiliser. Par exemple, un profil pour le navigateur web empêchera tout accès aux répertoires système ou aux fichiers sensibles.


Gestion des Utilisateurs et des Accès

  • Contrôle d'Accès Basé sur les Rôles (RBAC) : Implémentation via les groupes d'utilisateurs et les politiques sudo.

  • Namespace et Cgroups : Isolation des processus avec LXC et Docker pour limiter l'accès aux ressources système.


Configuration Réseau et Pare-feu

  • Segmentation Réseau et Filtrage : Utiliser ufw, iptables ou nftables pour segmenter le réseau.

  • Bonnes Pratiques : Fermer tous les ports par défaut (DENY ALL) et n'ouvrir que ceux nécessaires (whitelisting).


Contrôle d'Accès Discrétionnaire (DAC)

  • Gestion des Utilisateurs et Groupes : Commandes id, chown, groups pour l'attribution de permissions.

  • Permissions & Droits : Utiliser chmod et sudo pour limiter l'accès root aux tâches administratives.


Pratiques de Sécurité pour les Environnements de Bureau

  • Profils AppArmor : Confiner les applications comme les navigateurs pour restreindre leur accès aux ressources.

  • Désactivation des Services Non-Nécessaires : Réduire la surface d'attaque en activant seulement les services essentiels.


Journalisation et Surveillance Centralisées

  • Utiliser syslog ou journald pour la journalisation ; outils comme Auditd et OSSEC pour la surveillance des activités.


Installation de Logiciels depuis des Sources Fiables

  • Utiliser les dépôts de sécurité officiels : Debian Security, RHEL Repo, etc.

  • Bonnes Pratiques :

    • Sur Debian/Ubuntu, utiliser apt pour garantir la vérification des paquets.

    • Sur RHEL/CentOS, utiliser yum ou dnf pour gérer les paquets.


Mises à Jour Systématiques

  • Appliquer régulièrement les mises à jour pour corriger les vulnérabilités.

  • Mises à jour automatiques : Configurer unattended-upgrades (Debian) ou yum-cron (RHEL) pour les patchs de sécurité.


Réduction des Programmes Installés et Exécutés

  • Principe de Minimalisme : Installer et exécuter uniquement les programmes essentiels pour minimiser la surface d’attaque.

  • Audit régulier des services actifs et désinstallation des applications inutiles.


Sécurisation des Connexions et Authentification

  • Modules PAM : Configurer PAM pour des politiques de mots de passe renforcées (complexité, expiration).

  • Authentification à deux facteurs (2FA) : Activer lorsque possible.


Chiffrement des Communications et Données

  • Chiffrement des Communications : Utiliser OpenSSL ou GnuTLS pour SSH, HTTPS, VPNs avec des algorithmes robustes.

  • Chiffrement des Données : Utiliser LUKS pour le chiffrement de disque complet et gpg pour les fichiers sensibles.

  • Intégrité des Données : Utiliser des algorithmes de hachage pour vérifier l'intégrité des fichiers critiques.


Sauvegarde et Disponibilité des Données

  • Sauvegardes régulières pour éviter les pertes de données et garantir leur disponibilité en cas d'incident.


Référentiels et Guides de Sécurité

  • CIS Benchmarks et STIG pour les meilleures pratiques de sécurisation.

  • Normes NIST et PCI-DSS pour la conformité en cybersécurité et protection des données sensibles.


Q&A - Hardening Linux

Question 1 :

Quel est le but principal de l’utilisation des contrôles d’accès obligatoires (MAC) comme SELinux ou AppArmor dans un environnement Linux ? Réponse : Pour ajouter une couche de sécurité qui impose des politiques de contrôle d'accès basées sur des règles de sécurité strictes, réduisant la probabilité qu'un processus compromis puisse accéder à des ressources critiques du système en contournant les permissions utilisateur classiques.


Question 2 :

Quelle stratégie de gestion des journaux est la plus appropriée pour garantir l'intégrité des logs dans un environnement critique ? Réponse : Mettre en place un système de journalisation centralisé où les logs sont transférés de manière sécurisée en utilisant des tunnels chiffrés, tout en appliquant des signatures numériques pour garantir que les logs n'ont pas été altérés lors de leur transit.


Question 3 :

Quel est l'impact de l'activation du mode audit d'enforcement (audit=1) dans le noyau Linux lors de l'utilisation de auditd ? Réponse : Il impose au noyau de journaliser toutes les tentatives d'accès et les modifications effectuées sur les fichiers critiques du système, tout en déclenchant des alertes pour les événements qui violent les politiques de sécurité prédéfinies, ce qui peut entraîner une augmentation significative de la charge CPU et de l'utilisation de l'espace disque.


Question 4 :

Pourquoi la configuration de points de montage avec l'option noexec est-elle recommandée pour certaines partitions (par exemple /tmp) ? Réponse : Pour empêcher l'exécution de binaires et de scripts non autorisés sur des partitions temporaires, réduisant ainsi la surface d'attaque en limitant la capacité d'un utilisateur malveillant ou d'un malware à exploiter des vulnérabilités via des fichiers temporaires ou des scripts téléversés.


Question 5 :

Quelle méthode est la plus efficace pour détecter les changements non autorisés dans les fichiers systèmes critiques sur un serveur Linux ? Réponse : Déployer un système de détection d'intrusion basé sur l'hôte (HIDS) qui surveille en temps réel les modifications des fichiers systèmes critiques, en utilisant des algorithmes de hachage sécurisés pour comparer les sommes de contrôle des fichiers avec des bases de données de références intègres, tout en générant des alertes instantanées en cas de détection de divergence.


Question 6 :

Comment renforcer la sécurité de l'authentification SSH sur un serveur Linux utilisé pour l'administration critique ? Réponse : Implémenter une authentification multi-facteurs (MFA) combinant une clé publique protégée par une phrase de passe complexe avec un jeton matériel ou une application mobile pour renforcer la vérification de l'identité de l'utilisateur avant l'établissement de la connexion SSH.


Question 7 :

Quelle stratégie peut être mise en place pour éviter la persistance de malware après un redémarrage du système ? Réponse : Mettre en œuvre un schéma de partitions multiples avec des points de montage en lecture seule pour les répertoires critiques (comme /boot et /usr), combiné à un mécanisme de détection précoce des anomalies pendant le processus de démarrage, empêchant ainsi tout code malveillant de s'exécuter ou de s'injecter dans les services essentiels du système.


Question 8 :

Pourquoi est-il essentiel de désactiver les services non utilisés dans un système Linux durci ? Réponse : Pour réduire la surface d'attaque en minimisant les processus en écoute sur les ports réseau, limitant ainsi les vecteurs d'accès exploitables par des attaquants externes ou internes, et pour éliminer les risques de vulnérabilités associées à des services obsolètes ou non maintenus.


Question 9 :

Pourquoi est-il important de sécuriser le chargeur de démarrage GRUB sur un système Linux ? Réponse : Pour empêcher les utilisateurs non autorisés de modifier les options de démarrage ou d'accéder à un shell root sans authentification.


Question 10 :

Quel est l'avantage principal de l'utilisation de LUKS (Linux Unified Key Setup) pour le chiffrement des disques sous Linux ? Réponse : Il fournit un mécanisme standard pour le chiffrement complet des disques, garantissant la confidentialité des données même en cas de vol physique du disque.

Last updated