Ambiente seguro com chroot

Publicado por Rick em 08/08/2012

[ Hits: 33.332 ]

Blog: http://www.guiadoti.com

 


Ambiente seguro com chroot



Pessoal, esta dica é para mostrar como é fácil trabalhar com chroot, um sistema enjaulado é muito útil, em determinados casos.

Instalando e configurando

Vamos entender o que é um ambiente chroot e ver como ele funciona na prática.

Bem, o chroot nada mais é do que um ambiente isolado (enjaulado) dentro da sua máquina real, é um sistema dentro de outro que compartilham processos. É um ambiente recomendável para sistemas de acesso público.

A norma ABNT NBR ISO/IEC 27002:2005 diz, no item 11.6.2, que sistemas sensíveis devem ter um ambiente computacional dedicado (isolado), isto impede que, se um possível atacante tiver acesso ao servidor, ele ficará preso dentro do chroot, ele não terá acesso ao servidor real.

Para configurar um sistema chroot em nosso servidor, vamos precisar instalar um pacote chamado debootstrap. Em distribuições baseadas no Debian, utilize:

# aptitude install debootstrap

Depois que o pacote 'debootstrap' foi instalado, é preciso criar o diretório onde nosso sistema irá ficar.

# mkdir /var/khal-chroot

Obs.: Aqui irei chamar meu sistema de 'khal', mas pode colocar o nome que preferir.

Agora, nós iremos instalar o sistema em si, aqui optei por instalar o Debian Squeeze, mas vocês podem instalar qualquer outra, Debian Lenny, por exemplo.

O comando debootstrap irá baixar todos os pacotes necessários do sistema operacional direto dos repositórios do Debian para o diretório /var/khal-chroot.

Isto levará alguns minutos, tempo o suficiente para beber uma água, ir ao banheiro, enfim....

# debootstrap squeeze /var/khal-chroot

Pessoal, depois de instalar o nosso sistema, precisamos montar o diretório proc do nosso sistema enjaulado, para fazer vínculo com os processos do nosso sistema real:

# mount --bind /proc/ /var/khal-chroot/proc

Agora execute o comando abaixo, para acessar o sistema instalado:

# chroot /var/khal-chroot

Aparentemente, nada irá acontecer, mas após este comando, já estamos dentro do chroot, sendo que o nome do host não mudou, e isso pode nos confundir. Mais adiante, iremos mudar o nome da variável do prompt para diferenciá-lo do sistema original.

# pico /root/.bashrc

Na quinta linha deste arquivo, iremos alterar seu conteúdo para:

PS1=' khal-chroot:\w\$ '


Feito isso, salve e saia do arquivo. Depois execute exit, para sair do chroot. Após, volte para o chroot com o comando: chroot /var/khal-chroot e prestem atenção no prompt, veja que ele irá mudar toda vez que você entrar no chroot.

Depois disso, atualize a base de dados do sistema com o comando:

# aptitude update

Depois altere a senha do root:

# passwd root

Agora, no fstab do chroot, crie os pontos de montagem dos dispositivos dos terminais virtuais, assim, depois que instalarmos o SSH, por exemplo, iremos conseguir acessar nosso chroot, caso contrário, não iremos conseguir.

# pico /etc/fstab

Adicione a seguinte linha no arquivo:

devpts    /dev/pts  devpts  defaults  0 0


Salve e saia do arquivo, depois dê o comando:

# mount -a

Para montar, e depois dê:

# mount

Para verificar se ponto foi montado. Deverá aparecer o seguinte conteúdo:
devpts on /dev/pts type devpts (rw)


Se você possui um servidor SSH no seu sistema original, é preciso dar um stop nele, pois como os processos são vinculados, não pode ter dois servidores do mesmo serviço rodando. Antes de instalarmos o SSH em nosso chroot, saia do mesmo e pare o SSH no sistema original:

# /etc/init.d/ssh stop

Depois entre no chroot novamente.

Vamos instalar o pacote SSH em nosso chroot, para que ele possa ser acessado remotamente:

# aptitude install ssh

Depois que o SSH estiver instalado, dê o comando abaixo e verifique se o SSH está rodando:

# ps aux | grep ssh

Se estiver tudo certo, é só acessar seu sistema enjaulado de qualquer lugar.

Bem pessoal, espero que este tutorial ajude a todos. :)

Dica previamente publicada em:

Outras dicas deste autor

OSSEC - Instalação e configuração

Configurando o Redmine para enviar e-mails via Gmail

Nikto - Instalação e utilização

Auditando com Lastcomm

ProFTPD - Enjaulando usuários no diretório HOME

Leitura recomendada

PEInjector: nova ferramenta para injetar payloads maliciosos em arquivos PE

How To: Configurar proxy web em servidor Debian

traceroute - Comando não funciona [Resolvido]

Upload de várias imagens com PHP e jQuery

Endian no VirtualBox - Configurações de redes

  

Comentários
[1] Comentário enviado por odiliotiago em 05/07/2014 - 16:22h

Parabéns bom trabalho...

[2] Comentário enviado por error13 em 25/04/2015 - 11:06h


e ai @Rick blz?
estou com uma duvida aqui talvez você possa me ajudar...
estou tentando subir um sftp mais não consigo "enjaular" o usuário para que veja somente o seu diretório, no caso seria esse processo que você postou acima correto?

postei no forum mais ainda nao obtive resposta segue o link...
http://www.vivaolinux.com.br/topico/Servidores-de-bate-papo/SFTP-caindo-na-pasta



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts