Gentoo Logo

1.  Legíveis globalmente

Os usuários normais não devem ter acesso a arquivos de configuração ou senhas. Um indivíduo malicioso pode roubar senhas de bancos de dados ou website e usá-los para fazer defaces--ou pior ainda, apagar--dados. É por isso que é importante que suas permissões de arquivo estejam corretas. Se você tem certeza de que um arquivo somente é usado pelo root, configure-o com as permissões 0600 e atribua o arquivo ao usuário correto com chown.

1.  Graváveis globalmente/por grupo

Listagem de código 1.1: Encontrando arquivos e diretórios graváveis globalmente

# /usr/bin/find / -type f \( -perm -2 -o -perm -20 \) \ 
   -exec ls -lg {} \; 2>/dev/null >writable.txt
# /usr/bin/find / -type d \( -perm -2 -o -perm -20 \) \ 
   -exec ls -ldg {} \; 2>/dev/null >>writable.txt

Isto irá criar um enorme arquivo com permissões de todos arquivos tendo ou permissão de escrita para o grupo ou para todos. Verifique as permissões e elimine arquivos arquivos globais graváveis por todos, executando /bin/chmod o-w nos arquivos.

1.  Arquivos SUID/SGID

Arquivos com o bit SUID ou SGID configurados executam com os privilégios do usuário ou grupo proprietário e não do usuário executando o arquivo. Normalmente esses bits são usados em arquivos que devem ser rodados com root para fazer o que devem. Esses arquivos podem levar a comprometimentos de root locais (se contiverem buracos de segurança). Isto é perigoso e arquivos com bits de SUID ou SGID devem ser evitados a qualquer custo. Se você não usa esses arquivos, use chmod 0 neles ou desinstale o pacote de que eles originaram (verifique a que pacote eles pertencem usando equery; se você já não o tiver instalado simplesmente digite emerge gentoolkit). Caso contrário desligue o bit de SUID com chmod -s.

Listagem de código 1.1: Encontrando arquivos setuid

# /usr/bin/find / -type f \( -perm -004000 -o -perm -002000 \) \ 
   -exec ls -lg {} \; 2>/dev/null >suidfiles.txt

Isto irá criar um arquivo contendo uma lista de todos arquivos SUID/SGID.

Listagem de código 1.1: Lista de binários com setuid

/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

Por padrão o Gentoo Linux não tem muitos arquivos com SUID (embora isso dependa do que você tem instalado), mas você pode obter uma lista como a acima. A maior parte dos comandos não devem ser usados por usuários normais, só root. Desligue o bit de SUID em ping, mount, umount, chfn, chsh, newgrp, suidperl, pt_chown e traceroute executando chmod -s em cada arquivo. Não remova o bit de su, qmail-queue ou unix_chkpwd. Remover o sutuid destes arquivos impede que você faça su e receba correio. Ao remover o bit (onde for seguro fazê-lo) você remove a possibilidade de um usuário normal (ou um indivíduo malicioso) ganhar acesso de root através de qualquer um desses arquivos.

Os únicos arquivos de SUID que eu tenho em meu sistema são su, passwd, gpasswd, qmail-queue, unix_chkpwd e pwdb_chkpwd. Mas se você estiver rodando o X, você pode ter mais algunas, já que o X precisa de acessos elevados conseguidos através de SUID.

1.  Binários e hardlinks com SUID/SGID

Um arquivo só é considerado apagado quando não há mais links apontando para ele. Isto pode soar como um conceito estranho, mas considere que um nome de arquivo como /usr/bin/perl é na verdade um link para o inode onde os dados são gravados. Qualquer número de links pode apontar para um arquivo, e até todos serem apagados, o arquivo ainda existe.

Se seus usuários têm acesso a uma partição que não é montada com nosuid ou noexec (por exemplo, se /tmp, /home, ou /var/tmp não forem partições separadas) você deve tomar cuidado para que seus usuários não criem hardlinks para binários com SUID ou SGID, de forma que após a atualização do Portage eles ainda tenham acesso a versões antigas.

Aviso: se você recebeu um aviso do portage sobre hardlinks remanescentes, e seus usuários podem escrever para uma partição que permite executar arquivos SUID/SGID, você deve ler esta seção cuidadosamente. Um de seus usuários pode tentar contornar sua atualização mantendo uma cópia antiga de um programa. Se seus usuários não podem criar arquivos SUID, ou só podem executar programas usando o carregador dinâmico (partições montadas com noexec), você não tem com o que se preocupar.

Nota: Usuários não precisam ter acesso de leitura a um arquivo para criar um link para ele, só precisam ter permissão de leitura no diretório que o contém.

Para ver quantos links um arquivo tem, você pode usar o comando stat.

Listagem de código 1.1: Comando stat

$ stat /bin/su    
  File: `/bin/su'
  Size: 29350           Blocks: 64         IO Block: 131072 regular file
Device: 900h/2304d      Inode: 2057419     Links: 1
Access: (4711/-rws--x--x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2005-02-07 01:59:35.000000000 +0000
Modify: 2004-11-04 01:46:17.000000000 +0000
Change: 2004-11-04 01:46:17.000000000 +0000

Para encontrar arquivos SUID e SGID com links múltiplos, você pode usar o find.

Listagem de código 1.1: Encontrando binários suid/sgid com links múltiplos

$ find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls

Atualizado 31 de maio de 2005

A versão original deste documento foi atualizada em 16 de setembro de 2006

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.