1. Limitation des processus par utilisateur
Dans /etc/security/limits.conf :
username soft nproc 100
username hard nproc 200
vérifier vos limites
ulimit -a # Affiche toutes les limites
ulimit -u # Limite de processus par utilisateur
Réglage à la volée
ulimit -u 500 # Limite à 500 processus
Exemple en C (à ne PAS exécuter) :
#include <unistd.h>
int main() {
while(1)
fork();
return 0;
}
Version minimale (la plus connue)
:(){ :|:& };:
Version plus lisible avec un nom de fonction explicite
forkbomb() { forkbomb | forkbomb & }; forkbomb
Version avec while
bomb() { while true; do bomb | bomb & done }; bomb
Comment ça marche ?
- Décomposition de :(){ :|:& };:
- Partie Explication
- :() Définit une fonction nommée « : »
- { Début du corps de la fonction
- :|: La fonction s’appelle elle-même (:) ET envoie sa sortie (|) à une autre instance d’elle-même (:)
- & Met le processus en arrière-plan (background)
- } Fin du corps de la fonction
- ; Séparateur de commandes
- : Exécute la fonction (déclenche la bombe)
Comment se protéger avant de tester
1. Limiter les processus utilisateur
# Vérifier la limite actuelle
ulimit -u
# Réduire la limite (ex: 100 processus max)
ulimit -u 100
# Rendre la limite permanente (dans .bashrc)
echo "ulimit -u 100" >> ~/.bashrc
