La protezione della bomba a forcella non funziona: quantità di processi non limitata


8

Ho appena capito che il mio sistema non sta limitando correttamente la quantità di processi per utente, quindi non impedisce a un utente di fare un fork-bomb e di far schiantare l'intero sistema:

user@thebe:~$ cat /etc/security/limits.conf | grep user
user        hard    nproc   512
user@thebe:~$ ulimit -u
1024
user@thebe:~$ :(){ :|:& };:
[1] 2559
user@thebe:~$ ht-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
...
Connection to thebe closed by remote host.

Si tratta di un bug o perché ignora il limite limits.confe perché non si applica il limite che ulimit -nafferma di essere?

PS: Non credo davvero che il limite di memoria sia stato raggiunto prima del limite di processo. Questa macchina ha 8 GB di ram e ne usava solo il 4% al momento in cui ho lasciato cadere la bomba.

MODIFICARE:

Sono riuscito a riprodurlo su un CD live. Quindi immagino che questo debba essere un bug. Fondamentalmente finisce per uccidere tutti i processi, compresi gli aspetti critici del sistema come X11, SSHD ecc.

Qualsiasi utente può arrestare il sistema in modo anomalo.


-n è il numero di descrittori di file, non di processi. Voleteulimit -u
psusi il

@psusi, grazie, ma questo dà lo stesso risultato: suser@thebe:~$ ulimit -u 1024
d_inevitable

Quando corro ulimit -uottengo 31325. Quando corro ulimit -u 512va 512. Quando corro quella bomba, il resto del mio sistema va bene.
psusi

Risposte:


8

Si scopre che /etc/security/limits.conffunziona, ma deve essere riavviato prima che venga interpretato. Una disconnessione non è sufficiente.

Consiglio a chiunque di limitare il file di configurazione come

user hard nproc 512

Sostituisci usercon qualsiasi nome utente che desideri limitare.

O meglio:

@group hard nproc 512

Sostituisci groupcon qualsiasi gruppo di utenti che desideri limitare.


A seconda del software utilizzato, anche un sistema a utente singolo potrebbe richiedere più processi rispetto a 512. Se trovi che le cose misteriosamente non funzionano dopo l'implementazione, potresti dover regolare il numero effettivo di processi che permetti.
Zeiss Ikon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.