Accéder au contenu principal

Fork bombe en bash : Comprendre et s’en protéger

Fork bombe en bash : Comprendre et s’en protéger

AVERTISSEMENT : Les “fork bomb” n’ont rien de nouveau mais mènent encore à un déni de service sur des systèmes mal ou non protégés. Ne prenez pas le risque de tester ce genre de “jouets” sur un serveur en production.


Le principe d’une “fork bombe” (ou “fork bomb”) consiste à multiplier un processus jusqu’à atteindre les limites du système.
La multiplication des processus sature le système et consomme rapidement toutes les ressources disponibles.
Les processus en cours ne disposent alors plus de ressources suffisantes pour fonctionner correctement et les nouveaux processus doivent attendre que des ressources se libèrent pour démarrer.
L’ensemble mène à un gel du système ou/et à un déni de service (DoS).
La forme la plus courante de la fork bombe bash est la suivante :
:(){ :|:& };:
Cette forme, cryptique, est plus ou moins destinée à masquer les effets de cette ridicule fonction récursive.
Sous une forme plus explicite, nous pourrions écrire :
1
2
3
4
:() {
    :|:&
};
:
  • ligne 1 : création d’une fonction nommée “:” ne prenant aucun argument (“()”) ;
  • ligne 2 : corps de la fonction. Elle s’appelle (premier “:”) est son retour est envoyé (le pipe “|”) à une autre occurrence d’elle même (deuxième “:”) en arrière plan (le fork est là … “&” ) ;
  • ligne 3 : fin de la fonction “};” ;
  • ligne 4 : lancement de la bombe (appel de la fonction “:”).
Comme vous pouvez le constater, cette fonction ne fait en réalité pas grand chose mais est d’une efficacité étonnante.
L’ensemble s’éclaircit dès qu’un nom explicite est donné à la fonction :
1
2
3
4
ForkBomb () {
    ForkBomb | ForkBomb &
}
ForkBomb
La fonction originale peut-être retrouvée sous différents aspects tel que sa forme octale, hexadécimale, etc.

Comment protéger son système ?

Un moyen simple de protéger son système consiste à fixer des limites au nombre de processus pouvant être instanciés par les utilisateurs, “max user processes”, via la fonction “ulimit“. Le nombre maximum de processus d’un utilisateur peut être interrogé directement via l’option “-u” “d’ulimit”:
$ ulimit -u
16071
Cette valeur peut-être fortement réduite afin de protéger le système :
$ ulimit -u 100
$ ulimit -u
100
L’attaque se trouve alors rapidement bloquée (pas plus de 100 processus instanciés par l’utilisateur) et le système conserve suffisamment de ressources pour assurer les services qu’il héberge.
Voir Contrôle des ressources systèmes (ulimit) pour plus d’informations sur l’outil.

Appliquer la limite à tous les utilisateurs

La restriction du nombre de processus maximum instancié par les utilisateurs peut être mise en place, via le fichier “/etc/security/limits.conf” :
$ cat /etc/security/limits.conf
...
@users      soft      nproc      100
@users      hard      nproc      200
fhh         hard      nproc      300
Voir Contrôle des ressources systèmes (ulimit) pour plus d’informations sur le fichier “/etc/security/limits.conf”.
Une autre solution permettant de protéger le système consiste à utiliser les cgroups (disponible sur les noyaux supérieurs ou égale au 2.6.24).

Références

Contrôle des ressources systèmes (ulimit) : http://www.admin-linux.fr/?p=7608
  • A quoi ça sert au fait ?
  • A tester la réaction de votre système face à un “vrai” problème, à tester votre watchdog en situation réelle, à tester la mise en place de limites, etc.

    Commentaires

    Posts les plus consultés de ce blog

    Dossier de base sur un serveur Windows

    Dossier de base Pour les utilisateurs de domaine Windows AD, il est possible de créer un dossier de base via l’activation du service dossier utilisateur. Ainsi, chaque utilisateur du domaine disposera d’un dossier personnel pour le stockage et la sauvegarde de ses fichiers sur le serveur de partage. Le dossier utilisateur permet de plus aux administrateurs de sauvegarder les fichiers de chacun des utilisateurs.

    Le protocole ICMP | Echo Echo Response : Le ping | Le TTL

    Le protocole ICMP Introduction Nous avons pu remarquer dans les chapitres précédents qu'IP était essentiellement accès sur les fonctions d'adressage et de routage. Il est configuré pour fonctionner comme si aucun problème ne pouvait survenir sur le réseau ( perte de datagrammes, congestion, problème de routage, etc .). Si un problème survient, sa solution est expéditive :  il ne route pas  ! Il a tout juste accepté de prendre en charge les problèmes de fragmentation ! Ce mode de fonctionnement n'est pas un problème en soi ( il suffit de regarder la notoriété et l'implantation d'IP ! ). Mais il est nécessaire de pouvoir dans certains cas informer les émetteurs du devenir de leurs datagrammes. C'est le rôle d' ICMP  ( I nternet  C ontrol  M essage  P rotocol) qui, comme son nom l'indique, est un  protocole d'information du contrôle de réseau . ICMP ne résoud rien, ou du moins pas grand chose, il informe ! Lorsque certains problèmes de...

    أينديسبوتاد بويكا 2017 BOYKA UNDISPUTED

    ت أينديسبوتاد بويكا 2017  : .. كـامل مترجـم وبجـودة عالية   🇺🇸  .. شاركوا الفيلم على أوسع نطاق أصدقائي ليستفيد الجميع من المشاهدة .. BOYKA: UNDISPUTED IV 2017  مراجعة فيلم UNDISPUTED 4 قصة الفيلم حول الملاكم بويكا الذي يخوض نزال و يكون سبب في وفاة منافسه .. ليعلم بعذ ذلك معاناة زوجته (المنافس الذي توفي) مع شخص لسبب غير محروق بالترايلر..لتنطلق الأحداث في جو من الأكشن لنعرف هل سيصل لزوجة المقاتل لمساعدتها .. و هل سيواصل القتال بعد تسببه في مقتل شخص فوق الحلبة .. و كيف سيتعامل مع ظروف البلد خصوصا أنه من قائمة المبحوث عنهم .. بالنسبة لي الفيلم يختلف بشكل كب ير عن الأجزاء السابقة .. و للمرة الأولى سنعيش أحداث الفيلم بنسبة كبيرة خارج السجن .. و هذا خدم مصلحة الفيلم في التعرف على الوجه الآخر لشخصية بويكا.. و خصوصا طريقة تعامله مع المحيطين به خارج السجن ..+ هذا الجزء ابتعد تماما عن الرسائل التي كان يريد توصيلها للمشاهد خلال الأجزاء السابقة و هذه المرة اعتمد على تمرير رسائل غير مباشرة و مختلفة تماما + الجديد في الفيلم هو أنه سنتعرف على بويكا الإنس...