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

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

Configurando Subversion

Conexão com chaves assimétricas sem uso de senha em servidor sshd

Clonagem de Hardware Hotline em Software Livre

Instalação Plone 2.5.5 com módulos customizados

Vim com corretor ortográfico em pt_BR/es_ES/en_US

Leitura recomendada

Instalando e configurando o Nagios com e sem MySQL

Como colocar um programa para inicializar no boot

Instalando Apache Tomcat em Linux 2.6

Configurando quota de disco no Fedora (fácil e prático)

Otimizando o KDE com o Slackbuild

  
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