Laborator 08 - Servicii de rețea

Cheat sheet

Comandă Descriere scurtă
ssh conectare securizată la distanță
scp copierea securizată a datelor
ssh-keygen generare cheii de autentificare
ssh-copy-id instalarea cheii publice pe mașina remote
wget descărcarea neinteractivă a resurselor
netstat afișarea conexiunilor
netcat client/server arbitrar TCP sau UDP
wireshark analiza traficului de rețea
netmap scanare porturi și explorarea rețelei

Suport laborator

Mașina virtuală

Laboratorul folosește mașina virtuală lucas.

  • Mașina se găsește descărcată în directorul /home/student/vm/lucas.

Puteți folosi utilizatorul lucas, cu parola uso, sau root cu parola uso. Sistemul nu are pachetul sudo instalat.

Mașina virtuală este accesibilă folosind numele lucas.local. Tehnologia folosită se numește Multicast DNS.

Introducere

Servicii de rețea

Serviciile de rețea presupun de cele mai multe ori existența a două entități:

  • server, oferă un servciu de rețea, acceptând și răspunzând la cereri;
  • client, interoghează server-ul cu scopul de a obține acces la serviciul respectiv.

Acest model poartă denumirea de modelul client-server. De exemplu: serviciul web, DHCP, DNS.

Modelul punct-la-punct (peer-to-peer, prescurtat P2P) este un alt model ce presupune ca fiecare entitate să joace rolul de server, cât și de client. De exemplu: serviciile de partajare de fișiere (BitTorrent).

Fiecare dintre aceste servicii este identificat printr-un protocol de nivel aplicație. De exemplu serviciul web este identificat prin protocolul HTTP (Hypertext Transfer Protocol).

TCP. UDP. Porturi

Entitățile participante, pentru a comunica între ele, folosesc în marea majoritate a cazurilor următoarele două protocoale de nivel transport:

  • TCP. orientat conexiune
  • UDP, neorientat conexiune

Pentru a identifica serviciile (protocoalele de nivel aplicație), protocoalele de nivel transport folosesc un mecanism, denumit port (un număr pe 16 biți). Un serviciu de rețea poate avea asociate mai multe porturi, nu doar unul singur.

Putem afișa toate serviciile oferite de o stație, rulând comanda netstat pe acea stație.

netstat --tcp --listening --program
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address       Foreign Address     State       PID/Program name
tcp        0      0 *:sunrpc            *:*                 LISTEN      2057/portmap
tcp        0      0 *:www               *:*                 LISTEN      2328/nginx
tcp        0      0 *:http-alt          *:*                 LISTEN      2328/nginx
tcp        0      0 *:ftp               *:*                 LISTEN      2336/vsftpd
tcp        0      0 *:ssh               *:*                 LISTEN      2313/sshd
tcp        0      0 *:35836             *:*                 LISTEN      2068/rpc.statd
tcp6       0      0 [::]:ssh            [::]:*              LISTEN      2313/sshd

Am adăugat următorii parametrii, pentru a afișa:

  • –tcp serviciile ce folosesc protocolul de nivel transport TCP vor fi afișate
  • –listening porturile deschise, pe care server-ele așteaptă să primească cereri.
  • –program denumirea serverului

Alocarea porturilor standard pentru diverse servicii de rețea poate fi văzută în fișierul /etc/services:

cat /etc/services
...
ssh             22/tcp                          # SSH Remote Login Protocol
telnet          23/tcp
smtp            25/tcp          mail
domain          53/tcp                          # Domain Name Server
domain          53/udp
http            80/tcp          www             # WorldWideWeb HTTP
...

World Wide Web

World Wide Web (sau WWW) reprezintă o rețea de resurse (pagini web) interconectate prin intermediul unor legături (hyperlink-uri), fiind cel mai cunoscut serviciu din Internet.

Pentru a accesa o pagină web, folosim un navigator web (browser web). Acesta reprezintă defapt un client, ce se conectează la un server web.

Exemple de navigatoare:

  • grafice: Mozilla Firefox, Google Chrome …
  • text: elinks, lynx, w3m …

Ca un navigator să poată afișa pagina dorită, acesta are nevoie întâi de un mecanism prin care să o identifice.

URL (Uniform Resource Locator) reprezintă un nume cu o formă bine precizată, ce identifică o resursă. Aveți mai jos forma generală a unui URL. Unele componente pot lipsi:

protocol://host:port/cale/catre/resurse

Host reprezintă o adresă IP sau un nume de domeniu ce va fi translatat într-o adresă IP printr-o cere DNS.

URL poate include și informații de autentificare:

protocol://user:parola@host:port/cale/catre/resurse

Pentru a deschide pagina principală www.google.com, putem execută următoarea comandă:

firefox http://www.google.com
# sau mai simplu
firefox www.google.com

În marea majoritate a navigatoarelor, dacă nu este precizat protocolul se presupune că este HTTP.

Pentru protocolul HTTP, portul standard folosit este 80, dar poate fi modificat.

SSH

SSH (Secure Shell) este un alt protocol de nivel aplicație ce asigura un canal securizat pentru transmiterea informației. Protocolul respecta modelul client-server, astfel pentru a iniția o conexiune, clientul SSH (ex. comanda ssh pe calculatoarele din laborator) trimite o cerere către serverul SSH (ex. deamon-ul sshd).

Portul standard folosit de server-ul SSH este 22.

Autentificare la distanță.

Putem utiliza protocolul SSH pentru a ne conecta la distanta:

ssh user@host

Comanda ne permite autentificarea ca utilizatorul user pe mașina specificată printr-o adresă IP sau un nume de domeniu, host. Portul implicit folosit pentru conectare este 22.

Dacă este prima dată când ne autentificăm pe stația respectivă, o să primim un mesaj. Acesta ne întreabă dacă vrem să adăugăm cheia RSA în baza de date locală. Va trebui să răspundem cu textul complet “yes”.

Odată autentificați, de cele mai multe ori vom observa schimbarea prompt-ului (Nu întotdeauna). Acum ne aflăm pe mașina de la distanță și putem introduce comenzi, la fel cum am face pe mașina locală.

Tot timpul când lucrați prin SSH trebuie să fiți atenți pe ce mașină vă aflați.

SSH pornește un shell remote, deci pentru a închide sesiunea folosiți exit sau Ctrl-D, ca pentru orice alt shell.

De multe ori, pentru sporirea securității, se poate schimba portul pe care ascultă server-ul SSH. În cazul acesta trebuie să specificăm comenzii ssh ce port să folosească:

ssh -P port user@host

SSH neinteractiv

Putem să rulăm comenzi pe mașina de la distanță în mod neinteractiv, fără a se rula un interpretor în care să introducem comenzile respective. Sintaxa este următoare:

ssh user@host "secvență de comenzi"

SCP

Comanda ssh ne permite doar să administrăm de la distanță, nu și să transferăm fișiere.

Pentru a efectua transferul de date utilizăm utilitarul scp. Acesta se folosește de canalul securizat oferit de ssh.

Sintaxa scp:

scp sursă destinație

Observați sintaxa scp; este asemănătoare cu cea a utilitarului cp, dar oricare dintre cei doi termeni poate fi de forma user@host:path.

  • Când user@host lipsește, este vorba despre mașina locală.
  • Când path lipsește, este vorba despre directorul home al utilizatorului specificat.

De exemplu:

  • vrem să copiem fișierul de pe stația locală, fisier_local, din directorul curent, în directorul /calea/pe/host de pe stația de la distanță, redenumind în fisier_remote
scp ./fisier_local user@host:/calea/pe/host/fisier_remote
  • vrem să copiem fișierul fisier_remote din directorul /calea/pe/host de pe stația de la distanță în directorul curent de pe stația locală, redenumind în fisier_local
scp user@host:/calea/pe/host/fisier_remote ./fisier_local

Exerciții

0. Mașina virtuală

Deschideți mașina virtuală lucas cu Vmware Player.

Calea unde se află pe mașiniile din laborator este /home/student/vm/lucas.

1. WWW. Homepages and Bookmarks

Folosiți mașina fizică.

Instalați browser-ul Iceweasel:

sudo apt-get install iceweasel 

Iceweasel este un fork din Mozilla Firefox. Deoarece este identic cu Firefox, o să ne referim la el prin același nume.

Realizați următoarele modificări în interfața grafică a browser-ului:

  • Configurați două pagini web ca homepages:
    • Accesați fereastra de preferințe: Edit→Preferences. Selectați tab-ul General.
    • În rubrica Startup, selectați When Firefox Starts (în Iceweasel este When Iceweasel Starts) Show my homepage.
    • Setați două pagini de start în rubrica Home Page. Folosiți caracterul | (pipe) pentru a le separa. Paginile sunt http://www.google.com/ și http://starwars.wikia.com/.
  • Pentru că sunteți atât de interesați de universul Star Wars, configurați un bookmark pentru pagina despre Star Wars de pe Wikipedia.
    • Navigați la http://en.wikipedia.org/ și căutați Star Wars.
    • Accesați pagina și dați click pe steluța de lângă adresă, în partea de sus a ecranului.
    • Mai dați o dată click pe steluța “aprinsă” pentru opțiuni avansate în ceea ce privește bookmark-ul.

2. Firefox ca download manager

  • Folosiți mașina fizică.
  • Asigurați-vă ca mașina lucas să fie deja pornită.

Accesați fereastra de preferințe și schimbați directorul unde Firefox descarcă fișiere. Directorul va fi ~/my_downloads. Va trebui să îl creați înainte.

Descărcați următoarele fișiere:

Concatenați fișierele în ordine alfabetică pentru a obține o maximă din Star Wars.

3. Firefoxl Addons

Firefox are un plugin care ascunde toate reclamele de pe pagini.

  • Intrați pe http://starwars.wikia.com/. Identificați reclamele în partea de sus a paginii.
  • Instalați addon-ul AdBlock Plus. Reporniți browser-ul după instalare.
  • Accesați din nou pagina inițială. Much better, right?

Unele reclame nu sunt doar enervante, ci dăunătoare ochilor sau malițioase (script-uri care urmăresc activitatea).

Există numeroase extensii de Firefox, disponibile pe site-ul oficial. Câteva sugestii:

  • Firebug – inspectarea codului sursă al unei pagini; util pentru dezvoltatorii web.
  • Flashblock – blochează tot conținutul flash; util pentru calculatoarele mai vechi.
  • FireFTP – client complet pentru FTP; permite și upload-area de fișiere.
  • Flash Video Downloader – pentru descărcarea locală a filmelor de pe YouTube și alte site-uri similare.
  • DownThemAll! – Download manager avansat, include opțiunea de a salva toate link-urile de pe o pagină.
  • Vimperator – face Firefox să se comporte mai mult ca Vim.

4. SSH neinteractiv

Nu închideti sau reporniți calculatoarele colegilor folosind SSH.

Folosiți SSH neinteractiv pentru a da restart mașinii virtuale lucas. Numele de domeniu complet al mașinii este lucas.local.

  • Observați că, după introducerea parolei și executarea comenzii, nu se mai pornește un shell interactiv.

5. Secure Copy (SCP)

Reveniți la download-urile anterioare. Concatenați, în ordine alfabetică, fișierele obținute, în fișierul quote.txt.

Copiați fișierul quote.txt de pe mașina fizică în home-ul utilizatorului lucas de pe mașina virtuală. Folosiți scp.

6. Autentificarea SSH folosind chei

Configurați sistemul lucas pentru a vă putea autentifica drept utilizatorul lucas fără parolă:

  • Folosiți ssh-keygen pe mașina fizică pentru a genera o cheie.
    • Apăsați Enter la întrebarea prompt-ul care întreabă unde va fi salvată cheia. Se va folosi locația din paranteză.
    • Nu puneți passphrase pe cheie. Dacă puneți, la autentificare, în loc de parola utilizatorului remote, vi se va cere passphrase-ul cheii.
  • Folosiți ssh-copy-id pentru a copia cheia pe mașina virtuală. Destinația este în același format cu cea acceptată de ssh.
  • Folosiți ssh. Nu ar trebui să vi se mai ceară o parolă.

Cheile generate (publică și privată) sunt pe mașina fizică în directorul ~/.ssh. Vizualizați-le. Comparați cheia publică de pe mașina fizică cu conținutul fișierului ~/.ssh/authorized_keys de pe mașina virtuală.

În cazul în care primiți eroarea: Agent admitted failure to sign using key folosiți comanda ssh-add fără parametri pentru a trece peste această problemă.

7. SCP folosind chei

SCP folosește SSH pentru transfer. Astfel, pentru că acum vă puteți autentifica fără parolă pe lucas.local, puteți folosi și scp fără parolă.

Copiați directorul /var/starwars de pe mașina virtuală pe sistemul fizic.

  • Folosiți scp ca utilizator lucas.
  • Puteți specifica, după partea de host, o cale absolută pe disc.
  • Va trebui, de asemenea, să folosiți un parametru al scp pentru a copia recursiv. Folosiți manualul.

8. BitTorrent

Descărcați fișierul torrent de aici. Folosiți Transmission, clientul implicit de BitTorrent pe mașinile din laborator, pentru a descărca imaginea de instalare pentru Debian stable (Squeeze).

Puteți vedea utilizatorii de la care descărcați părti din fișier, dând click dreapta pe el din interfața Transmission > Properties > Peers.

9. Netstat

Inspectați porturile deschise de pe mașina virtuală. Folosiți netstat.

  • Listați doar porturile TCP în starea listening.
  • Afișați valorile numerice ale porturilor.

Corelați numărul portului cu exercițiul la care a fost folosit serviciul corespunzător.

10. Inspectarea traficului de rețea. Wireshark

Folosiți mașina fizică.

  • Wireshark este un program care capturează și analizează traficul de rețea. Instalați-l și porniți-l ca root. Pornirea ca root este necesară pentru a putea captura pachete.
  • Folosiți butonul din stânga toolbar-ului (List available interfaces). Selectați interfața vmnet8.
  • Accesați ftp://student:uso@lucas.local/obiwan.bin folosind Chromium Web Browser. Observați că apar în Wireshark în timp real pachetele schimbate.
  • Opriți captura de pachete.
  • Analizați traficul. Descoperiți pachetul care trimite parola. Observați că este trimisă în clar. Oricine ascultă pe linie o poate vedea.

Nu lăsați niciodată pornită captura de pachete în Wireshark mai mult decât este necesar. Vor fi capturate multe pachete și veți rămâne rapid fără memorie.

11. Client HTTP în linia de comandă

  • Avantajul wget este că poate fi folosit în script-uri shell.
  • Există, de asemenea, clienți interactivi în mod text: links, elinks, lynx, w3m.
  • Un alt tool interesant este HTTrack.

12. Configurări avansate Firefox

a) Folosiți about:config pentru a configura modul de afișare al butonului de închidere pentru tab-uri. Configurați Firefox astfel încât să fie afișat un singur buton de închidere a tab-ului, la sfârșitul tab bar-ului.

b) Utilizând pagina de configurări interne Firefox about:config, setați ca atunci când căutați ceva folosind motorul de căutare extern (căsuța de căutare din dreapta căsuței de adresă), să se deschidă o fereastră nouă.

Căutați, folosind filtrul, variabila browser.search.openintab.

13. Netcat pentru transfer de fișiere

Folosiți netcat (executabilul se mai numește și nc) pentru a transfera un fișier între mașina fizică și cea virtuală.

Folosiți parametrul `-p` pentru a specifica portul pe care să asculte în mașina virtuală. Folosiți manualul netcat pentru a afla parametrii necesari.

14. Instant HTTP server

Puteți porni un server HTTP read-only, restricționat la directorul curent, folosind

student@uso:~$ python -m SimpleHTTPServer [port]

Dacă ultimul parametru lipsește, serverul este pornit pe portul 8000. Puteți opri server-ul folosind Ctrl-C.

Aceasta este o metodă foarte rapidă de a transfera fișiere mari între două mașini Linux și Windows, fără a vă complica cu file-sharing sau transfer prin IM.

Testați serverul HTTP într-un browser.

15. Scanarea rețelei. nmap

Folosiți nmap pentru a scana porturile deschise și versiunile serviciilor care rulează pe mașina lucas.local.

so-etti/laboratoare/lab8.txt · Last modified: 2013/04/26 00:06 by alexandru.radovici
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