Protokół HTTP (1)

Transkrypt

Protokół HTTP (1)
Protokół HTTP (1)
I) Wprowadzenie
Celem ćwiczenia jest zapoznanie z protokołem HTTP. Ćwiczenie obejmuje takie zagadnienia jak:
a) instalację i konfigurację serwera HTTP (Apache2),
b) podstawowe metody, komunikaty i błędy protokołu HTTP,
c) uwierzytelnianie dostępu i bezpieczeństwo,
d) mechanizm cache przeglądarki http.
W ramach ćwiczenia używany będzie serwer HTTP Apache - najczęściej stosowane do tego celu
oprogramowanie.
Pomocą przy wykonywaniu zadań służyć może dokumentacja dostępna w systemie (strony
podręcznika systemowego: apache2, htpasswd) oraz dokumentacja w Internecie, np.:
http://httpd.apache.org/docs/2.2/.
Do wykonania ćwiczenia wystarczy pojedyncza maszyna wirtualna połączona siecią
skonfigurowaną w trybie host-only oraz przeglądarka internetowa natywnego systemu Windows
i połączenie z Internetem.
II) Użyte narzędzia:
Apache2 – serwer HTTP
apt-get – manager pakietów
Mozilla Firefox – przeglądarka internetowa
Wireshark – analizator ruchu
ping - narzędzie diagnostyczne: implementacja ICMP Echo i ICMP Reply
dhclient - klient protokołu DHCP dostępny w systemie GNU/Linux.3.
III) Kolejność działań
1.Instalacja serwera HTTP Apache2
a) Używając narzędzia apt-get zainstaluj i uruchom serwer Apache2.
Wskazówki:
- Pamiętaj o aktualizacji pliku /etc/apt/sources.list,
- Użyj polecenie apt-get install apache2 (do instalacji),
- Używaj poleceń /etc/init.d/apache2 start oraz /etc/init.d/apache2 restart
(do startu/restartu serwera HTTP).
b) Sprawdź poprawność instalacji łącząc sie za pomocą przeglądarki w systemie natywnym
z domyślną stroną stworzoną na serwerze podczas instalacji (tj. ze stroną z komunikatem
„It works”) .
c) Wskaż w systemie lokalizację instalacji serwera Apache2 oraz lokalizację katalogu
nadrzędnego tego serwera. W którym pliku konfiguracyjnym ta informacja jest zapisana? Wskaż
odpowiednią dyrektywę w tym pliku.
2) Podstawowe metody, komunikaty i błędy HTTP
a) Przy pomocy analizatora ruchu Wireshark zidentyfikuj komunikaty HTTP: GET i POST oraz
zapoznaj się z ich budową. Wykorzystaj do tego przeglądarkę Firefox łącząc się zarówno ze
skonfigurowanym serwerem apache2 jak i ze dowolną stroną zawierającą formularz.
Wskazówka: wykorzystać formularz na stronie zawierając takowy w celu przetestowania metody
POST.
W szczególności:
- Zidentyfikuj pary powiązanych komunikatów request-response.
- Zidentyfikuj numery wykorzystywanych portów po stronie klienta i serwera HTTP.
- Przeanalizuj składnię użycia danej metody oraz składnię odpowiedzi. Prześledź pola
komunikatów żądania i odpowiedzi.
- Zlokalizuj w przesyłanych pakietach parametry GET a jak POST. Do czego służą GET i POST?
- W obrębie odpowiedzi serwera wskaż nagłówek HTML oraz nagłówek HTTP .
- Które części odpowiedzi serwera informują o wyniku użycia metod typu request?
Wskazówka: Poleca się korzystanie z opcji Wiresharka Follow TCP flow oraz Apply as filter
podczas analizy.
b) Wygeneruj i zidentyfikuj przy pomocy analizatora Wireshark komunikaty o błędach HTTP.
- Jaka dokładność informacji o numerze kod statusu (ang. status code) odpowiedzi serwera
wystarczy do określenia zasadniczego wyniku operacji (pozytywny/negatywny)?
- Jaki numer kodu sygnalizuje brak żądanej strony WWW?
c) Korzystając z dostępnej dokumentacji pliku konfiguracyjnego zmień adres e-mail
administratora serwera oraz skonfiguruj plik konfiguracyjny tak, aby w sytuacji gdy serwer nie
jest w stanie zrealizować zadania (np. z powodu braku zadanego pliku), zwrócona została strona
z kodem błędu wraz z linkiem wskazującym na e-mail administratora. Przetestuj działanie tego
mechanizmu.
Przykładowy wynik:
3) Uwierzytelnianie dostępu i bezpieczeństwo
a) Dla strony „It works" skonfiguruj i przetestuj uwierzytelniony dostęp typu auth_basic.
Wskazówki:
- Skonfiguruj odpowiednio plik: /etc/Apache2/sites-enabled/000default (np. korzystając z
http://www.googlux.com/basic-digest-auth.html).
- Utwórz plik z hasłami, np. /var/www/apache2-password (użyj polecenia htpasswd, zapoznaj się
ze stroną podręcznika systemowego htpasswd).
- Przeprowadź restart serwera:
(poleceniem /etc/init.d/apache2 restart albo /etc/init.d/apache2 force-reload).
b) Przy pomocy analizatora Wireshark prześledź uwierzytelniane połączenie. W jakiej formie
przesyłane jest hasło?
c) Dla chętnych: Skonfiguruj autoryzację typu auth_digest o podobnej funkcjonalności jak
auth_basic, ale umożliwiającą wysyłanie haseł w formie zaszyfrowanej.
Przykładowy tutorial: http://www.googlux.com/basic-digest-auth.html
4) Mechanizm cache przeglądarki
a) Konfigurując ustawienia przeglądarki Firefox, przeanalizuj działanie mechanizmu cache w
protokole HTTP. Na przykładzie strony zawierającej grafiki przy pomocy analizatora Wireshark
przeanalizuj wymianę komunikatów w scenariuszu z włączonym i wyłączonym mechanizmem
cache. Konfigurację przeprowadź przy pomocy polecenia about:config (wpisanego w polu
adresu) oraz ustawieniu pola network.http.use-cache.
Wskazówka: Skrót Ctrl-F5 wymusza odświeżanie strony
W szczególności:
- Zaobserwuj przesyłanie plików graficznych w obu scenariuszach
- Które pola nagłówkowe w komunikatach request i które pola w komunikatach response są
odpowiedzialne za sterowanie mechanizmem cache? Przeanalizuj ich ustawienia w obu
scenariuszach.
- Jaki numer kodu sygnalizuje brak modyfikacji jednostki treści HTTP (np. pliku graficznego, itp.)?
- Jakie pole nagłówka odpowiedzi HTTP decyduje o wyłączeniu danej jednostki (ang. entity)
treści HTTP ze zbioru jednostek objętych mechanizmem typu cache?
- Kończąc pracę ustaw parametr network.http.use-cache na true.
Autorzy:
dr Paweł Misiorek,
mgr inż. Maciej Urbański,
dr inż. Andrzej Szwabe.

Podobne dokumenty