De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Como impedir a bomba fork() através da limitação dos recursos de usuários

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 09 de outubro de 2013

Este texto é uma tradução livre do original em inglês "How to: Prevent a fork bomb by limiting user process, do portal NixCraft.

Como proteger o meu sistema de uma bomba fork() em sistemas Linux?

Limitar os processos de usuários é um passo importante na operação de um sistema estável. Para limitar processos de usuários basta adicionar o nome do usuário ou grupo ao arquivo /etc/security/limits.conf e estabelecer as limitações ao consumo de recursos por parte dos processos.

Entendendo a sintaxe do arquivo /etc/security/limits.conf

Cada linha descreve um limite para um usuário no formato:

  <domínio> <tipo> <item> <valor>

Onde:

<domínio> pode ser:

  • o nome de um usuário
  • o nome de um grupo, com a sintaxe @group
  • o coringa "*", para o valor default
  • o coringa "%", pode ser usado também com a sintaxe %group, para o limite maxlogin

Observação: limites de grupo e com coringas não se aplicam ao usuário root. Para aplicar um limite ao usuário root a diretiva <domain> precisa especificar diretamente o usuário root.

<tipo> pode ter dois valores:

  • "soft" para colocar em vigor os limites "soft"
  • "hard" para colocar em vigor os limites "hard"

<item> pode ser

core limita o tamanho do arquivo core (KB)
data tamanho máximo dos dados (KB)
fsize tamanho máximo de arquivo (KB)
memlock tamanho máximo de memória travada no espaço de endereçamento (KB)
nofile número máximo de arquivos abertos
rss tamanho máximo da memória de um processo que pode residir em memória RAM (max resident set size) (KB)
stack tamanho máximo da pilha (KB)
cpu tempo máximo de CPU (MIN)
nproc número máximo de processos
as limite do espaço de endereçamento
maxlogins número máximo de logins para este usuário
maxsyslogins Número máximo de logins no sistema
priority a prioridade sob a qual são executados os processos do usuário
locks número máximo de locks de arquivos que o usuário pode ter
sigpending número máximo de sinais pendentes
msgqueue número máximo de memória usadas pelas filas de mensagem POSIX (bytes)
nice prioridade máximo (nice) permitida
rtprio prioridade máxima em tempo real
chroot mudar root para o diretório (apenas Debian)

Para alterar os valores, faça o login como root e edite o arquivo de configuração:

  # vi /etc/security/limits.conf

Os valores abaixo irão impedir a bomba fork():

  vivek hard nproc 300
  @student hard nproc 50
  @faculty soft nproc 100
  @pusers hard nproc 200

As diretivas acima irão impedir que qualquer pessoa no grupo student tenha mais do que 50 processos, o limite para faculty e pusers é definido como 100 e 200. O usuário Vivek pode criar apenas 300 processos. Observe que os sistemas KDE e Gnome podem iniciar muitos processos.

Salve e feche o arquivo. Teste o novo sistema lançando uma bomba fork:

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

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Rubens Queiroz de Almeida