web-dev-qa-db-fra.com

Comment protéger Ubuntu de fork bombe

J'ai entendu quelqu'un parler d'une fourche piégée, j'ai fait des recherches et trouvé des informations épouvantables sur des personnages étranges à la recherche de personnages que vous pouvez taper sur la ligne de commande et par conséquent faire de mauvaises choses sur votre ordinateur. Je ne donnerais certainement pas des ordres que je ne comprends pas, mais on ne sait jamais ce qui peut arriver.

J'ai entendu dire que certains systèmes d'exploitation permettaient à l'administrateur d'imposer des limites aux processus utilisateur pour atténuer les effets des bombes fourchettes. Cette protection est-elle sous Ubuntu par défaut ou une personne disposant du privilège de Sudo devrait-elle définir ce paramètre? Si c'est le cas, comment?

72
dblang

Vous pouvez facilement limiter le nombre 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ù:

  • harddéfinit la limite au niveau du noyau pour qu’elle ne puisse pas être modifiée sans redémarrage.
  • nprocest le nombre maximal de processus par utilisateur.
  • nnnest 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 répertorie tous les processus pour tous les utilisateurs , y compris les threads , les résume et répertorie le nom d'utilisateur avec le plus grand nombre de processus. Pour plus de sécurité, ouvrez autant d'applications que nécessaire normalement avant d'exécuter la commande ci-dessus, puis doublez ce nombre pour des raisons de sécurité.

Une fois cette limite mise en place, vous devrez redémarrer l'ordinateur, mais cela affectera chaque utilisateur non root du système. Donc, si une bombe fourchette est exécutée par un utilisateur non root, elle aura cette limite absolue.

Les limites de groupe et de caractères génériques ne s'appliquent pas à l'utilisateur root par défaut . Utilisez le nom d'utilisateur littéral rootdans les règles si vous souhaitez appliquer une règle au super-utilisateur.

En outre, si vous ne souhaitez pas redémarrer de sitôt, vous pouvez utiliser Sudo ulimit -u 800 qui ne placera la restriction que sur la session en cours , mais peut être facilement contourné par une bombe à la bombe avec les privilèges Sudoname__!

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

Quelques informations supplémentaires sur les bombes fourchettes: Ce ne sont pas des logiciels malveillants ou quelque chose de terrible. Ils consistent généralement en quelque chose d'aussi basique qu'un script qui s'appelle deux fois, augmentant ainsi sa présence sur la machine de manière exponentielle. Même s'ils ont peu de mémoire, étant donné la rapidité avec laquelle ils se multiplient, ils remplissent rapidement toutes les RAMdisponibles et la machine se bloque ou se réinitialise. Le seul danger est de perdre des informations non sauvegardées. Je classerais un forkbomb beaucoup plus comme une farce qu'un logiciel malveillant.

Un rappel important:

Vous devez rarement exécuter quoi que ce soit en 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. Ceci s'applique en double aux morceaux illisibles de caractères hexadécimaux/base64, qui peuvent être utilisés pour masquer toutes sortes de méchancetés. Si vous n'êtes pas certain d'une commande, vous pouvez toujours rechercher ses actions dans le pages de manuel Ubunt et faire preuve de prudence lorsque vous utilisez Sudoname__, qui sera exécuté en tant qu'utilisateur root.

72
Marco Ceppi

Une façon simple que j'aime est de créer un alias même 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 `('
1
Adrian Webster