#include <stdlib.h>
#include <unistd.h>
int main()
{
while(1)
fork();
}
Ceci est le code d'une bombe à fourche.
Dans notre université, nous nous connectons via telnet, c'est-à-dire le protocole de service client. Une centaine de systèmes sont connectés au serveur. Soudain, nous avons vu le serveur devenir lent et, après un certain temps, il s'est écrasé. J'ai appris que sombody avait mis en place une bombe à fourche.
Comment détecter sur quel système la bombe à fourche est implémentée? Et comment pouvons-nous l'arrêter?
Une méthode consiste à limiter le nombre maximal de processus qu'un seul utilisateur peut posséder. Existe-t-il une méthode pour l'arrêter et savoir à partir de quel système il a été mis en œuvre?
c
process
operating-systems
telnet
Rajesh M
la source
la source
Réponses:
Une façon consiste à limiter le nombre de processus qu'un utilisateur peut exécuter.
Connectez-vous simplement en tant que root et modifiez ce fichier pour ajouter des utilisateurs et configurer leur limite.
Ajoutez cette ligne au fichier
Désormais, l'utilisateur john ne peut créer que 10 processus.
la source
/etc/security/limits.conf
prennent effet.Pour arrêter une bombe à fourche en cours d'exécution, vous pourriez être en mesure d'utiliser
killall <name>
pour tuer tous les processus de la bombe. Cependant, comme une bombe à fourche entraîne généralement une charge incroyablement élevée sur le système, vous ne pourrez peut-être pas y entrer ou l'exécuter. Un redémarrage peut donc être nécessaire ou au moins beaucoup plus rapide.Si chaque utilisateur a son propre compte sur le système, vous pouvez simplement vérifier le répertoire personnel de chacun et rechercher l'exécutable. Les chances sont bonnes, il a également téléchargé le code source afin de le trouver ne devrait pas être trop difficile. S'il s'agissait d'un compte partagé pour tous les étudiants, vous n'avez pas de chance. Surtout après la fin de la session telnet ou ssh de l'utilisateur, vous n'avez aucune chance de savoir qui l'a démarrée.
Cependant, au lieu de punir l'utilisateur qui a fait exploser cette bombe à fourche, vous devriez plutôt corriger la configuration du système pour désarmer les bombes à fourche. Vous pouvez définir des limites de processus par utilisateur en utilisant
/etc/security/limits.conf
et empêcher ainsi une bombe à fourche de devenir incontrôlable - avec par exemple seulement 50 processus, une bombe à fourche ne fera pas beaucoup de dégâts.la source