Question Comment protéger Ubuntu de la bombe à fourche


J'ai entendu quelqu'un parler d'une bombe à fourche, j'ai fait des recherches et trouvé des informations terribles sur des personnages étranges que les gens peuvent vous faire taper sur la ligne de commande et qui font de mauvaises choses sur l'ordinateur. Je ne ferais certainement pas de commandes que je ne comprends pas mais on ne sait jamais ce qui peut arriver.

J'ai entendu dire que certains systèmes d'exploitation permettent à l'administrateur de limiter les processus utilisateur pour atténuer les effets des bombes à la fourche. Cette protection est-elle par défaut dans Ubuntu ou une personne disposant de privilèges sudo doit-elle la définir? Si c'est le cas, comment?


71
2018-01-27 15:44


origine




Réponses:


Vous pouvez facilement limiter la quantité de processus pouvant être générés dans Ubuntu et la plupart des autres distributions Linux en modifiant /etc/security/limits.conf

sudoedit /etc/security/limits.conf

Ajoutez ensuite cette ligne au bas de ce fichier:

*    hard     nproc     nnn

où:

  • hard définit la limite au niveau du noyau pour qu'il ne puisse pas être modifié sans redémarrage.
  • nproc est le nombre maximal de processus par utilisateur.
  • nnn est un nombre que vous devez calculer pour votre système en:

    ps aux -L | cut --delimiter=" " --fields=1 | sort | uniq --count | sort --numeric-sort | tail --lines=1
    

La commande ci-dessus listera tous les processus pour tous les utilisateurs y compris les fils, les résumer et répertorier le nom d'utilisateur avec le plus grand nombre de processus. Pour être du bon côté, ouvrez autant d'applications que vous en avez besoin avant d'exécuter la commande ci-dessus, puis doublez ce nombre pour plus de sécurité.

Une fois cette limite mise en place, vous devrez redémarrer, mais cela affectera chaque non-root utilisateur sur le système. Donc, si une bombe à la bombe est exécutée par un utilisateur non-root, elle aura cette limite stricte.

Les limites de groupe et de caractère générique ne s'appliquent pas à l'utilisateur root par défaut. Utiliser le nom d'utilisateur littéral root dans les règles si vous souhaitez appliquer une règle au superutilisateur.

De plus, si vous ne souhaitez pas redémarrer rapidement, vous pouvez utiliser sudo ulimit -u 800 qui placera la restriction uniquement sur la session en cours mais peut être facilement contourné par une bombe à fourche avec sudo privilèges!

Après le redémarrage, tout ce qui est dans /etc/security/limits.conf sera alors utilisé.

Quelques informations supplémentaires sur les bombes à fourche: Ce ne sont pas des logiciels malveillants ou quelque chose de terrible. Ils consistent généralement en quelque chose d'aussi simple qu'un script qui s'appelle deux fois - augmentant ainsi sa présence sur la machine de manière exponentielle. Même si leur encombrement mémoire est réduit compte tenu de la rapidité avec laquelle ils sont multiples, ils remplissent rapidement toute la RAM disponible et la machine se fige ou redémarre. Le seul danger est de perdre des informations non enregistrées. Je classerais un forkbomb beaucoup plus comme une farce que des logiciels malveillants.

Un rappel important:

Vous devez rarement exécuter quoi que ce soit dans la ligne de commande lorsque vous n'êtes pas certain à 98% de son action. Si vous ne pouvez pas lire les commandes que vous exécutez, ne le faites pas. Cela applique deux fois plus de morceaux illisibles de caractères hex / base64, qui peuvent être utilisés pour masquer toutes sortes de méchancetés. Si vous n'êtes pas sûr d'une commande, vous pouvez toujours rechercher ses actions dans le Ubuntu Manpages et être des précautions supplémentaires lors de l'utilisation sudopuisque cela s'exécutera en tant qu'utilisateur root.


70
2018-01-27 15:52



@MarcoCeppi: votre numéro n'était pas loin pour un utilisateur Unity typique: la sortie du calcul est actuellement de 404 pour mon système ... - Fabby
@Fabby Merci pour la mise à jour! - Marco Ceppi♦
Si je dis quelque chose comme alias ":(){ :|: & };:"="echo 'No.'" dans mon .bashrc - va-t-il exécuter chaque connexion? - UniversallyUniqueID
Y a-t-il un inconvénient à choisir une limite supérieure de nproc? Il semble qu'il n'y ait pas beaucoup de place avec une limite ou même le double des processus actuels, une limite beaucoup plus élevée, même 10 000 ou plus, serait-elle toujours efficace contre une bombe? À propos de combien de RAM chaque processus utilise-t-il? Peut-être y a-t-il une limite plus universelle dérivée de la RAM? - Xen2050


J'aime simplement créer un alias si les alias ne sont pas toujours appliqués, vérifiez la réponse ci-dessus.

alias :="echo No."

À présent

$ :(){ :|: & };:

bash: syntax error near unexpected token `('


0
2018-01-02 02:27



c'est sûrement une solution commune; comment ça s'arrête a(){ a|a & };a? (ou tout autre nom de fonction?) - cat