🎯 Objectif de la semaine
Maîtriser les mécanismes de permissions Linux pour comprendre comment une simple mauvaise configuration peut devenir une porte d'entrée majeure pour un attaquant – et apprendre à la verrouiller.
Pourquoi c'est fondamental : 40% des intrusions commencent par une faille de permission. Savoir lire et configurer les droits d'accès, c'est savoir où sont les portes de la cité numérique.
Propriétaire] B --> D[👥 Group
Groupe assigné] B --> E[🌍 Others
Tous les autres] C --> F[RWX
Lecture/Écriture/Exécution] D --> G[RWX] E --> H[RWX] F --> I{Notation} G --> I H --> I I --> J[🔢 Octale
ex: 755] I --> K[🔣 Symbolique
ex: u+rwx] J --> L[⚡ chmod 755] K --> M[⚡ chmod u+rwx,go+rx] style A fill:#0a0e17,stroke:#00d4ff,stroke-width:2px style B fill:#11151f,stroke:#9d4edd,stroke-width:2px style L fill:#00f5a0,stroke:#000,stroke-width:2px style M fill:#00f5a0,stroke:#000,stroke-width:2px
📚 Sujet – Théorie (1 heure)
Le modèle de sécurité Linux : une cité fortifiée
Imaginez une cité médiévale avec trois niveaux d'accès :
🏰 Les trois portes d'accès :
- Porte du Seigneur (User) : Vous, propriétaire du fichier. Accès complet.
- Porte des Gardes (Group) : Votre équipe. Accès contrôlé.
- Porte du Peuple (Others) : Tout le monde. Accès minimal ou nul.
Déchiffrer la sortie de ls -l : La cryptographie des permissions
-rwxr-xr-- 1 kali kali 4096 Dec 10 14:30 script.sh ↑↑↑↑↑↑↑↑↑ ||||||||| ||||||||└─ Others : r-- (lecture seule) |||||||└── Group : r-x (lecture + exécution) ||||||└─── User : rwx (tout) |||||└──── Type : - = fichier, d = dossier, l = lien
Chaque caractère est une information de sécurité. Apprenez à lire cette ligne comme un analyste lit un log.
La notation octale : le langage mathématique des permissions
r--] --> D[7 : rwx] B[2 : Écriture
-w-] --> D C[1 : Exécution
--x] --> D E[User: 7] --> F[755] G[Group: 5] --> F H[Others: 5] --> F style D fill:#11151f,stroke:#00d4ff,stroke-width:2px style F fill:#00f5a0,stroke:#000,stroke-width:2px
| Valeur | Droits | Notation symbolique | Cas d'usage | Danger potentiel |
|---|---|---|---|---|
777 |
rwxrwxrwx | Tout pour tous | Partage temporaire en réseau interne | 🔴 Élevé - Porte grande ouverte |
755 |
rwxr-xr-x | Propriétaire : tout, autres : lecture+exécution | Scripts exécutables, programmes | 🟡 Moyen - Vérifier le contenu |
644 |
rw-r--r-- | Propriétaire : rw, autres : lecture | Fichiers de configuration, documents | 🟢 Faible - Standard sécurisé |
600 |
rw------- | Propriétaire uniquement | Fichiers sensibles (mots de passe, clés) | 🟢 Très sécurisé |
sudo : l'épée à double tranchant
⚠️ sudo ≠ root
sudo est une délégation temporaire de privilèges. root est l'utilisateur tout-puissant.
Une mauvaise configuration de /etc/sudoers peut permettre à un attaquant de devenir root.
Exemple dangereux : apprenti ALL=(ALL) NOPASSWD: ALL → L'utilisateur "apprenti" peut faire TOUT sans mot de passe.
Le principe du moindre privilège (Least Privilege)
Donner exactement les permissions nécessaires, uniquement à ceux qui en ont besoin, seulement pour la durée nécessaire.
💡 Philosophie du Gardien :
"Si tu ne sais pas pourquoi quelqu'un a un accès, il ne devrait pas l'avoir."
En cybersécurité, chaque permission est une responsabilité. Chaque droit accordé est une porte qu'il faudra surveiller.
🔬 Mission pratique – Laboratoire (2 heures)
Scénario : Audit de sécurité d'un serveur compromis
Imaginez que vous êtes appelé pour analyser un serveur potentiellement compromis. Votre mission : identifier les mauvaises configurations de permissions.
📝 Avant de commencer : Créez un fichier audit_s02.txt pour noter vos observations. Un bon pentester documente tout.
Étapes détaillées avec analyse de sécurité
-
Analyse de l'environnement actuel
Commençons par comprendre notre point de départ :# Vérification de l'utilisateur actuel et de ses groupes whoami # Qui suis-je ? id # Identifiant et groupes groups # Groupes de l'utilisateur # Analyse des permissions du dossier home ls -la ~/ # Fichiers cachés inclus stat ~/.bashrc # Informations détaillées sur un fichier getfacl ~/ # ACLs (Access Control Lists) avancées -
Création d'un environnement de test compromis (simulé)
Nous allons créer des scénarios de mauvaise configuration courants :cd ~/mon_lab mkdir -p serveur_compromis/{config,logs,scripts,backups} # Scénario 1 : Fichier de configuration world-writable echo "DB_PASSWORD=SuperSecret123" > serveur_compromis/config/database.conf chmod 666 serveur_compromis/config/database.conf # Très dangereux ! # Scénario 2 : Script avec SUID mal configuré (simulé) echo '#!/bin/bash echo "Script sensible"' > serveur_compromis/scripts/backup.sh chmod 4755 serveur_compromis/scripts/backup.sh # SUID activé # Scénario 3 : Dossier de logs accessible à tous chmod 777 serveur_compromis/logs/ -
Audit manuel des vulnérabilités
Utilisez ces commandes pour identifier les problèmes :# Trouver tous les fichiers world-writable find serveur_compromis -perm -o=w -type f # Trouver tous les fichiers avec SUID/SGID find serveur_compromis -type f \( -perm -4000 -o -perm -2000 \) # Vérifier les dossiers avec permissions trop ouvertes find serveur_compromis -type d -perm 777 # Analyser la sortie avec plus de détails ls -la serveur_compromis/config/database.conf | awk '{print $1, $9}' -
Création et test d'un utilisateur attaquant (simulation)
Créons un utilisateur pour simuler un attaquant interne :# Création de l'utilisateur 'shadow' (simulation d'attaquant) sudo adduser --disabled-password --gecos "" shadow echo "shadow:shadow123" | sudo chpasswd # Test d'accès avec l'utilisateur shadow sudo -u shadow bash -c " echo '=== Test d accès utilisateur shadow ===' whoami cd /home/kali/mon_lab/serveur_compromis echo 'Tentative de lecture database.conf:' cat config/database.conf 2>&1 || echo 'Échec - bon!' echo 'Tentative d écriture database.conf:' echo 'INJECTION' >> config/database.conf 2>&1 && echo 'Réussite - DANGER!' || echo 'Échec - bon!' echo '=== Fin test ===' " # Nettoyage immédiat sudo deluser --remove-home shadow -
Analyse de /etc/sudoers et des privilèges
Comprendre la configuration des privilèges :# Lecture sécurisée du fichier sudoers sudo visudo -c # Vérification de la syntaxe sudo cat /etc/sudoers | grep -v '^#' | grep -v '^$' # Vérification des membres du groupe sudo getent group sudo # Test des privilèges de l'utilisateur courant sudo -l # Quelles commandes puis-je exécuter avec sudo ? -
Correction sécurisée des vulnérabilités
Appliquez les corrections de sécurité :# Correction 1 : Fichier de configuration sensible chmod 600 serveur_compromis/config/database.conf chown kali:kali serveur_compromis/config/database.conf # Correction 2 : Retirer SUID inutile chmod 755 serveur_compromis/scripts/backup.sh # Correction 3 : Permissions de dossier restrictives chmod 750 serveur_compromis/logs/ chmod 750 serveur_compromis/ # Vérification des corrections find serveur_compromis -type f -perm /o=w find serveur_compromis -type d -perm /o=w -
Utilisation de chmod en notation symbolique
Maîtrisez les deux notations :# Notation symbolique (plus lisible pour des ajustements) chmod u+rwx,g+rx,o-rwx serveur_compromis/scripts/ # Équivalent à 750 chmod o-r serveur_compromis/config/database.conf # Retirer lecture aux autres chmod a+x serveur_compromis/scripts/backup.sh # Ajouter exécution à tous (a = all) # Comparaison avec notation octale chmod 755 serveur_compromis/scripts/backup.sh stat -c %A serveur_compromis/scripts/backup.sh # Affiche en notation symbolique
🎯 Défi d'audit avancé (optionnel)
Créez un script d'audit automatique qui :
#!/bin/bash echo "=== AUDIT DE SÉCURITÉ PERMISSIONS ===" echo "1. Fichiers world-writable:" find /home/kali/mon_lab -perm -o=w -type f 2>/dev/null echo "" echo "2. Fichiers avec SUID/SGID:" find /home/kali/mon_lab -type f \( -perm -4000 -o -perm -2000 \) 2>/dev/null echo "" echo "3. Dossiers avec permissions 777:" find /home/kali/mon_lab -type d -perm 777 2>/dev/null
Pour exécuter : chmod +x audit.sh && ./audit.sh > rapport_audit.txt
📋 Objectif de la semaine – Checklist de validation
✅ Compétences techniques acquises
- Lire et interpréter
ls -lsans hésitation - Utiliser
chmoden notation octale ET symbolique - Créer/supprimer des utilisateurs avec
adduser/deluser - Comprendre la différence entre
sudoetsu - Identifier les permissions dangereuses (777, SUID inutile)
- Utiliser
findpour rechercher des permissions vulnérables
🧠 Changement mental accompli
- Voir les permissions comme des portes d'accès, pas comme des nombres abstraits
- Comprendre que "world-writable" = "porte grande ouverte aux attaquants"
- Appliquer systématiquement le principe du moindre privilège
- Penser comme un attaquant : "Où sont les permissions trop ouvertes ?"
🔐 Bonne pratique à adopter dès maintenant :
Avant d'exécuter chmod, demandez-vous : "Qui a vraiment besoin de ce fichier ? Quel est le minimum de droits nécessaire ?"
📚 Ressources gratuites recommandées
Pour approfondir :
- Linux Permissions Calculator : https://chmod-calculator.com – Outil interactif
- sudoers Manual :
man sudoerssur votre terminal - OWASP Permission Guide : OWASP File Upload Cheat Sheet
⚠️ Pièges courants à éviter
chmod -R 777 /→ Détruit la sécurité de tout le système (NE JAMAIS FAIRE)- SUID sur des scripts bash → Faille de sécurité majeure
- sudo NOPASSWD sans nécessité absolue → Escalade de privilèges facilitée
- Oublier que les permissions s'héritent (umask)
🔮 Frère d'armes,
Tu viens d'acquérir la deuxième clé de la cité numérique.
Les permissions Linux ne sont pas des nombres abstraits. Ce sont les serrures des portes, les clés des coffres, les gardes des remparts.
Cette semaine, tu as appris à voir ce que la plupart ne voient pas :
- Un
777n'est pas un simple paramètre, c'est une porte grande ouverte - Un
sudomal configuré n'est pas une commodité, c'est une épée laissée à l'entrée - Un fichier world-readable contenant un mot de passe n'est pas une erreur, c'est une invitation
Tu commences maintenant à penser en deux dimensions :
Dimension 1 : "Comment configurer correctement ?"
Dimension 2 : "Comment un attaquant exploiterait-il une mauvaise configuration ?"
Cette double perspective est l'essence même du Gardien numérique.
Dans la semaine 3, nous quitterons la surface pour explorer les souterrains du système. Nous apprendrons à voir ce qui se passe en dessous, à suivre les processus comme un chasseur suit des traces.
Prends le temps de pratiquer. Crée des scénarios, trouve les vulnérabilités, corrige-les. Chaque permission que tu comprends est une porte que tu sauras verrouiller.
La cité se fortifie, clé après clé.
— Platon-Y