domingo, junho 08, 2008

Segurança em Sistemas de Arquivos - 2











Suid Bit e Noexec


Sempre que instalamos um sistema Linux, as boas práticas de instalações nos aconselham a particionar o disco e colocar os principais diretórios em partições separadas. Isso nos proporciona uma maior segurança, pois cada partição tem sua tabela separada.

Logo, se o diretório / (raiz) está em uma partição e o /home em outra, no caso de algum problema no sistema ou até em uma reinstalação, não perderíamos as informações do diretório /home.

Podemos utilizar algumas opções de montagem de diretórios em alguns diretórios visados pelos atacantes que dificultam a execução de aplicativos.

Suid bit – A permissão de Suid bit possibilita que um determinado binário que só possa ser executado, por exemplo, pelo usuário root seja executado por qualquer outro usuário comum do sistema. Muitos binários do sistema já vem com a permissão de Suid bit, pois alguns binários que somente root pode executar precisam ser utilizados por um usuário. Exemplos clássicos desses comandos são o su, o ping, o passwd e muitos outros. Mas em uma coisa devemos pensar: será que todos esses binários que já estão com a permissão de Suid bit vão ser utilizados por meus usuários ?

Você pode perguntar qual o problema de se ter um Suid bit ativado. O problema pode ser muito grande se um cracker souber aproveitá-lo, explorando vulnerabilidades conhecidas para conseguir uma Shell de root.

O ideal que um administrador deve fazer é retirar todas as permissões de Suid bit do sistema e depois setar essas permissões somente para os binários que julgamos fundamentais para um usuário. Mas devemos nos atentar que existem casos diferentes, pois um caso pode ser aplicado em um servidor firewall e não ser aplicado em um servidor de email.

Exemplo: O comando ping que pode ser executado por qualquer usuário do sistema por causa do Suid bit ativado.

ls –l /bin/ping

-rwsr-xr-x

A flag s nas permissões do usuário dono do arquivo representa o Suid bit ativado.
Assim um usuário sem privilégios pode executar o comando ping, mas se retirarmos a permissão de execução suid bit desse binário, somente o dono desse binário poderá executar.

Para checar todos os binários que tem permissões Suid bit ativo:

find / -perm -4000 > /tmp/suidbit

O número 4000 representa a permissão de Suid bit, sendo que os três zeros são as permissões padrões do sistema ( 0 para usuário, 0 para grupo e 0 para outros), e o 4 representa a permissão Suid bit.

Podemos analisar os binários no arquivo de saída e ver quais podem ficar com o Suid bit ativo.
Para retirar a permissão de Suid bit de todos os binários do sistema:

chmod –s –Rv /

s – retira a permissão de Suid bit
R – é recursivo, do / para baixo
v – é o modo verbose

Para ativar o Suid bit em binários que sabemos que é preciso:

chmod +s /bin/ping

ls –l /bin/ping

Podemos fazer outra implementação de segurança mas se tratando de permissões dentro do volume montado.

Usando a opção noexec em uma partição quando ela é montada impossibilitamos a execução de qualquer binário ou arquivo executável dentro dessa partição.

Essa opção pode ser aplicada a todos os diretórios, mas clássico exemplo é aplicá-la aos diretórios /home e /tmp. Crackers podem se aproveitar do diretório /tmp, onde por padrão qualquer usuário pode introduzir backdoors ou qualquer outro programa malicioso para ter um acesso completo ao sistema.

Isso é configurado no arquivo /etc/fstab.
Também podemos ativar com o sistema em execução:

mount –o remount,rw,noexec /home

Mas temos que analisar alguns pontos, quanto mais segurança implementamos no sistema, menos riscos corremos mas temos pouca flexibilidade de se trabalhar dentro do sistema.
Em alguns casos o suidbit,noexec devem ser usados mas em outros não, isso deve ser analisado muito bem pelo administraodor de redes.

até o próximo post.

Nenhum comentário: