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
etsetenforce
pour changer le mode, etsemanage
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, etaa-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
ounftables
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
etsudo
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
oujournald
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
oudnf
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) ouyum-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
ouGnuTLS
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