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.