Sunteți pe pagina 1din 86

Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Existenta sistemului de operare Linux in cadrul Internetului

CAP I INTRODUCERE IN
SISTEMUL DE OPERARE LINUX SI IN PROTOCOALELE DIN INTERNET
Ce este Linux ?
Linux este un sistem de operare modern. Ruleaza pe arhitecturi 32-bit, foloseste
multitasking preemptiv, memorie protejata, suporta utilizatori multipli si are suport extensiv
pentru retele, inclusiv TCP/IP. Linux a fost conceput intai pentru arhitectura 386 de la Intel,
dar acum ruleaza pe o varietate de sisteme, incluzand intreaga familie x86, ca si Alpha,
SPARC si PowerPC. Linux ruleaza toate aplicatiile de care un sistem Unix are nevoie,
inclusiv servere de web ca Apache, aplicatii de transport email ca Sendmail si baze de date
precum Oracle, Informix sau cele sub licenta GPL ca MySQL si Postgres. Linux suporta un
numar mare de sisteme de fisiere, si cu ajutorul programelor gen Samba poate chiar inlocui
cu succes NT ca server de fisiere Windows. Prin folosirea tehnologiei de clustering, Linux
poate fi configurat sa raspunda cerintelor mari ale multor aplicatii stiintifice si de inginerie
din laboratoarele de cercetare. El se bazeaza in intregime pe comenzile si "look and feel"-ul
UNIX, deci cine stie Linux stie si UNIX si invers.
Are suport pentru retea (TCP/IP), Internet, este unul dintre cele mai folosite sisteme
de operare pentru servere internet si intranet.
Scurt istoric al sistemului de operare Linux.
In 1991 studentul Linus Torvalds a scris prima versiune de Linux. Apoi a facut
publice sursele pe internet, si o multime de oameni au inceput sa-i raspunda, sa-i aduca
imbunatatiri, noi sugestii, etc.
Intre timp acest sistem de operare a devenit complex, au aparut (si inca mai apar) noi
facilitati, iar performanta este remarcabila.
In prezent sunt estimati peste 8 milioane de utilizatori Linux, iar nucleul Linuxului are
peste 200 de autori. Pe langa acesti 200 de autori ar trebui adaugate cele cateva mii de
persoane care testeaza si gasesc buguri.
Caracteristici
Linux este un sistem de operare multitasking si multiuser: mai multi utilizatori se pot
conecta in sistem si pot rula simultan mai multe programe fiecare; are console virtuale, ce

Pagina 1 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

permit o comutare usoara intre sesiuni de lucru multiple; nucleul insusi emuleaza
coprocesorul matematic 387-FPU; suporta diferitele tipuri de sisteme de fisiere pentru
inmagazinarea datelor (incluzand sistemul de fisiere - FS (File System) - MS-DOS, NFS,
HPFS (OS/2 doar in citire), respectiv ISO 9660 CD-ROM - un tip de FS ce permite citirea
tuturor CD-ROM cu format standard); ofera un suport complet pentru comunicatii (incluzand
protocoalele TCP/IP, SLIP, PLIP, CSLIP) oferind servicii cu FTP, Telnet, NNTP si SMTP.
Fiecarui utilizator al sistemului i se creaza un cont personal in care se va tine evidenta
drepturilor de acces (a numelui, parolei, numele grupului din care face parte etc) precum si
alte informatii legate de acest utilizator (directorul de lucru, SHELL-ul implicit etc). Pe orice
sistem UNIX (deci si Linux) exista un utilizator privilegiat, cel insarcinat cu administrarea
sistemului, un utilizator care nu este, si nici nu poate fi supus nici unei restrictii din partea
oricarui alt utilizator, singurul in masura de a crea utilizatori noi, cu acces nelimitat la toate
informatiile din sistem. Acest utilizator privilegiat intra in sesiune de lucru cu numele root
(radacina). El este insarcinat cu intretinerea sistemului, singurul care poate modifica - daca
este cazul - chiar si nucleul sistemului (prin modificarea si recompilarea surselor acestor
functii), cel care supervizeaza toate procesele din sistem (si intervine la nevoie). In plus,
fiecare sistem UNIX are asociat si un asa numit "Host-name", un nume prin care se identifica
sistemul intr-un context de retea (orice retea omogena format din astfel de sisteme sau orice
retea eterogena cu subsisteme capabile de intercomunicare).
Fiecare utilizator - gestionar al unei console (format cel putin dintr-o tastatura si un
monitor) poate deschide sesiuni multiple - prin intermediul unor console virtuale, sa lucreze
la un moment de timp dat sub diferite nume (sau cu acelasi nume pe terminale virtuale
diferite).
Nucleul sistemului de operare a fost astfel conceput incat sa utilizeze facilitatile
oferite de modul de lucru protejat al procesorului. Linux foloseste un management al
memoriei bazat pe descriptori precum si multe alte facilitati oferite de un sistem cu un
procesor minim 386, lucru ce face posibila o adresare a intregii memorii RAM existente
precum si multitaskingul. Nucleul suporta modul de lucru "demand paging" (incarca pagina
la cerere) cu memoria ceea ce inseamna ca numai acele segmente ale unui executabil se
incarca in memorie care sunt folosite pe moment. Deasemenea este adeptul politicii de
partajare a unor pagini comune, frecvent folosit in cazuri in care se lanseaza mai multe
instante ale aceluiasi program. (care vor partaja codul comun - reducandu-se astfel incarcarea
memoriei). Pentru marirea spatiului de memorie disponibila Linux aplica si procedura "disk-

Pagina 2 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

paging" alocand un asa numit "swap area" pe hard-disk unde vor fi inmagazinate, temporar,
anumite portiuni ale unui program care rezida in memorie si nu este pe moment utilizat.
Executabilele sub Linux folosesc foarte frecvent rutine standard legate in mod
dinamic (biblioteci DLL), in sensul ca, codul subrutinelor respective se incarca in memorie
doar in momentul apelarii lor, astfel reducandu-se considerabil dimensiunea unui executabil.
Nucleul Linux este aproape integral modularizat. Acest lucru permite ca driverele sa
fie compilate separat de nucleu iar incarcarea/descarcarea lor in/din memorie se poate face cu
comenzi simple.
Avantajele utilizarii Linux-ului
Stabilitate. Din cauza ca sursele Linux sunt distribuite in mod deschis, Linux a fost
"curatat" de bug-uri cu multa minutiozitate. Fiecare noua versiune a sistemului de operare
este rapid vazuta si testata de mii de programatori din toata lumea. Arhitectura pe care este
bazat Linux creeaza de asemenea un sistem mai stabil. Sistemele de operare care folosesc
memoria protejata si multitasking preemptiv sunt in mod inerent mai stabile. Memoria
protejata impiedica o eroare dintr-o aplicatie sa blocheze intregul sistem de operare, si din
folosirea multitaskingului adevarat rezulta ca o gatuire intr-o aplicatie nu inseamna ca
intregul sistem este oprit. Linux de asemenea face o distinctie clara intre procesele
utilizatorilor si cele ale kernelului. In timp ce si alte sisteme de operare folosesc memoria
protejata, acest lucru nu conteaza daca aplicatii prost scrise au voie sa suprascrie spatiul
kernelului cu procesele lor.
Economie. Pentru ca Linux este "open source", costurile initiale sunt mici. Nu exista
licente per-user, sau taxe asociate cu folosirea sistemului de operare. Linux a fost de
asemenea conceput pentru arhitectura Intel, acest lucru insemnand ca ruleaza rapid si eficient
pe o multitudine de configuratii ieftine capabile sa functioneze ca server.
Adevaratele economii in privinta Linux vin insa din TCO (Total Cost of Ownership -
Costul total de proprietate). Imbunatatirile vin repede si sunt distribuite in mod liber, asa ca
utilizatorii nu mai sunt fortati sa astepte pana ce o firma decide ca intr-adevar exista o
problema. In cazul unor probleme, rezolvarea lor este rapida, existand nenumarati
programatori gata sa dea o mana de ajutor, sau, dupa caz, firme care fac acest lucru contra
cost. Rezultatul este ca problemele sunt identificate si rezolvate mult mai repede, noi facilitati
sunt implementate mult mai rapid, si toate acestea la un pret extrem de scazut, reducand
dramatic costul total. Dovezile ca Linux este intr-adevar viabil vin din statisticile recent
realizate: Apache detine aproximativ 60% din piata serverelor de web, si este in crestere.
Sendmail este cotat cu aproximativ 80% pe piata programele de transport mail. In consecinta,

Pagina 3 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Linux isi merita cu adevarat laudele, fiind sistemul de operare din clasa server cu cea mai
rapida dezvoltare.
Cerinte hardware ale utilizarii SO Linux
De la inceput, Linuxul a avut nevoie de resurse hardware minime pentru a rula. Acest
lucru nu s-a schimbat in timp: e nevoie de minim un calculator Intel 386 cu 4 Mb RAM si 50
Mb spatiu liber pe harddisk; daca se alege si optiunea utilizarii sistemului X-Windows,
minimul de memorie RAM este de 8 MB.
Este posibil ca unele programe complexe sa necesite foarte multa memorie. Linux are
posibilitatea de a simula memoria RAM folosind un fisier de swap pe harddisk, dar este mult
mai lent.
Evident, cu cat este mai bun hardware-ul cu atat performanta obtinuta la rularea
sistemului de operare va fi mai mare.
Software disponibil sub Linux
Majoritatea distributiilor Linux includ compilatoare pentru diverse limbaje de
programare, utilitare pentru retea (email, telnet, ftp, www), creare si manipulare documente,
tiparire, arhivare, si multe altele.
Pe langa acestea exista disponibile pe Internet o mare varietate de programe, unele
gratuite, altele nu, iar mai nou marile case de software au inceput sa porteze softurile lor pe
Linux.
Iata cateva exemple:
-Staroffice (foarte asemanator cu MS-Office, gratuit pentru folosire non-comerciala)
-WordPerfect (Cunoscutul procesor de text, disponibil si sub Linux)
-Netscape Navigator, Opera (browsere Web)
-Oracle (baze de date)
-Mathematica (calcul simbolic si nu numai).
Componentele Sistemului de Operare Linux
Sistemul de operare Linux foloseste un sistem de procese numit multitasking pentru a
aloca timpul de lucru al procesorului mai multor utilizatori in acelasi timp. In realitate nu este
vorba de procese care se ruleaza in acelasi timp ci unele dupa altele la intervale de timp de
ordinul milisecundelor.
Sistemul de operare aloca timpul in asa fel incat sa lase impresia de continuitate
pentru fiecare utilizator. In timp ce unul dintre acestia lucreaza la terminalul sau el imparte cu
ceilalti resursele de calcul.

Pagina 4 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Linux, ca oricare alt sistem de operare, este un set de programe care administreaza
toate operatiile sistemului de calcul. El asigura de asemenea o interfata intre utilizator si
resursele sistemului convertind cererile care vin de la mouse sau tastatura in operatii de
efectuat in sistemul de calcul.
Majoritatea sistemelor de operare, inclusiv Linux, au trei mari componente: Kernel-ul,
Shell-ul si Sistemul de Fisiere. Kernel-ul administreaza operatiile computerului. Shell-ul
asigura o interfata pentru interactiunea dintre utilizator si calculator iar sistemul de Fisiere
asigura un mijloc de organizare si gestionare a informatiilor pe discurile hard ale
calculatorului.

FIG. 1 Componentele Sistemului de Operare


Kernel-ul sistemului de operare
Kernel-ul este inima sistemului de operare si ofera mijloacele primare necesare ca un
sistem de calcul sa functioneze. Kernel-ul se afla cel mai aproape de CPU si hardware. Este
un fisier executabil care se incarca atunci cand porneste calculatorul. Odata ce kernelul a fost
incarcat el realizeaza urmatoarele functii:
gestioneaza dispozitivele, memoria, si procesele.
controleaza interactiunea (transmisia informatiei) dintre programele aplicatie (utilitati)
si hardware-ul sistemului. Administreaza functii precum: spatiul Swap, Demoni, si Sistemele
de Fisiere.
Spatiul Swap – Este o parte rezervata de pe hard disk pentru kernel, acesta utilizand-o
in timpul procesarii. Portiuni de programe care ruleaza pot fi “aruncate” hard disk-ului si
apoi, la nevoie, aduse inapoi. Acest spatiu swap se afla in realitate pe hard disk, insa seamana
cu o memorie aditionala sau RAM aditional, uneori fiind numit memorie virtuala.
Daemonii - Programe sau procese care realizeaza o sarcina particulara sau
monitorizeaza discurile sau executia programelor. Demonii sunt procese speciale care

Pagina 5 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

pornesc dupa ce se incarca sistemul de operare. Demonii asteapta apoi sa faca ceva in
sprijinul sistemului de operare. Pot fi porniti sau opriti daca este necesar. Un exemplu este cel
al demonului imprimantei, lpsched (line printer scheduler). Acesta se lanseaza cand sistemul
porneste si apoi asteapta in fundal pana cand cineva are nevoie sa tipareasca ceva. Demonii
din lumea Linuxului sunt similari cu Serviciile din Windows NT/2000 sau cu NetWare
Loadable Modules (NLMs) din Novell NetWare.
Sistemele de fisiere – Reprezinta o ierarhie de directoare, subdirectoare si fisiere care
organizeaza si administreaza informatia pe hard disk-uri. Sistemele de fisiere pot fi locale sau
pe alta masina (de obicei server).
Shell-ul
Un shell este o interfata intre utilizator si kernel. Actioneaza ca un interpretor sau ca
un translator. Cu alte cuvinte, shell-ul accepta comenzi scrise de utilizator, le interpreteaza, si
apoi executa programele corespunzatoare. Shell-urile pot fi linie de comanda sau grafice.
Pentru a verifica ce shell se utilizeaza la un moment dat se poate folosi comanda ps (process
status) (FIG. 3.3).
Shell-ul citeste si interpreteaza cererile introduse de utilizator. Apoi comunica
instructiuni kernel-ului care duce la indeplinire cererile formulate de utilizator. Shell-ul este
deci legatura directa, interfata directa a utilizatorului cu sistemul de operare. De obicei, cele
mai multe cereri sunt pentru a rula programe.

FIG. 2 Shell-ul
Protocoale in Internet
Modelul de referinta TCP / IP
Este mult mai vechi decat modelul OSI si a fost utilizat drept model de referinta de
catre stramosul tuturor retelelor de calculatoare, ARPANET si apoi succesorul sau Internetul.

Pagina 6 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Modelul de referinta TCP / IP a aparut ca o necesitate de interconectare a retelelor de diferite


tipuri, iar denumirea a fost data dupa cele doua protocoale fundamentale utilizate.

Modelul OSI
Modelul TCP / IP
FIG 3 - Comparatie intre modelele ISO / OSI si TCP / IP.
Din figura de mai sus se poate observa diferenta dintre modelul de referinta ISO / OSI
si modelul TCP / IP.
Nivelul gazda-la-retea (interfata - retea), despre acest nivel modelul TCP / IP nu
spune mare lucru despre ceea ce ar trebui sa se intample aici, singura mentiune este aceea ca
gazda trebuie sa se lege la retea, pentru a putea transmite date, folosind un anumit protocol.
Acest protocol nu este definit si variaza de la gazda la gazda si de la retea la retea. Acest nivel
face ca functionarea nivelului superior, numit Internet si respectiv retea, sa nu depinda de
reteaua fizica utilizata in comunicatie si de tipul legaturii de date.
Nivelul Internet are rolul de a permite gazdelor sa emita pachete in orice retea si de a
face ca pachetele sa circule independent pana la destinatie. Nivelul Internet defineste oficial
un format de pachet si un protocol numit IP - Internet Protocol care asigura un serviciu de
transmitere a datelor fara conexiune. Alte protocoale care pot functiona la acest nivel sunt:
ICMP - Internet Control Message Protocol; ARP - Address Resolution Protocol si RARP -
Reverse Address Resolution Protocol.
Nivelul transport permite conversatii intre entitatile pereche din gazdele sursa, si
respectiv, destinatie, deci asigura comunicatia intre programele de aplicatie. Sunt definite
doua protocoale: TCP - Transmission Control Protocol este un protocol punct - la - punct,
orientat pe conexiuni care permite ca un flux de octeti trimisi de pe un sistem sa ajunga fara
erori pe oricare alt sistem din inter - retea (asigura livrarea corecta, in ordine a mesajelor). Al
doilea protocol, UDP - User Datagram Protocol este un protocol nesigur (nu asigura livrarea

Pagina 7 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

mesajului la receptie fara erori, fara pierderi, fara duplicate, in ordinea in care au fost emise),
fara conexiuni, care foloseste IP pentru transportul mesajelor.
Nivelul aplicatie asigura utilizatorii retelei, prin intermediul programelor de aplicatie,
o varietate de servicii. Aceste protocoale sunt : - terminal virtual TELNET, protocolul de
terminal virtual permite unui utilizator de pe un sistem sa se conecteze si sa lucreze pe un alt
sistem aflat la distanta. - transferul de fisiere FTP - File Transfer Protocol. Protocolul de
transfer de fisiere pune la dispozitie o modalitate de a transfera eficient date de pe o statie pe
alta, in ambele sensuri. - posta electronica SMTP - Simple Mail Transfer Protocol. Alte
protocoale care au aparut ulterior: DNS - Domain Name Service, pentru a stabili
corespondenta dintre numele gazdelor si adreselor retelelor; HTTP - HyperText Transfer
Protocol - folosit pentru aducerea paginilor de pe Web.

Urmatoarea figura
prezinta protocoalele si retelele din modelul TCP / IP.

FIG. 4 Protocoale ale modelului TCP/IP


Protocoalele modelului TCP/IP
Protocoalele nivelului Gazda-la-retea (X25, ARPANET)
A. Protocolul X25
Acesta a fost dezvoltat in anii ’70 de catre CCITT pentru a asigura o interfata intre
retelele publice cu comutare de pachete si clientii acestor retele.
Majoritatea retelelor X25 lucreaza la viteze de pana la 64 Kbps, ceea ce le face
nepotrivite pentru multe sarcini; cu toate acestea ele sunt inca foarte raspandite.
X25 este orientat pe conexiuni si suporta circuite virtuale atat comutate cat si
permanente. Un circuit virtual comutat este creat atunci cand un calculator trimite retelei un
pachet care ii cere sa apeleze un calculator aflat la distanta. Odata stabilita conexiunea,

Pagina 8 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

pachetele pot fi transmise prin conexiunea respectiva, urmand sa soseasca totdeauna in


ordinea corecta. Pentru a se asigura ca un emitator rapid nu poate sa inece un receptor lent
sau ocupat, X.25 asigura controlul fluxului.
Un circuit virtual permanent este folosit la fel ca unul comutat, cu deosebirea ca este
instalat in avans, prin intelegere intre client si compania telefonica. El este prezent
intotdeauna, nefiind nevoie sa fie configurat pentru a-l folosi. Circuitul virtual permanent este
analog cu o linie inchiriata.
Deoarece lumea este plina, inca de terminale care nu cunosc X.25, a fost definit un alt
set de standarde, care descriu cum comunica un terminal obisnuit (neinteligent) cu o retea
publica X.25. Practic, utilizatorul sau operatorul retelei instaleaza o “cutie neagra” la care se
pot conecta aceste terminale, numita “PAD” – Packet Assembler-Disassembler – Asamblor-
Dezasamblor de Pachete si functia ei este descrisa int-un document cunoscut ca X3. Intre
terminal si PAD a fost definit un protocol standard, numit X.28; intre PAD si retea exista un
alt protocol standard, numit X.29. Toate aceste recomandari, impreuna, sunt deseori numite
triplu X.
B. ARPANET-ul
Arpanet este o creatie a ARPA (Advanced Research Projects Agency) din Statele
Unite. Pornita in anii ‘60 actiunea a inceput prin investitii facute in multe universitati
americane, ducind in prima etapa la o retea cu patru noduri care a devenit functionala in
1969. Acesta se poate spune ca a fost nasterea Internet-ului.
Reteaua ARPAnet a aratat cercetatorilor cat este de utila comunicarea rapida intre
echipele de cercetatori aflate in diverse orase ale SUA si s-a dorit conectarea cat mai multor
universitati. La sfarsitul anilor '70, din initiativa Fundatiei Nationale de Stiinta (NSF), a
demarat proiectul de conectare a universitatilor care nu aveau contract de colaborare cu
ARPA. Initial au fost oferite servicii de posta electronica. In 1986 a fost creata o subretea
care conecta sase centre de supercalculatoare din sase orase americane, fiecare
supercalculator conectat fiind legat de un minicalculator LSI-11 (FUZZBALL), numit si
"fratele mai mic". Fuzzball-urile au format subreteaua la care au fost conectate, in timp, 20 de
retele regionale. Reteaua a fost denumita NSFNET.
La mijlocul anilor '80, retelele ARPAnet si NSFNET au "fuzionat" si, odata cu
marirea exponentiala a numarului cererilor de conectare, lumea a inceput sa perceapa colectia
de retele ca fiind o uriasa conexiune de retele. Putem spune ca este momentul nasterii retelei
Internet. Aceasta cuprindea, in 1990, 3000 de retele si 200 000 gazde pentru a ajunge astazi la
cateva zeci de mii de LAN-uri si milioane de gazde. Expansiunea spectaculoasa a retelei a

Pagina 9 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

inceput in 1992, dupa ridicarea interdictiei de a desfasura activitati comerciale pe Internet si


odata cu aparitia WWW
Pornind de la experienta acumulata s-a pornit dezvoltarea altor structuri de retea si
retele. MILNET este o retea militara realizata dupa prototipul ARPA cu mici imbunatatiri.
Retelele prin satelit, SATNET si WIDEBAND au facut pioneratul in acest domeniu.
C. USENET-ul
Pe masura ce unix devenea un sistem de operare din ce in ce mai folosit datorita
puternicelor sale mecanisme, a aparut problema transferului de fisiere intre doua masini unix
iar cei de la Bell Labs au scris un programel micut numit uucp (unix to unix copy) care
functiona folosind doar o linie seriala pina la masina destinatie. Linia seriala era realizata
bazata pe reteaua telefonica existenta folosind un modem. Aceasta 'retea' a crescut rapid
datorita faptului ca integrarea presupunea un efort minimal - un modem si o linie telefonica -
din partea doritorilor. Astfel multe universitati au inceput sa dezvolte aceasta structura care
astazi chiar daca ar parea de domeniul antichitatii inca mai rezista datorita serviciului
implementat pentru prima oara in cadrul ei: network news. (ulterior s-a implementat acest
serviciu si pe Internet alias ARPAnet insa traditia a prevalat in acest caz, cel putin pina acum)
Protocoale ale nivelului Internet (IP, ICMP, ARP)
A. Protocolul pentru Internet (Internet Protocol - IP)
Fiind folosit (dupa cum sugereaza si numele) in principal pentru Internet, acest
protocol identifica diferitele dispozitive ale retelelor, afland pe ce retea se gasesc si care sunt
elementele ce descriu acele dispozitive. Tuturor host-urilor dintr-o retea le sunt atasate niste
indicative, numite adrese IP. Aceasta adresa contine o informatie care face posibila dirijarea
unui pachet de date sau altor informatii catre dispozitivul careia ii este atasata. IP-ul preia
segmentele de la nivelul superior (Host-to-Host) si le reimparte in portiuni mai mici, numite
datagrame sau pachete (packets). Tot IP-ul pune cap la cap aceste datagrame in momentul
receptiei. Pentru fiecare datagrama se atribuie o adresa IP a celui care transmite si una a celui
care primeste. Fiecare element al retelei ce va primi un pachet il va dirija in functie de adresa
de destinatie a acestuia.
B. Protocolul de control al mesajelor prin Internet (Internet Control Message Protocol
- ICMP)
Pentru dirijarea informatiilor si cu oferirea de servicii pentru controlul mesajelor catre
IP, se foloseste ICMP. De fapt, ICMP transmite periodic, sub forma de pachete IP, anunturi
care sa fie receptionate de router, si care contin adrese de IP pentru diferite interfete de retea.
O alta parte a ICMP o reprezinta mesajele de descoperire router (ICMP Router Discovery

Pagina 10 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Messages) prin care se transmit statiilor de lucru mesaje privind caile catre portile de acces
(gateways). Daca un router nu poate trimite datagrame catre o destinatie din diferite motive,
va utiliza ICMP pentru a transmite catre emitator un mesaj prin care il va anunta de neputinta
indeplinirii sarcinii. De asemenea, mesaje de atentionare vor fi trimise prin ICMP si atunci
cand memoria routerului e plina sau cand informatia transmisa a depasit numarul de hopuri
(routere) prin care a trecut.
C. Protocolul de rezolutie a adresei (Address Resolution Protocol - ARP)
Acest protocol realizeaza pentru IP gasirea adresei hardware a masinii de destinatie.
IP-ul trebuie sa informeze nivelul imediat inferior (in cazul de fata, nivelul Acces Retea) de
aceasta adresa. Daca IP-ul nu o stie, foloseste ARP pentru a o afla. ARP-ul gaseste masina ce
are adresa IP specificata in pachetul transmis si interogheaza reteaua care este adresa
hardware a acestei componente. Aceasta adresa hardware e cunoscuta sub numele de Media
Access Control sau MAC. De asemenea, exista un protocol de aflare a adresei IP in cazul in
care se cunoaste doar adresa MAC a componentei de retea (acea componenta nu poseda
harddisk sau alt element de stocare a adresei IP). Acest protocol se numeste protocol de
rezolutie inversa a adresei (Reverse Address Resolution Protocol – RARP) si foloseste
algoritmi destul de complicati prin care combina informatiile despre adresa hardware a
masinii respective si cele ale celorlalte componente de retea pentru a crea un portret de
identificare a adre- sei IP de destinatie.
Protocoale ale nivelului Transport (TCP, UDP)
A. Protocolul de control al transmisiei (Transmission Control Protocol - TCP)
Acest protocol se ocupa cu depistarea si corectarea erorilor ce apar la transmisie.
TCP-ul de pe dispozitivul emitator va realiza o legatura cu cel de pe dispozitivul receptor,
acestea negociind cantitatea de date ce va fi transmisa, ansamblul fiind cunoscut sub
denumirea de „circuit virtual”. Acest tip de comunicatie se numeste „comunicatie orientata pe
conexiune”.
TCP este o conexiune full-duplex, foarte stabila si precisa, cu numarare de jetoane la
receptie si corectie de erori. El preia blocuri de informatie, pe care le imparte in segmente,
aceste segmente fiind ulterior numerotate. La destinatie, protocolul TCP existent acolo va fi
astfel capabil sa reasambleze informatia primita de la emitator. Dupa trimiterea fiecarei
secvente (segment numerotat), protocolul TCP emitator va astepta confirmarea de primire de
la receptor, iar daca nu o primeste recurge la retrimiterea segmentului. Oricum, este important
de cunoscut faptul ca folosirea TCP-ului nu este neaparat necesara decat atunci cand
fiabilitatea este foarte stricta, acest protocol intarziind semnificativ transmisia de date. Pentru

Pagina 11 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

o transmisie mai rapida si mai putin stricta se foloseste un alt protocol, pe care-l vom
prezenta mai jos.
B. User Datagram Protocol – UDP
La fel ca si la TCP, folosirea acestui protocol se face tot in scopul transferului de
segmente, dar in cazul UDP transmisia se aplica la acele elemente ce nu necesita un control
foarte exact. De foarte multe ori, folosirea TCP face ca o retea proiectata pentru viteze bune
sa se transforme intr-una lenta, din cauza timpilor pierduti in scopul deschiderii, mentinerii si
inchiderii unei conexiuni TCP. UDP-ul este mult mai rapid, fapt ce poate fi dedus din modul
in care acesta lucreaza.
Asemanator cu TCP, UDP segmenteaza datele si asociaza cate un numar fiecarui
segment, cu diferenta ca nu secventializeaza datele si nici nu este interesat in a afla modul in
care ajung la destinatie. UDP nu are nici mecanism de confirmare de primire si nici verificare
in timpul transferului, realizeaza doar numerotarea segmentelor si nu lucreaza in flux
continuu de date, cum o face TCP. Dupa transmiterea mesajelor UDP uita de ele, le
abandoneaza complet, acest lucru neinsemnand insa ca este ineficient ci doar ca nu are un
mecanism de asigurare a controlului transmisiei.
UDP nu este un protocol orientat pe conexiune, el nu creeaza un circuit virtual, nici
macar nu contacteaza destinatia.
Protocoale ale nivelului Aplicatie (FTP, SMTP, IMAP, DNS)
A. Protocolul pentru transferul fisierelor (File Transfer Protocol - FTP)
FTP (File Transfer Protocol) este serviciul care da posibilitatea utilizatorilor de a
transfera fisiere de la un calculator aflat undeva in Internet, care se numeste host, pe
calculatorul local. Aceasta este situatia cel mai des intalnita, dar se poate gestiona si
transferul de date dintre doua calculatoare aflate la distanta.Port-urile folosite sunt 21, pentru
trimiterea de comenzi, si 20 sau unul peste 1.024, negociat de client si server, pentru
transferul de date. El are de fapt o structura duala, este atat protocol cat si program. Ca
protocol, FTP deserveste aplicatiile iar ca program se foloseste pentru realizarea manuala de
operatiuni cu fisiere. FTP face transparenta conectarea prin tehnologie de tip Telnet cu un
server FTP, iar apoi creeaza suportul pentru operatiunile cu fisiere, cum ar fi listarea,
manipularea directoarelor, vizualizarea sau transferul de fisiere intre statii. Bineinteles, pentru
limitarea accesului, este necesar un proces de autentificare in momentul accesarii unui server
FTP, proces caruia i se asociaza o parola. Majoritatea serverelor FTP permit si accesarea
anonima (fara parola), dar optiunile pe care le aveti in acest caz sunt limitate.
B. Protocolul pentru transferul trivial al fisierelor (TFTP)

Pagina 12 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Acesta poate fi vazut ca un „frate mai mic” al FTP, realizand tot transferul de fisiere,
dar in acest caz trebuie sa stiti exact ce cautati si unde sa gasiti acele informatii, TFTP fiind
capabil doar de a receptiona fisiere. Nu mai are atat de multe functii ca FTP, dar deschide
doar fisiere publice si nu are implementat un sistem de autentificare, lucru care scade
siguranta si il face utilizabil doar in putine cazuri.
C. Protocolul pentru posta electronica (Simple Mail Transfer Protocol - SMTP)
Probabil cel mai utilizat protocol, acesta se ocupa cu trimiterea si receptia de
informatii sub forma de mesaje de posta electronica, folosind in acest sens port-ul TCP 25 si
un algoritm numit „spooling”. De fapt, SMTP insereaza informatia ce urmeaza a fi trimisa
intr-o coada de mesaje, dupa care o expediaza. In momentul receptiei mesajul e stocat pe un
dispozitiv, de obicei un disc, iar serverul retelei destinatie face o verificare periodica a acestui
disc si va expedia mesajul catre statia destinatie.
Programul /usr/lib/sendmail implementeaza atat clientul cat si server-ul. Aceasta este
denumirea celui mai folosit program de acest tip, cel implementat la Universitatea Berkeley.
Alte variante existente sunt smail, MMDF sau PMDF.
In esenta, sendmail permite postei electronice sa fie livrata utilizatorilor individuali,
sa fie distribuita unor liste de utilizatori, retransmisa unei alte masini, adaugata la un fisier.
Exista numeroase probleme de securitate ale programului (foarte complex) sendmail. El este
considerat de unii un adevarat cosmar pentru securitate. Contine zeci de mii de linii in C si se
executa ca "root". Nu este de mirare ca aceasta violare a principiului minimei increderi are o
lunga si deloc faimoasa traditie in istoria securitatii retelelor.
D. Protocolul IMAP (Internet Message Access Protocol)
IMAP este unul dintre cele mai evoluate protocoale client/server pentru manevrarea
postei electronice. Prezentand cateva imbunatatiri fata de predecesorul sau, POP3, IMAP
permite o mai mare flexibilitate in gestionarea mesajelor si posibilitatea de manevrare a cutiei
postale de "la distanta". Mesajele nu sunt transferate direct de la server la client pentru a fi
citite, ci intr-o prima faza sunt luate numai header-ele (antetele) mesajelor (informatii precum
expeditorul, subiectul, dimensiunea etc.). Apoi, in functie de preferinte, sunt luate de pe
server mesajele dorite. Cele de dimensiuni foarte mari pot fi sterse, fara a fi transferate prin
modem (acest lucru nu este posibil la POP3, decat numai in cazul in care stergi un mesaj fara
sa il citesti si asta numai folosind un anume procedeu, destul de complicat si incomod).
E. Protocolul DNS
Domain Name Server (DNS) este un serviciu format dintr-o baza de date distribuita,
cu ajutorul careia se determina relatia adresa IP-nume de host precum si locul unde trebuie

Pagina 13 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

livrata posta electronica in interiorul organizatiilor. Acest serviciu utilizeaza port-ul TCP si
UDP 53. Procesul folosit pentru rezolvarea acestor probleme se numeste resolver. Atunci
cand DNS incearca sa localizeze un nume de host, calculatorul contacteaza mai multe server-
e de nume. Unul sau mai multe dintre acestea vor raspunde daca vor gasi corespondenta
nume-adresa IP.
In DNS se transmit mai multe tipuri de inregistrari care desemneaza:
-adrese IP (tip A) sau numele canonic pentru un alias de pe un host (tip CNAME);
-diferite calculatoare care pot primi posta pentru un anumit host (tip MX);
-fac legatura inversa, de la adresa IP la nume (tip PTR). De exemplu, daca, folosind
DNS, un calculator cauta numele xyz.ro, el va primi un articol de tip A care ii va indica
adresa IP a acestui calculator, 121.10.12.10. Daca se trimite o cerere MX privind adresa
xyz.ro, se primeste un articol care arata ca posta poate fi livrata la masina xyz.ro si la
host1.xyz.ro.
In afara rezolvarii cererilor exemplificate anterior, DNS mai furnizeaza posibilitatea
transmiterii unor copii intregi ale bazelor de date ale server-elor de nume. Acest lucru se
numeste transfer de zona si este procesul prin care server-ele secundare obtin copii ale
bazelor de date din server-ele principale. Dupa cum s-a precizat, DNS foloseste protocolul
UDP (mai rapid) pentru rezolvarea unor cereri individuale si TCP pentru transfemrile de
zone.
In ceea ce priveste securitatea serviciului DNS, exista doua mari probleme:
• In primul rand este vorba de riscurile pe care le implica transferurile de zone. Ele
reprezinta adevarate "ghiduri" despre ce calculatoare sunt conecate la o anumita retea
organizationala. Se poate bloca transferul de zone folosind un ruter care sa interzica toate
incercarile externe de conectare TCP la port-ul 53. Unele versiuni ale server-ului de nume
facut de Berkeley permit plasarea unei directive xfrnets in fisierul letc/named.boot, directiva
care indica host-urile de la care se permit cererile de transfer de zona;
• O a doua problema de securitate o reprezinta atacurile la server-ele de nume, care
implica atat obtinerea controlului acestora, cat si modificarea continutului bazei de date.
Exista doua cai prin care un atacator poate face ca un server de nume sa furnizeze informatie
incorecta:
informatia gresita poate fi incarcata in memoria cache a server-ului, de la distanta,
prin raspunsuri false la intrebari privind adresele;
prin schimbarea fisierelor de configurare a server-ului, pe calculatorul unde se executa
acesta.

Pagina 14 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

F. Protocolul HTTP
Protocolul HyperText Transfer Protocol (HTTP) este folosit pentru cererea si
receptionarea unor documente de la server-ele WWW (World Wide Web). El foloseste port-
ul TCP 80 si se caracterizeaza prin simplitate: atunci cand un client contacteaza un server
WWW, clientul cere un fisier. Server-ul raspunde cu un document multimedia (MIME), in
format ASCII sau intr-un limbaj specific, HTML (HyperText Markup Language). Apoi,
documentul este afisat. Documentele HTML au trimiteri catre imagini si pot face legaturi de
tip hipertext la alte documente.
HTTP a inceput sa fie proiectat si utilizat din anul 1990, dezvoltindu-se impreuna cu
spatiul WWW. Prima versiune, referita ca HTTP/0.9, a reprezentat un simplu protocol de
transfer de date prin Internet. Urmatoarea versiune, HTTP/1.0, definita de RFC 1945, a
imbunatatit transferul de mesaje, permitindu-se mesaje in format MIME (Multipurpose
Internet Mail Extensions), continind meta-informatii despre datele transmise si despre
semantica dialogului cererilor si raspunsurilor dintre clientii si serverele Web.
A urmat HTTP/1.1 care ofera mai multe functionalitati suplimentare, precum
mecanisme de cautare, adnotare si actualizare, avind suport pentru URI (Uniform Resource
Identifier), specificind adresele ca locatie (prin URL) sau prin nume (via URN). HTTP de
asemeni este utilizat ca protocol generic pentru comunicarea intre agentii utilizator si portile
(gateways) catre alte sisteme Internet, incluzind suport pentru protocoale ca SMTP (Simple
Mail Transfer Protocol), NNTP (Network News Transfer Protocol), FTP (File Transfer
Protocol), Gopher. In acest mod, HTTP permite accesul hipermedia la resurse disponibile din
diverse aplicatii.

CAP II Prezentarea sistemului firewall si a tipurilor acestuia


Definitia unui firewall
Termenul firewall provine din constructii, de la zidurile protejate la incendiu (aszbest)
ce se construiesc pentru a impiedica raspandirea incendiului daca acesta are loc. Firewall-ul
de retea este dispozitivul care - localizat intre reteaua interna si cele externe in punctul de
conectare - controleaza traficul dintre retele. El se afla in pozitia de pe care poate vedea
fiecare pachet, inspectandu-l poate vedea de unde vine si incotro merge s.a.m.d.
Prin definitie un firewall este o structura ce impiedica raspandirea. Tinand seama ca
Internet-ul este, metaforic vorbind, un Iad, termenul pare potrivit: este nevoie de un astfel de
parafoc pentru a proteja LAN-ul de flacarile si de demonii Internetului. Parafocul poate
deveni in unele cazuri o “inchisoare” daca regulile sale nu sunt bine construite si nu sunt

Pagina 15 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

urmarile ambele sale scopuri: acela de a tine viermii, crackerii si hackerii in afara retelei si de
a inchide utilizatorii, angajatii, copiii in interiorul LAN-ului.
Un firewall poate fi configurat sa blocheze tot traficul sau sa permita tot traficul.
Evident, aceste doua cazuri extreme nu ne-ar ajuta la nimic, ca urmare configurarea unui
firewall este o arta, unde actorul se balanseaza pe muchia de cutit dintre aceste doua prapastii.
Avantajul firewall-urilor este ca ele pot bloca traficul neautorizat care intra sau iese
din reteaua noastra interna. Insa, ca pentru orice sistem informatic, se cuvine facuta
precizarea ca firewall-urile nu pot fi in mod absolut sigure. In mod normal, un asemenea
firewall este conectat la doua sau mai multe retele pe care le separa. Firewallul se comporta
ca un politist de trafic de retea, permitand sau stopand pachetele din drumul lor.
O schema simplificata a unui firewall ar putea fi considerata aceasta:
FIG.5 Schema simplificata a unui sistem cu firewall
Necesitatea filtrarii pachetelor
Se face din 3 motive: pentru control, pentru securizare, pentru supraveghere.
a) Controlul: cand se foloseste o masina Linux pentru a conecta o retea interna la o
alta retea (de exemplu Internet-ul) exista posibilitatea selectiei tipului de trafic permis. De
exemplu, header-ul unui pachet contine adresa destinatie a pachetului , astfel incat se poate
preveni trecerea unor pachete catre o anumita parte a retelei externe. De asemenea se pot
controla , in acelasi mod, si pachetele ce vin din exterior.
b) Securitatea: cand masina Linux se interpune intre haosul Internetului si un LAN,
este necesara restrictionarea si verificarea celor ce “bat” la usa retelei pentru a intra. De
exemplu, se poate permite orice trafic generat din retea catre exterior insa, asa numitul "Ping
of Death", provenit din surse extrerne rauvoitoare, poate ingrijora administratorul. Un alt
exemplu:se poate considera periculoasa orice incercare de telnet pe masina Linux din exterior
chiar daca cel ce incearca acest lucru detine parolele necesare; o masina Linux poate fi
transformata intr-un "observator" in Internet, filtrand toate pachetele folorite la initierea
conexiunii ce provin din exterior.

Pagina 16 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

c) Supravegherea: uneori configurari gresite ale unor masinii din interiorul retelei pot
duce la un trafic necorespunzator (cazul unor atacuri de gen smurf sau fraggle). Filtrul de
pachete poate sesiza traficul anormal si poate genera log-uri.
Clasificarea firewall-urilor
Acestea, in literatura de specialitate sunt divizate astfel:
1. Firewall-uri cu filtrare de pachete (filtre de pachete);
2. Firewall-uri bazate pe aplicatii Proxy;
Filtrele de pachete
Acestea sunt construite in kernel-ul Linux. Acesta lucreaza la nivelul retea (conform
standardului ISO-OSI). Datele au permisiunea de a “parasi” sistemul numai daca regulile
impuse de firewall ii permit acest lucru. Pe masura ce pachetele de date sosesc, acestea sunt
filtrate dupa tipul lor, adresa sursa, adresa destinatie si alte informatii referitoare la port
continute in fiecare pachet.

FIG XX: Fitru de pachete

Filtrele de pachete sunt de 2 tipuri: simple si avansate.


Filtre de pachete simple
Acest tip de firewall este de fapt un router bine configurat, cu liste de acces, filtre
aplicate corespunzator. Reprezinta cea mai simpla forma de protectie. Ele verifica fiecare
pachet ce trece si, pe baza unor reguli de filtrare, decide daca pachetele respective sunt lasate
sa treaca sau sunt blocate. Examinarea pachetelor are ca scop analizarea informatiei primare
din interior, detalii de genul adresa sursa sau destinatie, port sursa sau destinatie, protocol etc.
Pentru fiecare pachet trebuie sa existe o regula pe baza careia sa se ia decizia. Daca nu este
stabilita nici o regula, pachetul va fi blocat.

Pagina 17 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Avantajele oferite de acest tip de firewall sunt:


permite controlul la nivelul de jos asupra fiecarui pachet ce trece prin firewall;
fiecare camp al pachetului este verificat - de exemplu: pachete IP, sursa, destinatie,
protocol (TCP sau UDP), port, tipul serviciului;
poate identifica pachetele cu adresa sursa falsificata; i
in mod normal, este singurul loc prin care poate trece traficul intre retele, fiind relativ
greu de ocolit.
Filtrarea de pachete de acest fel este inclusa in majoritatea sistemelor de operare de pe
routere, functionalitatea unui asemenea firewall putand fi realizata de un simplu router.
Printre dezavantaje ar fi de mentionat ca este relativ dificil de configurat. Mai trebuie
mentionat faptul ca nu ofera protectie absoluta: de exemplu se poate sa se permita trafic
http/web (port 80), dar nimeni nu garanteaza ca pe acelasi port nu se poate trafica si, de
exemplu, IRC.
Pentru a folosi un asemenea firewall e nevoie de soft sau/si de echipament. In acest
sens, producatorii majori de routere precum Cisco, 3Com, Bay networks, Lucent/Ascend
ofera solutii complete. Se pot folosi, de asemenea, implementarile din sistemele de operare
UNIX, cum ar fi Linux si BSD. Se pot folosi si solutii sub Windows, dar sunt destul de
nesigure si instabile.
Filtre de pachete avansate
Un firewall de acest tip incearca sa tina pasul cu conexiunile de retea si pachetele ce il
traverseaza, in sensul in care un set aditional de reguli si criterii poate fi definit pe baza carora
sa permita sau blocheze traficul.
Cand un firewall de tipul filtru de pachete "vede" un pachet, acel pachet este izolat, nu
are trecut si nici prezent, cel putin din punctul de vedere al firewall-ului. Pachetul putem sa-l
consideram fara stare (stateless).
Un firewall dinamic (statefull) tine cont de starea pachetului. El inregistreaza
informatie folositoare, de exemplu, cu privire la identificarea pachetului, incadrarea lui intr-o
serie, daca e rezultat al unei cereri anterioare , daca e o cerere noua etc.
De exemplu, daca un pachet transporta un flux de date video, firewall-ul poate ca
anterior sa fi inregistrat informatie despre o gazda particulara care sa fi facut cererea de flux
video. Daca raspunsul se intoarce pentru aceeasi gazda el poate permite acest tip de trafic pe
baza unei corespondente din tabela de filtrare.

Pagina 18 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Un asemenea firewall, in starea lui originara, blocheaza tot traficul de intrare si


permite tot traficul de iesire. Cand se face o cerere din interior si firewallul vede, tine minte
astfel incat numai raspunsului rezultat al unei cereri autorizate ii va fi permis tranzitul.
Avantajele unui asemenea firewall peste cele deja mentionate la cel simplu ar fi:
- posibilitatea de a verifica starea unui pachet pe baza informatiei de aplicatie care il
foloseste;
- posibilitatea de inregistrare detaliata a informatiei despre fiecare pachet care il
traverseaza. In mod normal, parametrii pe baza carora un asemenea firewall decide starea
pachetului sunt aplicatia care cere pachetul, durata conexiunii, sistemele interne si externe ce
sunt implicate in aceasta conexiune etc.
Dezavantajul ar fi ca toata aceasta prelucrare dureaza si asta poate cauza intarzieri in
comunicatia care traverseaza firewall-ul.
Producatori de aceste tipuri de firewall-uri sunt: Cisco (cu PIX), Sonic Systems,
Lucent/Ascend, Nortel Networks sau cu UNIX... si pachete specifice acestuia (FWTK adica
firewall toolkit). Se mai pot folosi si pachetele de soft comerciale oferite de CyberGuard
Corporation, CheckPoint, Network Associates Inc. si altii.
Multe routere de retea au capacitatea de a executa unele servicii de firewall. Filtrele
de pachete pot fi gandite ca un tip de router; din aceasta cauza este nevoie de o profunda
intelegere a structurii pachetului IP.
Deoarece volumul de date analizat este foarte mic, filtrele de pachete au o latenta
scazuta in cadrul retelei. Acestea nu confera controlul accesului in sistem prin parole.
Utilizatorii nu se pot identifica pe ei insisi. Singura identitate pe care o are utilizatorul este
adresa IP asignata catre calculatorul lor. Aceasta poate constitui o problema daca se foloseste
protocolul DHCP (Dynamic Host Configuration Protocol) - asignarea dinamica a adreselor
IP, pentru ca regulile sunt bazate pe adrese IP.
Filtrele de pachete sunt mai transparente utilizatorului. Utilizatorul nu trebuie sa
configureze aplicatiile lor pentru a accesa Internet-ul.
Firewall-urile bazate pe servere proxy
Acestea sunt folosite cel mai adesea in
controlul sau monitorizarea traficului. Unele
aplicatii ale acestora ascund informatia dorita.
Acestea micsoreaza cerintele largimii de banda si

Pagina 19 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

scad accesul urmatorului utilizator la aceeasi informatie. De asemenea ofera o indiscutabila


evidenta a ceea ce a fost transferat.

Exista 2 tipuri de servere proxy: de aplicatie si de tip SOCKS.


Proxy de aplicatie
FIG XX: Server Proxy
Un Firewall Proxy de aplicatii nu permite in mod normal traficul dintre retelele la care
este conectat. In loc de asta, el accepta trafic de la o anumita aplicatie client din reteaua
interna si apoi el creeaza o conexiune diferita de la el insusi catre reteaua externa, mediind
astfel pana la server. Clientul dinauntrul retelei noastre lucreaza comunicand direct cu Proxy
Firewall-ul, care, la randul lui, lucreaza cu serverul extern. Astfel, nimeni din exterior nu
poate atinge nimic din interior.
De asemenea, daca nu se instaleaza si configureaza corespunzator programe proxy
pentru aplicatiile de care avem nevoie, serviciul nu este folosibil. Acest fapt impiedica
realizarea conexiunilor ce apartin unor aplicatii si protocoale neconfigurate.
Aceste servere pot filtra chiar cuvintele “nepotrivite” din site-urile vizitate sau pot
scana virusii.
Aplicatiile serverelor proxy pot autentifica utilizatorii. Inainte ca o conexiune catre
afara sa fie facuta, serverul utilizatorului sa se logheze mai intai. Pentru un utilizator de
Internet acesta va face fiecare site ca si cum ar cere o autentificare.
Un exemplu clasic al fi cel de web proxy firewall. Aplicatia browser client se
conecteaza fie la portul 8080 al serverului http proxy, fie pe standardizatul port 80, fie pe
1080 sau orice alt port configurat. De aici incolo, proxy firewallul va prelua cererea si o va
redirecta catre serverul apelat de client. Toata aceasta operatiune este transparenta pentru
client, deoarece procesul are loc automat.
Cateva aplicatii comune pentru proxy firewalluri sunt cele de HTTP (web),
HTTPS/SSL (secure web), SMTP (mail), POP3 (mail), IMAP (mail), NNTP (news), Telnet
(shell), FTP (file transfer), IRC(chat).
Un firewall proxy de aplicatii poate fi configurat astfel incat sa accepte orice
conexiuni din reteaua interna, dupa cum poate fi configurat sa permita accesul in exterior pe
baza diverselor autentificari. Acest fapt aduce un vant nou de securitate, restrictionand
conexiunile spre exterior doar la cele autorizate. Daca reteaua interna este compromisa, riscul
de a fi folosita ca trambulina pentru lansarea de atacuri inspre alte retele este redus
considerabil.
Avantajele acestuia sunt:

Pagina 20 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

un control deplin asupra conexiunilor;


se poate permite sau bloca accesul la anumite servere pe baza de adrese IP ale sursei
si destinatiei;.
eliminarea serviciilor inutile din reteaua proprie prin restrictionarea cererilor inspre
exterior la anumite protocoale si aplicatii. Daca un serviciu nu este pornit, el nu poate fi
folosit si nici atacat.
capacitatea de a inregistra date despre toate conexiunile, cu tot cu sursa, destinatia si
durata lor.
Ar putea fi mentionat si un dezavantaj:
configurarea mai greoaie; aplicatiile client pot avea nevoie de configurari aditionale.
Un exemplu pentru intelegerea acestor tipuri de firewall-uri: un utilizator acceseaza
un alt computer prin telnet iar de aici face telnet undeva in afara. Cu ajutorul unei aplicatii a
serverului proxy acest proces este automatizat. La conectarea prin telnet in afara se face mai
intai trimiterea la proxy. Apoi serverul proxy va face conexiunea cu serverul dorit (din afara)
si va intoarce informatia catre respectivul utilizator.
Proxy-urile SOCKS
Un server SOCKS seamana mai mult cu un vechi switch. Pur si simplu incruciseaza
sistemul direct printr-o conexiune cu exteriorul. Multe servere de acest gen lucreaza cu
conexiuni de tip TCP (Transport Control Protocol). Si aidoma filtrelor de pachete, acestea nu
vor autentificarea utilizatorilor. Acestea pot totusi inregistra de unde se conecteaza fiecare
utilizator in parte.
Presupunand o oarecare familiaritate cu nivelurile de protocoale TCP/IP urmatoarele
pagini se doresc o prezentare a parafocurilor in general, insistand asupra Linux-ului si a
modului in care sunt implementate in acest SO parafocurile cu filtrare.
Arhitectura unui firewall
Exista o multime de cai de a structura o retea pentru a proteja sistemele folosind un
firewall.
Daca exista legaturi dedicate catre Internet printr-un router, acesta din urma se poate
pune direct in sistemul firewall. O alta modalitate este conectarea directa printr-un hub pentru
a da acces total serverelor de dupa firewall.
Arhitectura dial-up.
Se foloseste in cazul unei conexiuni dial-up, asemanatoare unei linii ISDN. In aceasta
situatie se poate folosi o a 3-a placa de retea pentru obtinerea unei asa-numite zone
demilitarizate “DMZ”. Acest lucru confera un control stabil asupra tuturor serviciilor de

Pagina 21 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Internet si, mai ales, separa eventualii “raufacatori” de reteaua locala. Un DMZ pe o retea
este o zona protejata de firewall-uri, plasata intre Internet si reteaua privata a unei
intreprinderi. Functiile unui DMZ sunt multiple, printre care si acelea de a asigura un nivel
superior de securitate pentru reteaua privata a firmei (prin diverse tehnici implicand proxy-uri
unidirectionale, mecanisme tip NAT/PAT si/sau filtre de pachete). Insa tot DMZ-ul este locul
tipic in care "traiesc" serverele de Web ale firmei (este "nisa lor ecologica").

(LAN)
Internet Firewall Workstations
(HUB)

FIG. 6 Arhitectura dial-up Proxy Server


Arhitectura cu router
Daca exista exista un router intre reteaua locala si Internet, acesta se poate configura,
exisitand posibilitatea de a adauga reguli de filtrare; daca routerul este sub administrarea
providerului de Internet, acesta se va ocupa de acest lucru.

(LAN)
Internet Firewall Workstations
FIG. 7 Arhitectura cu Router
router (HUB)

Firewall cu server de proxy.


(DM Z)
Este util in cazul in care se doreste monitorizarea
(HUB) utilizatorilor dintr-o retea locala de
dimensiuni mici. Providerii de Internet se folosesc de aceasta facilitate in scopuri publicitare.

Firewall/ Pro xy (LAN)


Internet Workstations
System
(HUB)

FIG. 8 Arhitectura cu server proxy.


Dupa preferinta, se poate pune serverul proxy in reteaua locala:
In acest caz firewall-ul ar trebui sa aiba reguli de permitere a accesarii Internetului
doar de catre serverul proxy direct de la provider; utilizatorii il vor putea accesa doar prin
proxy.
O configuratie de conectare redundanta
ISP #1 (WAN) Partners
(HUB)

FIG. 9 Arhitectura cu server proxy


Se pot creea servicii cu disponibilitate 100%
Firewall
folosind tehnici avansate pentru routere
ISP #2 (DM Z) (LAN)
Router (VPN) Workstations
si servere si mai multi provideri de Internet.
(HUB) (HUB)

Pagina 22 din 86 Proxy Server


Outside Shared
Workstations Server
Server
VPN
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Politici de securitate
Introducere
Inainte de a se trece la construirea efectiva a parafocului se va stabili politica de
securitate pe care parafocul o va deservi, politica ce va trebui sa includa un plan de securizare
interna si externa, si, in conformitate cu acesta, un set de proceduri.
Definitie
Politica de securitate este un set de reguli formale pe care persoanele care au acces la
tehnologia si informatiile organizatiei in care sunt angajate sunt obligati sa le adopte (RFC1
2196).
Politicile Deny all/Allow all
Exista doua filozofii diametral opuse de abordare a planului de securizare. Ambele
alternative sunt modele viabile, adoptarea unuia sau a altuia depinzand de situatie si de
necesitatile de securitate.
Prima optiune este acceea de a inchide toate servicile si de a le permite apoi doar pe
cele necesare. Acest model, denumit modelul "deny all", este , in general, mult mai sigur
decat celalalt model descris in paragraful urmator. Este necesar un efort mai mare pentru
implementarea configuratiei "deny all" si de o foarte buna cunoastere a servicilor si a
protocoalelor. Permitand doar serviciile cunoscute se poate realiza a buna analiza a
serviciilor/protocoalelor si a design-ului de maxima securitate potrivit cu nivelul de securitate
al retelei.
Celalalt model, modelul "allow all", este mult mai usor de implementat dar este in
general mult mai nesigur decat modelul "deny all". Sunt pornite toate serviciile si sunt
permise toate protocoalele in limitele retelei. (Acesta este modelul default adoptat de routere.)
Pe masura ce gaurile de securitate devin vizibile acestea sunt astupate prin restrictionare.
Fiecare din aceste modele pot fi aplicate diferitelor portiuni din retea, depinzand de
cerintele de functionalitate, de controlul administrativ, etc. Este recomandat insa pentru
legatura cu exteriorul (ex. Internet) alinierea la o politica puternic defensiva prin adoptarea
modelului "deny all"
Crearea unei politici de securitate
Principiile ce determina politica de securitate sunt simple si pot fi urmarite in
exemplul urmator ce pleaca de la modelul "deny all":
1. Se definesc serviciile necesare (interne si externe).
2. Se stabilesc persoanele care acceseaza aceste servicii.
1
RFC = Request For Comments

Pagina 23 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

3. Se atribuie fiecarui grup de persoane accesul la anumite sevicii.


4. Pentru fiecare serviciu sunt descrise modurile de securizare ale acestuia.
5. Orice alte forme de acces sunt declarate incalcari ale regulilor de securitate.
Filtrarea de pachete sub Linux
Kernel-ul Linux-ului a inclus suportul pentru filtrarea de pachete incepand cu
versiunea 1.1 .Prima generatie, bazata pe ipfw (filtrul de pachete din BSD) a fost portata de
Alan Cox la sfarsitul anului 1994. Aceasta a fost dezvoltata de Jos Vos si altii pentru
versiunea 2.0; programul ipfwadm controla regulile de filtrare din kernel. In 1998 ,pentru
kernelul 2.2 Rusty Russell si Michael Neuling au creat programul ipchains. A patra generatie
de filtre de pachete iptables a aparut in 1999 odata cu rescrierea sa pentru kernel-ul 2.4. In
mare parte va fi studiat pachetul iptables.
Este necesara configurarea in kernel a infrastructurii netfilter; netfilter este portul
kernel-lui in care se insereaza alte module (cum ar fi iptables). Versiunea de kernel care
permite acest lucru trebuie sa fie mai mare de 2.3.15; se va raspunde "Y" la optiunea
CONFIG_NETFILTER din configuratia kernelului.
De precizat ca iptables face parte din categoria firewall-urilor care pot urmari
conexiunile si pot realiza filtrari pe baza acestui lucru.
Modul in care pachetele traverseaza filtrul
Initial kernelul include trei liste de reguli; aceste liste se numesc: lanturi de parafoc
(firewall chains) sau, simplu, doar lanturi. Aceste trei lanturi sunt: INPUT, OUTPUT si
FORWARD. De notat ca aceste lanturi au alta menire decat lanturile intalnite in kernel-urile
2.0 si 2.4. Grafic lanturile INPUT , OUTPUT si FORWARD pot fi reprezentate astfel:

DECIZIA DE
ROUTARE FORWARD

INPUT
OUTPUT

PROCESARE
LOCALA

FIG.10 Modul in care pachetele traverseaza filtrul


Forward, Output si Input reprezinta cele trei lanturi mentionate anterior. Cand un
pachet este captat de unul din cele 3 din diagrama, lantul este examinat si se decide soarta
pachetului. Daca lantul decide oprirea pachetului (DROP), pachetul este eliminat, dar daca
lantul decide acceptarea lui (ACCEPT) el continua parcurgerea diagramei.

Pagina 24 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Un lant este un set de reguli. Fiecare regula decide astfel: daca header-ul pachetului
are forma specificata in regula ii va decide soarta. Daca forma specificate in regula nu se
potriveste cu forma header-ului atunci urmatoarea regula din lant este consultata. In final
daca nu mai exista nici o regula de consultat kernelul verifica politica lantului (chain policy)
(default-ul pentru pachetele care nu se potrivesc nici unei reguli din lant) si decide soarta
pachetului. In sistemele bine securizate de obicei politica pentru pachetele care nu s-au
potrivit nici unei reguli indica eliminarea acestora (DROP).
Pentru intelegerea celor trei lanturi de reguli predefinite in kernel este necesara
descrierea succinta a modului de manevrare a pachetelor de catre kernel:
1. Cand un pachet vine (de exemplu, printr-o placa de retea Ethernet) kernel-ul
examineaza pentru inceput destinatia pachetului: acest proces este denumit routare.
2. Daca pachetul este destinat masinii, pachetul coboara in diagrama intalnind lantul
INPUT. Daca trece de acest lant este destinat apoi unor procesari ulterioare si orice proces ce
il asteapta il poate primi.
3. Altfel daca kernel-ul nu are activata optiunea de forward-are sau nu stie sa forward-
eze, pachetul este eliminat. Daca forward-area este activata, si pachetul este destinat unor alte
interfete (daca exista alta interfata), atunci pachetul isi continua drumul intrand in lantul
FORWARD. Daca este acceptat el este trimis mai departe.
4. In final, un program ruland pe masina Linux poate trimite pachete in retea. Aceste
pachete trec prin lantul OUTPUT; daca ele sunt acceptate atunci pachetul poate fi trimis catre
interfata careia ii este destinat.
Managementul unui sistem firewall
Primii pasi în tehnologia firewall au fost facuti ca o necesitate de expertii în sisteme
de operare si de protectie. Setul de instrumente din domeniul public a devenit baza pe care s-
au construit sistemele firewall de larg interes. Din fericire, nu este nevoie de o modificare la
nivelul de utilizator si de expertiza. Multe dintre sistemele de acces si protectie (firewall)
testate au oferit excelente interfete de utilizator, care permit oricarui manager de retea sa-si
configureze în liniste un firewall.
Firewall for UNIX (Digital) are cea mai inteligenta si cea mai puternica interfata de
management dintre produsele analizate. Dispozitivul firewall si sistemul de operare sunt
gestionate cu "Netscape Navigator", pus pe un display "Sistem Windows X", atasat local,
care modifica usor o configuratie sau alta. Digital a inclus toata documentatia sa on-line
(activa, gata de lucru) ca hipertext, ceea ce este un ajutor considerabil.

Pagina 25 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

BorderWare (Border) a lansat, de asemenea, o interfata usor de manevrat. Deoarece


interfata se bazeaza pe modul de lucru ecran, o biblioteca de ecran UNIX este preferabila
uneia "Windows X", având mai putine artificii la dispozitie, fiind si mai accesibila, mai usor
de înteles.
Ambele produse folosesc o singura interfata pentru coordonarea sistemului de operare
si a proceselor de configurare a firewall-ului, lucru de luat în seama.
O solutie similara este Firewall-1 (Check Point), care utilizeaza tot "Windows X", dar
care are o interfata mai opaca. O parte din complexitatea sa se datoreaza gamei mai largi de
capacitati produse de Check Point. Ca o concluzie, cu Firewall-1 poti executa anumite functii
care nu sunt compatibile cu Firewall for UNIX sau cu BorderWare.
Black Hole (Milkyway) si SNG (IBM) au si ele interfete de gestiune competitive,
bazate tot pe "Windows X", dar sunt produse mult mai dificil de utilizat decât altele. Sunt
înzestrate cu o buna documentatie, Black Hole în format carte, iar SNG on-line.
Gauntlet, Sidewinder si Cyber Guard ofera interfete de gestiune bazate pe modul
ecran, destul de simplu de manevrat. Totusi, acest trio ne cere sa patrundem în UNIX mai
mult decât vrem noi, pentru configurarea command-line a fiecarui firewall sau a optiunilor
sistemelor de operare. Interfata Sidewinder a fost mai instabila: "a cazut" în câteva rânduri, în
faza de configurare software.
Chiar mai rau, atunci când s-a ajuns în situatia de a fi fortati sa se editeze manual un
fisier de configurare - asa cerea documentatia -, un singur spatiu pus unde nu trebuia în fisier
a facut dispozitivul firewall inutilizabil, fiind necesare doua ore si pentru restabilire.
Interfetele command-line ale produselor Security Router (HSC) si Firewall IRX
(Livingstone) au fost si acestea inoperante, desi tipurile de operatii necesare le-au facut usor
de configurat. Astfel, marja de eroare a fost semnificativ mai mare. Aceste sisteme cer mai
multa analiza si întelegere a protectiei de retea, decât alte sisteme firewall.
Experientele cele mai nereusite au fost cu interfetele de management oferite de
Brimstone (SOS) si de FireWall/Plus (Network-1), care au avut nevoie de sprijin ingineresc
uman considerabil, înainte de "a muri" pur si simplu. FireWall/Plus a fost fascinant prin
puterea sa si prin limbajul de comanda oferite, dar designul sistemului era confortabil doar
pentru un expert, si aceasta dupa ceva timp de practica si testare.
În general, documentatiile au urmat îndeaproape interfetele de utilizator, putând fi
caracterizate prin "complete" si "explicite". Milkyway si SOS au avut generoasa idee de a
include în manual separat pentru utilizatorii finali situati intern si în afara firewall-ului.
Digital si IBM au cea mai buna documentatie on-line.

Pagina 26 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

CAP III
Configurarea sistemului de operare Linux ca FIREWALL
Introducere
Pentru inceput, instalarea sistemului trebuie sa fie minimala; introducerea strictului
necesar prevenind unele probleme ulterioare, eliberand sistemul de task-uri inutile si facand
administrarea mai usoara. Cu cat mai putin software instalat cu atat mai putine gauri de
securitate, backdoor-uri si bug-uri in sistem. Dupa instalare se pot extrage serviciile care nu
sunt necesare din /etc/inetd.conf, asta in cazul in care se decide ca severul inetd sa fie pornit
si se va trece la recompilarea kernelului deoarece de cele mai multe ori kernel-urile cu care
vin distributiile Linux sunt generice si modulare. Kernel-ul trebuie sa fie si el specific si
specializat in task-urile ce ii vor fi dedicate.
Pachetul "iptables"
Ultima versiune a pachetului iptables este iptables-1.2.6a. Instalarea este intuitiva si
nu comporta mai mult de 6-7 pasi:

a) bunzip2 iptables-1.2.6a.tar.bz2
b) tar xvf iptables-1.2.6a.tar
c) cd iptables-1.2.6a
d) make pending-patches KERNEL_DIR=<directorul in care se afla sursa
kernelului>; se introduc apoi noi optiuni in configurarea kernelului si sunt remediate bug-
urile din versiunile anterioare
e) Se recompileaza kernelul;
f) make KERNEL_DIR=<directorul in care se afle sursa kernelului>
g) make install KERNEL_DIR=<directorul in care se afle sursa kernelului>.
Noua comanda iptables, disponibila dupa instalare, va realiza interfatarea intre user si
kernel. Cu ajutorul acestei comenzi se vor crea noi reguli, se vor lista sau se vor sterge
regulile deja existente, se va seta politica de manevrare a pachetelor, etc ceea ce inseamna ca
pentru crearea parafocului vor fi necesare o serie de comenzi iptables. De remarcat aparitia
altor doua comenzi: iptables-save si iptables-restore a caror utilizare va fi descrisa in
document. In acest moment de mare ajutor sunt si paginile de manual ale comenzii.
Compilarea kernel-ului
Versiunea stabila de kernel pentru care sunt prezentate optiunile de configurare a
parafocului este 2.4.18. Vizualizarea optiunilor este asemanatoare cu meniul optinut in urma
comenzii make menuconfig in directorul ce contine sursa kernel-ului:

Pagina 27 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Din meniul principal selectand "Networking options--->":


<*> Packet socket
[*] Packet socket:mmapped IO
<*> Netlink device emulation
[*] Network device filtering (replaces ipchains)
[*] Network packet filtering debugging
[*] Socket Filtering
<*> Unix domin sockets
[*] TCP/IP networking
[ ] IP: multicasting
[*] IP: advanced router
[*] IP: policy routing
[“] IP: use netfilter MARK value as routing key
[“] IP: fast network address translation
[ ] IP: equal cost multipath
[“] IP: use TOS value as routing key
[ ] IP: verbose route monitoring
[ ] IP: large routing tables
[ ] IP: kernel level autoconfiguration
< > IP: tunneling
< > IP: GRE tunnels over IP
[ ] IP: ARP daemon support (EXPERIMENTAL)
[ ]IP: TCP Explicitit Congestion Notification support
[“] IP: TCP syncookie support (disabled per default)
IP: Netfilter Configuration--->
< > The IPv4 protocol (EXPERIMENTAL)
< > Kernel httpd acceleration (EXPERIMENTAL)
[ ] Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)
< > 802.1Q VLAN Support(EXPERIMENTAL)
---
< > The IPX protocol
< > Appletalk protocol support
< > DECnet Support
< > 802.1d Ethernet Bridging

Pagina 28 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

< > CCITT X.25 Packet Layer (EXPERIMENTAL)


< > LAPB Dta Link Driver (EXPERIMENTAL)
[ ] 802.2 LLC (EXPERIMENTAL)
[ ] Frame Diverter (EXPERIMENTAL)
< > Acorn Econet/AUN protocols (EXPERIMENTAL)
< > WAN router
[ ] Fast switching
[ ] Forwarding between high speed interfaces
QoS and/or fair queueing --->
In general au fost marcate doar optiunile absolut necesare cu 'Y'. Semnul “ a fost pus
pentru a marca unele optiuni facultative legate de iptables. O singura optiune insa ar trebui sa
ramana dezactivata: [ ] IP: TCP Explicit Congestion Notification support. Daca aceasta
optiune este activata, masina Linux nu va putea sa comunice cu aproximativ 8% din Internet.
Cand ECN este activ, unele pachete pe care masina Linux le trimite vor avea bitul ECN setat;
acest bit “sperie” o serie de routere din Internet si de aceea este important ca ECN sa fie
dezactivat. Este posibila si dezactivarea ECN ulterioara configurarii kernel-ului prin folosirea
interfetei /proc cu sistemul:
if [ -e /proc/sys/net/ipv4/tcp_ecn]
then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi

Meniul "Netfilter Configuration": (dupa instalarea pachetului iptables-1.2.6a)


<*> Connection tracking (required for masq/NAT)
<*> FTP protocol support
<*> IRC protocol support
<*> Userapace queueing via NETLINK (EXPERIMENTAL)
<*> IP tables support (required for filtering/masq/NAT)
<*> Limit match support
<*> Mac Address match suport
<*> netfilter MARK match support
<*> Multiple port match support
<*> TOS match support
<*> AH/ESP match support (NEW)

Pagina 29 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

<*> LENGTH match support


<*> TTL match support
<*> tcpmss match support
<*> Connection state match support
<*> Unclean match support (EXPERIMENTAL)
<*> Owner match support (EXPERIMENTAL)
<*> Packet filtering
<*> REJECT target support
<*> MIRROR target support
<*> Full NAT
<*> MASQUERADE target support
<*> REDIRECT target support
[*] NAT of local connections (NEW)
<*> Basic SNMP-ALG support (EXPERIMENTAL)
<*> Packet mangling
<*> TOS target support
<*> DSCP target support (NEW)
<*> MARK target support
<*> LOG target support
<*> ULOG target support (NEW)
<*> TCPMSS target support

Este recomandabila citirea help-ului fiecarei optiuni din meniul "Netfilter


Configuration". Sunt transcrise toate optiunile selectate pentru a face posibila apoi exporarea
tuturor posibilitatilor pachetului netfilter.
Urmeaza recompilarea :
make dep; make clean; make bzImage; make modules; make modules_install,
instalarea noului kernel si reboot-area (repornirea) sistemului.
Configurari ulterioare
Pentru a completa pregatirea sistemului in vederea implementarii parafocului mai
trebuie configurate placile de retea, gestionate adresele de retea si testata reteaua. Daca
masina Linux va fi folosita drept router, este necesara activarea forward-arii IP, setare ce va
da kernel-ului posibitatea sa permita pachetelor sa traverseze sistemul.
echo 1> /proc/sys/net/ipv4/ip_forward

Pagina 30 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Firewall-urile avansate
Configurarea SysCTL
Kernel-ul contine o serie de variabile ce pot fi setate prin intermediul interfetei /proc
(/proc/sys/net/ipv4). Modificarea unora dintre aceste variabile determina modul in care se vor
lua anumite decizii de filtrare. Astfel:
a) (/proc/sys/net/ipv4/*)
-ip_forward 0 -inactiv,diferit de 0 activ. Permite forward-area intre interfete;
-ip_default_ttl (ttl=time-to-live) numar natural
-ip_conntrack_max . urmarirea conexiunii se face pentru un numar finit de conexiuni.
Acest nr. are o valoare default, dependenta de dimensiunea memoriei: 64Mb - 4096 , 98Mb -
6136, 128Mb - 8192. Se poate creste aceasta limita insa trebuie retinut ca fiecare conexiune
urmarita ocupa 350 bytes din memoria kernel-ului.
-tcp_syncookies - aceasta variabila poate fi setata doar daca kernel-ul a fost compilat
cu optiounea CONFIG_SYSCOOKIES. Este folosita pentru prevenirea atacurilor de tip "syn
flood". Aceasta facilitate este periculoasa daca este folosita pentru server-e foarte incarcate
deoarece se pot confunda conexiunile legale nerealizate cu un atac ceea ce va duce la
degradarea serviciilor. Alte variabile: tcp_max_syn_backlog, tcp_synack_retries,
tcp_abort_on_overflow (BOOLEAN).
-tcp_max_syn_backlog nr. maxim de cereri de conexiuni retinute care inca nu au
primit aprobarea(acknowledgement) clientului.
-tcp_ecn -activeaza Explicit Congestion Notification
-ip_dynaddr
-icmp_echo_ignore_all;
-icmp_echo_ignore_broadcasts;
-icmp_destunreach_rate, icmp_paramprob_rate, icmp_timeexceed_rate,
cmp_echoreplay_rate -limiteaza rata de trimitere a pachetelor icmp (nr. natural);
-icmp_ignore_bogus_error_responses
b) (conf/interface/*) ->
c) (conf/all/*) sunt modificate setarile tuturor interfetelor:
-log_martians -BOOLEAN. Pachetele cu adrese imposibile vor fi logate de catre
kernel;
-accept_redirects -BOOLEAN. Sunt acceptate mesaje ICMP redirectate.Default
TRUE (host), FALSE (router).
-forwarding -BOOLEAN Este permisa forward-area intre interfete.

Pagina 31 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

-secure_redirects -BOOLEAN. Sunt acceptate mesajele ICMP redirectate doar pentru


gateway-uri(in lista de gateway-uri default)
-send_redirects -BOOLEAN. Pot fi trimise mesaje redirectate. Default: TRUE
-accept_source_route - BOOLEAN . Sunt acceptate pachete cu optiunea SRR. Default
TRUE (router) FALSE (host)
-rp_filter Boolean 1: se face validarea sursei (RFC1812), 0: nu se face validarea
sursei.Valoarea default este 0.
Cu ajutorul aceleiasi interfete se pot lista:
-conexiunile mascaradate sau urmarite: cat /proc/net/ip_conntrack
-toate tabelele disponibile: cat /proc/net/ip_tables_names
Urmarirea conexiunilor
Reamintim faptul ca scopul unui firewall este aceea de a preveni ca traficul nedorit sa
ajunga din punctul A in puncul B. Exista reguli generale care pot specifica: "daca pachetul
este destinat portului 23 acesta poate trece"; exista reguli ,mai subtile, care pot preciza: "atata
vreme cat pachetul are bitul FIN setat poate trece" . Astfel de reguli nu pot deosebi inceputul,
continutul sau sfarsitul nici unei sesiuni TCP/UDP/ICMP; ele verifica fiecare pachet in parte
fara a le distinge rolul in 'conexiune' (canal de comunicatie). Este foarte posibil ca pachetul
cu flag-ul FIN setat sa apartina unuei scanari FIN iar pachetul destinat portului 23 sa fie o
incercare de atacare a sesiunii telnet. Odata cu pachetul iptables a fost introdusa si
posibilitatea de urmarire a conexiunilor si de a distinge scanarea de porturi si atacurile DoS
de conexiunile legale prin modulul Conntrack:
IP: Netfilter Configuration
<Y> Connection tracking (required for masq/NAT)
<Y> Connection state match support
Router-ele Cisco au clauza "established" pentru a permite recunoasterea sesiunilor tcp
stabilite; si pentru ipfw exista clauza "established". Ipfwadm permite recunoasterea starilor
conexiunilor prin clauzele "setup/established". De fapt, in aceste cazuri nu se realizeaza o
urmarire a conexiunilor ci doar sunt citite flag-urile TCP (din acest motiv nu pot fi folosite
aceste clauze si pentru protocoalele UDP si ICMP). Oricine poate crea pachete cu flaguri
setate care pot rece prin firewall.
Tehnologia linux a urmaririi conexiunilor (connection tracking) trateaza schimburile
de pachete ca entitati logice retinandu-le inceputul, cuprinsul si incheierea; iata de ce, chiar si
comunicatiile UDP si ICMP, care nu sunt bazate pe conexiuni, pot fi tratate. Conntrack poate
face chiar mai mult decat recunoasterea conexiunilor; poate clasifica fiecare pachet pe care il

Pagina 32 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

analizeaza in una din cele patru stari ale conexiunii: NEW, INVALID, RELATED si
ESTABLISHED astfel incat, in cadrul firewall-ului se pot lua acum decizii prin
recunoasterea starii.
Plecand de la modelul "deny all" se va institui politica de securitate:
iptables --table filter -P $CHAIN DROP ,
unde CHAIN = "INPUT OUTPUT FORWARD", care va usura constructia regulilor
bazate pe verificarea si urmarirea conexiunii.
Starea NEW: Cand se incearca o conexiune la un server extern, (care nu se afla pe
aceeasi masina), un pachet, sau un set de pachete, sunt initiate de masina care solicita
conexiunea. Aceste pachete sunt in starea NEW. Totusi in momentul in care este primit chiar
si un singur pachet ca raspuns toate pachetele acestei conexiuni nu se mai afla in starea NEW.
Astfel un pachet este considerat in starea NEW doar cand este implicat in stabilirea unei noi
conexiuni si nici un trafic provenit de la server nu a fost primit.
Starea ESTABLISHED: In momentul in care s-a realizat intr-o conexiune trafic
bidirectional, pachetele ulterioare apartinand conexiunii se afla in starea ESTABLISHED.
Starea RELATED: A treia stare posibila a unei conexiuni este starea RELATED.
Pachetele RELATED sunt pachetele care initiaza o noua conexiune, dar aceasta noua
conexiune este inrudita cu o conexiune deja realizata. Starea RELATED este folosita pentru
reglarea conexiunilor realizate pe baza unui protocol multi-conexiune (cum ar fi protocolul
ftp) si pentru tratarea mesajele de eroare (ICMP) legate de conexiuni existente .
Starea INVALID: Aceasta include toate pachetele care nu pot fi clasificate in nici una
din clelelalte stari. De remarcat ca un pachet considerat invalid nu este automat inlaturat si
este necesara specificarea deciziei.
Exemplu:
iptables --policy INPUT DROP
iptables --append INPUT --match state --state ESTABLISHED, RELATED --jump
ACCEPT
Aceasta singura regula din lantul INPUT , va permite stabilirea unor conexiuni cu
serverele. Astfel, in momentul in care se va incerca conectarea remote prin ssh la un server,
masina va trimite pachete in scopul initierii conexiunii. Aceste pachete se vor afla in starea
NEW iar firewall-ul le va permite trecerea deoarece nu sunt blocate pachetele pe lantul
OUTPUT. In momentul in care se primeste un raspuns de la server aceste pachete sunt
preluate de lantul INPUT. In momentul in care kernel-ul inspecteaza pachetele acesta
recunoaste apartenenta lor la o conexiune deja existenta, le atribuie starea ESTABLISHED si

Pagina 33 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

le permite trecerea conform target-ului regulii din lant. Daca insa se incearca conectarea din
exterior pe masina, pachetele initiale sunt clasificate NEW iar kernel-ul le va decide soarta
conform politicii lantului (DROP): le va inlatura.
Acest tip de firewall este recomandat workstation-urilor. Se vor putea folosi
programele de tip server-client : netscape, ftp, ping, etc si orice conexiune initiata de masina
va putea trece prin firewall spre exterior (Internet de exemplu) insa orice conexiune solicitata
din exterior va fi refuzata in afara de cazul in care aceasta conexiune este inrudita cu o
conexiune deja existenta. Atata vreme cat nu este necesara asigurarea unor servicii catre
exterior acest firewall este aproape perfect.
LOG si ULOG
Modulul LOG:
Target-ul LOG activeaza log-area pachetelor cu facilitatea kern si prioritatea 4
(warning) de catre daemon-ul de log al kernel-ului: klogd-ul (default). Pentru un control
ulterior al log-urilor se poate studia documentatia pachetului syslog sau se pot folosi alti
daemoni a caror configurare permit o mai buna selectie si cautare a log-urilor (syslog-ng).
Configurare kernel:
IP: Netfilter Configuration
<Y> LOG target support
Target-ul LOG nu opreste verificarea pachetului; pachetul logat va continua sa fie
verificat de regulile din lant pana cand una din reguli i se va potrivi si va fi inlaturat . Daca se
doreste logarea tuturor pachetelor inlaturate se poate crea un nou lant (LOG_DROP) care sa
contina doar doua reguli, lant ce va fi specificat ca target pentru pachetele care vor fi logate si
inlaturate (-j LOG_DROP):
iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG
iptables -A LOG_DROP -j DROP
Optiunile acestui target sunt :
--log-level <nivel>: indica prioritatea cu care vor fi log-ate pachetele debug, info,
notice, warning, warn (warning), err(error), crit, alert, emerg (panic).
--log-prefix <prefix> - adauga un prefix mesajelor logate (de pana la 29 de litere) cu
ajutorul caruia se pot procesa ulterior log-urile.
--log-tcp-sequence si --log-tcp-options; logheaza optiunile din header-ul pachetului
TCP
--log-ip-options; logheaza optiunile din header-ul pachetului IP

Pagina 34 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

De cele mai multe ori utilizarea target-ului LOG este restrictionata cu ajutorul optiunii
--match limit:
(IP: Netfilter Configuration
<Y> limit match support),
deoarece densitatea mare de pachete logate poate incarca nejustificat procesorul.
Uneori este necesara doar o singura intrare in loguri pentru a descoperi un posibil atac.
Formatul log-urilor:
Exemplu de camp extras din /var/log/messages
Apr 15 11:51:24 root kernel:
IN=
OUT=eth0
SRC=211.251.142.65
DST=203.164.4.223
LEN=84
TOS=0x00
PREC=0x00
TTL=64
ID=0
DF
PROTO=ICMP
TYPE=8
CODE=0
ID=13070
SEQ=4096

Mai jos este prezentat un mesaj ipotetic generat de netfilter. Provine dintr-o
inregistrare reala careia i-au fost adaugate toate flag-urile posibile IP si TCP in scop didactic.
(Se poate studia structura header-elor IP, TCP si UDP in RFC-urile 791, 793 si respectiv
768).
1) Apr 15 11:51:24 root kernel
Prefix-ul adaugat de syslog. Nu este prezent cand mesajele sunt generate in consola

2) NF: D(I,Priv)

Pagina 35 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Activat cu optiunea --log-prefix <prefix>. Un prefix definit de utilizator pentru


recunoasterea ulterioara a pachetelor.

3) IN=eth1
Interfata pe care a fost primit pachetul. Daca pachetul a fost generat local camplul are
valoarea nesetata.
4) OUT=
Interfata prin care pachetul a fost trimis. Daca pachetul a fost primit local campul are
valoarea nesetata.

5) MAC=00:80:8c:1e:12:60: 00:10:76:00:2f:c2: 08:00


Adresa MAC destinatie 00:80:8c:1e:12:60
Adresa MAC sursa 00:10:76:00:2f:c2
Tipul 08:00 (frame ethernet purtand datagrama ipv4)

6) SRC=211.251.142.65
Adresa sursa IP.

7) DST=203.164.4.223
Adresa destinatie IP;

8) LEN=60
Lungimea totala a pachetului IP in bytes

9) TOS=0x00
Tipul de seviciu: campul "Type". Tot mai des inlocuit cu campul DS si ECN.

10) PREC=0x00
Tipul de seviciul: campul "Precedence". Tot mai des inlocuit cu campul DS si ECN

11) TTL=44
Time to live

12) ID=31526

Pagina 36 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Indentificatorul unic pentru datagrama IP; daca datagrama este fragmentata toate
fragmentele contin acelasi identificator

13) CE
Flag-ul "ECN Congestion EXPERIENCED"

14) DF
Flag-ul : "Don't Fragment"

15) MF
Flag-ul : "More fragments following"

16) FRAG=179
Offset-ul fragmentului in unitati de "8-bytes". In acest caz offset-ul pentru date in
acest pachet este 179*8=1432 bytes.

17) OPT (072728CBA404DFCBA40253CBA4032ECBA403A


2CBA4033ECBA402C1180746EA18074C52892734A200)
Activat cu optiunea IP --log-ip-options. Acest camp de lungime variabila este rareori
folosit. Unele optiuni IP (de exemplu source routing) sunt deseori dezactivate de
administratorii de sistem. Chiar optiuni inofensive ca "Record Route" pot fi dezactivate daca
protocolul de transport este ICMP.

18) PROTO=TCP
Numele sau numarul protocolului. Netfilter foloseste nume pentru TCP, UDP, ICMP,
AH si ESP. Alte protocoale sunt identificate dupa numere. Lista protocoalelor si a numerelor
asignate lor se gaseste in fisierul /etc/protocols.

19) SPT=4515
Port-ul sursa (UDP sau TCP). O lista cu numerele porturilor si cu serviciile standard
deservite pe aceste porturi se gaseste in fisierul /etc/services.

20) DPT=111
Port-ul destinatie (UDP sau TCP).

Pagina 37 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

21) SEQ=1168094040
Activat cu optiunea --log-tcp-sequence. Retine numarul secventei TCP. Alegand cu
grija acest numar, poate fi implementata o secventa criptografica "cookie" care satisface
cerintele protocolului TCP. Aceste "SYN-cookies" pot ajuta la evitarea unor atacuri DoS de
tip syn-flood.

22) ACK=0
Nr. secventei TCP pentru celalalt capat al conexiunii.

23) WINDOW=32120
Dimensiunea ferestrei primite TCP.

24) RES=0x03
Biti rezervati. Flag-urile ECN "CWR" si "ECNE" vor apare in setate in ultimii biti ai
acestui camp.

25) URG
Flag-ul Urgent.

26) ACK
Flag-ul Acknowledgement.

27) PSH
Flag-ul Push.

28) RST
Flag-ul RST (reset).

29) SYN
Flag-ul Syn , folosit la stabilirea conexiunilor TCP

30) FIN
Flag-ul Fin , folosit la intreruperea conexiunilor TCP

Pagina 38 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

31) OPT (020405B40402080A05E3F3C40000000001030300)


Activat cu optiunea TCP --log-tcp-options. Acest camp de lungime variabila este
foarte folositor. Optiunile importante sunt: Window Scaling, Selective Acknowledgement si
EXplicit Congestion Notification
Din pacate regula din lant care a gasit pachetul nu este inregistrata din motive
arhitecturale in mesajele de log. Se poate insa apela la trasatura --log-prefix pentru a marca
pachetele. Modulul ULOG remediaza aceasta problema.
Modulul ULOG:
Acest patch, introdus de Harald Welte adauga un nou target care permite un
mecanism de logare a pachetelor mult mai avansat decat target-ul LOG. ULOG/ulogd
foloseste un concept diferit. Pachetele sunt copiate de un daemon de logging special, care
poate face o logare in detaliu catre diferite tinte (fisiere, baze de date-Mysql...). ULOG
include o librarie usor de folosit (libipulog) pentru scrierea proceselor userspace ce primesc
pachetele; ULOG suporta plugins-uri pentru adaugarea unor interpretoare de pachete , a unor
diferite formate si a unor noi protocoale. Cand acesta tinta este specificata pentru un pachet,
kernel-ul Linux va trimite acest pachet printr-un socket netlink. Este necesara includerea in
kernel a suportului ethertap si netlink:
Code maturity level options
[Y] Prompt for development and/or incomplete code/drivers
Networking options
[Y] Kernel/User netlink socket
<Y> Netlink device emulation
Network device support
<Y> Universal TUN/TAP device driver support
<Y> Ethertap network tap
IP: Netfilter Configuration
<Y> ULOG target support
<Y> Userspace queueing via NETLINK (EXPERIMENTAL) --
CONFIG_IP_NF_QUEUE=Y
Unul sau mai multe procese userspace pot subscrie la diferite grupuri multicast pentru
a primi pachetul.
Optiuni ULOG:
--ulog-nlgroup <nlgrup>

Pagina 39 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Specifica grupul netlink (1-32) catre care pachetul este trimis. Valoarea prestabilita
(default) este 1.
--ulog-prefix <prefix>
Este adaugat un prefix mesajelor log-ate de pana la 32 de caractere necesar pentru
selectia mesajelor in log-uri.
--ulog-cprange <dimensiune>
Nr. de biti copiati in userspace. Valoarea 0 indica copierea intregului pachet,
indiferent de dimensiunea sa. Valoare prestabilita 0.
--ulog-qthreshold <dimensiune>
Nr. de pachete adunate in coada kernel-ului. Setand aceasta valoare la n , sunt
acumulate n pachete in kernel inainte ca acestea sa fie trimise toate intr-un mesaj catre
userspace. Valoarea prestabilita este 1.
Utilizarea comenzii ipchains
Exista citeva tipuri de operatii care se pot face cu ipchains.
Initial exista trei built-in chain-uri: INPUT, OUTPUT si FORWARD - care nu pot fi
sterse. Primele operatii sunt cele prin care se aplica chainurilor in intregime:
- crearea unui chain nou (-N)
- stergerea unui chain (-X)
- schimbarea politicii (policy) unui chain buit-in (-P)
- listarea regulilor dintr-un chain (-L)
- stergerea regulilor dintr-un chain (-Z)
Exista de asemenea comenzi prin care manipulam regulile dintr-un chain:
- adaugarea unei noi reguli intr-un chain (-A)
- inserarea unei noi reguli intr-un chain (-I)
- stergerea unei reguli dintr-un chain (-D)
Situatia firewall-ului la initializarea sistemului
Inainte de a fi aplicata orice regula cu iptables, chain-urile built-in (INPUT, OUTPUT
si FORWARD) nu contin nici o regula, chain-urile INPUT si OUTPUT au policy-ul
ACCEPT, iar FORWARD policy-ul DENY (ultima optiune poate fi schimbata prin
modificarea forward=1 in modulul iptables)
Operatii asupra unei reguli
Aceasta reprezinta partea cea mai importanta a operatiilor de filtrare de pachete; cel
mai des va fi utilizata optiunea de adaugare (-A) si stergere (-D). Celelalte (-I pentru inserare
si -R pentru inlocuire) sunt simple extensii ale optiunilor primare.

Pagina 40 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Fiecare regula contine un set de conditii pe care un pachet trebuie sa le indeplineasca


si ce se intimpla in cazul acestea sunt indeplinite. Pentru exemplu, vom lua cazul in care se
doreste sa se arunce (DROP) toate pachetele ICMP care vin de la adresa de IP 127.0.0.1. In
acest caz, datele problemei sunt urmatoarele: protocolul -ICMP, adresa sursa-127.0.0.1, tinta
(target-ul) DROP.
In exemplul dat 127.0.0.1 este interfata loopback, existenta chiar si in cazul in care nu
exista reteaua. Comanda 'ping' genereaza acest tip de pachete (ping trimite un pachet ICMP
tip 8-echo request- la care interfetele care primesc acesta cerere raspund cu un pachet ICMP
tip 0-echo reply). Vom folosi pentru testare acest exemplu.
#ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms

--- 127.0.0.1 ping statistics ---


1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms
# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss

Dupa cum se observa ping-ul are succes (optiunea '-c 1' spune ping-ului sa trimita un
singur pachet)
Se introduce (-A) in chainul INPUT; aceasta este o regula care va specifica sa arunce
(“-j DROP”) pachetele cu sursa 127.0.0.1 (“-s 127.0.0.1”), protocol ICMP (“-p icmp”):
#iptables -A input -p icmp -s 127.0.0.1 -j DROP
Se testeaza apoi cu ping pentru a doua ora pentru a verifica regula proaspat introdusa.
Stergerea regulei se poate face in doua moduri. Primul mod, deoarece stim ca este
singura regula din chain-ul INPUT, este de a sterge utilizind numerotarea, cum ar fi:
#iptables -D INPUT 1

Pagina 41 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

A doua metoda este de a scrie aceeasi comanda prin care s-a introdus regula,
inlocuind -A cu -D. Aceasta metoda este folositoare in momentul in care exista un numar
mare de reguli intr-un chain si numerotarea lor este dificila.
#iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP
Sintaxa pentru a sterge o regula prin aceasta metoda trebuie sa fie exacta cu cea prin
care s-a introdus, singura diferenta fiind inlocuirea -A (sau -I sau -R) cu -D. Daca exista mai
multe reguli identice in acelasi chain, numai prima va fi stearsa.
Specificatii de filtrare
In paragraful trecut s-a vazut cum se pot utiliza optiunile -p pentru a specifica
protocolul si -s pentru a indica adresa sursa, dar exista si alte optiuni de filtrare care vor fi
descrise in randurile urmatoare
Specificarea adreselor de IP sursa si destinatie.
Sursa (“-s”, “--source” sau “--src”) si destinatia (“-d”, “--destination” sau “--dst”) pot
fi precizate in trei moduri :
1. specificarea numelui in intregime, cum ar fi “localhost” sau “www.linux.org”.
2. scrierea adresei de IP, ex : 127.0.0.1
3. specificarea unui grup de adrese IP, de genul: “199.95.207.0/24” sau
“199.95.207.0/255.255.255.0”. Cifrele aflate dupa semnul “/” indica masca (care parte a
adresei de IP este semnificativa). “/32” sau “255.255.255.255” sunt default. Toata clasa de
adrese poate fi tradusa prin “/0”, de ex :
#iptables -A INPUT -s 0/0 -j DENY
Acest caz este rar intilnit (intr-un chain) si regulile de tipul asta pot fi introduse fara
specificarea sursei.
Inversarea.
Multe optiuni, incluzind si “-s” si “-d” pot avea argumente precedate de semnul “!“
(not). De exemplu, “-s ! localhost” inseamna orice pachet care nu are sursa localhost.
Protocolul.
Se foloseste optiunea “-p” pentru precizarea protocolului. Valorile luate in
considerare pot fi numerice (in cazul in care se cunoaste numarul protocolului din stiva de
protocoale IP) sau numele: “TCP”, “UDP”, ICMP”. Denumirile in acest caz pot fi scrise cu
litere mici sau mari, nu conteaza, “tcp” fiind sinonim cu “TCP”. Numele protocolului poate
avea in fata “!”, pentru a inversa valoarea, cum ar fi “-p ! TCP”.
Specificarea interfetei.

Pagina 42 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Optiunile “-i” (sau “--in-interface”) si “-o” (sau “--out-interface”) primesc ca valori


nume de interfete. O interfata reprezinta placa fizica prin care pachetul intra (“-i”) sau iese (“-
o”). Se foloseste comanda ifconfig pentru listarea interfetelor active pe calculator. Pachetele
care traverseaza chainul INPUT nu au o interfata de iesire, de aceea orice regula care include
optiunea “-o” in acest chain nu va functiona niciodata. Similar, pachetele care traverseaza
chainul OUTPUT nu au o interfata de iesire, orice regula care include “-i” fiind inutila. Doar
pachetele care traverseaza chain-ul FORWARD pot avea si ambele interfete, de intrare si de
iesire.
Este corecta specificarea unor interfete care la momentul introducerii unei reguli, nu
exista; Regula nu va filtra pachete pina in momentul in care interfata devine activa. Aceste
reguli se intilnesc des in cazurile utilizarii legaturilor de dial-up PPP. In mod special,
utilizarea unei reguli in care numele interfetei se termina cu semnul “+” precizeaza toate
interfetele (chiar daca exista sau nu) care incep cu acest nume. De exemplu, vom folosi
optiunea “-i ppp+” daca dorim sa includem toate interfetele PPP intr-o singura regula.
Utilizara lui not ( “!”) este valabila si pentru optiunea “-i”.
Specificarea fragmentelor.
Cateodata un pachet este prea mare pentru a fi adus in intregime. In astfel de cazuri,
pachetul este impartit in fragmente, si transmis ca o suma de pachete. La capatul transmisiei,
fragmentele sunt reasamblate si pachetul este refacut. Daca se face connection tracking sau
NAT, atunci toate fragmentele vorfi reasamblate inainte de a ajunge sa fie aplicate regulile de
filtrare. Altfel, se poate insera modulul “ip_defrag.o” care va indeplini aceleasi sarcini (Nota:
acest lucru este valabil numai in cazul existentei unei conexiuni dintre doua retele). Este
foarte importanta intelegerea modului cum sunt filtrate fragmentele de catre regulile dintr-un
chain. Primul fragment este tratat la fel ca un pachet normal. Al doilea si urmatoarele sunt
tratate in mod diferit. O regula “-p TCP -sport www” (portul sursa www) nu va indeplini
criteriile nici unui fragment (in afara de primul). Acelasi efect intilnim si in cazul revers, al
regulii “-p TCP -sport ! www”. Pentru astfel de situatii se pot utiliza reguli specifice pentru
acest tip de fragmente, utilizand optiunea “-f” (sau “-fragment”). Se accepta si utilizarea lui
not pentru regulile care nu se aplica fragmentelor 2 si urmatoare, precedand “-f” cu “!”.
De obicei, se considera ca a lasa libera trecerea celui de-al doilea fragment si a
urmatoarelor nu afecteaza securitatea sistemului, din moment ce filtrarea va afecta primul
fragment si in felul asta se previne reasamblarea fragmentelor pe calculatorul tinta. Oricum,
se cunosc cazuri in care serverele au fost sparte numai prin trimiterea de fragmente din
exterior. Nota: pachetele malformate (pachete TCP, UDP si ICMP prea scurte pentru ca

Pagina 43 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

firewall-ul sa poata citi portul sau codul si tipul ICMP) sunt aruncate imediat ce sunt
descoperite.
Prezentam un exemplu de regula care arunca orice fragment care provine de la adresa
192.168.1.1:
# iptables -A OUTPUT -f -d 192.168.1.1 -j DROP
Operatii asupra unui intreg chain
O facilitate foarte utilizata a iptables-ului este posibilitatea de a grupa regulile intr-un
chain-uri. Se pot crea chain-uri noi si se pot denumi dupa preferinta., fiind recomandata
utilizarea literelor mici (maxim 16) pentru a fi deosebite cu usurinta de chain-urile built-in.
Operatii intalnite:
a) crearea unui chain nou: se foloseste optiunea -N
#iptables -N test
Acum putem adauga reguli in chain-ul test.
b) stergerea unui chain: se foloseste optiunea “-X” sau “--delete-chain”.
# iptables -X test
Exista citeva restrictii la stergere unui chain: chain-ul respectiv trebuie sa fie gol (sa
nu contina nici o regula) si nu trebuie sa fie utilizat ca tinta intr-o alta regula. Chain-urile
built-in nu pot fi sterse. Daca nu este specificat dupa “-X” nici un chain, atunci, in limita
posibilului, toate chain-urile create de utilizator vor fi sterse.
c) golirea chain-urilor: se foloseste optiunea “-F” sau “—flush”
#iptables -F FORWARD
Daca nu se precizeaza un chain, atunci toate chain-urile vor fi golite.
d) listarea unui chain. Listarea tututor regulilor intr-un chain se face utilizand optiunea
“-L”; “Refcnt” listat pentru fiecare chain creat de utilizator reprezinta numarul de reguli care
au chain-ul respectiv ca tinta. Aceast numar trebuie sa fie 0 inainte de a sterge chain-ul. Daca
optiunea “-L” este utilizata fara precizarea vreunui chain, atunci vor fi listate toate regulile
din toate chain-urile.
Exista 3 optiuni care pot insoti “-L”:
“-n” - listarea numerica (nu traduce adresele de IP in nume), optiune utilizata in
cazurile in care translatarea IP-urilor in nume dureaza prea mult, si acest timp de asteptare
incomodeaza.
“-v” - prezentare detaliata a regulilor, cum ar fi contoarele de pachete si bytes pentru
fiecare regula, compararea TOS si interfetele. Aceste valori sunt omise in cazul in care nu
este folosit “-v”.

Pagina 44 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

“-x” - expandare numerica. Printarea numerelor se face complet, indiferent cit de mari
sunt. Daca aceasta optiune nu este utilizata, valorile prezentate de contoare sunt afisate cu
sufixe “K”, “M” sau “G”, reprezentind 1.000, 1.000.000 sau 1.000.000.000.
e) resetarea contoarelor: se utilizeaza optiunea “-Z” sau “—zero”. Problema exista in
momentul in care se doreste cunoasterea valorilor contoarelor imediat inainte de resetare, asta
deoarece in timpul dintre cele doua comenzi (“iptables –L” si “iptables –Z”) pot exista
pachete care traverseaza filtrul. In aceste cazuri, se folosesc “-L” si “-Z” impreuna, pentru a
reseta contoarele in timp ce sunt citite.
Setarea politicii de chain
In cazul in care pachetul parcurge toate regulile dintr-un chain si nici una ditre aceste
nu il afecteaza (nu ii stabileste o tinta), atunci soarta pachetului va fi determinata de politica
chain-ului respectiv.
Doar chain-urile built-in (INPUT, OUTPUT, FORWARD) au politici, deoarece daca
pachetul traverseaza in intregime un chain creat de utilizator atunci el se intoarce la chain-ul
anterior.
Politica unui chain poate fi ACCEPT sau DROP.
Extensii ale comenzii iptables. Teste noi
Iptables este extensibil, adica si kernelul si iptables pot fi completate cu noi module.
Unele extensii sunt standard, altele sunt doar de forma.
Extensiile pentru kernel se gasesc in subdirectorul pentru modulele de kernel, cum ar
fi /lib/modules/2.4.2/net. Extensiile pentru iptables sunt librariile aflate in mod normal in
/usr/local/lib/iptables, iar in alte distributii se gasesc in /lib/iptables sau /usr/lib/iptables.
Extensiile sunt de doua tipuri: noi tinte (target-uri) si teste noi; mai jos vom discuta
despre cele de tipul noi tinte. Citeva protocoale ofera automat noi teste: in mod curent,
acestea sunt TCP, UDP si ICMP. Pentru acestea se specifica noile teste in linia de comanda,
dupa optiunea “-p”, extensia fiind incarcata in acest fel. Pentru noi teste explicite, se
utilizeaza optiunea “-m” pentru a incarca extensia, dupa care optiunile extinse vor fi
disponibile. Pentru a obtine help pentru o extensie, se foloseste optiunea care incarca extensia
(“-p” sau “-m”) urmata de “-h” sau “--help”.
Extensii TCP
Acestea sunt incarcate automat daca “-protocol tcp” este specificat. Urmatoarele
optiuni sunt valabile:
a) --tcp-flags

Pagina 45 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Aceasta optiune poate fi urmata optional de semnul “!”, apoi de doua siruri de flag-
uri; permite filtrarea pachetelor TCP dupa flag-ul pe care il au. Primul sir de flaguri
reprezinta masca (“mask”): o lista de flag-uri care se doresc a fi examinate. Al doilea sir de
flag-uri indica care flag din primul sir trebuie setat.
De exemplu,
# iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DENY
Aceasta regula indica faptul ca toate flag-urile ar trebui sa fie examinate (“ALL” este
sinonim cu “SYN, ACK, FIN, RST, URG, PSH”), dar doar SYN si ACK trebuiesc setate.
Daca dorim ca nici un flag sa nu fie examinat, atunci folosim argumentul “NONE”.

b) --syn
Este prescurtarea de la “--tcp-flags SYN,RST,ACK SYN”. Poate fi urmat optional de
semnul “!”.

c) --source-port
Optional poate fi urmat de semnul “!”, apoi de un singur port TCP sau de un domeniu
de porturi. Porturile pot fi reprezentate prin nume, asa cum sunt listate in fisierul
/etc/services, sau numeric. Domeniile sunt reprezentate prin doua porturi separate prin
semnul “-”, sau (pentru a specifica mai mare sau egal cu un port anume) un port urmat de
semnul “-”, sau (pentru a specifica mai mic sau egal cu un port anume) un port precedat de
semnul “-”.

d) --sport
Este sinonim cu “--source-port”

e) --destination-port si --dport
Aceleasi optiuni ca la “--source-port”, doar ca filtrarea se aplica pentru porturile
destinatie.

f) --tcp-option
Optiunea poate fi urmata optional de semnul “ !” si un numar. Regula verifica
pachetele cu optiunea TCP egala cu acest numar. Un pachet care nu are header-ul TCP
complet este aruncat automat daca exista o regula care ii examineaza optiunile TCP.
Extensiile UDP

Pagina 46 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Aceste extensii sunt incarcate automat daca in regula este specificat --protocol udp,
iar optiunile --source-port, --sport,
--destination-port, --dport pot fi utilizate la fel ca la protocolul TCP.
Extensiile ICMP
Utilizam --protocol-icmp pentru a filtra pachete de acest tip. Exista o singura optiune
pentru acest protocol: --icmp-type. Optiunea poate fi umata optional de semnul “!”, apoi ori
de un nume de tip icmp (ex. host-unreachable), ori de un numar (ex. “3”), ori de un numar si
cod separate de “/” (ex: “3/3”). O lista cu toate numele de tipuri icmp este obtinuta folosind
-p icmp --help.
Diferente intre iptables si ipchains
Prima diferenta majora intre cele doua este aceea ca denumirile chain-urilor bult-in
sunt scrise cu litere MARI, deoarece chain-urile INPUT si OUTPUT sunt traversate numai de
pachete generate de sistem sau destinate local sistemului
Optiunea “-i” semnifica interfata sursa si poate fi utilizata numai in chain-urile
INPUT si FORWARD. Regulile din FORWARD sau OUTPUT care utilizeaza “-i” se
schimba in “-o”.
Porturile TCP si UDP trebuiesc precizate cu optiunile “--sport”, “--dport” (sau “--
source-port”, “--destination-port”) si pot fi folosite intr-o regula numai dupa ce a fost precizat
“-p tcp” sau “-p udp” pentru a incarca extensiile TCP si UDP respective.
Flag-ul TCP -y este acum --syn si poate fi folosit numa dupa ce in regula a fost
activata optiunea “-p tcp”.
Tinta DENY este DROP la iptables; pot fi resetati contorii de pachete in timp ce sunt
listati
Tintele REJECT si LOG sunt la iptables module extinse, asta insemnand ca ele se
incarca ca module kernel separate
Denumirile chain-urilor pot contine pana la 16 caractere la iptables
CAP IV Scripturi de firewall pentru distributiile Linux
Script RC care foloseste GFCC2
#!/bin/bash
#
# descriere: script firewall pentru kernel-urile 2.2.x

2
GFCC= (GTK+ Firewall Control Center) is a GTK+ application which can control Linux firewall policies and rules, based
on ipchains package.

Pagina 47 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

# Scriptul este scris pentru Linux Redhat 6.1 sau distributiile


# mai noi.
#
#
# INSTALARE:
# 1. se scrie acest fisier in /etc/rc.d/init.d ca root, si i se # da un nume #sugestiv
# se face cu drepturi depline de root "chown root.root
# (nume_fisier)"
# se face executabil --> "chmod 755 (nume_fisier)"
#
# 2. se foloseste GFCC pentru crearea regulilor in firewall care # se vor exporta intr-
un fisier numit
# /etc/gfcc/rules/firewall.rule.sh.
#
# 3. se aduce firewall-ul in structura de initializare RH -->
# "chkconfig --add (nume_fisier)"

################################################

# Libraria functiilor sursa.


/etc/rc.d/init.d/functions

# Configuratia retelei sursa.


/etc/sysconfig/network

# Se verifica daca reteaua este functionabila.


[ ${NETWORKING} = "no" ] && exit 0

case "$1" in

start)
# Furnizarea accessului
action "Starting firewall: " /bin/true
/etc/gfcc/rules/firewall.rule.sh

Pagina 48 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

echo
;;

stop)
action "Stoping firewall: " /bin/true
echo 0 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward

echo
;;

restart)
action "Restarting firewall: " /bin/true
$0 stop
$0 start

echo
;;

status)
# Afisarea setarilor
/sbin/ipchains -L
;;

test)
action "Test Mode firewall: " /bin/true
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward
# Se activeaza forwardarea pachetului IP, cu regulile de rigoare
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -A input -j ACCEPT

Pagina 49 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

/sbin/ipchains -A output -j ACCEPT


/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -i $PUBLIC -j MASQ

echo
;;

*)
echo "Usage: $0 {start|stop|restart|status|test}"
exit 1

esac

Script RC fara GFCC


#!/bin/bash
#

# chkconfig: 2345 09 99
# descriere: script firewall pentru kernel-urile 2.2.x

#
# NOTE:
#
# Scriptul este scris pentru Linux Redhat 6.0 sau mai nou.
#
# Acest script firewall este functionabil pentru majoritatea
# arhitecturilor dial-up sau a acelor cu router
#
#
# INSTALARE:
# 1. Acest fisier este gandit pentru distributia Redhat a
# Linux-ului; este valabil si pentru alte distributii

Pagina 50 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

#
# 2. se scrie acest fisier in /etc/rc.d/init.d ca root, si i
# se da un nume sugestiv; se face cu drepturi depline de root
# "chown root.root (nume_fisier)"
# se face executabil --> "chmod 755 (nume_fisier)"
#
# 3. se fac setarile necesare pentru interfata externa si
# interfata interna a retelei precum si pentru serverul DNS
# se verifica daca lui "eth0" i s-a asignat adresa placii de
# retea interne
# se testeaza --> "/etc/rc.d/init.d/<nume_fisier> start"
# se listeaza regulile din ipchains --> "ipchains -L -n"
#
# 4. se adauga firewall-ul la structura de initializare a
# sistemului "chkconfig --add <filename>"
#

#################################################################
# Se completeaza valorile neceasre pentru reteaua locala

PRIVATENET=xxx.xxx.xxx.xxx/xx

PUBLIC=ppp0
PRIVATE=eth0

# se completeaza serverele DNS


DNS1=xxx.xxx.xxx.xxx
DNS2=xxx.xxx.xxx.xxx

#################################################################

# setarea valorilor generice


ANY=0.0.0.0/0

Pagina 51 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

ALLONES=255.255.255.255

# Libraria functiilor sursa.


/etc/rc.d/init.d/functions

# Configuratia retelei sursa.


/etc/sysconfig/network

# Se verifica daca reteaua este functionabila.


[ ${NETWORKING} = "no" ] && exit 0

case "$1" in

start)
# Furnizarea accesului
action "Starting firewall: " /bin/true

##
##
# Activarea tuturor listelor
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward

# Activarea tuturor interfetelor


/sbin/ipchains -I input 1 -j DENY

# setarea politicii de deny (default este ACCEPT)


/sbin/ipchains -P input DENY
/sbin/ipchains -P output ACCEPT
/sbin/ipchains -P forward ACCEPT

# Activarea forward-arii
echo 1 > /proc/sys/net/ipv4/ip_forward

Pagina 52 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

##
## Instalarea Modulelor
##
# Se activeaza modulul ftp.

if ! ( /sbin/lsmod | /bin/grep masq_ftp > /dev/null );


then /sbin/insmod ip_masq_ftp
fi

##
## Cateva setari de siguranta
##
# se activeaza optiunea Verificarea Adresei Sursa pentru a obtine
# o protectie mai eficienta pe interfetele curente si viitoare

if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ];
then
for f in /proc/sys/net/ipv4/conf/*/rp_filter;
do
echo 1 > $f
done
else
echo
echo "PROBLEMS SETTING UP IP SPOOFING PROTECTION. BE WORRIED."
echo
fi

# Se interzic adresele „broadcast” ininterfetele ramase


/sbin/ipchains -A input -d 0.0.0.0 -j DENY
/sbin/ipchains -A input -d 255.255.255.255 -j DENY

# Alte negari

Pagina 53 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

/sbin/ipchains -A input -p udp -d $ANY 137 -j DENY

# Setari pentru NetBIOS


/sbin/ipchains -A input -p tcp -d $ANY 137 -j DENY # ""
/sbin/ipchains -A input -p udp -d $ANY 138 -j DENY # ""
/sbin/ipchains -A input -p tcp -d $ANY 138 -j DENY # ""
/sbin/ipchains -A input -p udp -d $ANY 67 -j DENY # bootp
/sbin/ipchains -A input -p udp -d $ANY 68 -j DENY # ""
/sbin/ipchains -A input -s 224.0.0.0/8 -j DENY

##
## Permiterea iesirii retelei private afara
# permiterea tuturor pachetelor pe interfata loopback
/sbin/ipchains -A input -i lo -j ACCEPT

# permiterea tuturor pachetelor provenite de la interfata interna # sigura


/sbin/ipchains -A input -i $PRIVATE -s $PRIVATENET -d $ANY -j ACCEPT
/sbin/ipchains -A input -i $PRIVATE -d $ALLONES -j ACCEPT

##
## permiterea tuturor serviciilor provenite din afara in firewall
##
# permiterea pachetelor ICMP
/sbin/ipchains -A input -p icmp -j ACCEPT
# permiterea pachetelor TCP
/sbin/ipchains -A input -p tcp ! -y -j ACCEPT

# permiterea tuturor interfetelor catre DNS


/sbin/ipchains -A input -p udp -s $DNS1 domain -d $ANY 1023: -j ACCEPT
/sbin/ipchains -A input -p udp -s $DNS2 domain -d $ANY 1023: -j ACCEPT
# sau se configureaza un server DNS caching DNS folosindu-se
# comenzile:
# /sbin/ipchains -A input -p udp -s $DNS1 domain -d $ANY domain -# j ACCEPT
# /sbin/ipchains -A input -p udp -s $DNS2 domain -d $ANY domain -# j ACCEPT

Pagina 54 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

# permiterea accesului in sistem prin ssh (secure shell)


/sbin/ipchains -A input -p tcp -d $ANY 22 -j ACCEPT

# permiterea accesului in sistem prin telnet


/sbin/ipchains -A input -p tcp -d $ANY telnet -j ACCEPT

# permiterea protocolului NTP (network time protocol) spre router


# /sbin/ipchains -A input -p udp -d $ANY ntp -j ACCEPT

# permiterea protocolului SMTP (doar pentru server, nu si pentru # e-mail)


/sbin/ipchains -A input -p tcp -d $ANY smtp -j ACCEPT

# permiterea protocolului POP3 (pentru e-mail)


/sbin/ipchains -A input -p tcp -d $ANY 110 -j ACCEPT

# permiterea accesului cu autentificare pentru trimiterea de


# e-mail-uri sau pentru transferul de fisiere prin ftp
/sbin/ipchains -A input -p tcp -d $ANY auth -j ACCEPT

# permiterea protocolului HTTP in (doar in cazul in care este


# pornit un server de web
/sbin/ipchains -A input -p tcp -d $ANY http -j ACCEPT

# permiterea transferului de fisiere prin FTP


/sbin/ipchains -A input -p tcp -d $ANY ftp -j ACCEPT

##
## Cateva setari pentru mascaradare
##
# forward-area pachetelor mascaradate provenite din reteaua
# interna
/sbin/ipchains -A forward -s $PRIVATENET -d $ANY -j MASQ

Pagina 55 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

##
## interzicerea oricaror alte servicii si postarea logurilor in
# /var/log/messages
/sbin/ipchains -A input -l -j DENY

# mutarea „dopului”
/sbin/ipchains -D input 1

;;

stop)
action "Stoping firewall: " /bin/true
echo 0 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward

echo
;;

restart)
action "Restarting firewall: " /bin/true
$0 stop
$0 start

echo
;;

status)
# Afisarea optiunilor
/sbin/ipchains -L
;;

test)

Pagina 56 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

action "WARNING Test Firewall: " /bin/true


/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -A input -j ACCEPT
/sbin/ipchains -A output -j ACCEPT
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -i $PUBLIC -j MASQ

echo
;;

*)
echo "Usage: $0 {start|stop|restart|status|test}"
exit 1

esac

Script complex (cu setari de proxy, NAT, etc…)

#!/bin/bash
#################################################################
# Variabile de amplasare a programului

# Amplasarea programelor
IFCONFIG="`whereis -b ifconfig | cut -d \" \" -f2 `"
IPTABLES="`whereis -b iptables | cut -d \" \" -f2 `"

# Amplasarea firewall-ului

Pagina 57 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

FIREWALL_DIR="/etc/firewall"
FIREWALL_DB_DIR="$FIREWALL_DIR/db"
FIREWALL_LAN_DB_DIR="$FIREWALL_DIR/db/lan"
FIREWALL_TMP_DIR="$FIREWALL_DIR/tmp"
FIREWALL_DOC_DIR="$FIREWALL_DIR/doc"
FIREWALL_REPORT_DIR="$FIREWALL_DIR/report"
FIREWALL_REPORT_DATA_DIR="$FIREWALL_DIR/report/data"

#################################################################
# Activarea optiunii de inregistrarea a logurilor firewall-ului

# Aceasta portiune creaza un fisier numit firewall.log in


# directorul /var/log de fiecare data cand firewall-ul este
# pornit. Pentru activarea acestei optiuni se va pune 1; pentru # dezactivare, 0

FIREWALL_LOG=1

# Pentru salvare se pune 1 si 0 daca nu se doreste acest lucru

FIREWALL_SAVE_DATA=1

# Amplasarea directorului in care se vor salva logurile


LOG_DIR="/var/log"

# Fisierul in care pot fi gasite logurile


FIREWALL_LOG_FILE="$LOG_DIR/firewall.log"

DATE="`date`"
MSG1="Program Started at $DATE"
MSG2="Start Reading Firewall Configuration..."

echo "$MSG1"
echo "$BLANK_LINE"
echo "$MSG2"

Pagina 58 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

if ! [ -e $FIREWALL_TMP_DIR/conf.init.d ]
then
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
echo "$BLANK_LINE" >> $FIREWALL_LOG_FILE
echo "$MSG2" >> $FIREWALL_LOG_FILE
fi
fi

#################################################################
# Lista de variabile

MSG1=" Setting up Variables..."


echo "$MSG1"
if ! [ -e $FIREWALL_TMP_DIR/conf.init.d ]
then
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
fi

#################################################################
# Activarea optiunii de verificare a integritatii; pentru
# activare se da valoarea 1

SANITY_CHECK=1

#################################################################
# Optiuni de raport

Pagina 59 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

# Amplasarea fisierului de loguri unde vor fi puse mesajele


# kernelului

KERN_LOG_DIR="/var/log"
KERN_MESSAGES="$KERN_LOG_DIR/messages"

# Nivelul la care se va face logarea

LOG_LEVEL="7"

# Amplasarea rapoartelor

REPORT_FILE="/etc/firewall/report/firewall_report-"

LINE1="########################################################"
LINE2="--------------------------------------------------------"
BLANK_LINE="###################################################”

# Variabile ale LAN-ului

# Activarea retelei locale se va face dand valoarea 1; pentru


# interfetele cu # o singura conexiune se va da valoarea 0
LAN_STATUS=1

# Blocarea/activarea retelei locale (0 pentru dezactivare-


# default)
LAN_BLOCK=0

# Activarea LAN-urilor multiple (0 pentru dezactivare-default)


LAN_MULTIPLE=0

if [ $LAN_STATUS == 1 ]

Pagina 60 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

then

# de exemplu LAN_IFACE="eth1"
# se schimba de asemenea si interfata LAN-ului
LAN_IFACE="eth1"

LAN_IP="`$IFCONFIG $LAN_IFACE | grep inet | cut -d : -f 2 | cut -d \ -f 1`"


LAN_MASK="`$IFCONFIG $LAN_IFACE | grep Mask | cut -d : -f 4`"
LAN_BCAST="`$IFCONFIG $LAN_IFACE | grep Bcast | cut -d : -f 3 | cut -d \ -f 1`"
LAN_NET=$LAN_IP/$LAN_MASK

MSG1=" LAN Interface Configuration"


MSG2=" Interface: $LAN_IFACE"
MSG3=" IP Address: $LAN_IP"
MSG4=" Subnet Mask: $LAN_MASK"
MSG5=" Broadcast: $LAN_BCAST"
MSG6=" Network: $LAN_NET"
echo "$MSG1"
echo "$MSG2"
echo "$MSG3"
echo "$MSG4"
echo "$MSG5"
echo "$MSG6"
if ! [ -e $FIREWALL_TMP_DIR/conf.init.d ]
then
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
echo "$MSG2" >> $FIREWALL_LOG_FILE
echo "$MSG3" >> $FIREWALL_LOG_FILE
echo "$MSG4" >> $FIREWALL_LOG_FILE
echo "$MSG5" >> $FIREWALL_LOG_FILE
echo "$MSG6" >> $FIREWALL_LOG_FILE

Pagina 61 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

fi
fi
fi

if [ $LAN_MULTIPLE == 1 ] && [ $LAN_STATUS == 1 ]


then
LAN_INTERFACES_FILE="$FIREWALL_DB_DIR/lan_interfaces"

if [ -e $LAN_INTERFACES_FILE ]
then
LAN_INTERFACES="`echo | cat | sed -e '/###/d' $LAN_INTERFACES_FILE`"
else
MSG1="File: $LAN_INTERFACES_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi

#################################################################
# Variabile pentru Internet

# Exemplu INET_IFACE="eth0", care se va schimba si ea pe


# interfata catre Internet
INET_IFACE="eth0"

# Daca adresa IP este asignata dinamic de catre ISP, se vor anula # urmatoarele 2
comenzi-se vor face comentarii

INET_IP="`$IFCONFIG $INET_IFACE | grep inet | cut -d : -f 2 | cut -d \ -f 1`"


INET_MASK="`$IFCONFIG $INET_IFACE | grep Mask | cut -d : -f 4`"

Pagina 62 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

IP_DYNAMIC_ADDRESS=0

INET_BCAST="`$IFCONFIG $INET_IFACE | grep Bcast | cut -d : -f 3 | cut -d \ -f


1`"

# De asemenea, tot in cazul unei adrese dinamice se vor “activa” # urmatoarele 2 linii
de comanda – prin stergerea #

#INET_IP="0.0.0.0"
#INET_MASK="255.255.255.0"
#IP_DYNAMIC_ADDRESS=1

MSG1=" Configurarea Interfetei Internet "


MSG2=" Interfata: $INET_IFACE"

if [ "$INET_IP" == "0.0.0.0" ]
then
MSG3=" IP Address: Asignata Dinamic "
else
MSG3=" IP Address: $INET_IP"
MSG4=" Subnet Mask: $INET_MASK"
MSG5=" Broadcast: $INET_BCAST"
fi

echo "$MSG1"
echo "$MSG2"
echo "$MSG3"
echo "$MSG4"
echo "$MSG5"

if ! [ -e $FIREWALL_TMP_DIR/conf.init.d ]
then
if [ $FIREWALL_LOG == 1 ]
then

Pagina 63 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

echo "$MSG1" >> $FIREWALL_LOG_FILE


echo "$MSG2" >> $FIREWALL_LOG_FILE
echo "$MSG3" >> $FIREWALL_LOG_FILE
echo "$MSG4" >> $FIREWALL_LOG_FILE
echo "$MSG5" >> $FIREWALL_LOG_FILE
fi
fi

#################################################################
# Variabile pentru zona demilitarizata; pentru activare se da
# valoarea 1; 0=default
DMZ_STATUS=0

# Activarea zonelor DMZ multiple - se va da valoarea 1


DMZ_MULTIPLE=0

if [ $DMZ_STATUS == 1 ]
then

# Exemplu DMZ_IFACE="eth2" – se va schimba si catre interfata DMZ


DMZ_IFACE="eth2"

# Continuarea configurarii scriptului


DMZ_IP="`$IFCONFIG $DMZ_IFACE | grep inet | cut -d : -f 3 | cut -d \ -f 1`"
DMZ_BCAST="`$IFCONFIG $DMZ_IFACE | grep Bcast | cut -d : -f 2 | cut -d \ -f
1`"
DMZ_MASK="`$IFCONFIG $DMZ_FACE | grep Mask | cut -d : -f 3`"
DMZ_NET=$DMZ_IP/$DMZ_MASK

MSG1=" Configurarea Interfetei DMZ "


MSG2=" Interfata: $DMZ_IFACE"
MSG3=" IP Address: $DMZ_IP"
MSG4=" Broadcast: $DMZ_BCAST"
MSG5=" Subnet Mask: $DMZ_MASK"

Pagina 64 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

MSG6=" DMZ Network: $DMZ_NET"


echo "$MSG1"
echo "$MSG2"
echo "$MSG3"
echo "$MSG4"
echo "$MSG5"
echo "$MSG6"
if ! [ -e $FIREWALL_TMP_DIR/conf.init.d ]
then
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
echo "$MSG2" >> $FIREWALL_LOG_FILE
echo "$MSG3" >> $FIREWALL_LOG_FILE
echo "$MSG4" >> $FIREWALL_LOG_FILE
echo "$MSG5" >> $FIREWALL_LOG_FILE
echo "$MSG6" >> $FIREWALL_LOG_FILE
fi
fi
fi

if [ $DMZ_MULTIPLE == 1 ] && [ $DMZ_STATUS == 1 ]


then
DMZ_INTERFACES_FILE="$FIREWALL_DB_DIR/dmz_interfaces"

if [ -e $DMZ_INTERFACES_FILE ]
then
DMZ_INTERFACES="`echo | cat | sed -e '/###/d' $DMZ_INTERFACES_FILE`"
else
MSG1="File: $DMZ_INTERFACES_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE

Pagina 65 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

fi
exit 1
fi
fi

#################################################################
# Variabile pentru loopback

LO_IFACE="lo"
LO_IP="`$IFCONFIG $LO_IFACE | grep inet | cut -d : -f 2 | cut -d \ -f 1`"
LO_MASK="`$IFCONFIG $LO_IFACE | grep Mask | cut -d : -f 3`"
LO_NET=$LO_IP/$LO_MASK

MSG1=" Configurarea Interfetei Loopback"


MSG2=" Interfata: $LO_IFACE"
MSG3=" IP Address: $LO_IP"
MSG4=" Subnet Mask: $LO_MASK"
MSG5=" Network: $LO_NET"
echo "$MSG1"
echo "$MSG2"
echo "$MSG3"
echo "$MSG4"
echo "$MSG5"
if ! [ -e $FIREWALL_TMP_DIR/conf.init.d ]
then
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
echo "$MSG2" >> $FIREWALL_LOG_FILE
echo "$MSG3" >> $FIREWALL_LOG_FILE
echo "$MSG4" >> $FIREWALL_LOG_FILE
echo "$MSG5" >> $FIREWALL_LOG_FILE
fi
fi

Pagina 66 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

#################################################################
# Variabile de cronometrare

# Enumerarea variabilelor de cronometrare.

LOG_TIME="2/s"
SYN_TIME="20/s"
PING_TIME="1/s"
SCAN_TIME="3/m"
HACKER_TIME="5/m"
TROJAN_TIME="5/m"
UNCLEAN_TIME="5/m"

#################################################################
# Variabile de “izbucnire”
# Numarul pachetelor inainte de blocare sau logare

SCAN_BURST="2"
TROJAN_BURST="2"

#################################################################
# Clasificari

CLASS_A="10.0.0.0/8"
CLASS_B="172.16.0.0/12"
CLASS_C="192.168.0.0/16"
CLASS_D="224.0.0.0/4"
CLASS_E="240.0.0.0/5"

#################################################################
# Variabile pentru politica de “cadere” Drop
# Politici de cadere default

Pagina 67 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

# 1. LOG_TCP_RESET_REJECT - Va rejecta, loga, si trimite tcp-


# reset
# 2. LOG_REJECT - Va rejecta si va loga
# 3. LOG_DROP - Va cadea si va loga
# 4. TCP_RESET_REJECT - Va rejecta si va trimite tcp-reset
# 5. REJECT - Va rejecta
# 6. DROP - Va cadea
# 7. MIRROR - Va retrimite pachetul inapoi la sursa lui

DROP_POLICY="LOG_TCP_RESET_REJECT"
TROJAN_DROP_POLICY="LOG_TCP_RESET_REJECT"
DENY_ACCESS_DROP_POLICY="DROP"
BLACK_LIST_DROP_POLICY="DROP"
HOSTS_DENY_DROP_POLICY="DROP"
ADDRESS_SPOOF_DROP_POLICY="DROP"
PING_FLOOD_DROP_POLICY="DROP"
SCAN_BLOCK_DROP_POLICY="LOG_TCP_RESET_REJECT"
HACKER_DROP_POLICY="LOG_TCP_RESET_REJECT"
SPAM_DROP_POLICY="TCP_RESET_REJECT"

#################################################################
# Variabile pentru NAT

# Se activeaza mascaradarea cu 1; cu 0 se dezactiveaza - default


MASQUERADE=0

# Se seteaza sursa NAT; se activeaza dand valoarea 1


SOURCE_NAT=1

# Activarea/Dezactivarea forward-arii pachetelor dintre interfete, in cazul


# folosirii NAT-ului; se seteaza 1 pentru activare (default)
IP_FORWARDING=1

Pagina 68 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

#################################################################
# Setari pentru serverul DHCP; se activeaza daca acesta este prezent, cu 1
DHCP_SERVER=1

#################################################################
# Variabile pentru Proxy-ul transparent
# Se seteaza adresa ip si portul serverului proxy pentru a avea tot traficul
# fltrat prin acesta
# De exemplu 192.168.0.243:3333 – tot traficul va fi filtrat via proxy prin adresa
# respectiva
TRANSPARENT_PROXY=""

#################################################################
# Variabile de protectie
# Protectia “SynFlood”; se activeaza cu 1 – default.
TCP_SYNCOOKIES=1

# Protectia “ANTI Spoof”. Validarea Sursei; se activeaza cu 1


ROUTE_VERIFICATION=1

# Protectia “Denial of Service” – aici se poate reduce riscul unui atac DoS;
# activarea acestei optiuni se face dand valoarea 1
DENIAL_OF_SERVICE=1

# Protectia la pingul de tip “flood”; se activeaza cu 1 - default


PING_FLOOD=1

# Protectia la atacurile de tip “spoofing”; se activeaza cu 1 – default


ADDRESS_SPOOF=1

# Blocarea adresei “Spoof”; se activeaza cu 1 - default


ADDRESS_SPOOF_BLOCK=1

Pagina 69 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

# Nefiltrarea Pachetelor – optiune valabila doar de la variantele de


# kernel 2.4.17 sau mai recente; se activeaza cu 1; se dezactiveaza cu 0 -
# default
UNCLEAN=1

#################################################################
# Timpul de viata al unui pachet
# TTL - Time To Live – numar de hopuri pe care-l strabat pachetele in LAN; se
# masoara in milisecunde

TTL=""

#################################################################
# Variable de logare
# Sa inregistreze pachetele cu adrese imposibile (1 pentru activare - default)
LOG_IMPOSSIBLE=1

#################################################################
# Variabile ICMP
# Acceptarea redirectarii pachetelor ICMP – se seteaza cu 0 daca se foloseste si # ca
router; pentru activare se pune 0
ACCEPT_ICMP_REDIRECTS=0

#################################################################
# NET-uri rezervate
# Aceasta optiune va bloca adresele rezervate de catre IANA.
# Amplasarea fisierului cu adresele rezervate
RESERVED_NET_FILE="$FIREWALL_DB_DIR/reservednets"

if ! [ -e conf.new ]
then
if [ -e $RESERVED_NET_FILE ]
then

Pagina 70 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

RESERVED_NETS="`echo | cat | sed -e '/###/d' $RESERVED_NET_FILE`"


else
MSG1="File: $RESERVED_NET_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi

#################################################################
# Destinatia pachetelor forward-ate prin porturi din NAT
# Permite forward-area informatiei destinate unui port catre un alt port si
# adresa IP. Vezi fiierul /etc/firewall/dnat pentru informatii despre configurare

# Amplasarea fisierului dnat; pentru activare optiune, se pune 1.


DESTINATION_NAT_FILE="$FIREWALL_DB_DIR/dnat"
DESTINATION_NAT_STATUS=0

if [ $DESTINATION_NAT_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $DESTINATION_NAT_FILE ]
then
DESTINATION_NAT="`echo | cat | sed -e '/###/d' $DESTINATION_NAT_FILE`"
else
MSG1="File: $DESTINATION_NAT_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE

Pagina 71 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

fi
exit 1
fi
fi
fi

#################################################################
# Adrese IP “scutite”; aceasta optiune va permite adreselor IP listate in fisierul de
“scutiri” sa fie scutite de toate regulile firewall-ului

# Amplasarea fisierului “de scutiri”; pentru activare, se da valoarea 1


EXEMPT_FILE="$FIREWALL_DB_DIR/exempt"
EXEMPT_STATUS=0

if [ $EXEMPT_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $EXEMPT_FILE ]
then
EXEMPT="`echo | cat | sed -e '/###/d' $EXEMPT_FILE`"
else
MSG1="File: $EXEMPT_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG_FILE == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi
fi

#################################################################

Pagina 72 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

# Lista neagra de adrese IP


# Aici se fac setarile pentru blocarea celor 10 cele mai atacate adrese IP care # se
gasesc in “lista neagra”;

# Amplasarea listei negre; pentru activare optiune se da valoarea 1 (default)


BLACK_LIST_FILE="$FIREWALL_DB_DIR/blacklist"

BLACK_LIST_STATUS=1

if [ $BLACK_LIST_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $BLACK_LIST_FILE ]
then
BLACK_LIST="`echo | cat | sed -e '/###/d' $BLACK_LIST_FILE`"
else
MSG1="File: $BLACK_LIST_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi
fi

#################################################################
# Negarea accessului adreselor IP listate in fisierul hosts.deny
# Daca se va activa aceasta optiune, se vor lua toate adresele IP din fisierul
# hosts.deny si li se vor interzice acestora accesul in sistem; se vor bloca toate adresele IP din
hosts.deny cu ajutorul prefixului ALL:

Pagina 73 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

# Amplasarea fisierului hosts.deny


HOSTS_DENY_FILE="/etc/hosts.deny"

# Amplasarea fisierului hosts.deny.active; pentru activare se da valoarea 1;


HOSTS_DENY_FILE_ACTIVE="$FIREWALL_TMP_DIR/hosts.deny.active"
HOSTS_DENY_STATUS=1

if [ $HOSTS_DENY_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $HOSTS_DENY_FILE ]
then
TCP_WRAPPERS_BLOCK="`cat $HOSTS_DENY_FILE | grep ALL: | cut -d : -f
2`"
else
MSG1="File: $HOSTS_DENY_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi
fi

#################################################################
# Negarea adreselor IP
# Aceasta optiune va nega adresa IP listata in fisierul denyaccess; este ca o negare
fara limite.

# Amplasarea fisierului denyaccess; pentru activare se da valoarea 1;


DENY_ACCESS_FILE="$FIREWALL_DB_DIR/denyaccess"

Pagina 74 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

DENY_ACCESS_STATUS=0

if [ $DENY_ACCESS_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $DENY_ACCESS_FILE ]
then
DENY_ACCESS="`echo | cat | sed -e '/###/d' $DENY_ACCESS_FILE`"
else
MSG1="File: $DENY_ACCESS_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi
fi

#################################################################
# Negarea accesului porturilor specifice adreselor IP
# Aceasta optiune va nega accesul adreselor IP din fisierul denyportaccess in
# alte sisteme printr-un port specific

# Localizarea fisierului denyportaccess; pentru activare se da valoarea 1.


DENY_PORT_ACCESS_FILE="$FIREWALL_DB_DIR/denyportaccess"
DENY_PORT_ACCESS_STATUS=0

if [ $DENY_PORT_ACCESS_STATUS == 1 ]
then
if ! [ -e conf.new ]

Pagina 75 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

then
if [ -e $DENY_PORT_ACCESS_FILE ]
then
DENY_PORT_ACCESS_PORT="`echo | cat | sed -e '/###/d'
$DENY_PORT_ACCESS_FILE`"
else
MSG1="File: $DENY_PORT_ACCESS_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi

fi

#################################################################
# Permiterea accesului printr-un port specific al unei adrese IP
# Aceasta optiune va permite adreselor IP listate in fisierul allowportaccess
# conexiunea la sistem printr-un port specific.

# Amplasarea fisierului allowportaccess; pentru activare se da valoarea 1.


ALLOW_PORT_ACCESS_FILE="$FIREWALL_DB_DIR/allowportaccess"
ALLOW_PORT_ACCESS_STATUS=0

if [ $ALLOW_PORT_ACCESS_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $ALLOW_PORT_ACCESS_FILE ]
then

Pagina 76 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

ALLOW_PORT_ACCESS="`echo | cat | sed -e '/###/d'


$ALLOW_PORT_ACCESS_FILE`"
else
MSG1="File: $ALLOW_PORT_ACCESS_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi
fi

#################################################################
# Protectia la Troieni
# Activarea acestei optiuni va duce la logarea activitatii tuturor fisierelor
# troiene intr-un fisier specific

# Amplasarea fisierului de loguri a activitatii troienilor; pentru activarea acestei


optiuni se da valoarea 1; pentru dezactivare – 0 (default)
TROJAN_FILE="$FIREWALL_DB_DIR/trojan"
TROJAN_STATUS=1

# Se va realiza blocarea troienilor cu optiunea urmatoare (1 pentru activare)


TROJAN_BLOCK=0

# Aceasta va folosi o lista a troienilor cunoscuti.


# Atentie: Acest lucru va duce la blocarea multor porturi din Internet; va fi necesara
editarea fisierului trojan.intensive pentru a schimba statusul acestor blocari
TROJAN_INTENSIVE=0

if [ $TROJAN_INTENSIVE == 1 ]
then

Pagina 77 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

TROJAN_FILE="$FIREWALL_DB_DIR/trojan.intensive"
fi

if [ $TROJAN_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $TROJAN_FILE ]
then
TROJAN="`echo | cat | sed -e '/###/d' $TROJAN_FILE`"
else
MSG1="File: $TROJAN_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi
fi

#################################################################
# Protectia la atacuri

# Activarea acestei optiuni va duce in mod obligatoriu la


# necesitatea recompilarii kernelului; pentu verificarea
# functionabilitatii acestei optiuni se verifica mai intai
# modulul ipt_state din iptables.

# Pentru activarea acestei optiuni se va da valoarea 1; pentru


# dezactivare 0 (default)
HACKER_STATUS=1

Pagina 78 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

# Urmatoarea comanda va aduce informatii in fisierul de loguri cand Iptables


# detecteaza un hacker
# Se activeaza dand valoarea 1; 0 este default - dezactivata
HACKER_LOGGING=1

# Urmatoarea optiune va duce la distrugerea pachetului atunci cand incearca


# hackerul; se da valoarea 1 pentru activarea acestei optiuni;
HACKER_BLOCK=1

# Amplasarea fisierului “hacker”


HACKER_FILE="$FIREWALL_DB_DIR/hacker"

if [ $HACKER_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $HACKER_FILE ]
then
HACKER="`echo | cat | sed -e '/###/d' $HACKER_FILE`"
else
MSG1="File: $HACKER_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi
fi

#################################################################
# Blocarea adreselor IP care fac Spamming

Pagina 79 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

# Aceasta optiune face setarile necesare pentru a bloca accesul


# celor 10 mai atacate adrese IP, listate in DSHIELD.org

# Amplasarea fisierului cu lista neagra


SPAM_FILE="$FIREWALL_DB_DIR/spam"

# Pentru activare se da valoarea 1 - default


SPAM_STATUS=1

# Pentru inregistrarea logurilor cu incercarile de spam se da


# valoarea 1 la optiunea urmatoare (default)
SPAM_LOGGING=1

if [ $SPAM_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $SPAM_FILE ]
then
SPAM="`echo | cat | sed -e '/###/d' $SPAM_FILE`"
else
MSG1="File: $SPAM_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi
fi

#################################################################

Pagina 80 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

# Scanarea porturilor

# Aceasta optiune va aduce informatii utile in fisierul de loguri # cand Iptables det. o
scanare de porturi; se activeaza cu 1
SCAN_LOGGING=1

# Urmatoarea optiune va duce la incetarea scanarii porturilor


# cand Iptables detecteaza acest lucru; se activeaza dand
# valoarea 1
SCAN_BLOCK=1

#################################################################
# Informatii despre TCP

# Se aduc informatii in fisierul allowtcp in vederea activarii


# porturilor TCP

# amplasarea fisierului; pentru activare se da valoarea 1

ALLOW_TCP_FILE="$FIREWALL_DB_DIR/allowtcp"
ALLOW_TCP_STATUS=1

if [ $ALLOW_TCP_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $ALLOW_TCP_FILE ]
then
ALLOW_TCP="`echo | cat | sed -e '/###/d' $ALLOW_TCP_FILE`"
else
MSG1="File: $ALLOW_TCP_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]

Pagina 81 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1
fi
fi
fi

#################################################################
# Informatii pentru UDP

# Se aduc informatii in fisierul allowudp pentru activarea


# porturilor UDP

# Amplasarea fisierului; pentru activare se da val. 1

ALLOW_UDP_FILE="$FIREWALL_DB_DIR/allowudp"
ALLOW_UDP_STATUS=1

if [ $ALLOW_UDP_STATUS == 1 ]
then
if ! [ -e conf.new ]
then
if [ -e $ALLOW_UDP_FILE ]
then
ALLOW_UDP="`echo | cat | sed -e '/###/d' $ALLOW_UDP_FILE`"
else
MSG1="File: $ALLOW_UDP_FILE is Missing."
echo "$MSG1"
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
fi
exit 1

Pagina 82 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

fi
fi
fi

#################################################################
# Variabilele pachetului Chain

# Lista de chain-uri
CHAINS="INET_IN INET_OUT LAN_IN LAN_OUT DMZ_IN DMZ_OUT
TCP_ACCEPT LAN_TCP_ACCEPT UDP_ACCEPT LAN_UDP_ACCEPT LOG_DROP
LOG_REJECT TCP_RESET_REJECT LOG_TCP_RESET_REJECT"

#################################################################
# Sfarsit

DATE="`date`"
MSG1="Finished Reading Firewall Configuration..."
MSG2="Program Completed at $DATE"

echo "$MSG1"
echo "$BLANK_LINE"
echo "$MSG2"

if ! [ -e $FIREWALL_TMP_DIR/conf.init.d ]
then
if [ $FIREWALL_LOG == 1 ]
then
echo "$MSG1" >> $FIREWALL_LOG_FILE
echo "$BLANK_LINE" >> $FIREWALL_LOG_FILE
echo "$MSG2" >> $FIREWALL_LOG_FILE
fi
fi

Pagina 83 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Concluzii
Internetul nu mai e ce-a fost odata. A fost o vreme cand marea retea comuna (pe-
atunci inca nu chiar asa de mare) era un taram pasnic, in care oamenii comunicau civilizat
sau, cel putin, singurele manifestari mai putin civilizate erau poate la nivelul controverselor
aprinse purtate prin e-mail. Era pe atunci obiceiul ca administratorii de sistem sa ofere tot
felul de informatii despre masinile lor, plus multiple servicii lasate la bunul plac si bunul simt
al primului venit. In acele vremuri idilice inca nu se punea problema criptarii comunicatiilor
in retea.
Am sa incep prin a spune ca modalitatile prin care un server Internet poate fi atacat
sunt numeroase, si zilnic se concep altele noi. O incercare de a formaliza acest subiect este
dificila, cu destule sanse de a lasa pe dinafara parti esentiale ale chestiunii. De asemenea,
singurele informatii valabile sunt doar cele de ultima ora - orice mai vechi decat ziua de azi
este deja depasit, si orice actiune intreprinsa in baza unor astfel de informatii are toate sansele
sa nu mai fie eficace.
Indiferent de metoda de atac folosita, obiectivele vizate de un atacator sunt clare si nu
foarte numeroase:
-obtinerea de acces direct (drepturi de administrator, root sau alt user) pe masinile
atacate; atacatorul poate atinge aceste obiective fara a executa comenzi pe server.
-atacuri "stupide" tip Denial-of-Service (DoS) sau flooding: atacatorul se multumeste
sa inunde masina atacata cu o avalansa de cereri de servicii sau cu simple pachete IP mai
mult sau mai putin aleatoare. Scopul in primul caz este de a determina un serviciu anume sa
epuizeze resursele masinii (SYN flood, Stacheldracht), in al doilea de a epuiza banda de
trecere a conexiunii la Internet a masinii respective (IP flood); este posibil ca uneori ambele
obiective sa fie vizate simultan.
-"spargerea" unor conturi de e-mail, prin aflarea parolei acestora sau prin alte metode.
Insa tot aici pot sa intre actiuni mult mai grave, cum ar fi obtinerea accesului la baze de date
cu caracter confidential, conturi bancare etc.
- "sniffing-ul" - consta in citirea pasiva a fluxului de date vehiculat de unele servicii
(cum ar fi aflarea continutului mesajelor de e-mail chiar in timp ce acestea parcurg o retea).
-"troienizarea" masinilor si programelor; sunt deosebit de periculoase prin faptul ca
ofera celui atacat impresia falsa ca totul e in ordine, in timp ce masina sa este compromisa.
In mod evident, nu este deloc prudent ca un server de Web sa aiba interfete de retea
expuse direct Internet-ului. Intotdeauna intre server si restul retelei globale trebuie sa se

Pagina 84 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

interpuna masini specializate, care controleaza accesul la server. Cunoscute sub termenul
generic (si deja folcloric) de "firewall", acestea permit sau interzic utilizarea anumitor servicii
oferite de servere, conform anumitor criterii.
Este clar, in aceste conditii, ca topologia retelei are un rol important in controlul
accesului. Practic, conexiunile intre masinile implicate trebuie astfel concepute incat sa
confere firewall-ului maximum de eficacitate, oferind in acelasi timp siguranta eliminarii
altor potentiale probleme.
Odata implementat, un astfel de mecanism permite modificari extrem de profunde ale
comportamentului sistemului, cum ar fi:
interzicerea manipularilor la nivel de kernel (inserare/dezactivare de module);
interzicerea accesului raw la discuri, memorie si porturi;
protejarea oricarui fisier impotriva modificarilor;
notificare in cazul tentativelor de a efectua operatii interzise;
ascunderea oricarui proces sau fisier, autoprotejarea mecanismului de monitorizare in
sine;
inghetarea tabelelor de rutare, de firewall, de montare;
protejarea serviciilor impotriva semnalelor si, in general, control complet asupra
semnalelor si apelurilor-sistem;
redirectarea accesului la anumite fisiere catre alte fisiere;
Pe langa un control superior asupra a tot ceea ce se intampla in retea, acesta va
permite accesul din exterior doar la un numar restrans de computere, si anume la serviciile si
resursele pe care administratorul de retea le alege. Sunt folosite una sau mai multe din cele
trei posibilitati de a controla traficul. Si anume:
• filtarea pachetelor - pachetele primite sunt analizate in functie de diverse criterii
(adresant, continut, etc.) si trimise sau nu destinatarului;
• serviciul proxy - informatia de pe/spre Internet este trimisa prin intermediul firewall-
ului si monitorizata;
• inspectia pachetelor - este o metoda mai noua care consta in examinarea doar a
anumitor pachete cheie si compararea informatiilor cu cele aflate intr-o baza de date. Daca o
suita de pachete apar drept nesigure, nu li se va permite accesul in sistem.

Pagina 85 din 86
Vizitati www.tocilar.ro ! Arhiva online cu diplome, cursuri si referate postate de utilizatori.

Pagina 86 din 86

S-ar putea să vă placă și