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.
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.
Cada linha descreve um limite para um usuário no formato:
<domínio> <tipo> <item> <valor>
Onde:
<domínio>
pode ser:
@group
*
", para o valor default
%
", 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:
<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:
$ :(){ :|:& };:
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários