NFsec Logo

Instalacja serwera httpd apache w środowisku chroot() – Ubuntu 16.04 LTS Server

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

Kategorie K a t e g o r i e : Administracja, Bezpieczeństwo

Tagi T a g i : , , , , , ,

Komentowanie tego wpisu jest zablokowane.