Instalacja serwera httpd apache w środowisku chroot() – Ubuntu 16.04 LTS Server
Napisał: Patryk Krawaczyński
16/08/2016 w Administracja, Bezpieczeństwo Brak komentarzy. (artykuł nr 540, ilość słów: 310)
T
a krótka instrukcja poruszy temat skonfigurowania serwera httpd apache (2.4) w środowisku chroot()
pod katalogiem /chroot. Na początek w systemie należy zainstalować takie pakiety jak: apache2 oraz libapache2-mod-php. Pierwszy z dwóch zapewni nam oprogramowanie httpd samo w sobie podczas, gdy libapache2-mod-php
wsparcie dla interpretera PHP w wersji 7.0.8:
apt-get install -y apache2 apt-get install -y libapache2-mod-php
Funkcję chroot(8)
oferuje moduł unixd, który w wersji apache 2.4.18 dla Ubuntu 16.04 jest już wkompilowany statycznie i nie trzeba go aktywować poleceniem a2enmod
. Do osadzenia serwera użyjemy katalogu /chroot
(zgodnie z sztuką powinien znajdować się na osobnej partycji z odpowiednimi flagami montowania), w którym będzie znajdował się katalog www
służący do serwowania strony:
mkdir -p /chroot/www touch /chroot/www/index.php chown -R www-data:www-data /chroot/www
Następnie tworzymy plik konfiguracyjny chroot.conf
dla mod_unixd i aktywujemy go w serwerze:
touch /etc/apache2/conf-avaiable/chroot.conf
<IfModule mod_unixd.c> ChrootDir /chroot User www-data Group www-data </IfModule>
a2enconf chroot
W pliku /etc/apache2/apache2.conf
musimy zmienić ścieżkę dla konfiguracji katalogu z /var/www/ na /www/:
<Directory /www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
Identycznie musimy postąpić z DocumentRoot dla standardowego hosta wirtualnego /etc/apache2/sites-enabled/000-default.conf
i zmienić ścieżkę na /www. Ostatnim krokiem jest restart serwera:
service apache2 restart
Działanie chroot()
możemy sprawdzić poprzez umieszczenie w pliku index.php kodu:
<?php $var = file_get_contents('/etc/hosts'); echo 'Plik /etc/hosts: <br />' . $var; ?>
I wywołanie głównego adresu naszego serwera. W pliku /var/log/apache2/error.log
powinniśmy zaobserwować następujący błąd:
[Tue Aug 16 00:02:40.464033 2016] [:error] [pid 3353] [client 10.10.1.1:50746] PHP Warning: file_get_contents(/etc/hosts): failed to open stream: No such file or directory in /www/index.php on line 2
a na stronie przeglądarki zawartość pliku /etc/hosts
nigdy nie powinna się ukazać.
Więcej informacji: Chroot w praktyce, Chrooting Apache 2.4 with mod_unixd
- Instalacja serwera bind w środowisku chroot() – Ubuntu 14.04 LTS Server
- Serwer httpd bez uprawnień root na porcie 80
- Budowa i instalacja pakietów Apache 2.4.2 na CentOS 6.2
- OPTIONSbleed – HTTP OPTIONS może prowadzić do wycieku pamięci serwera Apache
- Backportowanie patchy z RHEL 6 do CentOS 6 na przykładzie httpd 2.2.15