[FUGSPBR] Segurança

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Qui Dez 2 10:25:41 BRST 2004


Bom, eu pessoalmente só usaria a abordagem do sudo se quizer limitar o 
que "o outro superusuario" pode fazer. Mas se quizer deixar ele com 
total (ou quase) flexibilidade crie um usuario pra ele, com uid 0, ele 
tera todos os poderes do root por padrao, e tudo (numeros PID, 
manipulacao de arquivos, etc) sera feito com UID 0 portanto tornando-o 
sinonimo de superusuario.

Ai faria o seguinte. Garanta que nenhum superusuario podera acessar NADA 
logando-se diretamente, nem mesmo nos terminais locais da maquina. Nem 
root nem o outro superusuario. Ou seja ssh, ftp, Login com o cara 
*sentado* na frente da maquina, nada! Faca o cara (e voce tambem) ter 1 
usuario desprivilegiado, forcando-o a dar "su root" ou "su outroroot" 
sempre, mesmo localmente. Isso voce pode fazer via /etc/ttys (terminais 
virtuais locais e console -- insecure).

Dessa forma voce tera logs mais ricos, e alguem pra se tornar 
superusuario tera que saber 2 senhas (entao nao use a mesma pros 2 
usuarios, privilegiado e desprivilegiado), o "lastlogin" e "last" 
ficarao mais ricos, auditoria sera facilidade, e os logs de auth e 
messages denotarao que usuario se tornou que root.

Ai o principal seria o seguinte. Para cada terminal, virtual ou local 
(ttypN / ttyvN) gere logs separados, por terminal e por usuario. Isso na 
shell padrão dos sistemas BSD (a csh) pode ser conseguido customizando o 
/etc/csh.cshrc (valido pro sistema todo) ou ~/.cshrc (apenas o usuario) 
mais ou menos assim:

if (! -d $HOME/.history/tcsh) then
     mkdir -m 700 -p $HOME/.history/tcsh
endif
set histfile = $HOME/.history/tcsh/$tty

Com isso no home de cada usuario voce tera .history/tcsh/ e dentro deste 
1 arquivo de log por terminal (ie, ttyp0, ttyp1, ttyv0, ttyv1, etc)

Complementarmente, pode aumentar o numero de registros do historico, por 
exemplo para 15 mil comandos/linhas:

set history = 15000

Se o cara puder usar outra shell faca procedimento equivalente nos 
arquivos de configuracao destas, gerando assim por exemplo 
~/.history/bash, ~/.history/sh, ~/.history/ksh, o que voce achar 
conveniente.

Então, coloque seu sistema em securelevel=1, e garanta que sempre 
entrara em nivel de segura pelo menos 1 (via rc.conf ou sysctl.conf), e 
então defina as flags de arquivos append-only (de preferencia system 
flag, sappnd) em todos os arquivos em todos os arquivos de log do 
historico (voce pode configurar o proprio cshrc pra fazer isso). Assim o 
cara nunca editara os historicos e voce tera um bom nivel de informacao.

Ainda, voce pode colocar um script de inicializacao que sempre que a 
maquina reiniciar, ele te envie um e-mail e/ou salve logs em um lugar 
especial, analisando o securelevel, pra ver se o cara nao baixou o 
securelevel por algum motivo. Esse script por sua vez pode ter flags de 
imutabilidade de forma que seja necessario reiniciar o sistema pra ele 
modificar algo neste.

Da pra fazer muito mais coisa, sem depender de ferramenta externa 
nenhuma, mas essas coisas sao simples e sao um bom comeco pro que voce quer.

-- 
Atenciosamente,

Patrick Tracanelli

FreeBSD Brasil LTDA.
The FreeBSD pt_BR Documentation Project
http://www.freebsdbrasil.com.br
Fone/Fax: (31) 3281-9633
"Long live Hanin Elias, Kim Deal!"

_______________________________________________________________
Para enviar um novo email para a lista: fugspbr em fugspbr.org
Sair da Lista: http://lists.fugspbr.org/listinfo.cgi
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/



Mais detalhes sobre a lista de discussão freebsd