Ustawienia konfiguracyjne httpd
Chociaż cała konfiguracja httpd może być zapisana w jednym pliku, osoby zarządzające systemem operacyjnym zazwyczaj używają dyrektywy Include, aby rozdzielić konfigurację na wiele plików i katalogów. Taka architektura upraszcza zarządzanie i bardziej nadaje się do automatyzacji. Jak łatwo przewidzieć, rozmieszczenie plików konfiguracyjnych różni się w zależności od systemu. Tabela 19.6 zawiera listę domyślnych ustawień konfiguracji Apache’a dla każdej z naszych przykładowych platform.

Kiedy httpd zostanie uruchomiony, analizuje główny plik konfiguracyjny (zazwyczaj httpd.conf) i wczytuje wszelkie dodatkowe pliki, do których odwołują się dyrektywy Include.
Domyślny plik httpd.conf jest obszernie skomentowany i może posłużyć jako podręczny przewodnik. Opcje konfiguracyjne w tym pliku można podzielić na trzy kategorie:  Ustawienia globalne, takie jak ścieżka dostępu do głównego katalogu serwera httpd, uprawnienia uruchomieniowe (użytkownik i grupa), moduły do aktywacji oraz interfejsy i porty sieciowe do nasłuchiwania. Sekcje VirtualHost, które definiują sposób świadczenia usług dla danej domeny (zazwyczaj delegowane do podkatalogów wskazanych dyrektywami Include w głównym pliku konfiguracyjnym).
Instrukcje dotyczące odpowiedzi na żądania, które nie pasują do żadnej definicji w sekcjach VirtualHost. Dla wielu administratorów globalne ustawienia będą zadowalające, wystarczy jedynie zarządzać poszczególnymi sekcjami VirtualHost. Moduły funkcjonują niezależnie od httpd i często mają własne opcje konfiguracyjne. Większość dostawców systemów operacyjnych decyduje się podzielenie konfiguracji modułów na podkatalogi. Debian i Ubuntu mają specyficzne podejście do konfiguracji Apache’a. Struktura podkatalogów, plików konfiguracyjnych i dowiązań symbolicznych tworzy bardziej elastyczny system zarządzania serwerem, przynajmniej w teorii. Wyjaśnia to rysunek 19.6. Główny plik, apache2.conf, zawiera dyrektywy wczytujące wszystkie pliki z podkatalogów *-enabled w katalogu /etc/apache2. Pliki te są w rzeczywistości dowiązaniami symbolicznymi do plików w podkatalogach *-available. Dla każdego zestawu podkatalogów dostępna jest para poleceń konfiguracyjnych, które tworzą i usuwają dowiązania symboliczne.

Konfigurowanie hostów wirtualnych
Lwia część konfiguracji httpd składa się z definicji wirtualnych hostów. Dobrym pomysłem jest utworzenie osobnego pliku dla każdej witryny. Po nadejściu żądania HTTP serwer httpd na podstawie nagłówka HTTP Host i portu sieciowego wybiera odpowiedni host wirtualny. Następnie dopasowuje część ścieżki żądanego adresu URL do dyrektywy Files, Directory lub Location, aby określić, w jaki sposób podawana będzie żądana treść. Ten proces odwzorowywania znany jest jako trasowanie żądania. Poniższy przykład przedstawia konfigurację HTTP i HTTTPS dla domeny admin.com.

<VirtualHost *:80>
ServerName admin.com
ServerAlias www.admin.com
ServerAlias ulsah.admin.com
Redirect / https://admin.com/
</VirtualHost>

<VirtualHost *:443>
ServerName admin.com
ServerAlias www.admin.com
ServerAlias ulsah.admin.com
DocumentRoot /var/www/admin.com/
CustomLog /var/log/apache2/admin_com_access combined
ErrorLog /var/log/apache2/admin_com_error

SSLEngine on
SSLCertificateFile "/etc/ssl/certs/admin.com.crt"
SSLCertificateKeyFile "/etc/ssl/private/admin.com.key"

<Directory "/var/www/admin.com">
Require all granted
</Directory>

<Directory "/var/www/admin.com/photos">
Options +Indexes
</Directory>

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/(usah|lsah)$ /ulsah
</IfModule>

ExtendedStatus On

<Location /server-status>
SetHandler server-status
Require ip 10.0.10.10/32
</Location>

</VirtualHost>

Przykład ten właściwie nie wymaga wyjaśnień, ale warto zwrócić uwagę na kilka szczegółów: Pierwsza dyrektywa VirtualHost odpowiada na porcie 80. i przekierowuje wszystkie żądania HTTP kierowane do domen admin.com, www.admin.com i ulsah.admin.com tak, aby korzystały z HTTPS. Żądania kierowane do admin.com/photos otrzymają listę wszystkich plików w tym katalogu.  Żądania kierowane do /usah lub /lsah zostaną przepisane na /ulsah.

Podstawowe uwierzytelnianie HTTP
W podstawowym schemacie uwierzytelniania HTTP klient przesyła nazwę użytkownika i hasło zakodowane w Base64 w nagłówku HTTP Authorization. Jeśli użytkownik wpisze nazwę i hasło do adresu URL (np. https://użytkownik:hasło@www.admin.com/server-status), przeglądarka automatycznie zakoduje te wartości i prześle je w nagłówku Authorization. Nazwa użytkownika i hasło nie są szyfrowane, więc podstawowe uwierzytelnianie nie zapewnia poufności. Z tego względu można je bezpiecznie stosować tylko w połączeniu z HTTPS. Uwierzytelnianie podstawowe w Apache’u jest konfigurowane w blokach Location lub Directory. Przykładowo poniższa konfiguracja wymaga uwierzytelnienia w celu uzyskania dostępu do strony /server-status (najlepsze rozwiązanie) i ogranicza dostęp do podsieci:

<Location /server-status>
SetHandler server-status
Require ip 10.0.10.0/24
AuthType Basic
AuthName "Restricted"
AuthUserFile /var/www/.htpasswd
Require valid-user
</Location>

Zauważ, że informacje o koncie są przechowywane na zewnątrz pliku konfiguracyjnego.
Użyj polecenia htpasswd, aby utworzyć wpisy konta:

# htpasswd -c /var/www/.htpasswd ben
New password: <hasło>
Re-type new password: <hasło>
Adding password for user ben
# cat /var/www/.htpasswd
ben:$apr1$mPh0x0Cj$hfqMavkdHfVRVscE678Sp0
# chown www-data /var/www/.htpasswd # Ustawienie własności
# chmod 600 /var/www/.htpasswd # Ograniczenie uprawnień

Pliki haseł to zazwyczaj ukryte pliki o nazwie .htpasswd, ale można je nazwać dowolnie. Nawet jeśli hasła są szyfrowane, przydziel uprawnienia plikom .htpasswd tak, aby mogły być odczytywane tylko przez użytkownika przydzielonego dla serwera WWW. Ograniczy to atakującym możliwość oglądania nazw użytkowników i próby łamania haseł za pomocą oprogramowania.

1 KOMENTARZ

ZOSTAW ODPOWIEDŹ

Please enter your comment!
Please enter your name here