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

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 proxy no shell

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

Configurando Subversion

Comando sudo - instalação e configuração

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

Leitura recomendada

Instalação do PAP (PostgreSL, Apache2 e PHP7) no Debian Jessie

Servidor de ICQ free no SuSE

Blackbox total - Instalado, configurado e personalizado

Asterisk - Instalação e configuração no Debian Lenny

Documentação de IPs usando o TIPP

  
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