Desde abril de 1996 o servidor Web Apache é o servidor web mais conhecido no mundo.
O Apache HTTP Server ("httpd ou apache2") é um projeto da Apache Software Foundation, que pode ser encontrado na URL http://httpd.apache.org/, e utilizado livremente.
E o chroot é um módulo para o apache, que possibilita a execução do apache em um ambiente encapsulado e seguro.
O módulo chroot está incluído nos repositórios das distribuições FreeBSD, DarwinPorts, PLD Linux, Gentoo Linux, Debian e NetBSD. Nas outras distribuições os fontes podem ser baixados em: http://core.segfault.pl/~hobbit/mod_chroot/dist, e a mais recente no momento da criação deste artigo foi http://core.segfault.pl/~hobbit/mod_chroot/dist/mod_chroot-0.5.tar.gz.
Criando o volume, com 100M:
Criando os diretórios necessários:
Editando /etc/fstab
Instalando o modulo chroot no Apache através dos fontes no Debian-Like:
Instalando o modulo chroot no Apache através dos fontes no RedHat-Like:
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.
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/'
para RedHat-like em '/etc/httpd/conf.d/':
para Debian-like em '/etc/apache2/conf.d/'
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:
Arquivos compartilhados:
Configuração final:
debian-like:
redhat-like:
e está somente para RedHat-like, no arquivo /etc/init.d/httpd, faça uma cópia de segurança:
No inicio do arquivo '/etc/init.d/httpd' insira:
E acrescente o link para o pid, na function stop
E também, na function reload
Versão PDF
;)
Referências:
http://core.segfault.pl/~hobbit/mod_chroot
http://httpd.apache.org
http://www.debian.org
https://wiki.ubuntu.com/ModChroot
http://www.howtoforge.com/chrooting-apache2-mod-chroot-debian-etch
http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-apache-env.en.html
http://core.segfault.pl/~hobbit/mod_chroot/
http://www.cyberciti.biz/tips/chroot-apache-under-rhel-fedora-centos-linux.html
O Apache HTTP Server ("httpd ou apache2") é um projeto da Apache Software Foundation, que pode ser encontrado na URL http://httpd.apache.org/, e utilizado livremente.
E o chroot é um módulo para o apache, que possibilita a execução do apache em um ambiente encapsulado e seguro.
O módulo chroot está incluído nos repositórios das distribuições FreeBSD, DarwinPorts, PLD Linux, Gentoo Linux, Debian e NetBSD. Nas outras distribuições os fontes podem ser baixados em: http://core.segfault.pl/~hobbit/mod_chroot/dist, e a mais recente no momento da criação deste artigo foi http://core.segfault.pl/~hobbit/mod_chroot/dist/mod_chroot-0.5.tar.gz.
Criando o volume, com 100M:
mkdir -vp /mnt/vm /httpdjail;
dd if=/dev/zero of=/mnt/vm/httpdjail.img bs=1k seek=100k count=1;
mke2fs /mnt/vm/httpdjail.img;
mount -o loop,noexec,nodev,nosuid -t ext4 /mnt/vm/httpdjail.img /httpdjail;
Criando os diretórios necessários:
mkdir -vp /httpdjail/var/www/html /httpdjail/{tmp,home} /httpdjail/var/{run,www,log} /httpdjail/var/run/{apache2,httpd}; ou
mkdir -vp /httpdjail/var/{run,www};
chown -R root.root /httpdjail/var/run;
chmod 1777 /httpdjail/tmp;
Editando /etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
/mnt/vm/httpdjail.img /httpdjail ext4 loop,nodev,noexec,nosuid 0 0
Instalando o modulo chroot no Apache através dos fontes no Debian-Like:
aptitude install apache2-mpm-prefork apache2-threaded-dev;
wget http://core.segfault.pl/~hobbit/mod_chroot/dist/mod_chroot-0.5.tar.gz
tar -zxvf mod_chroot-0.5.tar.gz -C /tmp
apxs2 -cia /tmp/mod_chroot-0.5/mod_chroot.c
Instalação repositório Debian:
http://www.howtoforge.com/chrooting-apache2-mod-chroot-debian-etch
Instalação repositório Ubuntu:
https://wiki.ubuntu.com/ModChroot
Instalando o modulo chroot no Apache através dos fontes no RedHat-Like:
#yum install httpd-devel;
#wget http://core.segfault.pl/~hobbit/mod_chroot/dist/mod_chroot-0.5.tar.gz
#tar -zxvf mod_chroot-0.5.tar.gz -C /tmp
#apxs -cia /tmp/mod_chroot-0.5/mod_chroot.c
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:
debian-like:
ln -vs /httpdjail/var/run/apache2.pid /var/run/apache2.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;
redhat-like:
ln -vs /httpdjail/var/run/httpd.pid /var/run/httpd.pid;
cp -vap --parents /etc/httpd /httpdjail;
mv /etc/httpd /etc/httpd.orig
ln -fvs /var/log/httpd logs /httpdjail/etc/httpd/logs
ln -fvs /usr/lib64/httpd/modules /httpdjail/etc/httpd/modules
cd /httpdjail && ln -s . httpdjail;
e está 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: "
Versão PDF
;)
Referências:
http://core.segfault.pl/~hobbit/mod_chroot
http://httpd.apache.org
http://www.debian.org
https://wiki.ubuntu.com/ModChroot
http://www.howtoforge.com/chrooting-apache2-mod-chroot-debian-etch
http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-apache-env.en.html
http://core.segfault.pl/~hobbit/mod_chroot/
http://www.cyberciti.biz/tips/chroot-apache-under-rhel-fedora-centos-linux.html
Comentários