Table des matières

, ,

Comment se protéger des Fork Bomb ?

Introduction

Qu'est-ce qu'une fork bomb ?

Une fork bomb (parfois appelée logic bombe, bombe logique), est une attaque par déni de service qui peut aller jusqu'à rendre votre ordinateur complètement inutilisable. Elle agit en se dupliquant infiniment jusqu'à saturer la table des processus.

Elle peut autant être le fruit d'une attaque (sur un serveur par exemple), que celui d'une erreur de programmation. Heureusement, il existe des moyens de se protéger des fork bomb.

A titre d'exemple (et donc à ne pas tester ;-)), une fork bomb pour le shell Bash :

:(){ :|:& };:
Comme expliqué précédemment, la commande ci-dessus va rapidement faire planter votre système : son utilisation est donc à proscrire…

Comment s'en protéger ?

Vu qu'une fork bomb a pour but de saturer la table des processus, un moyen simple et efficace de s'en prémunir consiste à limiter le nombre de processus que peut exécuter un utilisateur (sachant que par défaut il n'y a pas de limite). Pour cela, il suffit de modifier le fichier /etc/security/limits.conf comme je vous propose de le faire ci-dessous.

Limiter le nombre de processus

Il va falloir éditer le fichier /etc/security/limits.conf en super utilisateur, avec par exemple :

gksudo gedit /etc/security/limits.conf

Le fichier qui s'ouvre est entièrement commenté. Afin de limiter le nombre de processus que peuvent exécuter les utilisateurs, il va falloir rajouter la ligne suivante :

*              hard    nproc           500

Juste avant :

# End of file 
Cette ligne limite à 500 le nombre de processus, vous pouvez modifier ce chiffre à votre convenance.

Attention toutefois d'utiliser cette commande avec parcimonie, celle-ci peut bloquer votre ordinateur si vous mettez une valeur trop basse, voir ici : https://forum.ubuntu-fr.org/viewtopic.php?id=399827

Redémarrez ensuite votre ordinateur pour que les nouveaux paramètres soient pris en compte. Pour le vérifier (non, n'allez pas tester la fork bomb :-P), utilisez la commande :

ulimit -u

Qui doit renvoyer : 500.

Si c'est le cas, les fork bomb ne sont plus qu'un mauvais souvenir !

Si cela ne fonctionne toujours pas, vérifiez que vous avez bien la ligne
session required /lib/security/pam_limits.so

dans

  • /etc/pam.d/common-session
  • /etc/pam.d/login
  • /etc/pam.d/su
  • /etc/pam.d/xdm
  • /etc/pam.d/gdm
  • /etc/pam.d/kde (Pour Kubuntu)
  • /etc/pam.d/sshd

Pour ssh, pensez à mettre l'option

UsePAM yes

dans /etc/ssh/sshd_config ;-) (Sous la verison 8.04 Server, je ne les avais pas.)

Quelques liens


Contributeurs : Nicoz