Apache em chroot + MySQL + PHP + mod_security + mod_evasive + vsftpd + Fail2ban + Debian Squeeze

Aqui abordarei a implementação de um Apache trabalhando em modo chroot, dando suporte a PHP 5, MySQL, Fail2ban, mod_security, mod_evasive e vsftpd.

[ Hits: 20.297 ]

Por: Douglas Q. dos Santos em 07/12/2012 | Blog: http://wiki.douglasqsantos.com.br


Preparando o ambiente



Prepare o seu sistema com o seguinte script:
Para que não falte nenhum pacote ou configuração.

Vamos primeiro fazer um update de nossos repositórios e a atualização de todo o sistema:

# aptitude update && aptitude dist-upgrade -y

Agora vamos instalar o Apache, módulo de chroot e o debootstrap para montar a nossa jaula:

# aptitude install apache2 libapache2-mod-chroot debootstrap -y

Montando a nossa jaula:

# debootstrap squeeze /var/chroot http://ftp.br.debian.org/debian

Copiando a configuração do nosso sistema para a jaula:

# cp -a /etc/resolv.conf /var/chroot/etc/
# cp -a /etc/hosts /var/chroot/etc/
# cp -a /etc/mime.types /var/chroot/etc/
# cp -a /usr/share/zoneinfo/America/Sao_Paulo /var/chroot/usr/share/zoneinfo/America
# cp -a /etc/adjtime /var/chroot/etc/


Instalando o Apache dentro da jaula e o locales, pois às vezes temos problemas com idioma, daí já podemos corrigir este problema:

# chroot /var/chroot apt-get update
# chroot /var/chroot aptitude dist-upgrade -y
# chroot /var/chroot apt-get install apache2.2-common apache2-utils locales -y


Acertando o idioma da jaula:

# sed -i 's/# pt_BR.UTF-8 UTF-8/pt_BR.UTF-8 UTF-8/' /var/chroot/etc/locale.gen
# chroot /var/chroot locale-gen


Ajustando o PID do Apache por causa de nossa jaula:

# mv /var/run/apache2.pid /var/chroot/var/run/apache2.pid
# ln -s /var/chroot/var/run/apache2.pid /var/run/apache2.pid


Configurando o Apache no arquivo /etc/apache2/httpd.conf:

# vim /etc/apache2/httpd.conf

PidFile /var/run/apache2.pid
ChrootDir /var/chroot/

Copiando os sites para a jaula (caso já tenha algum):

# cp -Ra /var/www/* /var/chroot/var/www/

Vamos testar o acesso à nossa jaula, vamos editar o index.html da nossa jaula e colocar um valor diferente do padrão para termos certeza que o Apache está nos mostrando os dados da jaula:

# echo "Teste de chroot no Apache " > /var/chroot/var/www/index.html

Reiniciar o Apache:

# /etc/init.d/apache2 restart

Vamos agora acessar o nosso site:

http://ip_servidor

Vai ter que aparecer a mensagem de teste que colocamos na jaula.

Podemos acompanhar os erros do Apache como exemplo abaixo:

# tail -f /var/log/apache2/error.log
[Fri Jun 24 09:24:23 2011] [notice] Apache/2.2.16 (Debian) configured -- resuming normal operations
[Fri Jun 24 09:35:28 2011] [notice] caught SIGTERM, shutting down
[Fri Jun 24 09:35:29 2011] [notice] Apache/2.2.16 (Debian) configured -- resuming normal operations
[Fri Jun 24 09:39:09 2011] [notice] caught SIGTERM, shutting down
[Fri Jun 24 09:39:10 2011] [notice] Apache/2.2.16 (Debian) configured -- resuming normal operations


A primeira parte já esta OK, o Apache está trabalhando em modo chroot, agora temos que fazer o PHP 5 e o MySQL trabalharem com ele, e vamos também configurar mais alguns módulos para a segurança de nosso Apache.

    Próxima página

Páginas do artigo
   1. Preparando o ambiente
   2. Adicionando suporte ao PHP, suporte ao mod_evasive e ao mod_security
   3. Adicionando suporte ao MySQL e configurando o vsftpd
   4. Configurando o Fail2ban e ajustando o Apache
Outros artigos deste autor

IDS com Snort + Guardian + Debian Lenny

Servidor Jabber com Openfire + MySQL + Debian Lenny

Bonding para Heartbeat + Bonding para DRBD + OCFS2 + Debian Squeeze

Um pouco sobre IPtables

Bind9 em chroot no Debian Lenny

Leitura recomendada

Configuração do Speedy Home da Telefônica (ou Velox)

Gravando conversas no Skype do Linux

Virtual Host com Apache + SSL

Resolvendo problema de conexão a internet ADSL (Velox)

Endereço fixo para o seu IP dinâmico

  
Comentários
[1] Comentário enviado por LeonardoGoretti em 14/12/2012 - 08:47h

Muito Bom....So o script que não ta lá!!

[2] Comentário enviado por douglas_dksh em 14/12/2012 - 10:24h

Bom dia,

Desculpe o problema é que mudei o seu servidor para outra empresa e estou tento problemas com os scripts com isso estou disponibilizando ele em

http://www.douglas.wiki.br/doku.php?id=confinicialsqueeze

:D

[3] Comentário enviado por cavanso em 27/02/2013 - 07:29h

Douglas, como posso fazer por exemplo, tenho um servidor web, quero liberar o ftp para o webdesigner publicar alterações no site, instalei o ftp, porém toda vez que ele publica as permissões ficam usuario.usuario, com isto ocorre erros quando vamos abrir a pagina, ae toda vez tenho que da um chown -Rf usuario.www-data pasta/ , como posso contornar isto ? Tem como o vsftp já atribuir a permissão desta forma ?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts