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: 23.291 ]

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

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

Debian + Postfix + MySQL + PostfixAdmin + MailScanner + Webmail + Quotas

Alta disponibilidade com Debian Lenny + Heartbeat + DRBD8 + OCFS2 + MONIT + LVS

IDS com Snort + Guardian + Debian Lenny

Bind9 slave em chroot no Debian Lenny

Leitura recomendada

Configurando um domínio pelo serviço ipturbo empresarial (Brasil Telecom)

Modem USB 3G largado na gaveta! Nãããõooo...

Acelerador de conexões dial-up para provedores de acesso

Básico do Apache no Debian

Servidor web com CentOS + Apache

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts