Como proteger o Ubuntu do fork?

70

Eu ouvi alguém falando sobre uma bifurcação, fiz algumas pesquisas e encontrei algumas informações terríveis sobre personagens estranhos que as pessoas podem digitar na linha de comando e, como resultado, fazem coisas ruins no computador. Eu certamente não daria ordens que eu não entendo, mas nunca se sabe o que pode acontecer.

Ouvi dizer que algum sistema operacional permite que o administrador coloque algum limite nos processos do usuário para atenuar os efeitos das bombas garimpadas. Por padrão, essa proteção é no Ubuntu ou uma pessoa com privilégio de sudo teria que definir isso? Se sim, como?

    
por dblang 27.01.2011 / 16:44

2 respostas

68

Você pode limitar facilmente a quantidade de processos que podem ser gerados no Ubuntu e na maioria das outras distribuições do Linux, modificando /etc/security/limits.conf

sudoedit /etc/security/limits.conf

Em seguida, adicione esta linha ao final desse arquivo:

*    hard     nproc     nnn

onde:

  • hard define o limite no nível do kernel para que não possa ser alterado sem reinicializar.
  • nproc é o número máximo de processos por usuário.
  • nnn é um número que você deve calcular para seu sistema:

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

O comando acima listará todos os processos para todos os usuários incluindo threads , os resumirá e listará o nome do usuário com a maior quantidade de processos. Para garantir, abra quantos aplicativos forem necessários antes de executar o comando acima e, em seguida, duplique esse número por segurança.

Após esse limite ser colocado, você precisará reiniciar, mas isso afetará cada usuário não-root no sistema. Então, se uma bomba bifurcada for executada por qualquer usuário não-root, ela terá esse limite rígido.

Os limites de grupo e curinga não se aplicam ao usuário raiz por padrão . Use o nome de usuário literal root nas regras se você quiser aplicar uma regra ao superusuário.

Além disso, se você não quiser reiniciar tão cedo, use sudo ulimit -u 800 , que colocará a restrição somente na sessão em execução , mas poderá ser facilmente contornado por uma bifurcação com sudo privileges !

Após a reinicialização, o que estiver em /etc/security/limits.conf será usado.

Algumas informações adicionais sobre garfos bomba: Eles não são malware ou algo terrível. Eles normalmente consistem em algo tão básico quanto um script que se chama duas vezes - aumentando assim sua presença na máquina de forma exponencial. Mesmo que tenham uma pequena pegada de memória, dado o ritmo rápido, eles rapidamente preenchem toda a RAM disponível e a máquina congela ou reinicia. O único perigo é perder informações não salvas. Eu classificaria uma forkbomb muito mais como uma brincadeira do que um software malicioso.

Um lembrete importante:

Você raramente deve executar qualquer coisa na linha de comando quando não tiver 98% de certeza de sua ação. Se você não consegue ler os comandos que está executando - não faça isso. Isso se aplica a partes ilegíveis de caracteres hex / base64, que podem ser usadas para obscurecer todo tipo de maldade. Se você não tem certeza de um comando, pode sempre procurar por suas ações nas Manpages do Ubuntu e ter precauções extras ao usar sudo desde então será executado como usuário root.

    
por Marco Ceppi 27.01.2011 / 16:52
0

Uma maneira simples que eu gosto é criar um alias que não seja sempre aplicado, verifique a resposta acima.

alias :="echo No."

Agora

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

bash: syntax error near unexpected token '('

    
por Adrian Webster 02.01.2016 / 03:27