|
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
|
|