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 |
Laboratorul folosește mașina virtuală lucas
.
/home/student/vm/lucas
.
Puteți folosi utilizatorul lucas
, cu parola uso
, sau root
cu parola uso
. Sistemul nu are pachetul sudo
instalat.
lucas.local
. Tehnologia folosită se numește Multicast DNS.
Serviciile de rețea presupun de cele mai multe ori existența a două entități:
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).
Entitățile participante, pentru a comunica între ele, folosesc în marea majoritate a cazurilor următoarele două protocoale de nivel transport:
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 (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:
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
(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.
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ă.
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
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"
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
scp
; este asemănătoare cu cea a utilitarului cp
, dar oricare dintre cei doi termeni poate fi de forma user@host:path
.
user@host
lipsește, este vorba despre mașina locală.path
lipsește, este vorba despre directorul home al utilizatorului specificat.
De exemplu:
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
fisier_local
scp user@host:/calea/pe/host/fisier_remote ./fisier_local
Deschideți mașina virtuală lucas
cu Vmware Player.
Calea unde se află pe mașiniile din laborator este /home/student/vm/lucas.
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:
|
(pipe) pentru a le separa. Paginile sunt http://www.google.com/ și http://starwars.wikia.com/.
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.
Firefox are un plugin care ascunde toate reclamele de pe pagini.
Unele reclame nu sunt doar enervante, ci dăunătoare ochilor sau malițioase (script-uri care urmăresc activitatea).
Folosiți SSH neinteractiv pentru a da restart mașinii virtuale lucas
. Numele de domeniu complet al mașinii este lucas.local
.
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
.
Configurați sistemul lucas
pentru a vă putea autentifica drept utilizatorul lucas
fără parolă:
ssh-keygen
pe mașina fizică pentru a genera o cheie.ssh-copy-id
pentru a copia cheia pe mașina virtuală. Destinația este în același format cu cea acceptată de ssh
.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ă.
Agent admitted failure to sign using key
folosiți comanda ssh-add
fără parametri pentru a trece peste această problemă.
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.
lucas
.scp
pentru a copia recursiv. Folosiți manualul.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.
Inspectați porturile deschise de pe mașina virtuală. Folosiți netstat
.
Corelați numărul portului cu exercițiul la care a fost folosit serviciul corespunzător.
root
. Pornirea ca root este necesară pentru a putea captura pachete.vmnet8
.
wget
este un client neinteractiv pentru protocolul HTTP.
wget
este că poate fi folosit în script-uri shell.links
, elinks
, lynx
, w3m
.
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ă.
browser.search.openintab
.
Folosiți netcat
(executabilul se mai numește și nc
) pentru a transfera un fișier între mașina fizică și cea virtuală.
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.
Folosiți nmap
pentru a scana porturile deschise și versiunile serviciilor care rulează pe mașina lucas.local
.