Instalação do PostgreSQL com Apache 2, PHP 5, OpenSSL no Debian Wheezy 7.7 64 bits com systemd e chroot

Instalação praticamente completa, feita majoritariamente em linha de comando.

[ Hits: 28.059 ]

Por: Buckminster em 10/11/2014


chroot



chroot (Change Root)

O utilitário chroot é usado para enjaular um daemon dentro de uma estrutura restrita. Tu podes usá-lo para isolar um serviço do outro, desta forma, um problema de segurança em um pacote de software específico, não interfere em todo o servidor.

O chroot é praticamente um sistema dentro de outro. Ao criar o chroot, o sistema somente transfere os arquivos básicos, sendo que os programas e os pacotes de atualizações deverão ser novamente configurados dentro do chroot. Por exemplo, caso tu tenhas o Vim instalado no sistema real e quiser ele no chroot, deverá instalá-lo novamente. Isso acontece com os outros programas também.

Crie a pasta dentro do diretório /var, de preferência, ou em algum diretório onde tenha espaço suficiente, pois os programas serão instalados dentro do chroot que estará nessa pasta e, logicamente, a tendência dela é crescer.

Em outro artigo meu sobre chroot com o Apache e o BIND, teve um cara reclamando nos comentários que faltou instalar o tal "jaula", sendo que "jaula" era o nome do diretório criado para o chroot, pois a instalação foi toda feita manualmente. Pois bem, agora vamos instalar o tal "jaula", só que o tal "jaula" se chama Debootstrap, que é uma ferramenta que permite instalar a base de um sistema Debian num subdiretório de outro sistema já instalado.

Instalando o tal "jaula" e os pacotes requeridos:

# aptitude install binutils debootstrap

Criando o local:

# mkdir /var/chroot #Tu podes dar o nome que quiser, eu coloquei chroot para fins didáticos.

Construindo o chroot:

# debootstrap wheezy /var/chroot

Deixe ele fazer os "parangolés" dele e aguarde terminar.

Configurando o /etc/fstab:

# vim /etc/fstab #Usei o Vim, tu uses teu editor de texto preferido.

Acrescente no final:

/dev  /var/chroot/dev auto bind 0 0  #Aconselho a usar a tecla tab entre os espaços.
/dev/pts  /var/chroot/dev/pts auto bind 0 0
/proc  /var/chroot/proc auto bind 0 0

Salve e saia. Reinicie:

# shutdown -r now

Entrando no chroot e prevenindo alguns daemons de serem executados sem permissão:

# chroot /var/chroot

# cat > ./usr/sbin/policy-rc.d << EOF # Vá dando enter após cada linha.
#!/bin/sh
exit 101
EOF


# chmod a+x ./usr/sbin/policy-rc.d

Vários pacotes dependem do ischroot, porém, o comando ischroot não reconhece que ele está sendo executado como chroot. Para consertar isso, vamos substituir o ischroot pelo comando /bin/true:

# dpkg-divert --divert /usr/bin/ischroot.debianutils --rename /usr/bin/ischroot
# ln -s /bin/true /usr/bin/ischroot # criando o link simbólico.

Instalando alguns pacotes necessários:

# aptitude install vim vim-doc #Opcional; lembre-se que estamos dentro do chroot e que é praticamente um sistema dentro do outro, então teremos que instalar novamente os pacotes que queremos; porém, é boa prática instalar somente os pacotes necessários para não quebrar a segurança.

# aptitude install locate less #Opcional, mas é interessante ter o locate e o less instalados.

# aptitude install locales #O locales se faz necessário para ajustar as configurações de encode.

# locale-gen pt_BR pt_BR.UTF-8 en_US en_US.UTF-8 #Gerando o encode.

# dpkg-reconfigure locales #Configurando.

Na janela que aparecer, usando a barra de espaços marque: pt_BR, pt_BR.UTF-8, en_US, en_US.UTF-8. No locale predefinido, marque: pt_BR.UTF-8. Use as setas de direção e a tecla Tab.

Entrando no arquivo /root/.bashrc e mudando o prompt de comando para saber quando se está no terminal do chroot e evitar confusão:

# vim /root/.bashrc

Adicione a seguinte linha ao final do arquivo:

export PS1='chroot:\h:\w:$  '  #onde chroot tu coloca o que tu quiser; deixe um espaço em branco entre $ e o último apóstrofo.

Salvar e sair do arquivo. Saindo do chroot:

# exit

Entrando no chroot para verificar a mudança ocorrida no prompt:

# chroot /var/chroot

Mudando a senha de root do chroot:

# passwd root

Configurando o /etc/fastab no chroot:

# vim /etc/fstab

Adicione a seguinte linha:

none /dev/pts devpts defaults 0 0  #Novamente use a tecla tab.

Salvar e sair. Verificando:

# mount -a

Deverá aparecer:

  mount: according to mtab, devpts is already mounted on /dev/pts

E assim, finalizamos a contento a instalação do chroot. Aconselho a acrescentar no /etc/apt/sources.list do chroot os mesmos repositórios do sistema real.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. chroot
   3. PostgreSQL
   4. Apache 2
   5. PHP 5
   6. Conclusão
Outros artigos deste autor

Configuração do sistema, DHCP, compartilhamento e DNS no Debian Squeeze

Problema no GRUB no Debian Squeeze 6.0.7 [Resolvido]

Permissões do Linux

Manual traduzido do Squid

Manual do IPtables - Comentários e sugestões de regras

Leitura recomendada

Gerando arquivos PDF em modo texto

Usando OpenBSD como desktop

Dual-boot: instalando o Windows depois do Linux

5 coisas que todo aluno de Sistemas de Informação deveria saber (e fazer)...

Ícones no Fluxbox, Openbox e Blackbox

  
Comentários
[1] Comentário enviado por danniel-lara em 11/11/2014 - 08:18h

Parabéns muito bom o artigo
principalmente a parte do chroot

[2] Comentário enviado por Buckminster em 11/11/2014 - 13:38h


[1] Comentário enviado por danniel-lara em 11/11/2014 - 08:18h:

Parabéns muito bom o artigo
principalmente a parte do chroot


Obrigado conterrâneo.

[3] Comentário enviado por Tacioandrade em 14/11/2014 - 00:00h

Amigo uma duvida sobre o chroot, gostaria de instalar o chroot apenas para alguns usuários do sistema, para que ao invés do ftp o meu cliente possa enviar os arquivos via sftp para seu /home/usuário.

No seu caso o /var/chroot/dev por exemplo vai ser usado por todos os usuários do sistema que logarem via ssh como o /dev padrão, seria isso?


Agradeço desde já. =)

[4] Comentário enviado por Buckminster em 14/11/2014 - 06:48h


[3] Comentário enviado por Tacioandrade em 14/11/2014 - 00:00h:

Amigo uma duvida sobre o chroot, gostaria de instalar o chroot apenas para alguns usuários do sistema, para que ao invés do ftp o meu cliente possa enviar os arquivos via sftp para seu /home/usuário.

No seu caso o /var/chroot/dev por exemplo vai ser usado por todos os usuários do sistema que logarem via ssh como o /dev padrão, seria isso?


Agradeço desde já. =)


Sim. No artigo o chroot encapsula toda instalação que for colocada dentro dele.

Para o que tu quer fazer teria que criar o usuário dentro do chroot. Veja os links abaixo para te dar uma idéia:

http://www.thegeekstuff.com/2012/03/chroot-sftp-setup

https://wiki.archlinux.org/index.php/SFTP_chroot

http://fabricafiles.blogspot.com.br/2010/04/vsftpd-com-usuarios-em-chroot.html

[5] Comentário enviado por Tacioandrade em 14/11/2014 - 13:41h


[4] Comentário enviado por buckminster em 14/11/2014 - 06:48h:


[3] Comentário enviado por Tacioandrade em 14/11/2014 - 00:00h:

Amigo uma duvida sobre o chroot, gostaria de instalar o chroot apenas para alguns usuários do sistema, para que ao invés do ftp o meu cliente possa enviar os arquivos via sftp para seu /home/usuário.

No seu caso o /var/chroot/dev por exemplo vai ser usado por todos os usuários do sistema que logarem via ssh como o /dev padrão, seria isso?


Agradeço desde já. =)

Sim. No artigo o chroot encapsula toda instalação que for colocada dentro dele.

Para o que tu quer fazer teria que criar o usuário dentro do chroot. Veja os links abaixo para te dar uma idéia:

http://www.thegeekstuff.com/2012/03/chroot-sftp-setup

https://wiki.archlinux.org/index.php/SFTP_chroot

http://fabricafiles.blogspot.com.br/2010/04/vsftpd-com-usuarios-em-chroot.html


Perfeito cara era exatamente isso que eu queria. =D No caso pensei em dar um ssh básico inicialmente com o nano, ls, etc para meus "clientes", porem olhando isso vi que poderia abrir falhas de segurança, como por exemplo poder para que o usuário usasse algum exploit para subir de permissões e quem sabe danificar o servidor.

Obrigado mesmo pelos tutoriais ajudará demais.

PS: Estou montando um mini curso para o evento de nginx com múltiplos domínios + SFTP + Fail2Ban, assim que terminar farei um tutorial e colocarei aqui no Viva o Linux. =D

[6] Comentário enviado por Buckminster em 15/11/2014 - 23:51h

Tacioandrade;

de nada.

Será bem vindo teu tutorial.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts