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

