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.276 ]

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

Instalando e Configurando o pgAgent no Linux (pgAdmin e PostgreSQL)

VMD no Debian - Instalação e configuração

Compilação do Squid 3 no Debian Wheezy

IPv6, DNSv6 e DHCPv6

Montagem de Cluster

Leitura recomendada

Criando um mirror do Conectiva para uma rede interna

obshutdown, Shutdown Menu para OpenBox

Tunning do KDM theme

Google Chrome OS

GNOME Slacky 2.20.3

  
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