Fork Bomb limiter les process ulimit

La fork bomb est une forme d’attaque par déni de service contre un système informatique utilisant la fonction fork. Elle est basée sur la supposition que le nombre de programmes et de processus pouvant être exécutés simultanément sur un ordinateur est limité.

Une fork bomb fonctionne en créant un grand nombre de processus très rapidement afin de saturer l’espace disponible dans la liste des processus gardée par le système d’exploitation. Si la table des processus se met à saturer, aucun nouveau programme ne peut démarrer tant qu’aucun autre ne termine. Même si cela arrive, il est peu probable qu’un programme utile démarre étant donné que les instances de la bombe attendent chacune d’occuper cet emplacement libre.

Non seulement les fork bombs utilisent de la place dans la table des processus, mais elles utilisent chacune du temps processeur et de la mémoire. En conséquence, le système et les programmes tournant à ce moment-là ralentissent et deviennent même impossibles à utiliser.

Les fork bomb peuvent être considérées comme un certain type de wabbit (un programme qui s’autoréplique sans utiliser de réseau). (Wikipedia)

Comment se protéger d’une telle attaque sous Linux Unix?

Il faut limiter le nombre de process des utilisateurs. Dans le fichier /etc/security/limits.conf on configure les limitations.
Description du fichier /etc/security/limits.conf

Each line describes a limit for a user in the form:


can be:
an user name
a group name, with @group syntax
the wildcard *, for default entry
the wildcard %, can be also used with %group syntax, for maxlogin limit
can have the two values:
« soft » for enforcing the soft limits
« hard » for enforcing hard limits
can be one of the following:
core – limits the core file size (KB)
can be one of the following:
core – limits the core file size (KB)
data – max data size (KB)
fsize – maximum filesize (KB)
memlock – max locked-in-memory address space (KB)
nofile – max number of open files
rss – max resident set size (KB)
stack – max stack size (KB)
cpu – max CPU time (MIN)
nproc – max number of processes
as – address space limit
maxlogins – max number of logins for this user
maxsyslogins – max number of logins on the system
priority – the priority to run user process with
locks – max number of file locks the user can hold
sigpending – max number of pending signals
msgqueue – max memory used by POSIX message queues (bytes)
nice – max nice priority allowed to raise to
rtprio – max realtime priority
chroot – change root to directory (Debian-specific)

Se connecter en root et éditer le fichier:
# vi /etc/security/limits.conf
Exemple pour éviter un « fork bomb »:

@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 200

Il faut ensuite rebooter le serveur. On peut aussi utiliser ulimit pour la session active.
Cette commande permet de définir différents paramètres (soft : modifiables, et hard : non modifiables) pour la gestion de la mémoire et des processus.

Ainsi, dans notre cas, on utilise ulimit de la façon suivante :
Exemple limiter à 30 process les utilisateurs :
# ulimit -u 30
Pour vérifier et lister les limites prises en compte :
# ulimit -a

max user processes (-u) 30

On peut utiliser ulimit pour d’autres paramètres.
Augmenter la stack size. La valeur à indiquer est en Kb.
Si vous avez des programmes qui déclarent de gros tableaux, vous pouvez changer la valeur de la stack size qui est de 8MB par défaut (vous avez besoin d’être super-user) :
# ulimit -s

# ulimit -s 32768

# ulimit -s

Il est aussi possible de fixer les limites soft et hard de façon manuelle. La limite hard n’étant modifiable qu’une seul fois par session, et limitant aussi la limite soft.

Pour modifier la limite soft :
ulimit -S -m 800000

Pour la limite hard :
ulimit -H -m 800000

Sachez toutefois que ces limites ne sont fixés que pour la session courante, il faut donc modifier votre fichier /etc/security/limits.conf

  1. bape

    I simply wanted to thank you so much again. I am not sure the things I could possibly have implemented in the absence of the entire techniques shown by you over this subject matter. It has been a real distressing situation in my view, however , finding out this professional fashion you processed that forced me to jump for joy. Extremely happier for your help and thus expect you are aware of a powerful job you are accomplishing instructing the mediocre ones using your websites. I’m certain you’ve never met any of us.

  2. paul george shoes

    I have to get across my appreciation for your kindness for men and women that should have guidance on your situation. Your special dedication to getting the solution all over appears to be exceedingly useful and has usually encouraged guys just like me to realize their ambitions. Your personal useful guideline signifies a lot a person like me and especially to my fellow workers. With thanks; from each one of us.

  3. kyrie 4

    I needed to put you this very little observation in order to thank you yet again for those splendid tricks you have featured above. It’s simply shockingly generous with you to make openly what many of us could have supplied as an electronic book to generate some money for themselves, certainly since you could possibly have tried it in case you considered necessary. These guidelines likewise acted to be the fantastic way to recognize that some people have the same dream the same as my very own to grasp a little more around this problem. I know there are a lot more fun times up front for people who looked over your site.

  4. golden goose

    I have to show my appreciation to you for bailing me out of such a scenario. Just after surfing throughout the online world and finding suggestions that were not pleasant, I figured my life was over. Living devoid of the approaches to the issues you have solved as a result of your main website is a serious case, as well as ones which could have adversely affected my career if I had not noticed your website. Your primary know-how and kindness in dealing with every aspect was vital. I’m not sure what I would have done if I had not come upon such a point like this. It’s possible to at this point look forward to my future. Thanks very much for the reliable and sensible guide. I won’t hesitate to propose the blog to anyone who should get care about this area.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *