Aller au contenu

Sujets conseillés

Posté (modifié)

En pensant sécurité, je me suis toujours demandé quel était la meilleure solution de se proteger d'un Forkbomb?

Pour celui qui ne saurait pas de quoi il s'agit, c'est en fait un principe très simple qui consiste a creer sur un serveur un processus parent qui en creer d'autre fils qui ces fils la en creent encore d'autres et ainsi de suite mais avec la grande particularité, c'est que les fils renient leur famille ^^

Vous tuez le parent, les fils restent en vie ;) (tres embêtant...)

Alors inutile de vous imaginer ce genre de réaction en chaine se lancer sur un CPU hyper rapide...

En resumé, ca donne la mémoire vive saturée, la swap avec et au final un beau plantage du serveur...

Alors j'avais vu qu'on pouvait par utilisateur diminuer le nombre de process qu'un user pouvait lancer mais je me demandais si, il n'existerait pas une solution plus propre?

Celui qui a un PC test Linux et qui voudrait déclencher ceci pour voir, tapez cette chaine ci en console sans les doubles quotes ":(){ :|:& };:"

Mettez un top -u "user qui lance le fork" -d 1 en parallèle, vous allez rire ^^

Merci d'avance :)

Modifié par Gecko64
Posté

La seule manière de limiter cela est en limitant les processes utilisateur avec l'appel à ulimit.

Par défaut, le nombre de processes est illimité sur la plupart des releases.

Il suffit donc, par exemple pour Debian, d'ajouter des limites au début du fichier /etc/bash.bashrc (ou du fichier /etc/profile) :

ulimit -u 512 ---> limitera le nombre de processes à 512 par utilisateur.

On peut y mettre une valeurs plus faible, bien évidemment. Par exemple "ulimit -u 20"

Je ne vois pas ce que tu considèrerais comme "plus propre" ?

Posté

Bha comme plus propre, un systeme qui les détectent et qui les coupent tout seul mais je crois que pour ca, je peux toujours rever ^^

Peut en créant un alias sur la commande en shell?

Genre le gars fait cette commande et ca lui renvoie un joli echo "Pas bieeeeeennn !!!"

Sinon moi je connaissais aussi sous Debian le /etc/security/limits.conf

Enfin, je note aussi ta solution Dan :P

Merci ! :blush:

Posté

/etc/security/limits.conf est une autre manière de régler les limites sur un serveur.

Il joue sur les sessions PAM, dans la mesure où la ligne "session required pam_limits.so" existe bien dans le fichier "/etc/pam.d/ssh"

Une ligne telle que:

@users		hard	nproc		   64

mettra une limite HARD au nombre de processes (64) qui peuvent être lancés par un membre du groupe users

Comme quoi "tous les chemins mènent à Rome" ... :)

Attention toutefois à ne pas mettre une limite trop basse !!!

Posté

Oui c'est sur !

En tout cas encore merci pour ta solution Dan qui me semble moins complexe à mettre en place et que je ne connaissais pas :P

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...