Encapsulamento de Apache com chroot

E o chroot é um módulo para o apache, que possibilita a execução do apache em um ambiente encapsulado e seguro.

[ Hits: 18.792 ]

Por: Ricardo Brito do Nascimento em 28/08/2011 | Blog: http://brito.blog.incolume.com.br


Configurando apache e Referências



Configurando apache + mod_chroot

Crie os diretórios "conf.d" e "vhosts", no diretório do Apache, que dependendo da instalação é "/etc/httpd" ou "/etc/apache2".

# mkdir -pv [APACHE_DIR]/{conf.d,vhosts};

Crie os arquivos de configuração para o mod_chroot:

Para ambos (Debian-like e RedHat-like) em "/etc/apache2/conf.d/" ou "/etc/httpd/conf.d/"

# ./conf.d/vhosts.conf
#
# Load config files from the config directory to virtual hosts.
#
Include vhosts/*.conf


Para RedHat-like em "/etc/httpd/conf.d/":

#./conf.d/httpdjail.conf
LoadModule chroot_module modules/mod_chroot.so
LockFile /var/run/httpd.lock
CoreDumpDirectory /var/run
ScoreBoardFile /var/run/httpd.scoreboard
PidFile /var/run/httpd.pid
ChrootDir /httpdjail


Para Debian-like em "/etc/apache2/conf.d/":

#./conf.d/httpdjail.conf
LoadModule chroot_module modules/mod_chroot.so
LockFile /var/run/apache2.lock
CoreDumpDirectory /var/run
ScoreBoardFile /var/run/apache2.scoreboard
PidFile /var/run/apache2.pid
ChrootDir /httpdjail


A partir deste ponto o Apache já funcionará dentro do envolucro protegido. Entretanto completamente isolado do sistema operacional hospedeiro. Para ter algumas funcionalidades habilitadas faz-se necessário copiar os arquivos necessário para a jaula de encapsulamento.

Segue alguns dos arquivos necessários:

idiomas:

# cp -vap --parents /usr/lib/locale/{en,es,pt}* /httpdjail;
# cp -vap --parents /usr/share/locale/{en,es,pt}* /httpdjail;
# cp -vap --parents /etc/{mime.types,passwd} /httpdjail;

Arquivos compartilhados:

# cp -vap --parents /usr/share/apache2/ /httpdjail/

Configuração final

# ln -vs /httpdjail/var/run/httpd.pid /var/run/httpd.pid;
# cp -vap --parents /etc/apache2 /httpdjail;
# mv /etc/apache2 /etc/apache2.orig
# ln -vs /httpdjail/etc/apache2 /etc/apache2;
# ln -vs /usr/lib/apache2/modules/ /httpdjail/etc/apache2
# cd /httpdjail && ln -s . httpdjail;

Esta é somente para RedHat-like, no arquivo "/etc/init.d/httpd", faça uma cópia de segurança:

# cp -ap /etc/init.d/httpd /etc/init.d/httpd.original

No inicio do arquivo "/etc/init.d/httpd" insira:

if [ -f /etc/sysconfig/httpd ]; then
         . /etc/sysconfig/httpd
fi

ROOT=/httpdjail

# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}


E acrescente o link para o pid, na function stop:

stop() {
         [ ! -e /var/run/httpd.pid ] && /bin/ln -s $ROOT/var/run/httpd.pid /var/run/httpd.pid
         echo -n $"Stopping $prog: "


E também, na function reload:

reload() {
       [ ! -e /var/run/httpd.pid ] && /bin/ln -s $ROOT/var/run/httpd.pid /var/run/httpd.pid
   echo -n $"Reloading $prog: "


;)

Referências

Página anterior    

Páginas do artigo
   1. Introdução e Preparação do Ambiente
   2. Configurando apache e Referências
Outros artigos deste autor

Clonagem de Hardware Hotline em Software Livre

Configurando Subversion

Configurando proxy no shell

Proteção utilizando fail2ban contra ataques do tipo

Instalação Plone 2.5.5 com módulos customizados

Leitura recomendada

NoBreak SMS e GNU/Linux (FC5) - Parte 1 - Fazendo o Nobreak funcionar

Instalação e configuração do RT (Resquest Tracker)

Criando um mirror LVM nível 1

Configurando DNS (bind9) no Debian Sarge

Instalando e usando o Gentoo GNU/Linux

  
Comentários
[1] Comentário enviado por foxbit3r em 29/08/2011 - 14:30h

AI sim!
Isso sim que é um artigo bacana. Eu não cheguei a testar mas parabéns pela iniciativa.

[2] Comentário enviado por clebersoncs em 29/08/2011 - 14:53h

Parabéns pelo artigo.
Terei que montar novos servidores apache e vou usar esse recurso para melhorar a segurança do servidor.
Este artigo será minha principal fonte de referencia.

[3] Comentário enviado por dfsantos em 29/08/2011 - 15:25h

Show de bola.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts