This is an old revision of the document!


Laborator 03: Servicii web

Demo

Vom investiga mesajele HTTP dintre un client si un server web. Ca tool-uri vom folosi Wireshark si Firebug. Vom investiga atat conexiuni HTTP, cat si HTTPS.

Exerciții

Instalare Apache si configurari de baza

  • Instalati serverul Apache (pachetul apache2).
  • Apoi, verificati functionarea acestuia folosind un browser web. Va veti conecta pe URL-ul http://localhost

Site default

  • Asa cum ati observat anterior, serverul Apache serveste in mod implicit un fisier HTML.
  • Gasiti fisierul index.html servit de server-ul Apache in ierarhia de fisiere.
    • Hint: Configuratia site-ului default se afla in /etc/apache2/sites-available/default
    • Hint: Observati directiva DocumentRoot
  • Modificati fisierul gasit anterior astfel incat sa contina mesajul “GSR web services”.

Listening ports

  • Pe ce port asculta in mod implicit serverul Apache? Investigati folosind netstat.
  • Modificati portul astfel incat Apache sa asculte pe 8080.
    • Hint: /etc/apache2/ports.conf
    • Hint: Nu uitati sa modificati si NameVirtualHost
  • Verificati folosind netstat, apoi un browser.
  • Refaceti configuratia anterioara.

Alti clienti HTTP

Desi in majoritatea cazurilor folosim un browser in mod grafic pentru a naviga, putem folosi si clienti in mod text (interactiv sau non-interactiv). Acestia sunt utili mai ales in automatizare.

wget

Un astfel de client in mod text, non-interactiv, este wget.

  • Folositi wget pentru a descarca fisierul index.html servit de Apache. Ca parametru pentru wget veti folosi acelasi URL ca si in browser.
Descarcare recursiva
  • Creati urmatoarea ierarhie de fisiere in /var/www/html:
test/
|-- docs/
|   |-- README.txt
|   |-- INSTALL.txt
|-- scripts/
|   |-- setup.sh
|   `-- install.sh
`-- test.html
  • Folosind un browser in mod grafic, verificati ca puteti naviga prin acea ierarhie.
  • Folosind wget, descarcati in mod recursiv tot ce este sub /var/www/html/test.
    • Hint: man wget, /recursive
    • Specificati sa NU fie descarcate fisierele ale caror nume incepe cu index.html. Hint: man wget, /reject.
Autentificare folosind wget
  • Incercati din nou, de data aceasta folosind autentificare HTTP. Pentru aceasta, va trebui:
    • Sa specificati userul cu care doriti sa va autentificati. Hint: man wget, /user.
    • Sa faceti ca wget sa va ceara parola. Hint: man wget, /ask-password.

netcat (nc)

De multe ori, in debugging, este util sa observati sau sa interveniti direct asupra datelor schimbate intre client si server. Un utilitar care ne ajuta in acest scop este netcat (comanda nc).

Acesta deschide o conexiune catre un host, pe un port specificat (TCP sau UDP), apoi va trimite catre server toate datele primite pe standard input.

  • Folosind nc, conectati-va pe localhost, portul 80.
  • Apoi, introduceti manual o cerere HTTP pentru fisierul index.html. Veti folosi protocolul HTTP 1.0:
    • GET /index.html HTTP/1.0
    • Incheiati cererea cu secventa \r\n\r\n (doua Enter-uri).
    • Pagina primita este cea corecta?
  • Realizati acelasi lucru, dar fara a mai introduce manual cererea.
    • Hint: echo, pipe

Userdir

Server-ul Apache permite utilizatorilor sa serveasca fisiere din propriile directoare home. Fisierele trebuie stocate in /home/username/public_html, iar acestea vor fi accesate folosind un URL de forma http://server/~username.

  • Creati utilizatorul gsr.
  • Creati directorul public_html si mai multe fisiere in interiorul acestuia.
  • Incercati sa accesati fisierele folosind URL-ul ce contine ~gsr. Este posibil?
  • Pentru a putea accesa astfel de directoare, trebuie activat modulul Apache userdir.
    • Activati modulul userdir. Hint: a2enmod
    • Incercati din nou sa accesati URL-ul.

PHP

  • Creati in /var/www/html un fisier cu numele index.php care sa contina un cod PHP simplu (de exemplu, sa afiseze un mesaj):
<?php echo "Hello, world!"; ?>
  • Apoi, dintr-un browser in mod grafic incercati sa accesati fisierul index.php de pe server. Ce observati? Script-ul PHP se ruleaza pe server? De ce?
  • Instalati pachetul corespunzator modulului PHP pentru Apache (libapache2-mod-php5).
  • Verificati ca modulul a fost activat. Hint: /etc/apache2/mods-enabled.
  • Accesati din nou fisierul index.php. Ce observati acum?

Autentificare basic

In anumite cazuri, este util sa restrictionam accesul catre anumite directoare ale site-ului. O modalitate este folosind feature-ul de autentificare din protocolul HTTP.

  • Creati subdirectorul secret in /var/www/html.
  • In acest subdirector, creati un fisier cu numele .htaccess, care sa specifice ca se doreste autentificare:
AuthName "restricted"
AuthType Basic
AuthUserFile /usr/local/my.htpasswd
Require valid-user
  • Apoi, folosind comanda htpasswd, creati un user bob in fisierul /usr/local/my.htpasswd
  • In configuratia site-ului default, setati directiva AllowOverride la All
  • Restartati serviciul Apache si verificati ca incercand sa accesati, din browser, directorul secret, se cere autentificare.
gsr/laboratoare/laborator-03.1446129809.txt.gz · Last modified: 2015/10/29 16:43 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0