This shows you the differences between two versions of the page.
systems:uso:laboratoare:laborator-09 [2012/09/20 23:39] paul.vlase |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Laborator 09 - Servicii de rețea ====== | ||
- | ====== Descriere ====== | ||
- | * Modelul client-server | ||
- | * Browsing: Firefox, addons, sintaxa unui URL | ||
- | * SSH, SCP (mentionat si mai devreme, prompt modificat pe mașinile de la distanță) | ||
- | * Chei SSH, utilizare port non-standard pentru SSH | ||
- | * netstat, netcat, nmap | ||
- | * Modelul P2P: BitTorrent | ||
- | * Wireshark | ||
- | * ** TODO: VPN ** | ||
- | |||
- | Referințe din urmă: | ||
- | * SSH | ||
- | * creare de utilizatori (lab 04) | ||
- | * inspectarea rețelei (lab 08) | ||
- | |||
- | ====== Materiale ajutătoare ====== | ||
- | |||
- | ===== Tutorial ====== | ||
- | |||
- | <note warning> | ||
- | Înainte de a porni mașina virtuală: | ||
- | * editați parametrii hardware ai mașinii ''lucas.local''. Puneți prima interfață de rețea în modul **Bridged**. Acest mod plasează mașina virtuală în aceeași rețea locală ca și mașina fizică. | ||
- | După pornirea mașinii virtuale: | ||
- | * aflați IP-ul de pe interfața ''eth0'' a mașinii virtuale. Trebuie să fie în rețeaua 172.16.4.0/22. | ||
- | * **pe mașina fizică**, editați fișierul ''/etc/hosts'' pentru a adăuga o mapare a numelui ''lucas.local'' la IP-ul mașinii virtuale. | ||
- | * pentru verificare, folosiți ''ping lucas.local'' și asigurați-vă că răspunde IP-ul mașinii virtuale. | ||
- | </note> | ||
- | |||
- | |||
- | ===== 1. WWW. Homepages and Bookmarks ===== | ||
- | |||
- | <hidden> | ||
- | * TCP vs UDP recap. Sumar, nu intrăm în detalii scârboase :-) | ||
- | * Ce este WWW. Ce este Firefox. Alte browsere. | ||
- | * Conceptul de homepage și bookmark | ||
- | </hidden> | ||
- | |||
- | Veți folosi Mozilla Firefox pentru a naviga web-ul, ca și până acum. | ||
- | * 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** //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 ===== | ||
- | |||
- | 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. | ||
- | |||
- | Downloadați următoarele fișiere: | ||
- | * http://lucas.local/anakin.bin | ||
- | * http://lucas.local:80/macewindu.bin | ||
- | * http://lucas.local:8080/yoda.bin | ||
- | * ftp://student:uso@lucas.local/obiwan.bin | ||
- | |||
- | Concatenați fișierele în ordine alfabetică pentru a obține o maximă din Star Wars. | ||
- | |||
- | Aveți mai jos forma generală a unui URL. Exemplele de mai sus demostrează că unele componente pot lipsi. | ||
- | |||
- | {{http://elf.cs.pub.ro/uso/store/06_url.png}} | ||
- | |||
- | |||
- | ===== 3. Autentificare la distanță. SSH ===== | ||
- | |||
- | Folosiți **''ssh''** pentru a vă autentifica drept utilizatorul **''lucas''** pe mașina **''lucas.local''**: | ||
- | |||
- | <code bash> | ||
- | ssh lucas@lucas.local | ||
- | </code> | ||
- | |||
- | * Raspundeți "yes" la întrebarea despre adăugarea cheii în RSA în baza de date locală. | ||
- | * Observați schimbarea prompt-ului. Acum vă aflați pe mașina virtuală. | ||
- | * 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. | ||
- | |||
- | |||
- | ===== 4. SSH neinteractiv ===== | ||
- | |||
- | <note warning> | ||
- | **Nu** închideti sau reporniți calculatoarele colegilor folosind SSH. | ||
- | </note> | ||
- | |||
- | Folosiți SSH neinteractiv pentru a scoate tăvița CD-ROM-ului colegului din dreapta: | ||
- | |||
- | <code bash> | ||
- | ssh student@nume-masina.local eject | ||
- | </code> | ||
- | |||
- | * Mașinile din laborator au numele scris pe ele. | ||
- | * Topologia din laborator este circulară: dacă nu aveți pe nimeni în dreapta săriți peste calculatoarele libere sau faceți wrap-around. | ||
- | * Observați că, după introducerea parolei și executarea comenzii, **nu** se mai pornește un shell interactiv. | ||
- | |||
- | <note tip> | ||
- | În laborator nu este instalat serverul SSH și nu merge să fie pornit în mod clasic. Pentru a rezolva problema, rulați următoarele comenzi: | ||
- | <code bash> | ||
- | sudo apt-get install openssh-server | ||
- | sudo mkdir /var/run/sshd | ||
- | # Comanda de mai jos pornește efectiv serverul | ||
- | sudo /usr/sbin/sshd & | ||
- | </code> | ||
- | </note> | ||
- | |||
- | |||
- | ===== 5. Secure Copy (SCP) ===== | ||
- | |||
- | Reveniți la download-urile anterioare. Concatenați, în ordine alfabetică, fișierele obținute, în fișierul ''quote.txt'': | ||
- | |||
- | <code bash> | ||
- | cat anakin.bin macewindu.bin obiwan.bin yoda.bin > quote.txt | ||
- | </code> | ||
- | |||
- | Copiați fișierul ''quote.txt'' de pe mașina fizică în home-ul utilizatorului ''lucas'' de pe mașina virtuală. Folosiți **''scp''**: | ||
- | |||
- | <code bash> | ||
- | scp quote.txt lucas@lucas.local: | ||
- | </code> | ||
- | |||
- | <note tip> | ||
- | 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. | ||
- | </note> | ||
- | |||
- | |||
- | ====== Exerciții ====== | ||
- | |||
- | ===== 1. Firefox 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 atunci când vi se cere. | ||
- | * 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). | ||
- | |||
- | <note tip> | ||
- | Există numeroase extensii de Firefox, disponibile pe [[http://addons.mozilla.org|site-ul oficial]]. Câteva sugestii: | ||
- | * [[https://addons.mozilla.org/en-US/firefox/addon/1843/|Firebug]] -- inspectarea codului sursă al unei pagini; util pentru dezvoltatorii web. | ||
- | * [[https://addons.mozilla.org/en-US/firefox/addon/433/|Flashblock]] -- blochează tot conținutul flash; util pentru calculatoarele mai vechi. | ||
- | * [[https://addons.mozilla.org/en-US/firefox/addon/684/|FireFTP]] -- client complet pentru FTP; permite și upload-area de fișiere. | ||
- | * [[https://addons.mozilla.org/en-US/firefox/addon/6584/|Flash Video Downloader]] -- pentru descărcarea locală a filmelor de pe YouTube și alte site-uri similare. | ||
- | * [[https://addons.mozilla.org/en-US/firefox/addon/201/|DownThemAll!]] -- Download manager avansat, include opțiunea de a salva toate link-urile de pe o pagină. | ||
- | * [[https://addons.mozilla.org/en-US/firefox/addon/4891/|Vimperator]] -- face Firefox să se comporte mai mult ca Vim. | ||
- | </note> | ||
- | |||
- | |||
- | ===== 2. 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ă. | ||
- | |||
- | <solution> | ||
- | <code bash> | ||
- | $ ssh-keygen | ||
- | Generating public/private rsa key pair. | ||
- | Enter file in which to save the key (/home/ddvlad/.ssh/id_rsa): | ||
- | Enter passphrase (empty for no passphrase): | ||
- | Enter same passphrase again: | ||
- | [...] | ||
- | $ ssh-copy-id lucas@lucas.local | ||
- | # Se va cere parola utilizatorului lucas | ||
- | $ ssh lucas@lucas.local | ||
- | # Nu se va cere parolă | ||
- | </code> | ||
- | </solution> | ||
- | |||
- | |||
- | ===== 3. 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. | ||
- | |||
- | <solution> | ||
- | <code bash> | ||
- | $ scp -r lucas@lucas.local:/var/starwars . | ||
- | </code> | ||
- | </solution> | ||
- | |||
- | |||
- | ===== 4. BitTorrent ===== | ||
- | |||
- | Descărcați fișierul torrent de [[http://elf.cs.pub.ro/uso/store/rednalob_480_dl.mov.torrent|aici]]. Folosiți Transmission, clientul implicit de BitTorrent pe Ubuntu, pentru a descărca trailerul episodului 3 al Star Wars. | ||
- | |||
- | |||
- | ===== 5. 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. | ||
- | |||
- | <solution> | ||
- | <code bash> | ||
- | $ netstat -tlpn | ||
- | </code> | ||
- | </solution> | ||
- | |||
- | |||
- | ===== 6. Inspectarea traficului de rețea. Wireshark ===== | ||
- | |||
- | * 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 ''eth0''. | ||
- | * Accesați ftp://student:uso@lucas.local/obiwan.bin. 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. | ||
- | |||
- | <note tip> | ||
- | 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. | ||
- | </note> | ||
- | |||
- | |||
- | ===== 7. Client HTTP în linia de comandă ===== | ||
- | |||
- | * ''wget'' este un client neinteractiv pentru protocolul HTTP. | ||
- | * Folosiți-l pentru a descărca fișierul de la http://lucas.local:80/macewindu.bin. | ||
- | |||
- | <note tip> | ||
- | * Avantajul ''wget'' este că poate fi folosit în script-uri shell, despre care veți învăța mai multe în laboratorul 10. | ||
- | * Există, de asemenea, clienți interactivi în mod text: ''links'', ''elinks'', ''lynx'', ''w3m''. | ||
- | * Un alt tool interesant este [[http://en.wikipedia.org/wiki/HTTrack|HTTrack]]. | ||
- | </note> | ||
- | |||
- | <solution> | ||
- | <code bash> | ||
- | $ wget http://lucas.local:80/macewindu.bin | ||
- | </code> | ||
- | </solution> | ||
- | |||
- | |||
- | ===== 8. Configurări avansate Firefox ===== | ||
- | |||
- | **a)** Folosiți ''[[http://kb.mozillazine.org/Firefox_:_FAQs_:_About:config_Entries|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ă. | ||
- | |||
- | <note tip>Căutați, folosind filtrul, variabila ''browser.search.openintab''.</note> | ||
- | |||
- | ===== 9. 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ă. | ||
- | |||
- | |||
- | ===== 10. Instant HTTP server ===== | ||
- | |||
- | Puteți porni un server HTTP read-only, restricționat la directorul curent, folosind | ||
- | |||
- | <code bash> | ||
- | student@uso:~$ python -m SimpleHTTPServer [port] | ||
- | </code> | ||
- | |||
- | 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. | ||
- | |||
- | |||
- | ===== 11. Scanarea rețelei. nmap ===== | ||
- | |||
- | Folosiți ''nmap'' pentru a scana porturile deschise și versiunile serviciilor care rulează pe mașina ''lucas.local''. | ||
- | |||
- | <solution> | ||
- | <code bash> | ||
- | nmap -sV lucas.local | ||
- | </screen> | ||
- | </code> | ||
- | |||
- | |||
- | FIXME |