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

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

Gerenciando certificados A1 fornecidos pelo ICB-Brasil no navegador Chrome sobre Linux

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

Instalação Plone 2.5.5 com módulos customizados

Configurando proxy no shell

Configurando Subversion

Leitura recomendada

KDE em um PC "primitivo"

GoboLinux? Que distro é essa? (Parte 2 - Instalação)

Arch Linux - Instalação sem complicação

Squid configurado como proxy no Ubuntu Server

Pendrive MultiBoot com o Ventoy Não Funcionou? Tem Solução!

  
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