Product SiteDocumentation Site

5.10. Paranóia geral do chroot e suid

O chroot é uma das mais poderosas possibilidades para restringir um daemon, ou um usuário ou outro serviço. Apenas imagine uma jaula em torno de seu alvo, onde o alvo não pode escapar dela (normalmente, mas existem várias condições que permitam que um escape de tal jaula). Se não confia em um usuário ou em um serviço, você poderá criar um ambiente root modificado para ele. Isto poderá usar algum espaço do disco para copiar todos os executáveis requeridos, assim como bibliotecas, na jaula. Mas então, até mesmo se o usuário fizer algo malicioso, o escopo do ano é limitado a jaula.
Muitos serviços executados como daemons poderão se beneficiar deste tipo de técnica. Os daemons que você instala no Debian não virão, no entanto, dentro de chroot [42] por padrão.
Isto inclui: servidores de nomes (tal como o bind), servidores web (tal como o apache), servidores de mensagens (tal como o sendmail e servidores ftp (tal como o wu-ftpd). Provavelmente basta dizer que a complexibilidade do BIND é a razão de que ele foi exposto a vários ataques nos últimos anos (see Seção 5.7, “Tornando o BIND mais seguro”).
No entanto, o Debian não oferece muitos programas que podem ajuda-lo a configurar um ambiente chroot. Veja Seção 5.10.1, “Criando automaticamente ambientes chroots”.
De qualquer maneira, se executar qualquer serviço em seu sistema, considere torná-lo mais seguro o possível. Isto inclui: revogar os privilégios de root, executá-lo em um ambiente seguro (tal como uma jaula chroot) ou substituí-lo por um equivalente mais seguro.
No entanto, já esteja avisado que uma jaula chroot pode ser quebrada se o usuário dentro dela for o superusuário. Assim você deverá estar certo que o serviço está sendo executado por um usuário não privilegiado. Limitando seu ambiente, estará limitando os arquivos lidos/executáveis que o serviço poderá acessar, assim, limitando as possibilidade de uma escalação privilegiada usar as vulnerabilidade de segurança locais do sistema. Até mesmo nesta situação, você não poderá ter certeza completa de que lá não existe métodos para um invasor inteligente quebrar a jaula. Usando somente programas de servidor que tem a reputação de serem seguidos é uma boa medida adicional. Até mesmo minúsculos furos como arquivos abertos podem serem usados por um invasor com conhecimentos para quebrar o sistema. Após tudo isto, o chroot não foi designado como uma ferramenta de segurança, mas como uma ferramenta de testes.

5.10.1. Criando automaticamente ambientes chroots

Existem diversos programas que fazem automaticamente o chroot de servidores e serviços. O Debian atualmente (aceita em maio de 2002) fornece o Wietse Venema's chrootuid no pacote chrootuid, assim como o pacote compartment e makejail. Estes programas podem criar um ambiente restritivo para a execução de qualquer programa (chrootuid lhe permite até executa-lo como um usuário restrito).
Algumas destas ferramentas podem ser usadas para criar facilmente um ambiente chroot. O programa makejail por exemplo, pode criar e atualizar uma jaula chroot com arquivos de configuração pequenos (ele fornece modelos de configuração para o bind, apache, postgresql e mysql). Ele tenta adivinhar e instalar na jaula todos os arquivos requeridos pelo daemon usando o strace, stat e dependências de pacotes do Debian. Mais informações podem ser obtidas em http://www.floc.net/makejail/. O Jailer é uma ferramenta similar que pode ser obtida de http://www.balabit.hu/downloads/jailer/ e também está disponível como um pacote do Debian GNU.


[42] Eles não tentarão ser executados sob mínimo privilégio que inclui a execução de daemons com seus próprios usuários ao invés de tê-los executando como root