<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog despre resurse educaţionale din IT &#187; tcp</title>
	<atom:link href="http://resurse-educationale.uv.ro/?feed=rss2&#038;tag=tcp" rel="self" type="application/rss+xml" />
	<link>http://resurse-educationale.uv.ro</link>
	<description>Cu informatii pentru dezvoltare personala, dar şi pentru studentţi, elevi, profesori, webmasteri, programatori</description>
	<lastBuildDate>Fri, 27 Jan 2012 01:12:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Tehnologia satelitilor. HowTo.</title>
		<link>http://resurse-educationale.uv.ro/?p=175</link>
		<comments>http://resurse-educationale.uv.ro/?p=175#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:53:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[calibrare]]></category>
		<category><![CDATA[configurare]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[isp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[netsystem]]></category>
		<category><![CDATA[pppd]]></category>
		<category><![CDATA[satelit]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[thnologie]]></category>
		<category><![CDATA[tv]]></category>
		<category><![CDATA[vpn]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=175</guid>
		<description><![CDATA[Sat (Satellite Technology) HOWTO Roberto Arcomano berto@fatamorgana.com, Florindo Santoro flosan@hack-it.net v1.3, 21 July 2001 Traducerea din limba engleza: Victor Plugaru vuk@go.ro Cu scuzele de rigoare pentru eventualele greseli sau inadvertente. Tehnologia satelitilor incepe sa devina o mare resursa pentru utilizatorii &#8230; <a href="http://resurse-educationale.uv.ro/?p=175">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Sat (Satellite Technology) HOWTO<br />
Roberto Arcomano berto@fatamorgana.com, Florindo Santoro<br />
flosan@hack-it.net<br />
v1.3, 21 July 2001<br />
Traducerea din limba engleza: Victor Plugaru vuk@go.ro<br />
Cu scuzele de rigoare pentru eventualele greseli sau inadvertente.</p>
<p>Tehnologia satelitilor incepe sa devina o mare resursa pentru<br />
utilizatorii de Internet, permitand largimi mari de banda pentru download,<br />
precum si pentru multe alte servicii interesante. Acest document tine<br />
de investigheze modalitatile de conectare a mediului Linux prin<br />
satelit, cum sa obtineti viteze superioare si sa partajati aceasta cu alti<br />
clienti. Puteti gasi ultimele versiuni ale acestui document la<br />
http://www.fatamorgana.com/bertolinux/sat/english &lt;http://www.fata-<br />
morgana.com/bertolinux/sat/english&gt; si http://www.hack-it.net/How-<br />
To/Sat-HOWTO.html &lt;http://www.hack-it.net/How-To/Sat-HOWTO.html&gt; .<br />
______________________________________________________________________</p>
<p>Cuprins</p>
<p>1. Introducere</p>
<p>1.1 Introducere<br />
1.2 Copyright</p>
<p>2. Cunostinte necesare</p>
<p>2.1 Despre sateliti<br />
2.2 Cum lucreaza?<br />
2.3 Alte tehnologii<br />
2.4 Care este largimea de banda maxima?<br />
2.5 Cat costa?<br />
2.5.1 Costurile hardware<br />
2.5.2 Costurile conturilor<br />
2.6 Ce sateliti sunt folositi?<br />
2.7 Ce ISP-uri ofera servicii de acces prin Internet?<br />
2.8 Altceva?</p>
<p>3. Informatii tehnice</p>
<p>3.1 Functionare generala<br />
3.2 Frecvente<br />
3.3 Carduri receptoare DVB<br />
3.4 Configurarea nivelului legaturii de date DVB<br />
3.5 Functionarea TCP/IP<br />
3.6 Autentificarea<br />
3.7 Servicii pe care le pot folosi cu o conexiune prin satelit</p>
<p>4. Cerinte</p>
<p>4.1 Cerinte privind cunostintele<br />
4.2 Hardware<br />
4.3 Software<br />
4.4 Software TV<br />
4.4.1 Pentru Windows<br />
4.4.2 Pentru Linux</p>
<p>5. Configurarea echipamentului</p>
<p>5.1 Montajul<br />
5.2 Calibrarea<br />
5.3 Double Feed (LNB-uri duble)<br />
5.4 Reglajul nivelului legaturii de date</p>
<p>6. Configurarea  sub Linux</p>
<p>6.1 Instalarea Driverelor<br />
6.2 Configurarea fisierului /etc/dvbd.conf<br />
6.3 Daemonul dvbd<br />
6.4 Cum se configureaza serviciul EON<br />
6.5 Cum se configureaza serviciul Netsystem<br />
6.5.1 conexiuni VPN<br />
6.5.2 Patch pentru pppd<br />
6.5.3 setarea rutarii<br />
6.5.4 Patch pentru dvbd.c<br />
6.5.5 Testarea<br />
6.5.6 Obtinerea unor performante superioare<br />
6.5.7 Partajarea Netsystem cu mai multi clienti<br />
6.6 Cum se utilizeaza serviciul Sat Node</p>
<p>7. Configurarea sub Windows</p>
<p>7.1 EON<br />
7.2 Netsystem</p>
<p>8. Anexa A &#8211; Note<br />
8.1 Translatarea IP dinamic -&gt; Adrese MAC<br />
8.2 Cadrul TCP<br />
8.3 Download accelerator<br />
8.3.1 Sub Linux<br />
8.3.2 Sub Windows</p>
<p>9. Anexa B &#8211; Valori cunoscute pentru ISP-urile ce ofera servicii<br />
prin satelit</p>
<p>9.1 EuropeOnLine<br />
9.1.1 Transponder 113<br />
9.1.2 Transponder 114<br />
9.1.3 Transponder 115<br />
9.1.4 Transponder 103<br />
9.2 Netsystem<br />
9.2.1 Transponder 119<br />
9.3 Sat Node</p>
<p><span id="more-175"></span></p>
<p>______________________________________________________________________</p>
<p>1. Introducere</p>
<p>1.1. Introducere</p>
<p>Acest document intentioneaza sa explice cate ceva despre<br />
tehnologia satelitara, cum functioneaza, de ce aveti nevoie, configuarea<br />
si cum sa partajati accesul pentru mai multi clienti. Conexiunile prin<br />
satelit sunt foarte diferite de cele terestre, cer mai mult atentie la<br />
configuare si mai multa intretinere pentru a le mentine stabile (ninsoarea<br />
sau ploaia intensa va pot impiedica sa aveti un semnal de calitate).</p>
<p>Opiniile Dumneavoastra sunt binevenite, nu ezitati sa<br />
ne contactati: berto@fatamorgana.com &lt;mailto:berto@fatamorgana.com&gt; si<br />
flosan@hack-it.net &lt;mailto:flosan@hack-it.net&gt; .</p>
<p>1.2. Copyright</p>
<p>Copyright (C) 2000,2001 Roberto Arcomano, Florindo Santoro. Acest document<br />
este gratuit; il puteti redistribui sau/si modifica sub<br />
termenii GNU Licenta Publica Generala asa cum a fost publicata de Free<br />
Software Foundation, de asemeni pentru versiunea 2 a licentei sau (conform<br />
optiunii Dumneavoastra) conform oricarei viitoare versiuni. Acest document<br />
este distribuit in speranta ca va fi folositor, dar</p>
<p>FARA NICI O GARANTIE, fara implicarea vreunei garantii<br />
comerciale ori a FIABILITATII INTR-UN SCOP PREDEFINIT.<br />
Consultati Licenta Generala Publica GNU  pentru mai multe detalii.<br />
Puteti obtine o copie a Licentei Generale Publice GNU la adresa<br />
&lt;http://www.gnu.org/copyleft/gpl.html&gt;</p>
<p>2. Cunostinte necesare</p>
<p>2.1. Despre sateliti</p>
<p>In ultimii cativa ani satelitii au inceput sa fie folositi<br />
pentru comunicatia in Internet, in primul rand de catre ISP-uri medii-mari<br />
(ISP= Internet Service Provider), dar am intalnit si utilizatori<br />
individuali. Conexiunile prin satelit sunt un tip diferit de<br />
cele terestre, cu temporizari (timing-uri) diferite, cum ar fi RTT<br />
(Round Trip Time), dar si cu valori diferite ale largimii de banda, pana<br />
la 2 Mb/s sau mai mult.</p>
<p>2.2. Cum functioneaza?</p>
<p>Sa ne imaginam o cale ca aceasta:</p>
<p>||||||    S A T E L I T   ||||||||<br />
/                       /|\<br />
Downl             /                         |      Upload<br />
load             /                          |      de la<br />
la              /(4)                        | (3)  server<br />
client         /                            |<br />
/                             |<br />
SatCard(antena parabolica)                  |<br />
|                              |<br />
\|/                             |<br />
PC &#8212;-adreseaza cerere&#8212;&#8211;&gt; SAT-SERVER&lt;&#8212;extragere&#8212;&gt; INTERNET<br />
(1)                               (2)</p>
<p>In primul rand facem cererea (1) folosind conexiunea noastra<br />
Internet catre Sat-SERVER, acesta va extrage informatiile din Internet (2)<br />
si le va trimite catre satelit (3); in final vom receptiona datele de la<br />
satelit (4) folosind o antena parabolica si cardul DVB pentru satelit.</p>
<p>Tipic exista 2 tipuri de cereri:</p>
<p>- http<br />
- ftp</p>
<p>Ambele au un flux mic de date pentru cerere si un volum mare de date<br />
pentru raspuns, asa ca satelitii lucreaza bine cu acestea, dar cu un<br />
timp mai mare de raspuns. Aceasta este cea mai mare problema a conexiunior<br />
prin satelit (ganditi-va la o distanta tipica la care orbiteaza satelitii<br />
de cca 36000 km, asa incat veti avea un timp de acces de [ 36000<br />
km / 300.000 km/s = 0.120 s = ] 120 ms pe care trebuie sa le adaugati de<br />
la conexiunea clasica la Internet de doua ori pentru ca ISP-ul trimite odata<br />
catre satelit iar clientul descarca de la satelit).</p>
<p>ISP-uri recente permit clientilor utilizarea si a altor servicii, ca:</p>
<p>-chat<br />
-email<br />
-news<br />
si multe altele</p>
<p>Exita asa numitele servicii one-way (monosens), care constau in servicii<br />
de mail, download la cerere (unde faceti rezervari de fisiere)<br />
si site-download; aceste servicii sunt off-line (neconectate), asa incat<br />
le puteti accesa fara modem, sau alt fel de conexiuni.</p>
<p>2.3. Alte tehnologii</p>
<p>Trebuie sa amintim si alte tehnologii satelitare: conexiunuea<br />
dublu-sens (2-way). Acestea folosesc antena parabolica pentru conexiunea<br />
la Internet in ambele sensuri. Costa mult mai mult decat<br />
cele monosens. Asteptam mai multe in aceasta directie in vitorul apropiat,<br />
la momentul actual permit o largime de banda de 4 Mb/s la download si 256k<br />
la upload.</p>
<p>2.4. Care este largimea de banda maxima?</p>
<p>Depinde de multi factori: scopul ISP-ului, parametrul TCP window folosit,<br />
aplicatiile folosite de clienti, si mai important decat toate,<br />
&#8220;Congestia internet&#8221;. Va puteti astepta la o largime de banda maxima<br />
de 1-4Mb/s si o medie de 10-30KBytes/s dar, repet, depinde de multi alti<br />
factori.</p>
<p>Oricum, unele ISP-uri (Furnizori de Servicii Internet) pretind ca<br />
va asigura &#8220;largime de banda maxima&#8221;, in timp ce media largimii de banda<br />
poate fi mult mai mica, datorita congestiilor dintre ISP-uri.</p>
<p>Alte ISP-uri va garanteaza largimea de banda minima, ceea ce are o inteles<br />
decat cea maxima, pentru ca este disponibila tot timpul.</p>
<p>Va rugam consultati Anexa A pentru a afla mai multe despre obtinerea<br />
unor performante mai bune la download.</p>
<p>2.5. Cat costa ?</p>
<p>Noi am distins intre costurile hardware (ale echipamentelor)<br />
si costurile conturilor. Primele sunt cunoscute, in timp ce ultimele<br />
depind de ce servicii alegeti (garantate/negarantate, largime de banda<br />
maxima).</p>
<p>2.5.1. Costurile hardware</p>
<p>Pentru a instala micul nostru sistem satelit avem nevoie de :</p>
<p>1. Cardul de acces<br />
2. Antena parabolica<br />
3. Unul sau mai multe convertoare (LNC-uri, LNB-uri)</p>
<p>trebuie utilizat un convertor digital pentru accesul Internet via satelit</p>
<p>Cardurile DVB costa intre 200$-300$ depinde de marca<br />
Antena parabolica costa 50$<br />
Convertorul LNB costa aproximativ 50$</p>
<p>Deci avem aproape 3-400$ costuri hardware (poate vreti sa adaugati<br />
si costurile instalarii !!)</p>
<p>2.5.2. Costurile conturilor</p>
<p>Aici costurile depind de ce va ofera ISP-ul , care este largimea de banda,<br />
daca exista largimi de banda garantate (care sunt mai importante decat<br />
largimile maxime de banda), ce servicii puteti accesa, si asa mai departe.</p>
<p>Unele ISP-uri va ofera acces gratuit in schimbul vesnicei vizualizari a<br />
unui banner (pe care nu il puteti minimiza), in acest caz veti plati<br />
atunci cand veti cumpara ceva prezentat in banner.</p>
<p>Tipic, costurile conturilor se ridica la 100-150$ pe an pentru servicii<br />
&#8220;negarantate&#8221; si 4-600$ sau mai mult pentru servicii &#8220;garantate&#8221; (va<br />
garanteaza o largime de banda minima pe care o puteti folosi in momente de<br />
congestie, evident congestii intre ISP-uri satelitare), cand ati &#8220;iesit&#8221;<br />
catre Internet, nimeni nu va mai poate garanta nimic.</p>
<p>2.6. Care sunt satelitii utilizati?</p>
<p>Cand discutam de sateliti, ne referim la: Astra (19.2 grade SE), Hotbird<br />
(13.2 grade SE), noul Europestar (45 grade SE), Eutelsat (8 grade<br />
SV), Astra (26 E), Arabsat 3A (26E).</p>
<p>2.7. Ce ISP-uri ofera servicii Internet prin satelit?</p>
<p>In Europa cunoastem circa 8 ISP-uri care ofera acces Internet prin satelit:</p>
<p>1. EuropeOnLine &#8211; EON &lt;http://www.europeonline.net&gt;</p>
<p>2. Netsystem &lt;http://www.netsystem.com&gt;</p>
<p>3. Starspeeder &lt;http://www.starspeeder.com&gt;</p>
<p>4. Sat Node &lt;http://www.satnode.com&gt;</p>
<p>5. Eliosat &lt;http://www.eliosat.com&gt;</p>
<p>6. Falcon Stream  &lt;http://www.falconstream.com&gt;</p>
<p>7. SkyDSL &lt;http://www.skydsl.com&gt;</p>
<p>8. OpenSky &lt;http://www.opensky.it&gt;</p>
<p>9. DirecPC &lt;http://www.direcpc.com&gt; dar acesta foloseste un<br />
card propietar (este unul dintre primele ISP-uri de acest tip)</p>
<p>EON ofera acces pentru aproximativ 150$ pe an fara largime<br />
de banda garantata.</p>
<p>Netsystem ofera servicii la costuri nule, trebuie doar sa ii &#8220;suportati&#8221;<br />
bannerele.</p>
<p>StarSpeeder ofera acces ???</p>
<p>Eliosat costa 350$ pe an cu 128k/s garantat (servicii minime, vedeti<br />
site-ul web pentru mai multe informatii); pe langa aceasta, ofera si<br />
tehnologia dublu-sens pentru a transmite si receptiona flux de date.</p>
<p>SkyDSL ofera acces pentru aproximativ 15$ pe luna cu 128k/s largime de<br />
banda, dar permite largimi de banda mai mari pentru fiecare Mb downloadat<br />
pe care il platiti (puteti selecta de la 256k la 4Mb/s),<br />
pentru mai multe informatii vizitati site-ul web.</p>
<p>IMPORTANT: inainte de a va inregistra la vreunul dintre aceste servicii,<br />
verificati aria de acoperire si diametrul necesar al antenei parabolice.</p>
<p>2.8. Altceva ?</p>
<p>Cu orice fel de card DVB puteti deasemeni receptiona si canale TV<br />
digitale (doar cele gratuite), iar unele carduri au suport<br />
pentru interfata comuna de decriptare a canalelor codate.</p>
<p>Urmeaza schema:</p>
<p>Smart-Card -&gt; CAM -&gt; Interfata Comuna -&gt; Sat Card (cu suport C.I.)</p>
<p>Cardul CAM (sunt multe standarde folosite pentru decriptare: SECA, IRDETO,<br />
VIACCESS si altele) este dispozitivul care permite decriptarea (pentru TV,<br />
RADIO si date), in timp ce Interfata Comuna sau C.I. (ETSI EN<br />
50221) permite conectarea intre CAM si cardul pentru satelit.</p>
<p>3. Informatii tehnice</p>
<p>Acum vom incerca sa intelegem cum functioneaza si in ce conditii, conexiunile<br />
prin satelit.</p>
<p>Ne putem imagina legatura prin satelit ca o legatura fara fir<br />
clasica, radio (wireless), intelegand prin asta o legatura intre<br />
doua sisteme care nu folosesc un cablu pentru a comunica.</p>
<p>Legaturile fara fir sunt foarte diferite de cele cablate pentru ca<br />
exista anumite probleme aditionale de rezolvat cum ar fi sensibilitatea,<br />
problemele legate de securitate, s.a. Pot aparea si alte probleme legate<br />
de vreme, in special in conditii de ploaie sau ninsoare.</p>
<p>Oricum, trebuie sa avem in vedere primul principiul al legaturilor fara<br />
fir: vizibilitate directa libera de obstacole, care este IMPERATIVA si<br />
fara de care nu putem comunica. Pentru mai multe informatii,<br />
consultati documentul Wireless-HOWTO.<br />
&lt;http://www.fatamorgana.com/bertolinux/&gt; .</p>
<p>In conexiunile prin satelit folosim un tip special de antena, o antena<br />
parabolica, care ne confera un castig mare la receptie, necesar pentru a<br />
receptiona semnalul de la satelit. De fapt, satelitul are o orbita<br />
geostationara la 36.000 km si singurul tip de antena pe care<br />
il putem utiliza este antena parabolica.</p>
<p>3.2. Frecvente</p>
<p>Frecventele pe care le receptionam sunt de la 11Ghz la 12.7Ghz (de<br />
la transponderul satelitului, emitatorul care ne trimite<br />
date), o frecventa foarte inalta, dar fedderul (convertorul,<br />
LNB-ul din centrul antenei parabolice) converteste acest semnal la<br />
1-2Ghz asa incat putem trimite semnalul la receptor prin cablu (pana la<br />
40m, depinde de pierderile cablului).</p>
<p>3.3. Cardul receptor DVB</p>
<p>1 GHz Signal &#8211;&gt; |RX|&#8211;&gt; |ADC| &#8211;&gt; |Low Level Network| &#8211;&gt; |O.S.TCP/IP Stack<br />
|____________________________________|<br />
DVB Card</p>
<p>Acum ne putem imagina un receptor clasic la 1Ghz receptionand semnale<br />
analogice de la satelit, convertindu-le in semnale digitale si livrandu-le<br />
catre nivelul de retea (ISO OSI 1,2): aici, codul firmware din<br />
card genereaza pachete pe doua nivele (cam ca ethernet) pentru a<br />
fi trimise catre pc-ul nostru cu linux, windows, sau alt sistem,<br />
in final vom transforma aceste date in pachete TCP/IP.</p>
<p>3.4.Configurarea nivelului legaturii de date DVB</p>
<p>Aici avem de facut cateva setari la chiar la cartela DVB:</p>
<p>1. Frecventa de lucru, trebuie sa setam frecventa satelitului (ca in<br />
reviste): este intre 11.8Ghz si 12.8Ghz de exemplu 12640000 Khz.</p>
<p>2. Rata simbolurilor, masurata in simboluri pe secunda, tipic 22 MS/s<br />
(mega simboluri pe secunda)</p>
<p>3. Polarizarea, care este o setare a antenei, configurabila din software:<br />
valorile posibile sunt H (orizontal) si V (vertical).</p>
<p>4. PID-urile. PID-ul este folosit pentru a selecta o transmisiune dintre<br />
mai multe semnale ale aceleiasi frecvente.</p>
<p>5. Trebuie sa specificam si masca filtrului de biti care ne indica cat<br />
de mare este grupul adreselor MAC destinatie (masca bitfilter este<br />
similara netmaskului TCP/IP, singura diferenta este ca masca bitfilter<br />
este pe 48 de biti, iar netmaskul TCP/IP este pe 32 biti. Intotdeauna,<br />
datele Internet sunt transmise cu PID unicast, in timp<br />
ce iformatiile video sunt transmise folosind PID multicast.</p>
<p>6. Calcularea adresei MAC: aici specificam care va fi adresa MAC a<br />
cardului DVB. Trebuie facut acest lucru pentru ca unele ISP-uri folosesc<br />
un algoritm (vezi anexa A pentru mai multe informatii) care va calculeaza<br />
adresa MAC din adresa IP, alte ISP-uri folosesc propria dumneavoastra<br />
adresa MAC.</p>
<p>3.5 Functionarea TCP/IP</p>
<p>Cum am aratat in sectiunea 2.2, trebuie sa facem o cerere folosind<br />
interfata modem (de exemplu ppp0 sau orice alta interfata pe<br />
care o folosim pentru a comunica cu Internetul), apoi raspunsul se<br />
va intoarce la interfata noastra DVB (dvb0).</p>
<p>Sistemele de operare moderne ne permit sa receptinam datele printr-o<br />
interfata de intrare diferita de cea prin care am facut cererea.<br />
Pentru a face aceasta, e nevoie sa dezactivam controlul fluxului<br />
pentru unele pachete, ca de exemplu cu comanda:</p>
<p>echo &#8221; 0&#8243; &gt; /proc/sys/net/ipv4/conf/dvb0/rp_filter (pentru Linux).</p>
<p>3.6. Autentificarea</p>
<p>Ramane doar un singur lucru de completat in descrierea noastra: metoda de<br />
autentificare.</p>
<p>Unele ISP-uri prin satelit folosesc asa-numita &#8220;autentificare prin proxy&#8221;:<br />
cand folositi proxy-ul lor, trebuie sa indicati un nume de login si o<br />
parola pentru a continua cererea (trebuie initial sa va inregistrati cu un<br />
cont pentru a folosi serviciile lor prin satelit): odata facuta aceasta,<br />
ISP-ul foloseste adresa IP a dumneavoastra pentru a calcula<br />
adresa MAC (vezi anexa A) catre care va trimite raspunsul.</p>
<p>Alte ISP-uri va cer sa configurati o conexiune VPN intai (folosind login-ul<br />
si parola dumneavoastra), apoi vor controla contul cu care sunteti<br />
inregistrat (cand extrag adresa MAC) apoi vor trimite datele catre (si<br />
numai) cardul dvs. DVB (adresa MAC).</p>
<p>Oricum, sa aveti in vedere ca puteti modifica valoarea filtrului DVB<br />
pentru a fi capabil sa receptionati ORICE adresa MAC (raportata la o<br />
frecventa data).</p>
<p>3.7 Servicii pe care le pot folosi cu o conexiune prin satelit</p>
<p>Tipic, serviciile pe care le puteti folosi cu o conexiune prin satelit<br />
depind de tipul de autentificare folosit de ISP.</p>
<p>- cu clasica &#8220;autentificare proxy&#8221; puteti folosi doar serviciile HTTP<br />
si FTP<br />
- cu conexiunea VPN nu aveti (in principiu) nici o restrictie<br />
la serviciile pe care le puteti folosi, singura limita este definita<br />
de RTT (Timpul de acces) la satelit, aproximativ 500-1000ms in medie, asa<br />
ca uitati de &#8220;voce&#8221; sau alte servicii in timp real !! <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> (( Vedeti<br />
documentul VoIP-HOWTO.<br />
&lt;http://www.fatamorgana.com/bertolinux&gt;<br />
pentru mai multe informatii. Oricum, puteti totusi utiliza mail, chat,<br />
telnet, ping, dns, si asa mai departe.</p>
<p>4. Cerinte</p>
<p>4.1 Cerinte privind cunostintele</p>
<p>Pentru aceste incercari aveti nevoie de ceva experienta in comunicatii<br />
Internet si retele (continute in Net-HOWTO &lt;http://www.linuxdoc.org/HOWTO/Net-<br />
HOWTO/index.html&gt; ) si o oarecare experienta practiva privind antenele<br />
parabolice si sistemele pentru satelit (ar trebui sa stiti sa va orientati<br />
antena, unghiurile corecte)</p>
<p>4.2 Hardware</p>
<p>Avem nevoie de:</p>
<p>1. Antena parabolica, de la un sistem analogic</p>
<p>2. Convertorul digital sa fie plasat in centrul antenei (LNB digital)</p>
<p>3. Cardul receptor compatibil DVB</p>
<p>4. Un PC cu care sa va conectati</p>
<p>4.3 Software</p>
<p>Aici aveti nevoie de :</p>
<p>1. Drivere pentru cardul DVB pentru a functiona sub sistemul dvs. de<br />
operare (Linux, Windows sau altele)</p>
<p>2. Setarile corecte</p>
<p>3. Aplicatii externe, in anumite cazuri,ca si client VPN-PPTP pentru<br />
ISP-uri ca Netsystem sau StarSpeeder</p>
<p>Pentru soft de Linux, puteti gasi drivere pentru Siemens DVB la Linux<br />
TV Project &lt;http://www.linuxtv.org&gt; .</p>
<p>4.4. Software TV</p>
<p>Tot astfel, exista software video pentru implementarea receptiei TV:</p>
<p>4.4.1 Sub Windows</p>
<p>1. MultiDec MultiDec 6.6b<br />
&lt;http://www.erkner.com/free/digi/MultiDec66b.zip&gt; (sursa gratuita<br />
si cod)</p>
<p>2. TPREdit TPREdit &lt;http://come.to/uhura&gt; (pentru Technotrend)</p>
<p>3. WinTV DVBs Hauppauge &lt;http://www.hauppauge.de/software.htm&gt; sau<br />
Technotrend &lt;http://www.technotrend.de&gt; (pentru cardurile compatibile<br />
Siemens, Hauppauge, Technotrend, Technisat, etc&#8230; )</p>
<p>4. WinDVB2000 WinDVB2000 &lt;http://www.odsoft.org/english.html&gt; (circa<br />
19$).</p>
<p>4.4.2. Sub Linux</p>
<p>1. gVideo &#8211; aplicatie inclusa in driverul SIemens</p>
<p>2. Vdr Video Recorder (bun si pentru urmarit TV)</p>
<p>5. Configurarea echipamentului</p>
<p>5.1. Montarea</p>
<p>Primul lucru de facut este montarea antenei parabolice;</p>
<p>Dupa care trebuie sa o orientam (cautarea unghurilor corecte din diverse<br />
reviste de specialitate): unghiurile sunt intotdeauna specificate de la sud<br />
la est sau la vest pentru cele orizontale si de la sol catre linia<br />
satelitului pentru cele verticale. Unealta clasica de orientare este<br />
compasul.</p>
<p>5.2. Calibrarea</p>
<p>Cum putem sti daca ne-am orientat corect?</p>
<p>Dupa ce am stabilit plaja corecta de unghiuri, trebuie sa o ajustam masurand<br />
nivelul de putere. Pentru aceasta putem</p>
<p>1. folosi de expemplu un receptor analogic (care este compatibil<br />
cu convertorul digital) si sa trecem la cautarea unghiului corect.<br />
Cand putem vedea imagine, inseamna ca l-am gasit. Va sugerez sa folositi<br />
un convertor analogic pentru ca, poate aveti unul (pe care l-ati folosit<br />
la o instalare anterioara) si pentru ca este mult mai simplu de calibrat<br />
decat unul digital.</p>
<p>2. Folosit un instrument de masurare a puterii (vreo 20$) cu indicator<br />
secvential (la putere maxima, toate ledurile se aprind).</p>
<p>5.3. LNB-uri duble</p>
<p>Puteti de asemeni sa folositi LNB-uri duble (unii comercianti vand<br />
kituri complete cu distante standard de receptie,<br />
de exemplu Astra (19.2 SE) cu Eutelsat (16 SE) sau cu Hotbird (13 SE).</p>
<p>Pentru montaj trebuie sa aveti in vedere, tot odata, ca satelitii sunt<br />
in directii opuse ale convertorilor, ca in figura:</p>
<p>SAT1                 SAT2<br />
\                 /<br />
\               /<br />
\   C1   C2   /<br />
\    \    \ /    /     /<br />
\    \   / \   /     /<br />
\____\ /___\ /_____/</p>
<p>Vedere de sus</p>
<p>C1 receptioneaza de la SAT2<br />
C2 receptioneaza de la SAT1</p>
<p>5.4. Reglajul nivelului legaturii de date</p>
<p>Odata ce am obtinut semnalul analog, trebuie sa ajustam receptorul<br />
nostru pe frecventa, PID-ul, rata de simboluri corecta, samd.</p>
<p>Prezint aici un exemplu de configurare pentru EON (EuropeOnline),<br />
transponderul 114 pe satelitul Astra (19.2 SE)</p>
<p>Frecventa: 12640 MHz</p>
<p>Polarizarea: V (Vertical)</p>
<p>Symbol Rate: 22000 KS/s</p>
<p>PID:</p>
<p>·  Unicast: 512 (decimal), 0&#215;200 (hexadecimal)</p>
<p>·  Multicast: 785, 786, 1041 (decimal), 0&#215;311, 0&#215;312, 0&#215;411<br />
(hexadecimal), dar sa aveti in vedere ca, in multe cazuri, Multicast<br />
PID sunt alocate automat.</p>
<p>Mai avem nevoie de o informatie: ce adresa MAC sa ii alocam cardului DVB</p>
<p>Din nou, pentru EON (EuropeOnline) trebuie sa consultati anexa A<br />
pentru a calcula adresa MAC din adresa IP dinamica.</p>
<p>Evident, aveti nevoie de login si de parola pentru respectivul<br />
serviciu ISP</p>
<p>6. Configurarea sub Linux</p>
<p>In aceasta sectiune vom presupune ca folosim un card Siemens compatibil,<br />
cum ar fi un card Hauppage WinTV DVB, pentru astfel de carduri<br />
gasiti drivere la &lt;http://www.linuxtv.org/download/dvb&gt; sau DVB PCI card<br />
sub Linux &lt;http://www2.arnes.si/~mthale1/index.html &gt; .</p>
<p>6.1.Instalarea driverelor</p>
<p>Odata descarcate driverele, trebuie sa desfacem arhiva tar intr-un<br />
director, intram in director si dam comanda &#8220;make&#8221; si &#8220;make insmod&#8221;.<br />
Pentru aceasta, trebuie sa aveti sursele kernelului curent in directorul<br />
/usr/src/linux (sau le descarcati de la http://www.kernel.org<br />
&lt;http://www.kernel.org&gt; si le recompilati.</p>
<p>Dupa comanda &#8220;make insmod&#8221;, sistemul dumneavoastra ar trebui sa aiba<br />
modulele DVB incarcate. Pentru a le descarca, dati comanda &#8220;make rmmod&#8221;.</p>
<p>6.2. Configurarea fisierului /etc/dvbd.conf</p>
<p>Fisierul /etc/dvbd.conf este folosit pentru a configura<br />
parametrii legaturii de date pentru cardul DVB. Aici sunt setarile<br />
principale:</p>
<p>- &#8220;power&#8221; indica puterea pentru LNB, 1=ON, 0=off. De obicei o veti seta<br />
1, doar daca nu folositi vreun fel de cascadare intre mai multe LNB-uri</p>
<p>- &#8220;symbolrate&#8221;, aceasta este rata simbolurilor pe secunda, de obicei<br />
22.000.000</p>
<p>- &#8220;frequency&#8221; , frecventa la care se receptioneaza datele, cum ar fi<br />
12.640.000</p>
<p>- &#8220;ttk&#8221; , semnalul de 22khz, aproape intotdeauna 1</p>
<p>- &#8220;diseqc&#8221;, folosit pentru controlul discriminarii, doar daca folositi<br />
un discriminator pentru controlul mai multor LNB-uri, 0 daca nu e cazul</p>
<p>- &#8220;AFC&#8221; de obicei 1</p>
<p>- &#8220;polarization&#8221;, 1 pentru orizontal, 0 pentru vertical.</p>
<p>- &#8221; filter_n &lt;PID&gt; &lt;MAC&gt; &lt;BITFILTER&gt;&#8221;, unde n este 0 pentru Unicast si<br />
1-9 pentru Multicast; PID este exprimat in forma decimala, MAC<br />
este adresa MAC valida doar pentru filtrul Multicast, iar BITFILTER este<br />
numarul ai carui biti reprezinta bytes pentru masca ((de exemplu<br />
10 = 2 (bit 1) + 8 (bit 3), asa ca masca va fi 00 00 FF 00 FF 00).</p>
<p>Exemplu:</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p># DVB receiver configuration file, (c) 2000 data planet international</p>
<p># standard location in /etc</p>
<p># LNB power on=1/off=0</p>
<p>power 1</p>
<p># symbol rate [symbol/sec]</p>
<p>symbolrate 22000000</p>
<p># ASTRA TR 114</p>
<p>frequency 12640000</p>
<p># 22 kHz signal on=1/off=0</p>
<p>ttk 1</p>
<p># diseqc on=1/off=0</p>
<p>diseqc 0</p>
<p># AFC on=1/off=0</p>
<p>AFC 1</p>
<p># polarisation H=1/V=0</p>
<p>polarisation 1</p>
<p># settings for MPE filter, PID and MAC filtering, valid MAC bytes</p>
<p>filter_0 512</p>
<p>filter_1 785 00:D0:5C:1E:96:01 48</p>
<p>filter_2 786 00:D0:5C:1E:96:01 48</p>
<p>filter_3 1041 00:D0:5C:1E:96:01 48</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>filter_0 nu are valori nici pentru MAC si nici pentru bitfilter pentru<br />
ca adresa MAC potrivita este calculata din adresa IP (anexa A). Vom vedea<br />
ca aceste setari sunt in regula numai pentru anumite ISP-uri,<br />
pentru altele, va trebui sa modificam fisierul dvbd.c</p>
<p>6.3 Daemonul dvbd</p>
<p>Odata ce fisierul /etc/dvbd.conf este OK, puteti lansa aplicatia<br />
dvbd care, executata fara optiunea -d scrie catre stdout nivelul calitatii<br />
semnalului.</p>
<p>- Sync TREBUIE sa fie 127 sau pe-aproape</p>
<p>- Vber TREBUIE sa fie 0</p>
<p>doar daca nu cumva aveti o receptie slaba de la satelit (verificati cablul<br />
si orientarea antenei)</p>
<p>Nota:</p>
<p>S-ar putea sa trebuiasca schimbat in dvbd.h aceasta linie:</p>
<p>#define network_device &#8220;eth0&#8243;</p>
<p>cu</p>
<p>#define network_device &#8220;ppp0&#8243;</p>
<p>functie de ce interfata utilizati pentru a comunica cu Internetul,<br />
eth0 sau ppp0, dati comanda &#8220;make&#8221; pentru a updata fisierul binar si<br />
restartati dvbd.</p>
<p>6.4. Cum se configureaza serviciul EON (Europe Online)</p>
<p>Acum, daca aveti semnal bun, puteti incerca sa folositi un<br />
serviciu Internet prin satelit.</p>
<p>Pentru EuropeOnline mergeti la setarea &#8220;proxy&#8221; din Netscape si setati la<br />
HTTP si FTP:</p>
<p>proxy.xxx.europeonline.net</p>
<p>si, in &#8220;port&#8221; 8080 si FTP proxy cu &#8221; port&#8221; 8090.</p>
<p>unde xxx este numarul transponderului (103,113,114 sau 115) pe care il<br />
folositi (vedeti anexa B pentru mai multe informatii).</p>
<p>Acum va trebui sa puteti naviga cu browserul oriunde doriti&#8230;</p>
<p>Pentru a partaja serviciile EuropeOnline cu mai multi clienti, va trebui<br />
sa folositi proxy-ul Squid &lt;http://www.squid-cache.org&gt;, activand<br />
cascadarea catre proxy-ul EON.</p>
<p>Pentru o mai complexa utilizare EON, cum ar fi o mai complexa cascadare a<br />
proxy-urilor sau partajarea cu clientii, consultati EON Linux Masquerading<br />
FAQ &lt;http://obiwan.hvrlab.org/~faz/eon/eon_masq.html&gt;</p>
<p>6.5. Cum se configureaza serviciul Netsystem</p>
<p>Serviciul NetSystem este ceva mai complicat decat EON sub Linux, caz<br />
in care, mai trebuie configurate:</p>
<p>1. conexiunea VPN</p>
<p>2. patch-ul pentru pppd (doar daca pppd &lt;=2.4.0)</p>
<p>3. setarile de routere cu fisiere exemplu</p>
<p>4. patch-ul pentru dvbd.c</p>
<p>5. testarea</p>
<p>6. imbunatatirea performantelor</p>
<p>7. partajarea conexiunii NetSystem cu mai multi clienti</p>
<p>6.5.1 Conexiunea VPN</p>
<p>In primul rand trebuie sa descarcati aplicatia client VPN PPTP<br />
&lt;http://cag.lcs.mit.edu/~cananian/Projects/PPTP/&gt;</p>
<p>Dupa desfacerea arhivei tar, compilare si instalare, trebuie sa<br />
adaugati o intrare in fisierul /etc/ppp/pap-secrets si /etc/ppp/chap-secrets:</p>
<p>&#8221; login&#8221; * &#8221; password&#8221; *</p>
<p>unde &#8220;login&#8221; si &#8220;password&#8221; sunt cele cu care v-ati inregistrat la NetSystem<br />
&lt;http://css.netsystem.com&gt;</p>
<p>6.5.2 Patch-ul pentru pppd</p>
<p>Asa cum se arata in descrierea PPTP &lt;http://www.sigpipe.org/~me/vpn/pptp.html&gt;<br />
trebuie sa patch-uiti demonul pppd pentru a suporta conexiunile cu serverul<br />
VPN NetSystem (server Linux).</p>
<p>Trebuie sa:</p>
<p>1. Descarcati o versiune recenta de pppd<br />
&lt;ftp://cs.anu.edu.au/pub/software/ppp/&gt;</p>
<p>2. Descarcati si dezarhivati patch-ul corespondent pentru pppd<br />
&lt;ftp://ftp.binarix.com/pub/ppp-mppe/&gt;</p>
<p>3. dezarhivati pppd intr-un director</p>
<p>4. dati comanda &#8220;patch -p0 &lt; nume_patch</p>
<p>5. intrati in directorul pppd</p>
<p>6. dati comanda &#8220;make&#8221; si &#8220;make install&#8221;</p>
<p>6.5.3. Setarile de routare</p>
<p>Acum pppd va fi capabil sa lucreze cu VPN-ul NetSystem. Puteti incerca cu</p>
<p>&#8221; pptp vpn.netsystem.com debug user &lt;login&gt;&#8221;</p>
<p>unde &#8220;login&#8221; este numele de login al contului dvs de la NetSystem;<br />
veti vedea in /var/log/messages informatii de depanare de la interfata ppp1</p>
<p>Daca totul e OK ar trebui sa vedeti interfata ppp1 cu comanda &#8220;ifconfig&#8221;</p>
<p>Daca totusi aveti probleme cu atentificarea, adaugati &#8220;noauth&#8221; in fisierul<br />
/etc/ppp/options</p>
<p>Odata ce interfata ppp1 a pornit, va trebui sa treceti la urmatoarele:</p>
<p>1. dati comanda &#8220;ifconfig ppp1&#8243; si cautati adresa IP din dreapta<br />
sirului &#8220;P-t-P:&#8221; (o voi numi in continuare IP)</p>
<p>2. stergeti-o din tabela de routare cu &#8220;route de IP&#8221;</p>
<p>3. adaugati-o la interfata ppp0 cu &#8220;route add IP dev ppp0&#8243;</p>
<p>4. stergeti gateway-ul implicit din ppp0 cu &#8220;route del default&#8221;</p>
<p>5. adaugati gateway implicit pentru ppp1 cu &#8220;route add default dev ppp1&#8243;</p>
<p>Punctele 1-3 sunt necesare pentru ca interfetele punct-la-punct sunt<br />
administrate sub linux, adaugand gateway-ul la noua interfata (ceea ce<br />
nu e o idee buna in cazul de fata, doar daca nu vreti sa<br />
obtineti o bucla infinita, caz in care pachetul va circula la infinit,<br />
icapsulandu-se in sine insusi <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ))</p>
<p>Punctele 4-5 sunt necesare pentru a face toate cererile de<br />
date catre ppp1, adica vom avea contact cu lumea folosind conexiunea<br />
VPN, aceasta nefiind solutia optima in anumite conditii, de exemplu pentru<br />
interogarile DNS care ar putea fi trimise direct, pentru a evita<br />
intarzierile prin satelit inutile.</p>
<p>In loc sa configurati manual rutarea, puteti incerca acest script:</p>
<p>&#8221; netsystem.on&#8221; script</p>
<p>______________________________________________________________________<br />
route add IP_DNS1 dev ppp0<br />
route add IP_DNS2 dev ppp0<br />
route add -net 212.31.242.0 netmask 255.255.255.0 dev ppp0<br />
pptp vpn.netsystem.com user &lt;login&gt;<br />
/bin/sleep 5<br />
route add default dev ppp1<br />
______________________________________________________________________</p>
<p>&#8221; netsystem.off&#8221; script</p>
<p>______________________________________________________________________<br />
route del IP_DNS1 dev ppp0<br />
route del IP_DNS2 dev ppp0<br />
route del -net 212.31.242.0 netmask 255.255.255.0 dev ppp0<br />
kill -9 &#8216;s x|grep &#8220;pppd&#8221;|grep &#8220;&lt;login&gt;&#8221;|grep -v &#8220;ps&#8221;|tr &#8221; &#8221; &#8220;\n&#8221;|head -n<br />
rm &#8211;force /var/lock/LCK..tty*<br />
rm &#8211;force /var/run/pptp/*<br />
route del -net 212.31.242.0 netmask 255.255.255.0 dev ppp0<br />
kill -9 &#8216;s x|grep &#8220;pppd&#8221;|grep &#8220;&lt;login&gt;&#8221;|grep -v &#8220;ps&#8221;|tr &#8221; &#8221; &#8220;\n&#8221;|head -n<br />
rm &#8211;force /var/lock/LCK..tty*<br />
rm &#8211;force /var/run/pptp/*<br />
rm &#8211;force /var/run/ppp1.pid<br />
killall -9 pptp<br />
______________________________________________________________________</p>
<p>IP_DNS1 si IP_DNS2 sunt adresele IP ale serverelor dumneavoastra DNS<br />
(primar si secundar), &lt;login&gt; este numele de login al contului<br />
dvs. Netsystem. L-am incercat sub kernelul 2.4.6 Redhat 7.1 si<br />
functioneaza foarte bine (fara nici un fel de probleme legate de bucla<br />
infinita ppp1 sau altele asemenea).</p>
<p>Aceasta linie ;</p>
<p>kill -9 &#8216;s x|grep &#8220;pppd&#8221;|grep &#8220;&lt;login&gt;&#8221;|grep -v &#8220;ps&#8221;|tr &#8221; &#8221; &#8220;\n&#8221;|head<br />
-n 2&#8242;</p>
<p>este folosita pentru a identifica PID procesului pppd care &#8220;discuta&#8221;<br />
cu serverul VPN (interfata ppp1); notati ca nu puteti da comanda<br />
&#8220;killall pppd&#8221;  pentru ca ati inchide si interfata ppp0</p>
<p>6.5.4 Patch-ul pentru dvbd.c</p>
<p>Dupa rezolvarea problemelor legate de PPTP trebuie sa modificati<br />
cateva linii in dvbd.c , in apropiere de finalul fisierului:</p>
<p>if (strcmp (v, &#8220;filter_0&#8243;) == 0) { if (s != NULL) { unsigned char ip[4];<br />
dvbcfg[0].status = ON ;<br />
dvbcfg[0].filter.data[0] = 0x3eff ;<br />
dvbcfg[0].filter.pid = (__u16) atoi (s) ;<br />
dvbcfg[0].filter.mode = 0x0c ;<br />
if (ipget (ip, network_device)) { fprintf(stderr,&#8221;Can&#8217;t get local ip address.<br />
syslog (LOG_NOTICE, &#8220;Local ip is %u:%u:%u:%u\n&#8221;, ip[0], ip[1],ip[2], ip[3]);<br />
dvbcfg[0].filter.data[1] = (ip[3] &lt;&lt; 8) | 0x00ff ;<br />
dvbcfg[0].filter.data[2] = (ip[2] &lt;&lt; 8) | 0x00ff ;<br />
dvbcfg[0].filter.data[6] = (ip[1] &lt;&lt; 8) | 0x00ff ;<br />
dvbcfg[0].filter.data[7] = (ip[0] &lt;&lt; 8) | 0x00ff ;<br />
dvbcfg[0].filter.data[8] = (0&#215;02 &lt;&lt; 8) | 0x00ff ;<br />
dvbcfg[0].filter.data[9] = (0&#215;00 &lt;&lt; 8) | 0x00ff ;<br />
setmac (ip) ; }<br />
else { dvbcfg[1].status = OFF ; } }</p>
<p>Urmatoarele linii:</p>
<p>dvbcfg[0].filter.data[1] = (ip[3] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[2] = (ip[2] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[6] = (ip[1] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[7] = (ip[0] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[8] = (0&#215;02 &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[9] = (0&#215;00 &lt;&lt; 8) | 0x00ff ;</p>
<p>vor fi inlocuite cu:</p>
<p>dvbcfg[0].filter.data[1] = (MAC[5] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[2] = (MAC[4] &lt;&lt; 8) | 0x00ff;</p>
<p>dvbcfg[0].filter.data[6] = (MAC[3] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[7] = (MAC[2] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[8] = (MAC[1] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[9] = (MAC[0] &lt;&lt; 8) | 0x00ff ;</p>
<p>Unde MAC[0]:MAC[1]:MAC[2]:MAC[3]:MAC[4]:MAC[5] sunt adresele noastre MAC<br />
(conform contului Netsystem).</p>
<p>Dupa aceasta va trebui sa dati comanda &#8220;make&#8221; si noul dvbd va di creat.</p>
<p>NOTA: pentru a corecta cu succes dvbd.c trebuie sa folositi un driver dvb<br />
versiune &gt;=0.8.2 pentru ca versiunile mai vechi au probleme de<br />
instabiliate</p>
<p>6.5.5 Testarea</p>
<p>In final, putem testa Netsystem de sub Linux. Putem da o comanda<br />
&#8220;ping www.oricehostpingabil.com&#8221; si sa verificam timpul de raspuns. Ar<br />
trebui sa fie intre 400 si 2000 ms.</p>
<p>Daca mai aveti probleme, va trebui sa verificati daca e totul OK<br />
cu interfata VPN.</p>
<p>1. deschideti snifferul de retea preferat (de exemplu, Ethereal<br />
&lt;www.ethereal.net&gt; si incepeti sa analizati interfata ppp0 (nu ppp1 !!!)</p>
<p>2. dati un ping</p>
<p>Daca VPN-ul e ok, ar trebui sa vedeti 2 (poate 1) pachete incapsulate-GRE<br />
pe secunda. Daca nu vedeti nimic, VPN-ul nu merge corect. Opriti-l<br />
si porniti-l din nou.</p>
<p>6.5.6. Imbunatatirea performantelor</p>
<p>Odata ce ati pus la punct lucrurile, TREBUIE sa folositi (in special cu<br />
Netsystem) un download accelerator pentru a imbunatati performantele.<br />
Vedeti anexa A pentru mai multe informatii.</p>
<p>6.5.7 Partajarea Netsystem cu mai multi clienti</p>
<p>Pentru aceasta puteti activa IP Masquerading-ul, permitand clientilor sa<br />
foloseasca VPN ca o interfata Internet normala; principala problema<br />
este ca, conexiunea noastra prin satelit este foarte buna pentru<br />
download dar are performante slabe la navigarea in paginile web (sau<br />
alte servicii mai interactive decat download-ul).</p>
<p>Va puteti gandi la utilizarea proxy-ului Squid<br />
&lt;http://www.squid-cache.org&gt; sau Socks &lt;http://www.socks.nec.com/&gt;, dar nu<br />
veti rezolva problema pentru ca si acum toate cererile for fi trimise catre<br />
aceiasi interfata VPN.</p>
<p>Solutia este sa folositi 2 tabele de rutare, una folosind interfata directa<br />
de linie si cealalta interfata VPN. Asa ca puteti face cum urmeaza:</p>
<p>1. asigurati-va ca ati instalat comenzile &#8220;iproute2&#8243; (de pilda<br />
dati comanda &#8220;ip&#8221; in shell si verificati daca va spune ceva.<br />
Pentru mai multe informatii, consultati Linux 2.4 Advanced Routing HOWTO<br />
&lt;http://www.linuxdoc.org/HOWTO/Adv-Routing-HOWTO.html&gt; .</p>
<p>2. asigurati-va ca ati pornit serviciile NetSystem si notati-va adresa<br />
IP a interfetei ppp1, pe care o vom numi acum LOCALIP.</p>
<p>3. tastati: &#8221; echo &#8221; 210 sat&#8221; &gt;&gt; /etc/iproute2/rt_tables&#8221; pentru a apela<br />
cat mai confortabil regula 210 pentru satelit</p>
<p>4. tastati: &#8221; ip rule add from LOCALIP table sat&#8221; , pentru a crea tabela<br />
&#8220;sat&#8221;</p>
<p>raportata la toate cererile venind de la adresa IP LOCALIP</p>
<p>5. tastati: &#8221; ip route add default dev ppp1 table sat&#8221;<br />
pentru a trimite toate cererile &#8220;sat&#8221; (vezi mai sus) catre interfata ppp1</p>
<p>6. daca folositi proxy-ul Socks &lt;http://www.socks.nec.com&gt; fiti siguri<br />
ca ati setat in sockd.conf &#8220;external&#8221; pentru LOCALIP</p>
<p>7. daca folositi proxy-ul Squid &lt;http://www.squid-cache.org&gt; fiti siguri<br />
ca ati setat in squid.conf &#8221; tcp_outgoing_address&#8221; ca LOCALIP</p>
<p>Odata ce ati facut toate acestea, veti observa ca aveti doua moduri de<br />
lucru: fara proxy, clientii for adresa cereri catre linia directa, iar<br />
in prezenta unui proxy (squid sau sockd) cererile vor fi inaintate<br />
interfetei VPN si, in final, catre satelit.</p>
<p>Observati ca s-ar putea sa aveti nevoie de sockd in loc de squid pentru<br />
ca cererile catre satelit sunt folosite in special pentru download, in<br />
timp ce squid-ul este tipic folosit pentru browsing.</p>
<p>6.6. Cum se utilizeaza serviciul Sat Node</p>
<p>Trebuie sa urmati toate instructiunile de la NetSYstem.</p>
<p>Inainte de a activa conexiunea VPN , trebuie sa :</p>
<p>.<br />
.<br />
.<br />
.  pentru a va conecta la serverul vpn doar prin ppp0<br />
?????? lipsesc parti din howto-ul in limba engleza?????????</p>
<p>Ce se schimba fata de Netsystem este ca nu fortam gateway-ul VPN<br />
(212.56.224.34, IP-ul de la drepta lui &#8221;P-t-P&#8221; in interfata ppp1) in<br />
interfata ppp0, dar fortam un alt IP (212.56.224.36). Restul nu se schimba.</p>
<p>Multumiri lui Ricardo Santiago Mozos si Norberto Garcia Prieto.</p>
<p>7. Configurarea sub Windows</p>
<p>7.1. EON</p>
<p>Hauppage WinTV are aplicatii DVB-DATA  care permit speficiarea setarilor<br />
legaturii de date.</p>
<p>7.2 Netsystem</p>
<p>In primul rand e nevoie sa instalati resursele VPN. Aditional, e nevoie sa<br />
descarcati software-ul Netsystem (intotdeauna cu banner) si sa il lansati.<br />
Il puteti descarca de aici:<br />
&lt;http://bertolinux2000.interfree.it/Netsystem/Netsystem.zip&gt;</p>
<p>8. Anexa A &#8211; NOTE</p>
<p>8.1. Translatarea IP dinamic &gt; adrese MAC</p>
<p>Translatarea folosita de unele ISP-uri pentru a calcula adresa MAC (pe<br />
care cardul DVB trebuie sa o aiba pentru a receptiona pachete) este:</p>
<p>00 : 01 : IP[0] : IP[1] : IP[2] : IP[3]</p>
<p>unde</p>
<p>IP[0].IP[1].IP[2].IP[3] este adresa IP dinamica.</p>
<p>Aceasta caracteristica este folosita de exemplu de EON.</p>
<p>8.2 Cadrul TCP</p>
<p>Conexiunile prin satelit sunt un interesant exemplu de foarte mari RTT<br />
(round trip time, timp de acces): un alt exemplu<br />
este comunicatia Marte-Pamant sau Pamant-Luna.</p>
<p>Aceste conexiuni au o trasatura foarte proasta: foarte scazuta<br />
interactivitate.</p>
<p>Conexiunile de retea tipice (sau digitale, in general) folosesc asa numita<br />
transmisie in &#8220;cadre&#8221;, ceea ce inseamna ca bufferul de date poate fi<br />
trimis inainte de a astepta un raspuns. In stiva<br />
protocolului TCP/IP, &#8220;cadrul&#8221; TCP arata cam asa:</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| &#8211; - &#8211; - &#8211; - &#8211; &gt; poate continua |-|-|-|&#8212;-&gt;<br />
|               &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
|             Buffer transmisibil inaintea confirmarii<br />
|<br />
| &#8211; - &#8211; - &#8211; - &#8211; &lt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Confirmare</p>
<p>Acum, daca in comunicatia noastra avem un timp mare de acces si daca am<br />
avea un cadru TCP mic, am pierde mult timp doar asteptand confirmarea<br />
(ACK), asa incat largimea de banda reala ar scadea (de exemplu, daca avem<br />
un cadru TCP de 16kb, tipic pentru sistemele Windows, si RTT de 400ms, nu<br />
se pate depasi 16KB/0.4 = 40 KB/s)</p>
<p>Solutia este utilizarea unor cadre TCP foarte mari (ca 256kb sau cativa MB)</p>
<p>Din pacate, sub multe sisteme nu este posibil sa avem<br />
un cadru TCP mare, asa ca in ultimii ani au aparut multe<br />
aplicatii, asa numitele &#8220;download acceleratoare&#8221; care impart<br />
in multe fragmente un fisier si le descarca pe toate simultan. Aceasta<br />
este echivalent cu a descarca un singur fisier dintr-o singura bucata,<br />
evitand problemele RTT-ului.</p>
<p>8.3 Download accelerator</p>
<p>Va indicat cateva link-uri catre asa numitele &#8220;download acceleratoare&#8221;,<br />
aplicatii care fac doua lucruri:</p>
<p>1. managementul resuming-ului sesiunilor; permit oprirea download-ului<br />
si continuarea lui (aceasta poate fi facuta multumita posibilitatii de<br />
&#8220;resume&#8221; introdusa in serverele http si ftp, care permite specificarea la<br />
ce numar de bit sa inceapa download-ul);</p>
<p>2. impartirea fisierului in multe fragmente si posibilitatea lor<br />
de a &#8220;pleca&#8221; in maniera multithread;</p>
<p>Asa cum am vazut in sectiunea precedenta, download acceleratorul permite<br />
cresterea largimii de banda</p>
<p>8.3.1 Sub Linux</p>
<p>·  Aria &lt;http://aria.rednoah.com/&gt;</p>
<p>8.3.2 Sub Windows</p>
<p>·  FlashGet &lt;http://www.amazesoft.com&gt;</p>
<p>·  GetRight &lt;http://www.getright.com&gt;</p>
<p>·  Mass Downloader &lt;http://www.metaproducts.com&gt;</p>
<p>9 Anexa B &#8211; Valori cunoscute pentru ISP-urile prin satelit</p>
<p>9.1 Europe Online</p>
<p>EON trimite date prin satelitul Astra (19.2 SE)</p>
<p>Adresa MAC este calculata din adresa IP (anexa A)</p>
<p>Foloseste autentificarea proxy</p>
<p>urmeaza setarile pentru cei 4 transponderi:</p>
<p>9.1.1.  Transponder 113</p>
<p>·  Frequency: 12633.250 MHz,</p>
<p>·  SRate : 22 MS/s</p>
<p>·  Polarization: Horizontal</p>
<p>·  Unicast PID: 512 (decimal)</p>
<p>9.1.2.  Transponder 114</p>
<p>·  Frequency: 12640 MHz,</p>
<p>·  SRate : 22 MS/s</p>
<p>·  Polarization: Vertical</p>
<p>·  Unicast PID: 512 (decimal)</p>
<p>9.1.3.  Transponder 115</p>
<p>·  Frequency: 12662.750 MHz,</p>
<p>·  SRate : 22 MS/s</p>
<p>·  Polarization: Horizontal</p>
<p>·  Unicast PID: 512 (decimal)</p>
<p>9.1.4.  Transponder 103</p>
<p>·  Frequency: 12461 MHz,</p>
<p>·  SRate : 27.5 MS/s</p>
<p>·  Polarization: Horizontal</p>
<p>·  Unicast PID: 512 (decimal)</p>
<p>9.2 Netsystem</p>
<p>Foloseste satelitul Astra (19.2 SE) pentru a trimite date.</p>
<p>Adresa MAC este adresa reala a cardului DVB.</p>
<p>Foloseste conexiune VPN.</p>
<p>urmeaza datele setarilor:</p>
<p>9.2.1.  Transponder 119</p>
<p>·  Frequency: 12721 MHz</p>
<p>·  SRate: 22MS/s</p>
<p>·  Polarization: Horizontal</p>
<p>·  Unicast PID: 451 (decimal)</p>
<p>9.3.  Sat Node</p>
<p>Sat Node foloseste satelitul Astra (19.2 SE).</p>
<p>·  Frequency: 12603.750 MHz</p>
<p>·  SRate: 22MS/s</p>
<p>·  Polarization: Horizontal</p>
<p>·  Unicast PID: 302</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=175</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Folosirea lui iptables pentru filtrarea pachetelor in kernelurile versiunea 2.4</title>
		<link>http://resurse-educationale.uv.ro/?p=171</link>
		<comments>http://resurse-educationale.uv.ro/?p=171#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:47:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[filtru de pachete]]></category>
		<category><![CDATA[icmp]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[ipchains]]></category>
		<category><![CDATA[ipfwadm]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[protocol]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[udp]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=171</guid>
		<description><![CDATA[traducere ver. 0.6 de catre Riddl Multumiri tuturor celor care m-au ajutat. Lui Gushterul in special. Deasemenea multumiri si lui Little Dragon. Observatie f importanta: probabil ca exista unele greseli in acest document. Am tradus si eu cum m-am priceput &#8230; <a href="http://resurse-educationale.uv.ro/?p=171">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>traducere ver. 0.6 de catre Riddl</p>
<p>Multumiri tuturor celor care m-au ajutat. Lui Gushterul in special.<br />
Deasemenea multumiri si lui Little Dragon.<br />
Observatie f importanta: probabil ca exista unele greseli in acest document.<br />
Am tradus si eu cum m-am priceput mai bine, daca descoperiti greseli de<br />
traducere si pentru observatii pertinente mail me (Riddl) at<br />
&#8220;discutzii at gmx dot net&#8221;. Nu uitati sa precizati numele documentului.<br />
Multumesc anticipat.<br />
Aceasta versiune este putin modificata fata de original, deorece unii termeni<br />
sunau foarte aiurea in ro.<br />
Pentru ultima versiune a acestui document verifica<br />
&lt;http://www.securityorg.net/docs/&gt;.</p>
<p>Lecturare placuta!</p>
<p>______________________________________________________________________</p>
<p>Linux 2.4 Packet Filtering HOWTO<br />
Rusty Russel, lista de discutii netfilter@lists.samba.org<br />
$Revision: 1.2 $ $Date: 2002/02/19 11:33:43 $</p>
<p>Acest document descrie folosirea lui iptables pentru filtrarea pachetelor in<br />
kernelurile versiunea 2.4.<br />
______________________________________________________________________</p>
<p>Cuprins</p>
<p>1. Introducere<br />
2. Care este site-ul oficial? Exista vreo lista de discutii?<br />
3. Deci, ce inseamna filtru de pachete?<br />
3.1 De ce as vrea sa filtrez pachetele?<br />
3.2 Cum filtrez pachetele sub linux?<br />
3.2.1 iptables<br />
3.2.2 Crearea regulilor permanente<br />
4. Cine dracu esti tu, si de ce te joci cu kernelul meu?<br />
5. Ghidul intr-adevar rapid al lui Rusty pentru filtrarea de pachete<br />
6. Cum traverseaza pachetele filtrele?<br />
7. Folosirea iptables<br />
7.1 Ce vei vedea cand porneste calculatorul<br />
7.2 Operatii pentru o singura regula<br />
7.3 Optiuni de filtrare<br />
7.3.1 Specificarea IP-ului sursa si destinatie<br />
7.3.2 Specificarea inversa<br />
7.3.3 Specificarea protocolului<br />
7.3.4 Specificarea unei interfete<br />
7.3.5 Specificarea fragmentelor<br />
7.3.6 Optiuni extinse la iptables: Noi potriviri<br />
7.3.6.1 Optiuni extinse TCP<br />
7.3.6.1.1 O explicatie pentru flag-urile TCP<br />
7.3.6.2 Optiuni extinse UDP<br />
7.3.6.3 Optiuni extinse ICMP<br />
7.3.6.4 Alte optiuni extinse pentru potrivire<br />
7.3.6.5 Potrivirea dupa stare<br />
7.4 Argumente asupra tintei<br />
7.4.1 Chain-uri definite de utilizator<br />
7.4.2 Optiuni extinse la iptables: Noi tinte<br />
7.4.3 Tinte speciale construite default<br />
7.5 Operatii asupra unui intreg chain<br />
7.5.1 Creearea unui nou chain<br />
7.5.2 Stergerea unui chain<br />
7.5.3 Stergerea tuturor regulilor unui chain<br />
7.5.4 Listarea unui chain<br />
7.5.5 Resetarea counter-elor<br />
7.5.6 Setarea policy-ului</p>
<p>8. Folosirea ipchains si ipfwadm<br />
9. Folosirea impreuna a NAT-ului si a filtrarii de pachete<br />
10. Diferente intre iptables si ipchains<br />
11. Sfaturi asupra designului filtrului de pachete</p>
<p><span id="more-171"></span></p>
<p>______________________________________________________________________</p>
<p>1. Introducere</p>
<p>Bine ai venit, cititorule. (:))</p>
<p>Se presupune ca stii ce este aceea o adresa IP, adresa de retea, netmask,<br />
routare si DNS. Daca nu, se recomanda sa citesti Network Concepts Howto.<br />
Acest HOWTO loveste intre o introducere draguta (care te poate lasa<br />
increzator pentru moment, dar neprotejat in lumea reala) si o dezvaluire<br />
total neprelucrata (care ii vor lasa pe toti, mai putin caracterele tari,<br />
in confuzie, paranoici si in cautarea de arme grele).</p>
<p>Reteaua ta nu este sigura. Problema permiterii comunicarii rapide si<br />
comode, in acelasi timp cu restrictia acesteia numai pentru bine si nu in<br />
mod malefic, este asemanatoare cu alte probleme opuse  cum ar fi permiterea<br />
vorbirii libere in acelasi timp cu refuzarea unui strigat de &#8220;FOC!!&#8221; intr-un<br />
teatru aglomerat. Nu va fi rezolvata aceasta problema in spatiul acestui<br />
HOWTO.</p>
<p>Asa ca doar tu poti sa decizi unde va fi compromisul. Voi incerca sa te<br />
instruiesc in folosirea unor comenzi disponibile si a unor vulnerabilitati<br />
de care sa fii constient, in speranta ca vei folosi aceasta in mod pozitiv<br />
si nu in scopuri malefice. Aceasta este o alta problema asemanatoare.</p>
<p>(C) 2000 Paul &#8220;Rusty&#8221; Russell.  Cu licenta sub  GNU GPL.</p>
<p>2. Care este site-ul oficial? Exista vreo lista de discutii?</p>
<p>Sunt trei site-uri oficiale:</p>
<p>o 	Multumiri lui Filewatcher &lt;http://netfilter.filewatcher.org/&gt;.<br />
o 	Multumiri Echipei Samba si SGI &lt;http://netfilter.samba.org/&gt;.<br />
o 	Multumiri lui Harald Welte &lt;http://netfilter.gnumonks.org/&gt;.</p>
<p>Le poti accesa pe toate folosind round-robin DNS la:<br />
&lt;http://www.netfilter.org/&gt; si  &lt;http://www.iptables.org/&gt;</p>
<p>Pentru lista de discutii oficiala de la netfilter, vezi:<br />
&lt;http://www.netfilter.org/contact.html#list&gt;.</p>
<p>3. Deci, ce inseamna filtru de pachete?</p>
<p>Un filtru de pachete este o bucatica de software care se uita la header-ul<br />
pachetelor pe masura ce ele intra, si decid soarta intregului pachet. Acest<br />
filtru poate decide sa ignore pachetul (DROP) (respinge pachetul ca si cum<br />
nu l-ar fi primit niciodata), accepta (ACCEPT) pachetul (lasa pachetul sa<br />
intre), sau alte decizii mai complicate.</p>
<p>Sub linux, filtrarea de pachete este construita in kernel (ca modul sau<br />
construita in el), si sunt cateva lucruri complicate pe care le putem face cu<br />
pachetele, dar principiul general de examinare al header-ului pachetului si<br />
decidere asupra sortii pachetului este inca acolo.</p>
<p>3.1 De ce as vrea sa filtrez pachetele?</p>
<p>Control. Securitate. Vigilenta.</p>
<p>Control:<br />
cand folosesti un sistem Linux pentru a-ti conecta reteaua interna<br />
la o alta retea (sa spunem, Internet) ai posibilitatea de a permite<br />
un anumit tip de trafic, si sa refuzi pe altele. De exemplu,<br />
header-ul contine adresa destinatie a unui pachet, asa ca poti<br />
preveni pachetele sa se duca spre o anumita parte a retelei<br />
exterioare. Ca un alt exemplu, folosesc Netscape pentru accesarea<br />
arhivelor Dilbert. Sunt reclame pe pagina de la doubleclick.net, si<br />
Netscape imi pierde timpul incarcandu-le. Spunand filtrului de pachete<br />
sa nu permita pachete de la sau spre nici una din adresele detinute<br />
de catre doubleclick.net, rezolva aceasta problema (cu toate acestea<br />
sunt modalitati mai bune pentru aceasta: vezi Junkbuster).</p>
<p>Securitate:<br />
cand sistemul tau Linux este singurul intre haosul Internetului<br />
si reteaua ta ordonata si delicata, este placut sa stii ca poti<br />
sa restrictionezi ceea ce vine tropaind la usa. De exemplu, poti sa<br />
permiti la tot sa iasa din retea, dar ai putea fi ingrijorat de<br />
binecunoscutul &#8220;Ping al Mortii&#8221; venind de la persoanele din afara rau<br />
intentionate. Ca un alt exemplu, s-ar putea sa nu doresti ca<br />
persoanele din afara sa se telnet-uiasca pe sistemul tau Linux, chiar<br />
daca toate conturile tale au parole. Poate doresti (ca multi oameni)<br />
sa fii un observator  al Internet-ului, si nu server (de voie, sau in<br />
alt mod). Pur si simplu nu lasa pe nimeni sa se conecteze, punand<br />
fitrul de pachete sa respinga pachetele folosite la initierea de<br />
conexiuni.</p>
<p>Vigilenta:<br />
uneori o masina prost configurata in reteaua locala va decide sa<br />
arunce pachete spre lumea din afara. Este dragut sa-i spui filtrului de<br />
pachete sa te anunte daca se intampla ceva anormal; poate poti face<br />
ceva cu privire la acel lucru, sau poate esti doar curios.</p>
<p>3.2 Cum filtrez pachetele sub linux?</p>
<p>Kernelurile Linux au avut filtrare de pachete inca de la versiunile 1.1.<br />
Prima generatie, bazata pe ipfw de la BSD, a fost portata de catre Alan Cox<br />
spre sfarsitului anului 1994. Aceasta a fost dezvoltata de catre Jos Vos si<br />
altii pentru Linux 2.0; comanda pentru utilizatori &#8220;ipfwadm&#8221; controla<br />
regulile de filtrare ale kernelului. La mijlocului anului 1998, pentru Linux<br />
2.2, am rescris puternic kernelul cu ajutorul lui Michael Neuling, si am<br />
introdus comanda pentru utilizatori &#8220;ipchains&#8221;. In sfarsit, a patra generatie<br />
de comenzi, &#8220;iptables&#8221;, si o noua rescriere a kernelului s-a intamplat la<br />
mijlocul anului 1999 pentru Linux 2.4. Acest HOWTO este centrat pe iptables.</p>
<p>Ai nevoie de un kernel care are infrastructura netfilter in el: netfilter este<br />
un cadru in interiorul kernelului Linux in care alte lucruri (cum ar fi<br />
modulul de iptables) se pot introduce. Asta inseamna ca ai nevoie de kernel<br />
versiune 2.3.15 sau peste, si sa raspunzi &#8220;Y&#8221; la CONFIG_NETFILTER in<br />
configurarea kernelului.</p>
<p>Comanda iptables comunica kernelului si ii spune ce pachete sa filtreze.</p>
<p>3.2.1 iptables</p>
<p>Comanda iptables insereaza si sterge reguli din tabela de filtrare a<br />
pachetelor din kernel. Asta inseamna ca orice vei seta, va fi pierdut dupa<br />
rebootare; vezi &#8220;Crearea regulilor permanente&#8221; pentru cum sa fii sigur ca vor<br />
fi restaurate data urmatoare cand va boota Linuxul.</p>
<p>iptables este un inlocuitor pentru ipfwadm si ipchains: vezi &#8220;Folosirea<br />
ipchains si ipfwadm&#8221; pentru a afla cum poti evita fara probleme folosirea<br />
iptables daca folosesti una din aceste comenzi.</p>
<p>3.2.2 Crearea regulilor permanente</p>
<p>Setarile firewall-ului tau curent sunt pastrate in kernel, si de aceea vor fi<br />
pierdute la rebootare. Poti folosi scripturile iptables-save si<br />
iptables-restore sa le salvezi, sau restaurezi dintr-un fisier.</p>
<p>O alte cale este sa pui comenzile cerute sa iti setezi regulile intr-un<br />
script de initializare. Ai grija sa faci ceva inteligent in caz ca una din<br />
comenzi nu ar reusi (de obicei &#8220;exec /sbin/sulogin&#8221;).</p>
<p>4. Cine dracu esti tu, si de ce te joci cu kernelul meu?</p>
<p>Sunt Rusty Russel; cel ce mentine Linux IP Firewall si doar un alt<br />
programator care s-a intamplat sa fie in locul potrivit la momentul potrivit.<br />
Am scris ipchains (vezi mai sus &#8220;Cum filtrez pachetele sub linux?&#8221; pentru a da<br />
credit celor care au facut de fapt munca), si am invatat suficient sa fac<br />
cum trebuie de data asta filtrarea de pachete. Sper.</p>
<p>WatchGuard &lt;http://www.watchguard.com&gt;, o compania excelenta de firewall-uri<br />
care vinde chiar simpaticul plug-in Firebox, s-a oferit sa ma plateasca sa nu<br />
fac nimic, pentru a-mi petrece tot timpul meu sa scriu asta, si sa imi<br />
mentin munca anterioara. Am preconizat 6 luni, si mi-au luat 12, dar la<br />
sfarsit am simtit ca l-am facut cum trebuie. Multe rescrieri, o cedare a<br />
unui hardisk, un laptop furat, doua sisteme de fisiere corupte si un<br />
monitor spart mai tarziu, asta este.</p>
<p>Cat sunt aici, vreau sa indrept niste idei gresite ale unor oameni: nu sunt<br />
un guru al kernelului. Stiu asta, pentru ca munca mea pe partea din kernel<br />
m-a adus in contact cu unii din acestia: David S. Miller, Alexey Kuznetsov,<br />
Andi Kleen, Alan Cox. Oricum, sunt cu totii ocupati sa faca magia din<br />
interior,  lasandu-ma sa avansez cu greu prin superficialitate unde este<br />
sigur.</p>
<p>5. Ghidul intr-adevar rapid al lui Rusty pentru filtrarea de pachete</p>
<p>Cei mai multi oameni au o singura conexiune PPP spre Internet, si nu vor ca<br />
cineva sa intre inapoi in reteaua lor, iata firewall-ul:</p>
<p>## Se insereaza modulele pentru connection-tracking (nu este necesar<br />
## daca sunt compilate in kernel)<br />
# insmod ip_conntrack<br />
# insmod ip_conntrack_ftp</p>
<p>## Se creeaza chain-ul care blocheaza conexiunile noi, cu exceptia celor<br />
## venite din interior.</p>
<p># iptables -N block<br />
# iptables -A block -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT<br />
# iptables -A block -m state &#8211;state NEW -i ! ppp0 -j ACCEPT<br />
# iptables -A block -j DROP</p>
<p>## Se sare la acest chain din chain-urile INPUT si FORWARD<br />
# iptables -A INPUT -j block<br />
# iptables -A FORWARD -j block</p>
<p>6. Cum traverseaza pachetele filtrele?</p>
<p>Kernelul porneste cu trei liste de reguli in tabela de &#8220;filtrare&#8221;; aceste<br />
liste sunt numite chain-uri ale firewall-ului sau pur si simplu chain-uri<br />
(lanturi). Cele trei chain-uri se numesc INPUT, OUTPUT si FORWARD.</p>
<p>Pentru fanii ASCII, chain-urile sunt aranjate cam in felul urmator: (Nota:<br />
acesta este un aranjament foarte diferit fata de cel din kernelurile ver.<br />
2.0 si 2.2 !)</p>
<p>_____<br />
Incoming                 /     \         Outgoing<br />
&#8211;&gt;[Routing ]&#8212;&gt;|FORWARD|&#8212;&#8212;-&gt;<br />
[Decision]     \_____/        ^<br />
|                        |<br />
v                       ____<br />
___                     /    \<br />
/   \                   |OUTPUT|<br />
|INPUT|                   \____/<br />
\___/                       ^<br />
|                        |<br />
&#8212;-&gt; Local Process &#8212;-</p>
<p>Cele trei cercuri reprezinta cele trei chain-uri despre care am vorbit<br />
anterior. Cand un pachet ajunge la un cerc din diagrama, acel chain este<br />
examinat pentru a decide soarta pachetului. In cazul in care chain-ul spune sa<br />
ignore pachetul (DROP), este taiat acolo, daca insa chain-ul spune sa accepte<br />
pachetul (ACCEPT), atunci pachetul continua sa parcurga diagrama.</p>
<p>Un chain este o lista de verificare cu reguli. Fiecare regula spune &#8220;daca<br />
headerul pachetului arata asa, atunci iata ce sa faci cu pachetul&#8221;. Daca<br />
regula nu se potriveste cu pachetul, atunci urmatoarea regula din chain<br />
(lant) este examinata. In final, daca nu mai exista reguli de examinat,<br />
kernelul se uita la politica acelui chain-ului pentru a decide soarta pachetului.<br />
Intr-un sistem sigur, politica in chain-uri este de obicei sa taie pachetul<br />
(DROP).</p>
<p>1. Cand un pachet vine (sa zicem, prin placa de retea) kernelul se<br />
uita intai la destinatia pachetului: aceasta se numeste &#8220;routing&#8221;<br />
(rutare).</p>
<p>2. Daca pachetul este destinat pentru aceasta masina, pachetul trece pe<br />
diagrama in chain-ul INPUT. Daca trece de acest chain, orice proces care<br />
asteapta acel pachet il va primi.</p>
<p>3. In caz contrar, daca kernelul nu are forwarding-ul pus, sau nu stie<br />
cum sa forward-eze pachetul, acesta este ignorat. Daca este pus<br />
forwarding-ul, si pachetul are ca destinatie o alta interfata de<br />
retea (daca mai ai inca una), atunci pachetul se duce in diagrama<br />
noastra direct catre chain-ul FORWARD. Daca este acceptat pachetul va<br />
fi transmis.</p>
<p>4. In final, un program ce ruleaza pe sistem poate trimite pachete.<br />
Aceste pachete trec direct in chain-ul OUTPUT: daca este acceptat<br />
pachetul isi continua drumul fara sa conteze interfata spre care este<br />
destinat.</p>
<p>7. Folosirea iptables</p>
<p>iptables are o pagina de manual destul de detaliata (man iptables), si daca<br />
ai nevoie de detalii mai in amanunt. Aceia dintre voi familiarizati cu<br />
ipchains vor dori poate sa se uite la &#8220;Diferente intre iptables si<br />
ipchains&#8221;; sunt comenzi foarte similare.</p>
<p>Sunt mai multe lucruri pe care le poti face cu iptables. Pornesti la drum cu<br />
trei chainu-ri default care nu pot fi sterse INPUT, OUTPUT si FORWARD. Sa<br />
privim operatiile care se pot aplica pentru un intreg chain:</p>
<p>1. Creearea unui chain nou (-N).<br />
2. Stergerea unui chain gol (care nu contine reguli) (-X).<br />
3. Schimbarea politicii pentru un chain default (-P).<br />
4. Listarea regulilor dintr-un chain (-L).<br />
5. Stergerea tuturor regulilor dintr-un chain (-F).<br />
6. Resetarea counter-elor de pachete si bytes pentru toate regulile<br />
dintr-un chain (-Z).</p>
<p>Sunt mai multe moduri in care se pot manipula regulile intr-un chain:</p>
<p>1. Adaugarea in coada chain-ului a unei noi reguli (-A).<br />
2. Insereaza o regula noua la o anumita pozitie in chain (-I). Daca<br />
nu este precizata pozitia printr-un numar atunci regula este adaugata<br />
la inceputul chain-ului.<br />
3. Inlocuieste o regula la o anumita pozitie in chain (-R).<br />
4. Sterge o regula la o anumita pozitie in chain, sau prima care se<br />
potriveste (-D).</p>
<p>7.1 Ce vei vedea cand porneste calculatorul</p>
<p>Iptables poate fi un modul, numit (&#8220;iptable_filter.o&#8221;), care ar trebui sa fie<br />
incarcat in mod automat cand rulezi prima oara iptables. Poate fi deasemenea<br />
compilat in kernel in mod permament.</p>
<p>Inainte de rularea oricarei comenzi iptables (ai grija: unele distributii vor<br />
rula iptables in scripturile lor de initializare), nu vor fi reguli in nici<br />
una din chain-urile default (&#8220;INPUT&#8221;, &#8220;OUTPUT&#8221; si &#8220;FORWARD&#8221;), toate<br />
chain-urile vor avea politica de acceptare a pachetelor (ACCEPT). Poti schimba<br />
politica default al chain-ului FORWARD prin stipularea optiunii &#8220;forward=0&#8243;<br />
modulului iptable_filter. (n.t. sau &#8220;echo 0 &gt; /proc/sys/net/ipv4/ip_forward&#8221;,<br />
depinde insa si de distributie, pe redhat default inseamna ca forward-ul<br />
este 0)</p>
<p>7.2 Operatii pentru o singura regula</p>
<p>Aceasta este paine-si-untul, sarea si piperul, si ce mai vreti voi, a filtrarii<br />
de pachete; manipularea regulilor. Cel mai obisnuit, vei folosi probabil<br />
comenzile de adaugare (-A) si stergere (-D). Celelalte (-I pentru inserare<br />
si -R pentru inlocuire) sunt doar extensii ale acestor concepte.</p>
<p>Fiecare regula specifica o multime de conditii pe care un pachet trebuie sa le<br />
indeplineasca si ce sa faca daca acestea sunt indeplinite (o &#8220;tinta&#8221;<br />
(target)). De exemplu, s-ar putea sa doresti sa ignori toate pachetele de<br />
tip ICMP care vin de la adresa 127.0.0.1. Deci, in acest caz conditiile<br />
noastre sunt ca protocolul sa fie ICMP si ca adresa sursa sa fie 127.0.0.1.<br />
&#8220;tinta&#8221; noastra este DROP. 127.0.0.1 este interfata &#8220;loopback&#8221;, pe care o ai<br />
chiar daca nu ai conexiune reala de retea. Poti folosi programul &#8220;ping&#8221;<br />
pentru a genera acest tip de pachete (pur si simplu trimite pachete ICMP de<br />
tip 8 (echo request) la care toate host-urile ar trebui sa raspunda cu<br />
pachete ICMP de tip 0 (echo replay)). Aceast program este foarte folositor<br />
pentru teste.</p>
<p># ping -c 1 127.0.0.1<br />
PING 127.0.0.1 (127.0.0.1): 56 data bytes<br />
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms</p>
<p>&#8212; 127.0.0.1 ping statistics &#8212;<br />
1 packets transmitted, 1 packets received, 0% packet loss<br />
round-trip min/avg/max = 0.2/0.2/0.2 ms<br />
# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP<br />
# ping -c 1 127.0.0.1<br />
PING 127.0.0.1 (127.0.0.1): 56 data bytes</p>
<p>&#8212; 127.0.0.1 ping statistics &#8212;<br />
1 packets transmitted, 0 packets received, 100% packet loss<br />
#</p>
<p>Poti vedea aici ca primul ping reuseste (&#8220;-c 1&#8243; spune sa sa trimita doar un<br />
singur pachet).</p>
<p>Apoi adaugam in coada (-A) chain-ului &#8220;INPUT&#8221;, o regula ce spune ca<br />
pentru pachetele de la 127.0.0.1 (&#8220;-s 127.0.0.1&#8243;) de tip ICMP (&#8220;-p icmp&#8221;)<br />
trebuie sa sarim la &#8220;DROP&#8221; (&#8220;-j DROP&#8221;).</p>
<p>Apoi testam regula noastra, folosind al doilea ping. Va fi o pauza pana cand<br />
programul se da batut sa astepte un raspuns care nu va veni niciodata. (:)),<br />
cat de DRAMATIC)</p>
<p>Am putea sa stergem regula in  doua moduri. Intai, deoarece stim ca este<br />
singura regula din chain-ul INPUT, putem folosi o stergere numarata, ca<br />
in:</p>
<p># iptables -D INPUT 1<br />
#</p>
<p>Pentru a sterge regula cu numarul 1 in chain-ul de INPUT.</p>
<p>Al doilea mod este sa scriem comanda prin care am introdus regula -A, dar sa<br />
inlocuim -A cu -D. Aceasta este folositor cand ai un chain complex de reguli<br />
si nu doresti sa le numeri ca sa iti dai seama ca este a 37-a regula de<br />
care vrei sa scapi. In aces caz, vom folosi:</p>
<p># iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP<br />
#</p>
<p>Sintaxa comenzii -D trebuie sa aiba exact aceleasi optiuni cum are comanda -A<br />
(sau -I, sau -R). Daca sunt reguli identice in acelasi chain, numai prima<br />
regula va fi stearsa.</p>
<p>7.3 Optiuni de filtrare</p>
<p>Am vazut folosirea optiunii &#8220;-p&#8221; pentru a specifica protocolul, si optiunii<br />
&#8220;-s&#8221; pentru a specifica adresa sursa, dar sunt alte optiuni pe care le putem<br />
folosi pentru a preciza caracteristici ale pachetului. Ceea ce urmeaza este<br />
un compedium complet.</p>
<p>7.3.1 Specificarea IP-ului sursa si destinatie</p>
<p>Adresele IP ale sursei (&#8220;-s&#8221;, &#8220;&#8211;source&#8221; sau &#8220;&#8211;src&#8221;) si destinatiei (&#8220;-d&#8221;,<br />
&#8220;&#8211;destination&#8221; sau &#8220;&#8211;dst&#8221;) pot fi specificate in patru moduri. Cea mai<br />
obisnuita forma este sa folosesti numele complet, cum ar fi &#8220;localhost&#8221; sau<br />
&#8220;www.securityorg.net&#8221;. Cea de-a doua cale este sa specifici adresa IP cum ar fi<br />
&#8220;127.0.0.1&#8243;.</p>
<p>Cea de a treia si a patra cale permite specificarea unui grup de adrese IP,<br />
cum ar fi &#8220;199.95.207.0/24&#8243; sau &#8220;199.95.207.0/255.255.255.0&#8243;. Amandoua<br />
specifica orice adresa IP de la 199.95.207.0 pana la 199.95.207.255 inclusiv;<br />
cifrele dupa &#8220;/&#8221; spun care parti din adresa IP sunt semnificative. &#8220;/32&#8243; sau<br />
&#8220;/255.255.255.255&#8243; este default (se potriveste cu toata adresa IP). Pentru a<br />
specifica oricare adresa IP &#8220;/0&#8243; poate fi folosit, astfel:</p>
<p>[ NOTA: "-s 0/0" este redundant aici. ]<br />
# iptables -A INPUT -s 0/0 -j DROP<br />
#</p>
<p>Aceasta este folosit in mod rar, deoarece efectul de mai sus este asemanator<br />
cu nespecificare deloc a optiunii &#8220;-s&#8221;.</p>
<p>7.3.2 Specificarea inversa</p>
<p>Multe optiuni, inclusiv optiunile &#8220;-s&#8221; (sau &#8220;&#8211;source&#8221;) si &#8220;-d&#8221;<br />
(&#8220;&#8211;destination&#8221;) pot avea argumentele precedate de &#8220;!&#8221; (pronuntat &#8220;nu&#8221;)<br />
pentru a corespunde adreselor care NU sunt egale cu adresele date. De exemplu,<br />
&#8220;-s ! localhost&#8221; corespunde oricarui pachet care nu vine de la localhost.</p>
<p>7.3.3 Specificarea protocolului</p>
<p>Protocolul poate fi specificat prin optiunea &#8220;-p&#8221; (sau &#8220;&#8211;protocol&#8221;).<br />
Protocolul poate fi un numar ( daca stii valorile numerice de protocol pentru<br />
IP) sau un nume pentru cazurile speciale de &#8220;TCP&#8221;, &#8220;UDP&#8221; sau &#8220;ICMP&#8221;. Nu<br />
conteaza daca se foloseste sau nu CAPS, asa ca &#8220;tcp&#8221; merge la fel ca si<br />
&#8220;TCP&#8221;.</p>
<p>Numele protocolului poate fi precedat de &#8220;!&#8221;, pentru a inversa, ca si &#8220;-p !<br />
tcp&#8221; pentru a specifica pachetele care nu sunt TCP.</p>
<p>7.3.4 Specificarea unei interfete</p>
<p>Optiunea &#8220;-i&#8221; (sau &#8220;&#8211;in-interface&#8221;) si &#8220;-o&#8221; (sau &#8220;&#8211;out-interface&#8221;)<br />
specifica numele interfatei cu care sa corespunda. O interfata este<br />
dispozitivul fizic prin care intra pachetul (&#8220;-i&#8221;) sau prin care iese<br />
pachetul (&#8220;-o&#8221;). Poti folosi comanda ifconfig pentru a lista interfetele<br />
care sunt &#8220;sus&#8221; (i.e., in stare de functionare in acel moment).</p>
<p>Pachetele care traverseaza chain-ul &#8220;INPUT&#8221; nu au o interfata de iesire, asa<br />
ca orice regula care foloseste &#8220;-o&#8221; in acest chain nu se va potrivi<br />
niciodata. In mod similar pachetele care travereseaza chain-ul OUTPUT nu au o<br />
interfata de intrare, asa ca orice regula care foloseste &#8220;-i&#8221; in acest<br />
chain nu se va potrivi niciodata.</p>
<p>Doar pachetele care travereseaza chain-ul FORWARD au o interata de intrare si<br />
de iesire. Este perfect valabil sa specifici o interfata care nu exista;<br />
regula nu se va potrivi cu nici un pachet pana cand interfata nu este sus.<br />
Aceasta este extrem de folositor pentru legaturi PPP de dial-up (de obicei<br />
interfete ppp0) si asemanatoare.</p>
<p>Ca un caz special, un nume de interfata terminandu-se cu &#8220;+&#8221; se va potrivi cu<br />
toate interfetele (fie ca exista sau nu) care incep cu acel sir de caractere.<br />
De exemplu pentru a specifica o regula care sa se potriveasca tuturor<br />
interfetelor PPP, optiunea -i ppp+ ar fi folosita.</p>
<p>Numele interfetei poate fi precedata de &#8220;!&#8221; cu spatii in jur, pentru a<br />
corespunde cu pachetul care nu se potriveste cu intefata specificata, de<br />
exemplu: -i ! ppp+.</p>
<p>7.3.5 Specificarea fragmentelor</p>
<p>Uneori un pachet este prea mare pentru a incape cu totul pe conexiune. Cand<br />
aceasta se intampla, pachetul este divizat in fragmente, si trimis ca pachete<br />
multiple. Celalalt capat reansambleaza aceste fragmente pentru a construi<br />
intregul pachet.</p>
<p>Problema cu fragmentele este ca primul fragment are campurile complete in<br />
header (IP + TCP, UDP si ICMP) pentru a le examina, dar cele care urmeaza au<br />
doar o submultime a header-elor (IP fara campurile protocolului aditional).<br />
De aceea privirea in header-e dupa protocol in pachetelor care urmeaza (cum se<br />
face in cazul  TCP, UDP si ICMP)  nu este posibila.</p>
<p>Daca faci connection tracking sau NAT, atunci toate fragmentele vor fi reunite<br />
inainte de a ajunge la codul filtrului de pachete, asa ca nu trebuie sa te<br />
ingrijorezi vreodata pentru fragmente.</p>
<p>Te rog sa retii de asemenea: chain-ul INPUT al tabelei de filtrare (sau a<br />
oricarei alte tabele care depinde de NF_IP_LOCAL_IN) este traversat dupa<br />
defragmentarea stivei principale IP.</p>
<p>In caz contrar, este important sa stii cum sunt tratate fragmentele de catre<br />
regulile de filtrare. Orice regula de filtrare care cere informatii pe care<br />
nu le avem nu se va potrivi. Aceasta inseamna ca primul fragment este tratat<br />
ca orice alt pachet. Al doilea si urmatoarele nu vor mai fi. De aceea o<br />
regula  -p tcp &#8211;sport www (specificand un port sursa &#8220;www&#8221;) nu se vor potrivi<br />
cu un fragment (altul decat primul). Nici regula opusa nu va face acest lucru<br />
-p tcp &#8211;sport ! www.</p>
<p>Oricum, poti sa specifici o regula special pentru fragmentul al doilea si<br />
urmatoarele, folosind optiunea &#8220;-f&#8221; (sau &#8220;&#8211;fragment&#8221;). Este de asemenea<br />
legal sa specifici ca o regula nu se aplica la al doilea si urmatoarele<br />
fragmente, prin precedarea lui &#8220;-f&#8221; cu &#8220;!&#8221;.</p>
<p>De obicei este considerat sigur sa lasi sa treaca al doilea si urmatoarele<br />
fragmente, deoarece filtrarea va afecta primul fragment, si de aceea previne<br />
reansamblarea pe calculatorul destinatie; cu toate acestea, sunt cunoscute<br />
bug-uri care permit caderea sistemului doar prin simpla trasnmitere de<br />
fragmente. Este decizia ta.</p>
<p>Nota pentru network-heads: pachetele cu malformatii (pachete TCP, UDP si<br />
ICMP prea scurte codului de firewall ca sa citeasca tipul portului sau codul<br />
ICMP si tipul) sunt ignorate cand asemenea examinarii sunt incercate.<br />
Astfel sunt si fragmentele TCP care pornesc de la pozitia 8.</p>
<p>Ca un exemplu, urmatoarea regula va ignora fragmentele care se duc spre<br />
192.168.1.1:</p>
<p># iptables -A OUTPUT -f -d 192.168.1.1 -j DROP<br />
#</p>
<p>7.3.6 Optiuni extinse la iptables: Noi potriviri</p>
<p>iptables este extensibil, asta inseamna ca amandoua, iptables si kernelul pot<br />
fi extinse pentru a suporta noi optiuni.</p>
<p>Unele dintre aceste optiuni sunt standard, altele sunt mai exotice. Aceste<br />
optiuni pot fi facute de catre alti oameni si distribuite.</p>
<p>Extensiile kernelului sunt gasite deobicei in subdirectorul de module ale<br />
kernelului cum ar fi /lib/modules/2.4.0-test10/kernel/net/ipv4/netfilter. Ele<br />
se incarca automat daca kernelul tau a fost compilat cu optiunea CONFIG_KMOD,<br />
asa ca nu o sa fie necesar sa le incarci manual.</p>
<p>Extensiile la programul iptables sunt librarii shared care de obicei se gasesc<br />
in /usr/local/lib/iptables/, deseamenea o distributie poate sa le puna in<br />
directorul /lib/iptables sau /usr/lib/iptables.</p>
<p>Optiuniile vin in doua feluri: noi tinte si noi potriviri (vom vorbi despre<br />
tinte ceva mai tarziu). Unele protocoale automat ofera noi teste pentru<br />
pachete: in mod curent acestea sunt TCP, UDP si ICMP, cum sunt aratate mai jos.</p>
<p>Pentru acestea vei putea sa specifici noile teste in linia de comanda dupa<br />
optiunea &#8220;-p&#8221;, care va pune la dispozitie automat optiunile extinse. Pentru<br />
a preciza teste noi, foloseste optiunea &#8220;-m&#8221; pentru a incarca extensia, dupa<br />
care optiunile extinse vor putea fi folosite.</p>
<p>Pentru a vedea help-ul pentru  optiunile extinse foloseste optiunea de<br />
incarcare (&#8220;-p&#8221;, &#8220;-j&#8221; sau &#8220;-m&#8221;) urmat de &#8220;-h&#8221; sau &#8220;&#8211;help&#8221;, de exemplu:</p>
<p># iptables -p tcp &#8211;help<br />
#</p>
<p>7.3.6.1 Optiuni extinse TCP</p>
<p>Optiunile extinse TCP sunt disponibile in mod automat daca se specifica<br />
optiunea &#8220;-p tcp&#8221;. Aceste optiuni sunt urmatoarele (nici una dintre ele nu<br />
se vor potrivi cu fragmente):</p>
<p>&#8211;tcp-flags<br />
poate fi urmat de semnul optional &#8220;!&#8221;, apoi de doua siruri de<br />
flag-uri, care permite filtrarea dupa anumite flag-uri. Primul sir de<br />
flag reprezinta mask-ul, flag-urile pe care doresti a le examina. Al<br />
doilea sir reprezinta care dintre acestea ar trebui sa fie prezente.<br />
De exemplu:</p>
<p># iptables -A INPUT &#8211;protocol tcp &#8211;tcp-flags ALL SYN,ACK -j DROP</p>
<p>Aceasta comanda spune ca toate flag-urile trebuiesc examinate (&#8220;ALL&#8221;<br />
este sinonim cu &#8220;SYN,ACK,FIN,RST,URG,PSH&#8221;), dar doar SYN si ACK<br />
trebuie sa fie setate. Exista de asemnea un argumente &#8220;NONE&#8221; similar<br />
pentru nici unul dintre acestea.</p>
<p>&#8211;syn<br />
In mod optional precedata de semnul &#8220;!&#8221;, este o prescurtare pentru<br />
&#8220;&#8211;tcp-flags  SYN,RST,ACK SYN&#8221;</p>
<p>&#8211;source-port<br />
poate fi urmat de un optional &#8220;!&#8221;, si fie de un singur port, fie<br />
de o sir de porturi. Porturile pot fi specificate fie folosind numere<br />
fie folosind nume, asa cum sunt specificate in /etc/services.<br />
sirurile se specifica prin doua porturi despartite de &#8220;:&#8221;, sau<br />
(pentru a specifica o sir de porturi mai mare sau egal cu un port<br />
dat) un port urmat de &#8220;:&#8221;, sau (pentru a specifica o lista de porturi<br />
mai mica sau egala decat un port dat) un port precedat de &#8220;:&#8221;.</p>
<p>&#8211;sport este sinonim cu &#8211;source-port</p>
<p>&#8211;destination-port<br />
si<br />
&#8211;dport<br />
sunt similare cu modul in care se specifica portul sursa numai ca in<br />
loc de portul sursa se face potrivirea dupa portul destinatie.</p>
<p>&#8211;tcp-option<br />
urmat de un optional &#8220;!&#8221; si un numar, se potriveste pentru un<br />
pachet cu optiunea TCP egala cu acel numar. Un pachet care nu are un<br />
header complet TCP este ignorat automat daca este facuta incercarea<br />
de a se examina headerele TCP.</p>
<p>7.3.6.1.1 O explicatie pentru flag-urile TCP</p>
<p>Uneori este folositor sa permiti conexiunile TCP intr-o singura directie, nu<br />
si in cealalta. De exemplu, ai putea sa permiti conexiuni catre un server<br />
extern WWW, dar nici o conexiune de la acel server.</p>
<p>Naiv ar fi sa blochezi pachetele TCP dinspre server. Din pacate, conexiunile<br />
TCP cer pachetele sa circule in ambele directii.</p>
<p>Solutia ar fi sa blochezi numai pachetele folosite pentru a initia<br />
conexiuni. Aceste pachete sunt numite pachete SYN (ok, tehnic sunt pachete cu<br />
flag SYN pus si cu flagurile RST si ACK nepuse, dar le numim pe scurt<br />
pachete SYN). Prin ignorarea acestor pachete, putem sa oprim aceste<br />
conexiuni.</p>
<p>Optiunea &#8220;&#8211;syn&#8221; este folosita pentru aceasta; este valida numai pentru<br />
regulile in care specificam tcp ca protocol. De exemplu, pentru a specifica<br />
incercarile de conexiune de la 192.168.1.1:</p>
<p>-p TCP -s 192.168.1.1 &#8211;syn</p>
<p>Aceasta optiune poate fi inversat prin precedarea &#8220;&#8211;syn&#8221; cu semnul &#8220;!&#8221;.</p>
<p>7.3.6.2 Optiuni extinse UDP</p>
<p>Aceste optiuni sunt automat disponibile cand se specifica &#8220;-p udp&#8221;. Acestea<br />
sunt: &#8220;&#8211;source-port&#8221;, &#8220;&#8211;sport&#8221;,&#8221;&#8211;destination-port&#8221; si &#8220;&#8211;dport&#8221; care au<br />
fost detaliate mai sus.</p>
<p>7.3.6.3 Optiuni extinse ICMP</p>
<p>Aceste optiuni sunt automat disponibile cand se specifica &#8220;-p icmp&#8221;. Este<br />
doar o singura optiune noua:</p>
<p>&#8211;icmp-type<br />
urmat de un semnul optional &#8220;!&#8221;, apoi de numele tipului icmp (ex.<br />
&#8220;host-unreachable&#8221;), sau tipul numeric (ex. &#8220;3&#8243;), sau tipul numeric<br />
si codul separate de &#8220;/&#8221; (ex. &#8220;3/3&#8243;). O lista a numelor de tipuri de<br />
pachete icmp este data folosind &#8220;-p icmp &#8211;help&#8221;.</p>
<p>7.3.6.4 Alte optiuni extinse pentru potrivire</p>
<p>Alte optiuni extinse in pachtetul de filtrare sunt optiuni demonstrative,<br />
care (daca sunt instalate) pot fi invocate cu optiunea &#8220;-m&#8221;.</p>
<p>mac</p>
<p>Acest modul trebuie in mod explicit specificat prin optiunea &#8220;-m mac&#8221;<br />
sau &#8220;&#8211;match mac&#8221;. Este folosit pentru a se potrivi cu pachetele ce au o<br />
anumita adresa ethernet MAC, si de aceea este folositoare numai<br />
pentru pachetele care traverseaza chain-urile PREROUTING si INPUT.<br />
Este disponibila o singura optiune noua:</p>
<p>&#8211;mac-source<br />
urmat de semnul optional &#8220;!&#8221;, apoi de o adresa ethernet in notatie<br />
hexa separata prin &#8220;:&#8221;, ex. &#8220;&#8211;mac-source 00:60:08:91:CC:B7&#8243;.</p>
<p>limit</p>
<p>Acest modul trebuie in mod explicit specificat prin optiunea &#8220;-m limit&#8221;<br />
sau cu &#8220;&#8211;match limit&#8221;. Este folosit pentru a restrange rata de<br />
potriviri, ca de exemplu pentru reprimarea mesajelor in log-uri<br />
(log-urile sunt fisierele in care sistemul scrie anumite date<br />
considerate importante, in ideea de a putea fi accesate mai tarziu). Se<br />
vor potrivi numai un numar dat de pachete pe secunda (default 3<br />
potriviri pe ora, la un numar maxim de 5 potriviri). Sunt disponibile<br />
doua optiuni:</p>
<p>&#8211;limit<br />
urmat de un numar; specifica numarul maxim de potriviri permise pe<br />
secunda. Numarul poate fi specificat pe unitati de timp explicite,<br />
folosind &#8220;/second&#8221;, &#8220;/minute&#8221;, &#8220;/hour&#8221; or &#8220;/day&#8221;, sau parti din ele<br />
(ex. &#8220;5/second&#8221; este la fel cu &#8220;5/s&#8221;).</p>
<p>&#8211;limit-burst<br />
urmat de un numar, indica numarul maxim de potriviri dupa care limita<br />
de mai sus intra in actiune.</p>
<p>Aceasta potrvire poate adesea fi folosita cu tinta LOG pentru a face<br />
logare limitata dupa o rata. Pentru a intelege cum functioneaza sa ne<br />
uitam la urmatoarea regula care logheaza cu parametri de limita default:</p>
<p># iptables -A FORWARD -m limit -j LOG</p>
<p>Prima data cand se ajunge la aceasta regula, pachetul va fi scris in<br />
log-uri, de fapt, deorece numarul limita este 5, primele 5 pachete vor<br />
ajunge in log-uri. Dupa aceasta vor trece 20 de minute pana cand alt<br />
pachet sa ajunga in log-uri datorita acestei reguli, fara sa conteze<br />
numarul de pachete care ajung la regula. Dupa 20 de minute<br />
limit-burst-ul,	numarul de pachete care vor putea fi primite va fi unu,<br />
dupa inca 20 de minute va mai creste cu o unitate, daca nici un pachet<br />
nu s-a potrivit cu regula. Deasemenea, la fiecare 20 de minute	care<br />
trec fara ca pachete sa se potriveasca  regulii, numarul limita va<br />
creste cu o unitate; daca nici un pachet nu se potriveste cu regula dupa 	100 de minute, numarul limita va fi din nou atins, inapoi de unde am<br />
plecat.</p>
<p>Nota: nu poti crea o regula cu un timp de reincarcare mai mare de 59<br />
de ore, asa ca daca pui o limita de 1/zi, atunci numarul maxim de<br />
potriviri (burst-rate) trebuie sa fie mai mic decat 3.</p>
<p>Poti de asemenea sa folosesti acest modul pentru a te feri de<br />
diferitele atacuri denial of service (DoS) cu o rata mai mare pentru a<br />
creste sensibilitatea.</p>
<p>Protectie pentru syn-flood:</p>
<p># iptables -A FORWARD -p tcp &#8211;syn -m limit 1/s -j ACCEPT</p>
<p>Pentru scannere de porturi clandestine:</p>
<p># iptables -A FORWARD -p tcp &#8211;tcp-flags SYN,ACK,FIN,RST RST<br />
-m limit &#8211;limit 1/s -j ACCEPT</p>
<p>Pingul mortii:</p>
<p># iptables -A FORWARD -p icmp &#8211;icmp-type echo-request -m<br />
-m limit &#8211;limit 1/s -j ACCEPT</p>
<p>Acest modul se comporta ca o &#8220;usa histeresis&#8221;, ca in graficul urmator:</p>
<p>rata (pachete/s)<br />
^        .&#8212;.<br />
|       / DoS \<br />
|      /       \<br />
Limita   DoS -|&#8230;..:&#8230;&#8230;&#8230;\&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br />
= (limit *  |    /:          \<br />
limit-burst) |   / :           \         .-.<br />
|  /  :            \       /   \<br />
| /   :             \     /     \<br />
End of DoS  -|/&#8230;.:&#8230;&#8230;&#8230;&#8230;..:&#8230;/&#8230;&#8230;.\&#8230;./.<br />
= limit     |     :              :&#8221;-&#8221;         &#8220;&#8211;&#8221;<br />
&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&gt; time (s)<br />
LOGIC =&gt;  Potrivire | Nepotrivire  |  Potrivire</p>
<p>Sa consideram ca avem o potrivire de un pachet pe secunda cu o<br />
limita maxima de 5 pachete, dar pachetele vin cu o rata de patru pe<br />
secunda timp de 3 secunde, apoi incep din nou sa vina peste 3 secunde.</p>
<p>&lt;&#8211;Flood 1&#8211;&gt;           &lt;&#8212;Flood 2&#8212;&gt;</p>
<p>Pachete^                   Line  __&#8211;      YNNN<br />
total  |               Rate  __&#8211;      YNNN<br />
|            mum  __&#8211;      YNNN<br />
10 |        Maxi __&#8211;         Y<br />
|         __&#8211;            Y<br />
|     __&#8211;               Y<br />
| __&#8211;    YNNN<br />
|-    YNNN<br />
5 |    Y<br />
|   Y         Legenda:  Y -&gt; se potriveste cu regula<br />
|  Y          	  	 N -&gt; nu se potriveste cu regula<br />
| Y<br />
|Y<br />
0 +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&gt; timpul in<br />
secunde<br />
0   1   2   3   4   5   6   7   8   9  10  11  12</p>
<p>Se poate vedea ca primele 5 pachete sunt permise sa depaseasca limita<br />
de un pachet pe secunda, apoi limit intervine. Daca este o  pauza de o<br />
secunda inca un pachet in plus va fi permis sa treaca. Intodeauna<br />
insa, nu se va permite depasirea de un pachet/secunda dupa ca<br />
numarul limita (burst-limit) este atins.</p>
<p>owner</p>
<p>acest modul incearca sa se potriveasca trasaturilor diferite ale<br />
creatorului pachetului, pentru pachetele generate local. Este valid<br />
numai in chain-ul OUTPUT, si chiar si atunci unele pachete (cum ar<br />
fi raspunsurile de tip ICMP) pot sa nu aiba creator, si de aceea sa<br />
nu se potriveasca.</p>
<p>&#8211;uid-owner userid<br />
se potriveste daca pachetul a fost creat de catre un proces cu<br />
acelasi id de user.</p>
<p>&#8211;gid-owner groupid<br />
se potriveste daca pachetul a fost creat de catre un proces cu<br />
acelasi id de group.</p>
<p>&#8211;pid-owner processid<br />
se potriveste daca pachetul a fost creat de catre un proces cu<br />
acelasi id de proces.</p>
<p>&#8211;sid-owner sessionid<br />
se potriveste daca pachetul a fost creat de catre un proces in grupul<br />
de sesiune dat.</p>
<p>unclean</p>
<p>Acest modul experimental trebuie sa fie in mod explicit specificat cu<br />
optiunea &#8220;-m unclean&#8221; sau &#8220;&#8211;match unclean&#8221;. Realizeaza niste teste<br />
variate de sanatate asupra pachetelor. Acest modul nu a fost testat,<br />
si nu ar trebui sa fie folosit ca o unealta in securitate (probabil<br />
ca inrautateste lucrurile din cauza ca el insusi s-ar putea sa aiba<br />
buguri). Nu este disponibila nici o optiune.</p>
<p>7.3.6.5 Potrivirea dupa stare</p>
<p>Cele mai folositoare optiuni este furnizata de modulul &#8220;state&#8221;, care<br />
interpreteaza analizele detectorului de conexiuni ale modulului<br />
&#8220;ip_conntrack&#8221;. Aceasta este foarte recomandata.</p>
<p>Specificarea modulului &#8220;-m state&#8221; permite folosirea unei optiuni<br />
aditionale de stare  &#8220;&#8211;state&#8221;. Aceste stari sunt:</p>
<p>NEW<br />
un pachet care creeaza o noua conexiune.</p>
<p>ESTABLISHED<br />
un pachet care apartine unei conexiuni deja stabilite (un pachet<br />
replica (replay), sau un pachet care pleaca al unei conexiuni care a primit<br />
replayuri).</p>
<p>RELATED<br />
Un pachet care este inrudit, dar care nu este parte a unei conexiuni existente,<br />
cum ar fi o eroare ICMP, sau (cu modulul FTP introdus), un pachet care<br />
stabileste o conexiune FTP.</p>
<p>INVALID<br />
Un pachet care nu a putut fi identificat pentru niste motive: aceasta include<br />
ramanerea fara memorie sau erori ICMP care nu apartin nici unei conexiuni<br />
cunoscute. In mod normal aceste pachete ar trebui ignorate.</p>
<p>Un exemplu pentru aceasta puternica optiune de potrivire ar fi:</p>
<p># iptables -A FORWARD -i ppp0 -m state ! NEW -j DROP</p>
<p>7.4 Argumente asupra tintei</p>
<p>Acum stim ce examinare poate fi facuta asupra unui pachet, avem nevoie de o<br />
cale pentru a preciza ce sa facem cu pachetele care se potrivesc  testelor<br />
noastre. Aceasta este numita tinta unei reguli.</p>
<p>Exista doua foarte simple tinte incluse: DROP si ACCEPT. Ne-am intalnit deja<br />
cu aceastea. Daca o regula se potriveste cu un pachet si tinta regulii este<br />
una din aceste doua, nici una din regulile urmatoare nu  sunt consultate,<br />
soarta pachetului a fost decisa.</p>
<p>Mai sunt doua tipuri de tinte pe langa acestea incluse: tinte extinse si<br />
chain-urile definite de catre utilizator.</p>
<p>7.4.1 Chain-uri definite de utilizator</p>
<p>O caracteristica puternica pe care iptables o mosteneste de la ipchains este<br />
posibilitatea utilizatorului de a crea chain-uri noi, pe langa cele incluse<br />
default (INPUT, OUTPUT si FORWARD). Prin conventie, chain-urile definite de<br />
catre utilizator se scriu cu litera mica pentru a le deosebi (vom descrie<br />
mai jos cum sa cream acest tip de chain-uri in &#8220;7.5 Operatii asupra unui<br />
intreg chain&#8221;).</p>
<p>Cand un pachet se potriveste cu o regula a carei tinta este un chain definit<br />
de catre utilizator, pachetul incepe sa traverseze chain-ul definit de catre<br />
utilizator. Daca acel chain-ul nu decide soarta pachetul de indata ce<br />
pachetul ajunge la sfarsitul chain-ului respectiv, pachetul continua<br />
traversarea  chain-ului initial.</p>
<p>Este timpul pentru niste arta ASCII. Considera doua chain-uri aiurea: INPUT<br />
(chain-ul inclus default) si test (un chain definit de utilizator).</p>
<p>&#8220;INPUT&#8221;                         &#8220;test&#8221;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| Rule1: -p ICMP -j DROP   |    | Rule1: -s 192.168.1.1    |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|    |&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|<br />
| Rule2: -p TCP -j test    |    | Rule2: -d 192.168.1.1    |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| Rule3: -p UDP -j DROP    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Considera un pachet TCP venind de la 192.168.1.1 si ducandu-se catre 1.2.3.4.<br />
Acesta intra in chain-ul INPUT. Rule1 nu se potriveste cu el, Rule2 se<br />
potriveste asa ca urmatoarea regula care este examinata este prima din<br />
chain-ul test. Rule1 se potriveste dar nu este specificata nici o tinta,<br />
asa ca urmatoarea regula este examinata. Rule2 nu se potriveste asa ca am<br />
ajuns la sfarsitul chain-ului. Astfel ne reintoarcem in chain-ul INPUT, unde<br />
am examinat Rule2, asa ca examinam Rule3 care nici aceasta nu se potriveste.</p>
<p>Deci calea urmata de catre pachet este:</p>
<p>v    __________________________<br />
&#8220;INPUT&#8221;                |   /    &#8220;test&#8221;                v<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8211;/    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|&#8212;-<br />
| Rule1                 | /|    | Rule1                |   |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|/-|    |&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|&#8212;|<br />
| Rule2                 /  |    | Rule2                |   |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;v&#8212;-<br />
| Rule3 	               /&#8211;+___________________________/<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;<br />
v</p>
<p>Chain-urile definite de catre utilizator pot sari la alte chain-uri definite<br />
de catre utilizator (dar nu crea trasee in cerc, pachetele tale vor fi<br />
ignorate daca intra in bucla).</p>
<p>7.4.2 Optiuni extinse la iptables: Noi tinte</p>
<p>Celalat tip de optiune extinsa este o tinta. O tinta extinsa este formata<br />
dintr-un modul de kernel si o extensie optionala la iptables pentru a pune<br />
la dispozitie noi optiuni in linia de comanda. Sunt mai multe optiuni<br />
extinse in distributia default a netfilter-ului:</p>
<p>LOG</p>
<p>Acest modul permite log-area de catre kernel a pachetelor care se<br />
potrivesc. Acest modul pune la dispozitie urmatoarele optiuni<br />
aditionale:</p>
<p>&#8211;log-level<br />
urmat de un numar al nivelului sau de un nume. Numele corecte sunt<br />
(nu conteaza daca sunt scrise cu litera mare sau nu) &#8220;debug&#8221;, &#8220;info&#8221;,<br />
&#8220;notice&#8221;, &#8220;warning&#8221;, &#8220;err&#8221;, &#8220;crit&#8221; and &#8220;emerg&#8221;, corespunzand numerelor<br />
de la 7 la 0. Citeste man-ul de la syslog.conf pentru o explicatie<br />
privind aceste niveluri de logare. Nivelul default este &#8220;warning&#8221;.</p>
<p>&#8211;log-prefix<br />
urmat de un sir de caractere pana la 29 de caractere, acest mesaj<br />
este pus in fata mesajului care este logat, pentru a-i permite<br />
identificarea unica.</p>
<p>Acest modul este bun dupa o limita de potrivire, pentru a nu-ti<br />
flooda fisierele de log.</p>
<p>REJECT</p>
<p>Acest modul are acelasi efect cu &#8220;DROP&#8221;, cu exceptia faptului ca<br />
celui ce trimite pachetele ii este trimis mesaj de eroare ICMP &#8220;port<br />
unreachable&#8221;. Bagati la cap ca mesajul de eroare ICMP nu este trimis<br />
daca (citeste RFC 1122):<br />
- pachetul de il filtrezi a fost de la inceput o eroare ICMP<br />
sau alt tip de pachet ICMP necunoscut.<br />
- pachetul ce este filtrat nu este un fragment de inceput.<br />
- am trimis recent prea multe mesaje de eroare ICMP catre acea<br />
destinatie ( cat /proc/sys/net/ipv4/icmp_ratelimit).<br />
REJECT pune de asemenea la dispozitie o noua optiune<br />
&#8220;&#8211;reject-with&#8221; care modifica pachetul folosit la replay: man<br />
iptables.</p>
<p>7.4.3 Tinte speciale construite default</p>
<p>Sunt doua tinte speciale contruite default: RETURN si QUEUE.</p>
<p>RETURN are acelasi efect cu trecerea direct la sfarsitul chain-ului: pentru<br />
o regula in chain-ul inclus default politica acelui chain-ului este executata.<br />
Pentru o regula intr-un chain definit de catre utilizator, traversarea continua in<br />
chain-ul anterior, exact dupa regula care a determinat trecerea la acest<br />
chain.</p>
<p>QUEUE este o tinta speciala, care pune in rand pachetul pentru procesare de<br />
catre programe utilizator. Pentru ca aceasta sa fie folositor doua urmatoare<br />
componente sunt cerute:</p>
<p>- un &#8220;gestionar al cozii&#8221;, care se ocupa de mecanismele propriu-zise de<br />
trecere a pachetelor intre kernel si modul utilizator; si</p>
<p>- un program in mod utilizator pentru a primi, posibil a manipula, si a<br />
da verdicte in ceea ce priveste pachetele.</p>
<p>Gestionarul standard al cozii pentru iptables IPv4 este modulul ip_queue, care<br />
este distribuit cu kernelul si considerat experimental.</p>
<p>Ceea ce urmeaza este un scurt exemplu despre cum sa folosesti iptables pentru<br />
a pune in coada pachetele pentru procesare in mod utilizator:</p>
<p># modprobe iptable_filter<br />
# modprobe ip_queue<br />
# iptables -A OUTPUT -p icmp -j QUEUE</p>
<p>Cu aceasta regula, pachetele ICMP  generate local (care sunt create<br />
, sa zicem, cu ping) sunt pasate modulului ip_queue, care apoi incearca sa<br />
livreze pachetele unei aplicatii in mod utilizator. Daca nici o<br />
aplicatie nu asteapta acele pachete, acestea sunt ignorate.</p>
<p>Pentru a scrie o aplicatie in mod utilizator, poti folosi libipq API. Acesta<br />
este distribuit impreuna cu iptables. Cod exemplu poate fi gasit in programele<br />
de testare (redirect.c) in CVS.</p>
<p>Starea lui ip_queue poate fi verificata prin:</p>
<p>/proc/net/ip_queue</p>
<p>Marimea maxima a unei cozi (i.e. numarul de pachete livrata modului utilizator<br />
fara primirea inapoi a unei comfirmari) poate fi controlat prin:</p>
<p>/proc/sys/net/ipv4/ip_queue_maxlen</p>
<p>Marimea default pentru marimea maxima a cozii este 1024. Odata ce aceasta<br />
limita este atinsa, noile pachete vor fi ignorate pana cand marimea cozii<br />
scade sub nivelul limita. Protocoale bine gandite ca TCP interpreteaza<br />
pachetele ignorate ca aglomerare, si din fericire va inceta livrarea de<br />
pachete cand coada este plina. Cu toate acestea, va lua ceva experimente<br />
pentru a determina valoare ideala pentru marimea cozii pentru o situatie data<br />
daca valoarea default este prea mica.</p>
<p>7.5 Operatii asupra unui intreg chain</p>
<p>O foarte folositoare caracteristica a iptables-ului este posibilitatea de a<br />
grupa mai multe reguli intr-un chain. Poti numi chain-urile cum doresti, dar<br />
recomand folosirea literelor mici pentru a evita confuzia cu chain-urile<br />
incluse default si tinte. Numele de chain-uri pot fi pana la 31 de litere in<br />
lungime.</p>
<p>7.5.1 Creearea unui nou chain</p>
<p>Sa cream un nou chain. Pentru ca sunt un tip cu atata imaginatie o sa o<br />
numesc test. Pentru aceasta folosim optiunea &#8220;-N&#8221; sau &#8220;&#8211;new-chain&#8221;:</p>
<p># iptables -N test<br />
#</p>
<p>Este atat de simplu. Acum poti introduce reguli in el cum am aratat mai sus.</p>
<p>7.5.2 Stergerea unui chain</p>
<p>Si sergerea unui chain este deasemenea simpla, prin folosirea optiunilor &#8220;-X&#8221;<br />
sau &#8220;&#8211;delete-chain&#8221;. De ce &#8220;-X&#8221;? Pai toate literele bune au fost luate.</p>
<p># iptables -X test<br />
#</p>
<p>Sunt cateva restricitii la stergerea de chain-uri: acestea trebuie sa fie<br />
goale (vezi &#8220;Stergerea tuturor regulilor unui chain&#8221; dedesubt) si nu trebuie<br />
sa fie tinta nici unei reguli. Nu poti sterge nici unul dintre chain-rile<br />
incluse default.</p>
<p>Daca nu specific numele chain-ului, atunci toate chain-urile definite de catre<br />
utilizator vor fi sterse daca este posibil.</p>
<p>7.5.3 Stergerea tuturor regulilor unui chain</p>
<p>Exista un mod simplu de de sterge toate regulile dintr-un chain, folosind<br />
optiunile &#8220;-F&#8221; (sau &#8220;&#8211;flush&#8221;).</p>
<p># iptables -F FORWARD<br />
#</p>
<p>Daca nu este specificat chain-ul atunci toate chain-urile vor fi sterse de<br />
reguli.</p>
<p>7.5.4 Listarea unui chain</p>
<p>Poti lista toate regulile dintr-un chain prin folosirea optiunii &#8220;-L&#8221; (sau<br />
&#8220;&#8211;list&#8221;).</p>
<p>&#8220;refcnt-ul&#8221;(reference count) listat pentru fiecare chain definit de catre<br />
utilizator  este numarul de reguli care au ca tinta acest chain. Acesta<br />
trebuie sa fie zero (si chain-ul sa fie gol) inainte ca acest chain sa poata<br />
fi sters.</p>
<p>Daca numele chain-ului este omis, toate chain-urile sunt listate, chiar si<br />
cele care sunt goale.</p>
<p>Exista trei optiuni care pot fi adaugate la &#8220;-L&#8221;. Optiunea &#8220;-n&#8221; (numeric)<br />
este foarte folositoare deoarece previne iptables in a incerca sa rezolve<br />
IP-urile in nume, care (daca folosesti DNS ca majoritatea oamenilor) va cauza<br />
mari intarzieri daca DNS-ul tau nu este setat corect, sau ai filtrat cererile<br />
catre DNS. Determina deasemenea ca porturile TCP si UDP sa fie afisate ca<br />
numere in loc de nume.</p>
<p>Optiunea &#8220;-v&#8221; arata toate detaliile regulilor, cum ar fi counter-ele pentru de<br />
pachete si bytes, comparatiile TOS, interfata. Altfel aceste detalii sunt<br />
omise.</p>
<p>Observa faptul urmator: counter-ele pentru pachete si bytes sunt afisate<br />
folosind sufixele &#8220;K&#8221;, &#8220;M&#8221; sau &#8220;G&#8221; pentru 1000, 1,000,000 si respectiv<br />
1,000,000,000. Folosirea lui optiunii &#8220;-x&#8221; (expandare a numerelor) afiseaza<br />
numerele in formatul maxim, fara sa conteze cat sunt de mari.</p>
<p>7.5.5 Resetarea counter-elor</p>
<p>Este folositoare posibilitatea de a putea sa resetezi counter-ele. Aceasta<br />
poate fi facuta cu optiune &#8220;-Z&#8221; (sau &#8220;&#8211;zero&#8221;).</p>
<p>Considera urmatoarele:</p>
<p># iptables -L FORWARD<br />
# iptables -Z FORWARD<br />
#</p>
<p>In exemplul de mai sus, unele pachete au putut sa vina intre cele doua<br />
comenzi. Pentru acest motiv, poti folosi cele doua optiuni &#8220;-L&#8221; si &#8220;-Z&#8221;<br />
impreuna, pentru a reseta counter-ele in timp ce le afisezi.</p>
<p>7.5.6 Setarea policy-ului</p>
<p>Am explicat ce se intampla cand un pachet ajunge la capatul unui chain inclus<br />
default si am discutat mai devreme cum parcurge un pachet chain-urile. In<br />
acest caz, policy-ul chain-ului determina soarta pachetului. Doar chain-urile<br />
incluse default (INPUT, OUTPUT si FORWARD) au policy-uri, deoarece daca un<br />
pachet ajunge la capatul unui chain definit de catre utilizator, traversarea<br />
continua in chain-ul anterior.</p>
<p>Politica poate fi fie ACCEPT, fie DROP, de exemplu:</p>
<p># iptables -P FORWARD drop<br />
#</p>
<p>8. Folosirea ipchains si ipfwadm</p>
<p>Sunt module in distributia netfilter pe nume ipchains.o si ipfwadm.o.<br />
Insereaza unul dintre acestea in kernelul tau ( Observatie: aceste module<br />
sunt incompatibile cu ip_tables.o). Apoi poti folosi ipchains sau ipfwadm  ca<br />
in vremurile de alta data.</p>
<p>Aceasta va fi suportata pentru inca un timp. Cred ca o formula rezonabila<br />
este 2 * [nota inlocuirii - prima versiune stabila], dupa data cand o versiune<br />
stabila a inlocuirii este disponibila.<br />
Asta inseamna ca suportul va fi probabil abandonat in Linux 2.6 sau 2.8.</p>
<p>9. Folosirea impreuna a NAT-ului si a filtrarii de pachete</p>
<p>Este normal sa vrei sa faci NAT (vezi NAT HOWTO) si filtrare de pachete.<br />
Veste buna este ca se pot folosi impreuna extrem de bine.</p>
<p>Faci filtrarea de pachete ingorand total orice NAT ai deja. Sursa si<br />
destinatia vazute de catre filtrul de pachete vor fi sursele si destinatiile<br />
reale. De exemplu daca faci DNAT pentru a trimite orice conexiune pentru<br />
1.2.3.4 portul 80 spre 10.1.1.1 portul 8080, filtrul de pachete va vedea<br />
pachetele ducandu-se catre 10.1.1.1 portul 8080 (adresa reala), nu 1.2.3.4<br />
port 80. In mod similar poti ignora masquerading: pachetele vor parea ca vin<br />
de la adresa lor IP interna reala (sa zicem 10.1.1.1), si replay-urile vor<br />
parea ca se duc inapoi acolo.</p>
<p>Poti folosi optiunea extinsa de potrivire &#8220;match&#8221; fara sa pui filtrul de<br />
pachete sa faca munca in plus, deoarece NAT cere detectarea de conexiuni<br />
oricum. Pentru a dezvolta exemplul simplu de masquerading din NAT HOWTO pentru<br />
a nu permite noi conexiuni pe interfata ppp0, vei face urmatoarele:</p>
<p># masquerading pentru ppp0<br />
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</p>
<p># refuzarea de pachete NOI sau INVALIDE forwardate sau care vin prin ppp0<br />
iptables -A INPUT -i ppp0 -m state &#8211;state NEW,INVALID -j DROP<br />
iptables -A FORWARD -i ppp0 -m state &#8211;state NEW,INVALID -j DROP</p>
<p># se da drumu la IP forwarding<br />
echo 1 &gt; /proc/sys/net/ipv4/ip_forward</p>
<p>10. Diferente intre iptables si ipchains</p>
<p>o In primul rand, numele chain-urilor predefinite si-au schimbat scrierea din<br />
litere mici in litere mari, deoarece chain-urile INPUT si OUTPUT primesc acum<br />
doar pachete cu destinatie locala si pachete generate local. Ele obisnuiau<br />
sa vada toate pachetele care intrau si respectiv care ieseau.</p>
<p>o Optiunea &#8220;-i&#8221; acum inseamna interfata de intrare si are sens numai in<br />
chain-urile INPUT si FORWARD. Regulile in chain-urile OUTPUT si FORWARD care<br />
foloseau inainte &#8220;-i&#8221; vor trebuie sa fie schimbate cu &#8220;-o&#8221;.</p>
<p>o Porturile TCP si UDP trebuie sa fie precizate folosind optiunile<br />
&#8211;source-port  sau &#8211;sport (sau &#8211;destination-port/&#8211;dport), si trebuie<br />
puse dupa optiunile &#8220;-p tcp&#8221; sau &#8220;-p udp&#8221;, deorece acestea incarca optiunile<br />
disponibile extensiilor TCP si respectiv UDP.</p>
<p>o Argumentul TCP -y a devenit acum &#8211;syn si trebuie pus dupa &#8220;-p tcp&#8221;.</p>
<p>o In cele din urma tinta DENY a deveni DROP.</p>
<p>o Resetarea counter-elor pentru un singur chain in timp concomitent cu<br />
listarea acestuia este acum posibila.</p>
<p>o Resetara counter-elor pentru chain-urile predefinite resetezeaza desemenea<br />
counter-ele policy-ului chain-urilor respective.</p>
<p>o Listarea counter-elor iti arata counter-ele instant.</p>
<p>o REJECT si LOG sunt acum tinte extinse, insemnand ca sunt module de kernel<br />
separate.</p>
<p>o Numele pentru chain-uri pot fi pana la 31 de caractere in lungime.</p>
<p>o MASQ este acum MASQUERADE si foloseste o sintaza diferita. REDIRECT, desi<br />
si-a pastrat vechiul nume, a suferit deasemenea o schimbare de sintaxa.<br />
Citeste NAT-HOWTO pentru mai multe informatii despre cum sa le configurezi.</p>
<p>o Optiunea &#8220;-o&#8221; nu mai este folosita pentru a conduce pachetele in mod<br />
utilizator (vezi -i de mai sus). Pachetele sunt trimise acum in mod utilizator<br />
folosind tinta QUEUE.</p>
<p>o Probabil o gramada de alte lucruri pe care le-am uitat.</p>
<p>11. Sfaturi asupra designului filtrului de pachete</p>
<p>In domeniul securitatii cel mai bun lucru este sa blochezi totul, apoi sa<br />
deschizi gauri acolo unde este necesar. Aceasta este deobicei spus &#8220;ceea ce nu<br />
este in mod explicit permis este interzis&#8221;. Recomand aceasta  daca securitatea<br />
este grija ta cea mai mare.</p>
<p>Nu rula nici un serviciu de care nu ai nevoie, chiar daca ai blocat accesul la<br />
el.</p>
<p>Recomand securitatea in adancime: combina tcp-wrappers (pentru conexiuni catre<br />
insusi filtrul de pachete), proxy-uri (pentru conexiuni ce trec peste filtrul<br />
de pachete), verificarea routei si filtrare de pachete. Verificarea routei<br />
este cand un pachet care vine de la o interfata de la care nu poate veni este<br />
ignorate: de exemplu, daca reteaua ta interna are adresele 10.1.1.0/24, si<br />
un pachet care are ca sursa o adresa apartinand acelei clase vine pe<br />
interfata externa, acesta va fi ignorat. Aceasta verificare a routei poate<br />
fi activate pentru o interfata (ppp0) astfel:</p>
<p># echo 1 &gt; /proc/sys/net/ipv4/conf/ppp0/rp_filter<br />
#</p>
<p>Sau pentru toate interfetele existente si viitoare astfel:</p>
<p># for f in /proc/sys/net/ipv4/conf/*/rp_filter; do<br />
#     echo 1 &gt; $f<br />
# done<br />
#</p>
<p>Debian realizeaza acest lucru &#8220;by default&#8221; cand este posibil. Daca ai routare<br />
asimetrica  (te astepti sa primesti pachete din directii ciudate), vei<br />
dori sa dezactivezi aceasta filtrare pe interfetele respective.</p>
<p>Logarea pachetelor este folositoare cand configurezi un firewall si ceva nu<br />
merge, insa pe un sistem in productie, intodeauna foloseste aceasta in<br />
combinatie cu limitare, pentru a preveni floodarea fisierelor cu log-uri.</p>
<p>Recomand pentru sistemele sigure depistarea conexiunilor (connection<br />
tracking): determina o incarcare a sistemului, deoarece toate conexiunile sunt<br />
depistate, dar este foarte folositoare pentru a controla accesul la retelele<br />
tale. S-ar putea sa trebuiasca sa incarci modulul &#8220;ip_conntrack.o&#8221; daca<br />
kernelul tau nu incarca in mod automat modulele si nu este compilat in<br />
kernel. Daca vrei sa depistezi cu precizie protocoale complexe, va trebui sa<br />
incarci modulul necesar pentru aceasta (ex. &#8220;ip_conntrack_ftp.o&#8221;).</p>
<p># iptables -N no-conns-from-ppp0<br />
# iptables -A no-conns-from-ppp0 -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT<br />
# iptables -A no-conns-from-ppp0 -m state &#8211;state NEW -i ! ppp0 -j ACCEPT<br />
# iptables -A no-conns-from-ppp0 -i ppp0 -m limit -j LOG &#8211;log-prefix &#8220;Bad packet from ppp0:&#8221;<br />
# iptables -A no-conns-from-ppp0 -i ! ppp0 -m limit -j LOG &#8211;log-prefix &#8220;Bad packet not from ppp0:&#8221;<br />
# iptables -A no-conns-from-ppp0 -j DROP<br />
# iptables -A INPUT -j no-conns-from-ppp0<br />
# iptables -A FORWARD -j no-conns-from-ppp0</p>
<p>Construirea unui bun firewall este peste scopul acestui HOWTO, dar sfatul meu<br />
este ca &#8220;intodeauna sa fii minimalist&#8221;. Citeste Security HOWTO pentru mai multe<br />
informatii privind testarea si examinarea sistemului.</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=171</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ce este internetul. Conceptele de retea linux</title>
		<link>http://resurse-educationale.uv.ro/?p=169</link>
		<comments>http://resurse-educationale.uv.ro/?p=169#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:44:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[ppp]]></category>
		<category><![CDATA[retea]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[udp]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=169</guid>
		<description><![CDATA[traducere ver. 0.4 de catre Riddl Multumiri tuturor celor care m-au ajutat, in special lui Gushterul. Observatie f importanta: probabil ca exista unele greseli in acest document. Am tradus si eu cum m-am priceput mai bine, daca descoperiti greseli de &#8230; <a href="http://resurse-educationale.uv.ro/?p=169">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>traducere ver. 0.4 de catre Riddl<br />
Multumiri tuturor celor care m-au ajutat,  in special lui Gushterul.<br />
Observatie f importanta: probabil ca exista unele greseli in acest document.<br />
Am tradus si eu cum m-am priceput mai bine, daca descoperiti greseli de<br />
traducere si pentru observatii pertinente trimiteti-mi mail pentru Riddl la<br />
&#8220;discutzii at gmx dot net&#8221;. Nu uitati sa precizati numele documentului.<br />
Multumesc anticipat.<br />
Aceasta versiune este  putin modificata fata de original, deorece unii termeni<br />
sunau foarte ciudat in ro.<br />
Pentru ultima versiune a acestui document verifica<br />
&lt;http://www.securityorg.net/docs/&gt;.</p>
<p>Lecturare placuta!</p>
<p>______________________________________________________________________</p>
<p>Linux Networking-concepts HOWTO<br />
HOWTO privind conceptele de retea linux<br />
Rusty Russell<br />
$Revision: 1.3 $ $Date: 2002/06/05 13:21:56 $</p>
<p>Acest document descrie ce este acea o retea (cum ar fi internetul), si foarte<br />
primar cum functioneaza acesta.</p>
<p>______________________________________________________________________</p>
<p>Cuprins</p>
<p>1. Introducere<br />
2. Ce este aceea o &#8220;retea de calculatoare&#8221;?<br />
3. Ce este &#8220;Internetul&#8221;?<br />
3.1. Cum functioneaza Internetul?<br />
4. Aceast lucru numit IP<br />
4.1. Grupuri de adrese IP: Netmask-uri<br />
5. Nume de computere si Adrese IP<br />
6. Servici diferite: Email, Web, FTP, DNS<br />
7. Interfete dialup: PPP<br />
8. Cum arata pachetele<br />
9. Sumar<br />
10. Multumiri<br />
11. Index<br />
______________________________________________________________________</p>
<p><span id="more-169"></span>1. Introducere</p>
<p>Bine ai venit!<br />
Am scris in trecut un numar de howto-uri in ceea ce privesc retelele, si mi-a<br />
venit in minte ca sunt in fiecare o multime de termeni jargonici. Am avut de<br />
ales intre trei variante: celelalte doua ignorau problema si explicau<br />
termenii peste tot. Nici una dintre ele nu era atractiva.</p>
<p>Scopul software-ului liber este faptul ca ar trebui sa ai libertatea sa<br />
explorezi si sa te joci cu software-ul sistemului pe care il folosesti. Cred<br />
ca dandu-le posibilitatea oamenilor sa experimenteze aceasta libertate este un<br />
scop nobil; nu numai fac pe oameni sa se simt puternici printr-o ocupatie (cum<br />
ar fi reconstruirea unui motor de masina) dar prin natura internetului si<br />
software-ului liber ti se pune la dispozitie posibilitatea sa partajezi<br />
experienta ta cu milioane de oameni.</p>
<p>Dar trebuie  sa incepi de undeva, asa ca iata-ne.</p>
<p>(C) 2000 Paul &#8220;Rusty&#8221; Russell.  Sub licenta GNU GPL.</p>
<p>2. Ce este aceea o &#8220;retea de calculatoare&#8221;?</p>
<p>O retea de calculatoare sunt mai multe materiale folosite pentru ca nodurile sa<br />
schimbe informatie intre ele (prin &#8220;noduri&#8221; inteleg computere, imprimante,<br />
masini de gatit si orice alceva doresti). Nu conteaza foarte mult cum sunt<br />
interconectate: pot sa foloseasca fibra optica sau porumbei calatori.<br />
E clar, unele alegeri sunt mai bune decat altele, mai ales daca ai prin casa<br />
pisici. <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>In mod normal conectarea a doua calculatoare impreuna nu se poate numi<br />
retea, este nevoie de trei sau mai multe pentru a deveni retea. Acest lucru<br />
seamana cu cuvantul &#8220;grup&#8221;: doi oameni inseamna doar doua persoane, pe cand<br />
trei persoane formeaza un grup. Deasemenea, retelele sunt adesea prinse<br />
impreuna, pentru a forma retele mai mari, fiecare retea mai mica  (deobicei<br />
numita o &#8220;sub-retea&#8221;) poate fi parte dintr-o retea mai mare.</p>
<p>De fapt conexiunea intre doua computere este adesea denumita &#8220;legatura de<br />
retea&#8221;. Daca este ceva cablu in spatele computer-ului tau catre alte<br />
computere atunci aceea este legatura ta de retea.</p>
<p>Sunt patru lucruri despre care suntem interesati cand vorbim despre o retea de<br />
calculatoare:</p>
<p>Marimea</p>
<p>Daca pur si simplu conectezi intre ele cele patru calculatoare de<br />
acasa, ai realizat ceea ce se numeste LAN (Local Area Network &#8211; retea<br />
locala). Daca totul este la distanta de mers pe jos, este denumit<br />
deobicei LAN, oricate masini ar fi conectate, si din orice<br />
infrastructura ar fi contruita reteaua.</p>
<p>La celalalt pol se situeaza WAN-ul (Wide Area Network &#8211; retea<br />
intinsa). Daca ai un computer la Bucuresti, Romania, altul in New<br />
York, SUA, si unul in Lhasa, Tibet, si reusesti sa le conectezi,<br />
aceasta este atunci un WAN.</p>
<p>Topologia: Forma</p>
<p>Deseneaza harta unei retele: linile sunt &#8220;legaturile din retea&#8221;,<br />
si fiecare nod este un punct. Poate ca fiecare linie duce intr-un<br />
punct central ca o stea, insemnand ca fiecare vorbeste printr-un<br />
singur punct ( o &#8220;topologie stea&#8221;):</p>
<p>o   o   o<br />
\_ | _/<br />
\|/<br />
o&#8212;&#8211;o&#8212;&#8211;o<br />
_/|\_<br />
/  |  \<br />
o   o   o</p>
<p>Sau poate ca fiecare comunica in linie, astfel:</p>
<p>o&#8212;&#8212;o&#8212;&#8212;o&#8212;&#8212;-o&#8212;&#8212;&#8211;o<br />
|                              |<br />
|                              |<br />
|                              o<br />
|                              |<br />
o                              |<br />
o</p>
<p>Sau poate ca ai trei subretele conectate printr-un singur nod:</p>
<p>o<br />
o           |  o&#8211;o&#8211;o<br />
|           |  |<br />
o&#8211;o&#8211;o&#8211;o&#8211;o  o<br />
\       |<br />
o&#8212;&#8212;o<br />
/       |<br />
o&#8211;o&#8211;o&#8211;o&#8211;o  o<br />
|           |  |<br />
o           |  o&#8211;o<br />
o</p>
<p>Vei vedea multe topologii ca acestea in realitate si multe altele mult<br />
mai complicate.</p>
<p>Fizic: Din ce este facuta reteaua.</p>
<p>Al treilea lucru de care trebuie sa fim interesati este din ce este<br />
constuita reteaua noastra. Cea mai ieftina este &#8220;sneakernet-u&#8221;, erau<br />
oamenii care transportau diskete de la un computer la altul.<br />
Sneakernet-ul este aproape intodeauna un &#8220;LAN&#8221;. Disketele costa mai<br />
putin de 1$ si o pereche de skeakers (incaltaminte care nu face<br />
zgomot) in jur de 20$.</p>
<p>Cel mai obisnuit sistem folosit pentru a conecta reteaua de acasa<br />
catre alte retele mai mari este numit &#8220;modem&#8221;<br />
(MODulator/DEModulator), care transforma o legatura telefonica intr-o<br />
legatura de retea. Transforma ceea ce transmite calculatorul in<br />
sunete, si asculta sunetele venite de la celalalt capat pe care le<br />
transforma iar in informatie pentru calculator. Dupa cum iti<br />
imaginezi acest lucru nu este din cale afara de eficient, deoarece<br />
liniile telefonice nu au fost facute pentru genul acesta de lucruri, dar<br />
este un sistem raspandit deoarece liniile telefonice sunt atat de<br />
obisnuite si ieftine: modemurile costa sub 50$ si linia telefonica<br />
200$ pe an.</p>
<p>Cel mai obisnuit sistem sa conectezi computerele intr-un LAN este sa<br />
folosesti Ethernet. Ethernetul poate fi de trei tipuri (in ordinea<br />
in care au fost realizate): Thinwire/Coax/10base2, UTP/10baseT si<br />
UTP/100baseT. Gigabit ethernet (1000baseT incepe sa sune ciudat)<br />
este in curs de a fi realizat. 10baseT este deobicei un fir coaxial<br />
negru care are din loc in loc T-uri pentru a putea fi conectate la<br />
computere, toti sunt conectati intr-o linie, linie care are la<br />
capete terminatori speciali. UTP este deobicei un cablu de culoare<br />
albastru deschis, care au doua capete prevazute cu terminatori din<br />
plastic similari celor de la telefon, care sunt conectate in<br />
dispozitivele fizice (placa ethernet, hub, etc.). Cablul costa cativa<br />
dolari metrul, si placile de retea 10baseT/10base2 (multe au<br />
connectori pentru ambele tipuri) sunt greu de gasit noi de firma.<br />
100baseT sunt de 10 ori mai rapide decat 10baseT, sunt compatibile si<br />
cu acestea, si costa cam 30$.</p>
<p>Tehnologia de varf este insa fibra optica; un fir de sticla subtire<br />
in camasa protectoare care poate fi folosita pentru a lega in retea<br />
continente. In general costa mii de dolari.</p>
<p>In mod normal numim fiecare conexiune la un nod &#8220;interfata de retea&#8221;<br />
sau pe scurt &#8220;interfata&#8221;. Linux le numeste astfel &#8220;eth0&#8243; pentru<br />
prima interfata ethernet, si &#8220;fddi0&#8243; pentru prima interfata de<br />
fibra. Comanda &#8220;/sbin/ifconfig&#8221; ni le listeaza.</p>
<p>Protocol: Cum comunica.<br />
Ultimul lucru care te intereseaza este limbajul pe care il folosesc<br />
doua noduri interconectate. Cand doua modemuri comunica unul cu altul<br />
printr-o linie telefonica, trebuie sa se puna de acord ce vor insemna<br />
fiecare sunet, astfel pur si simplu nu vor comunica. Aceasta<br />
conventie este denumita &#8220;protocol&#8221;. Pe masura ce oamenii au descoperit<br />
noi posibilitati de codare astfel incat computerele sa spuna mai<br />
multe in sunete mai scurte, noi protocoale s-au inventat; sunt cel<br />
putin o duzina de protocoale diferite, si fiecare modem va incerca<br />
cateva pana cand va gasi unul care sa fie inteles si de celalalt<br />
modem.</p>
<p>Un alt exemplu este reteaua 100baseT mentionata mai sus. Aceasta<br />
foloseste aceeasi legatura fizica  &#8220;UTP&#8221; ca si 10baseT, dar<br />
comunica de 10 ori mai rapid.</p>
<p>Aceste doua protocoale sunt denumite protocoale de nivel de legatura<br />
(link level); care determina cum este transportata informatia intre<br />
doua puncte pe conexiuni de retea individuale. Cuvantul &#8220;protocol&#8221; se<br />
refera si la alte conventii dupa cum vom vedea mai jos.</p>
<p>3. Ce este &#8220;Internetul&#8221;?</p>
<p>Internetul este o retea de tip WAN, care impanzeste intre globul: este cea<br />
mai mare retea de calculatorea existenta. &#8220;Internetworking&#8221; inseamna<br />
conectarea mai multor retele pentru a crea una mai mare, prin urmare<br />
internetul este connectarea a o mare ingramadire de subretele.</p>
<p>Asa ca acum uitandu-ne la lista de mai sus, ne punem intrebarea: care este<br />
marimea Internetului, din ce este formata fizic si care sunt protocoalele<br />
folosite?</p>
<p>Marimea am spus-o deja. Este globala.</p>
<p>Structura fizica este variata, fiecare subretea este conectata intr-un mod<br />
diferit. Incercarea de a creea o harta folositoare este sortita deci esecului.</p>
<p>Protocoalele folosite de fiecare legatura este deasemnea diferita: toate<br />
protocoalele de mai sus pentru nivel de legatura sunt folosite si multe<br />
altele.</p>
<p>3.1. Cum functioneaza Internetul?</p>
<p>Atunci aceasta intrebare se pune: cum functioneaza? Cum poate fiecare nod sa<br />
vorbeasca  altor noduri daca folosesc protocoale de nivel legatura diferite?</p>
<p>Raspunsul este simplu:  avem nevoie de un alt protocol care sa controleze cum<br />
circula informatia prin retea. Protocolul pentru nivel de lagatura descrie<br />
cum sa circule informatia intre doua noduri care sunt legate direct:<br />
protocolul pentru nivel de retea face posibila transportul informatie intre<br />
un nod si un altul peste oricat de mult legaturi de retea.</p>
<p>Pentru internet, protocolul la nivel de retea este INTERNET PROTOCOL<br />
(versiunea 4) sau &#8220;IP&#8221;. Nu este singurul protocol existent (Apple&#8221;s<br />
AppleTalk, Novell&#8221;s IPX, Digital&#8221;s DECNet and Microsoft&#8221;s NetBEUI fiind<br />
altele), dar este cel mai adoptat. A aparut o noua versiune de protocol &#8220;IP&#8221;<br />
numit IPv6, dar inca nu este atat de utilizat.</p>
<p>Asa ca pentru a transmite un mesaj dintr-un punct al globului in altul,<br />
computerul tau foloseste protocolul IP, trimite informatia la modem, care<br />
foloseste protocol pentru nivel de legatura pentru a trimite informatia<br />
modemului din celalalt capat, modem care se afla probabil intr-un rack de<br />
modemuri, care trimite informatia catre un alt nod, nod care la randul sau<br />
trimite catre altul, si tot asa. Un nod care face lagatura intre doua sau<br />
mai multe retele este denumit &#8220;ruter&#8221;: acesta va avea cate o interfata<br />
pentru fiecare retea.</p>
<p>Numim aceast sir de protocoale o &#8220;stiva de protocoale&#8221;, de obicei desenata<br />
asa:</p>
<p>[ Aplicatia: Primeste poze ]      [ Nivelul aplicatie: transmite poze ]<br />
|                                          ^<br />
v                                          |<br />
[ TCP: are grija de trasport ]          [ TCP: are grija de trasport ]<br />
|                                          ^<br />
v                                          |<br />
[ IP: are grija de routare ]          [ IP: are grija de routare ]<br />
|                                          ^<br />
v                                          |<br />
[ Link: doar pentru conexiune directa ]  [ Link: doar pentru conexiune directa ]<br />
|                                          |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+</p>
<p>Deci, in diagrama, vedem cum netscape (aplicatia din stanga sus) acceseaza<br />
niste poze de pe un server web (aplicatia din dreapta sus). Pentru a face<br />
acest lucru aplicatia noastra foloseste nivelul TCP, protocol pentru controlul<br />
transportului: peste 90% din din traficul internet foloseste TCP, deoarece<br />
este folosit mai ales pentru serviciile web si mail.</p>
<p>Deci, Netscape-ul trimite o cerere  pentru o conexiune TCP catre serverul<br />
remote: aceasta cerere este preluata la nivel de protocol de transport TCP,<br />
care trimite mai departe cererea nivelului protocolului de retea IP, care la<br />
randul lui transmite informatia mai departe catre nivelul protocolului de<br />
legatura.</p>
<p>La celalat capat nivelul protocolului de legatura inainteaza informatia catre<br />
nivelul protocolului IP, care  vede ca informatia este destinata<br />
computer-ului respectiv (daca nu va inainta informatia nivelului de legatura<br />
pentru ca informatia sa ajunga la urmatorul nod), care inainteaza informatia<br />
nivelului protocolului de transport TCP, care o inainteaza server-ului,<br />
respectiv aplicatiei.</p>
<p>Deci avem urmatoarele trei puncte:</p>
<p>1. Aplicatia (Netscape, sau serveru din capatul celalalt) decide cu cine anume<br />
doreste sa vorbeasca si ce anume doreste sa trimita</p>
<p>2. Nivelul de transport trimite pachete speciale pentru a incepe conversatia<br />
cu celalalt capat si apoi impacheteaza informatia intr-un &#8220;pachet&#8221; TCP: un<br />
pachet este doar un termen pentru o bucata de date care trece printr-o<br />
retea. Nivelul de transport TCP paseaza acest pachet catre nivelul de retea<br />
IP: apoi transmite in continuare pana cand celalat capat la nivel de<br />
transport TCP transmite receptionarea pachetului. Acest mecanism este numita<br />
&#8220;retransmitere&#8221;, si are o multime de reguli complexe care controleaza cand sa<br />
transmita, cat sa astepte, etc. Ii da deasemenea fiecarui pachet o multime<br />
de numere, pentru ca la celalalt capat sa fie sortate in ordinea corecta.</p>
<p>3. La nivel de retea IP  se ia in considerare destinatia pachetului si<br />
se decide urmatorul nod catre care sa se transmita pachetul. Aceasta operatie<br />
este numita in mod simplu &#8220;rutare&#8221;(routing), si difera de la foarte simplu<br />
(daca nu ai decat un singur modem si nici o alta interfata de retea,<br />
pachetele ar trebui sa iasa numai prin acea interfata) pana la extrem de<br />
complex (daca ai 15 retele complexe conectata direct prin tine).</p>
<p>4. Aceast lucru numit IP</p>
<p>Asadar rolul nivelului de legatura IP este sa realizeze cum sa &#8220;ruteze&#8221;<br />
pachetele catre destinatia finala. Pentru ca acest lucru sa fie posibil,<br />
fiecare interfata din retea trebuie sa aiba o &#8220;adresa IP&#8221;. Aceast adresa<br />
este formata din patru numere separate prin puncte, cum ar fi<br />
&#8220;167.216.245.249&#8243;. Fiecare numar trebuie sa fie cuprins intre 0 si 255.</p>
<p>Interfetele in aceeasi retea au tendinta sa aiba adrese Ip vecine. De<br />
exemplu &#8220;1.1.1.19&#8243; sta chiar langa sistemul cu adresa IP &#8220;1.1.1.20&#8243;. Deasemenea<br />
nu uita ca un ruter este un nod cu interfete pentru mai mult de o retea,<br />
asa ca ruter-ul va avea cate o adresa Ip pentru fiecare interfata.</p>
<p>Asa ca nivelul de retea IP al kernelului tine un tabel cu &#8220;rute&#8221; diferite,<br />
punand la dispozitie calea pentru a ajunge la grupuri variate de adrese IP.<br />
Cea mai simpla dintre rute este numita &#8220;ruta default&#8221;: daca nici o alta ruta<br />
nu se potriveste aceasta este calea pe care o iau pachetele. Poti vedea o<br />
lista a acestor rute cu ajutorul comenzii &#8220;/sbin/route&#8221;.</p>
<p>Rutele fie indica o legatura, fie un nod particular care este conectat la o<br />
alta retea. De exemplu, cand suni la ISP, ruta default va fi catre legatura<br />
cu modemul, deorece acolo este punctul de acces catre intreaga lume.</p>
<p>Modemul<br />
Modemul lui          ISP-ului ~~~~~~~~~~~~<br />
Rusty                     {            }<br />
o&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;o { Internetul   }<br />
{            }<br />
~~~~~~~~~~~~</p>
<p>Dar daca ai un sistem care este in permanenta conectat la lumea din afara,<br />
este putin mai complicat. In diagrama de mai jos, sistemul meu poate sa<br />
comunica in mod direct cu computerele lui Paul si Tridge, si cu firewall-ul,<br />
dar este necesar ca sistemul meu sa stie ca pachetele care trebuiesc livrate<br />
restului lumii trebuie sa se indrepte catre firewall care le va pasa mai<br />
incolo. Aceasta inseamna ca vei avea doua rute: una care sa zica &#8220;daca<br />
destinatia este in reteaua mea trimite informatia direct acolo&#8221; si apoi o<br />
ruta default care sa spuna &#8220;in caz contrar, trimite-o catre firewall&#8221;.</p>
<p>o  Masina de lucru<br />
|    a lui Tridge      ~~~~~~~~~~~~<br />
Masina de lucru        |                     {            }<br />
a lui Rusty  o&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;o&#8211;{  Internetul  }<br />
|            Firewall {            }<br />
|                      ~~~~~~~~~~~~<br />
o  Masina de lucru<br />
a lui Paul</p>
<p>4.1. Grupuri de adrese IP: Netmask-uri</p>
<p>Mai este un ultim detaliu: exista o notatie standard pentru grupuri de adrese<br />
IP, uneori numita &#8220;adresa de retea&#8221;. La fel cum un numar de telefon poate fi<br />
impartit in prefix si restul, la fel putem divide o adresa IP intr-un prefix<br />
de retea si restul.</p>
<p>Oamenii obisnuiau sa vorbeasca despre &#8220;reteaua 1.2.3&#8243;, insemnand toate cele<br />
256 de adrese de la 1.2.3.0 la 1.2.3.255. si daca asta nu era o retea destul<br />
de mare ar fi putut sa vorbeasca despre &#8220;reteaua 1.2&#8243; care inseamna toate<br />
adresele de la 1.2.0.0 la 1.2.255.255.</p>
<p>In mod normal nu scriem  &#8220;1.2.0.0-1.2.255.255&#8243;. In loc scriem prescurtat<br />
&#8220;1.2.0.0/16&#8243;. Notatia ciudata &#8220;/16&#8243; (numita netmask) cere o mica explicatie.</p>
<p>Fiecare numar despartit prin puncte intr-o adresa IP este defapt un numar<br />
binar format din 8 cifre (00000000 la 11111111): le scriem in format zecimal<br />
pentru a putea fi mai usor de citit. &#8220;/16&#8243; inseamna ca primele 16 cifre<br />
binare reprezinta adresa retelei, cu alte cuvinte partea &#8220;1.2&#8243; este reteaua.<br />
(tine minte fiecare numar reprezinta 8 cifre binare). Aceasta inseamna ca<br />
orice adresa care incepe cu &#8220;1.2&#8243; face parte din aceasta retea: &#8220;1.2.3.4&#8243; si<br />
&#8220;1.2.5.22&#8243; fac parte din aceasta retea, dar &#8220;1.3.4.2&#8243; nu.</p>
<p>Pentru a face viata mai usoara, in mod normal folosim retele care au<br />
netmask &#8220;/8&#8243;, &#8220;/16&#8243; si &#8220;/24&#8243;. De exemplu, &#8220;10.0.0.0/8&#8243; este o retea imensa<br />
care contine orice adresa de la 10.0.0.0 la 10.255.255.255 (peste 16 milioane<br />
de adrese!). &#8220;10.0.0.0/16&#8243; este mai mica, continand adresele doar de la<br />
10.0.0.0 la 10.0.255.255. &#8220;10.0.0.0/24&#8243; este si mai mica detinand adresele<br />
de la 10.0.0.0 la 10.0.0.255.</p>
<p>Pentru a face lucrurile si mai confuze, mai este un mod prin care putem sa<br />
scriem netmask-urile. Putem sa le scriem ca adrese IP:</p>
<p>10.0.0.0/255.0.0.0</p>
<p>In sfarsit, nu valoreaza nimic faptul ca cea mai mare adresa dintr-o retea<br />
este rezervat ca &#8220;adresa de broadcast&#8221;, care poate fi folosita pentru a<br />
transmite un mesaj catre toate host-urile din retea.</p>
<p>Mai jos este un tabel cu netmask-uri:</p>
<p>Forma       Forma           Numarul de      Comentarii<br />
scurta      lunga           masini maxim</p>
<p>/8      /255.0.0.0         16,777,215  numita in trecut retea de clasa A<br />
/16     /255.255.0.0       65,535      numita in trecut retea de clasa B<br />
/17     /255.255.128.0     32,767<br />
/18     /255.255.192.0     16,383<br />
/19     /255.255.224.0     8,191<br />
/20     /255.255.240.0     4,095<br />
/21     /255.255.248.0     2,047<br />
/22     /255.255.252.0     1,023<br />
/23     /255.255.254.0     511<br />
/24     /255.255.255.0     255         numita in trecut retea de clasa C<br />
/25     /255.255.255.128   127<br />
/26     /255.255.255.192   63<br />
/27     /255.255.255.224   31<br />
/28     /255.255.255.240   15<br />
/29     /255.255.255.248   7<br />
/30     /255.255.255.252   3</p>
<p>5. Nume de computere si Adrese IP</p>
<p>In concluzie orice interfata de pe fiecare nod are o adresa IP. Foarte repede<br />
s-a constatat ca oamenii retin destul de greu numerele, asa ca s-a hotarat<br />
(la fel ca la numerele de telefon) sa avem un director cu nume. Dar cum<br />
folosim computere oricum, este mai simplu sa punem computerele sa gaseasca<br />
numele in mod automat.</p>
<p>Prin urmare avem DNS, sistemul de nume al domeniilor. Sunt noduri cu adrese IP<br />
bine cunoscute pe care programele le pot interoga trimitand nume pentru a<br />
primi adrese IP. Aproape toate programele pe care le folosesti pot realiza<br />
aceasta interogare, de asta poti pune &#8220;www.linuxcare.com&#8221; in Netscape in loc<br />
de &#8220;167.216.245.249&#8243;.</p>
<p>Bineinteles, ai nevoie de adresele de retea a cel putin unuia dintre aceste<br />
&#8220;servere de nume&#8221;: in mod normal aceste adrese se gasesc in fisierul<br />
&#8220;/etc/resolv.conf&#8221;.</p>
<p>Cum interogarile si raspunsurile DNS sunt relativ mici (1 pachet de fiecare),<br />
protocolul TCP nu este folosit: acesta pune la dispozitia retransmisie<br />
automata, ordonare a pachetelor si o siguranta a conexiunii, dar cu costul<br />
trimiterii de pachete in plus in retea. De aceea folosim foarte simplul<br />
protocol UDP (protocol pentru datagrame utilizator), care nu ofera extra<br />
facilitatile pe care le ofera TCP si de care nu avem nevoie.</p>
<p>6. Servici diferite: Email, Web, FTP, DNS</p>
<p>Intr-un exemplu anterior, am arata cum Netscape trimite o cerere TCP catre un<br />
server de web care ruleaza pe un alt nod. Dar sa ne imaginam ca acel nod care<br />
este si server de web ruleaza si server de email, un server de ftp si un<br />
server DNS, cum stie nodul pentru ce server este conexiunea TCP?</p>
<p>Aici TCP si UDP au conceptul de &#8220;port&#8221;. Fiecare pachet precizat in el &#8220;portul<br />
destinatie&#8221; care spune pentru ce serviciu este destinat pachetul. De exemplu,<br />
portul 25 TCP este pentru server-ul de mail, si portul 80 TCP este server-ul<br />
de web (deasemenea cateodata poti sa intalnesti servere web pe porturi<br />
diferite). O lista a porturile poate fi gasita in &#8220;/etc/services&#8221;.</p>
<p>Deasemenea, daca doua ferestre Netscape, amandoua acceseaza parti diferite din<br />
acelasi site web, cum face sistemul linux pe care ruleaza Netscape sa sorteze<br />
pachetele care se intorc de la server?</p>
<p>Aici intervine &#8220;portul sursa&#8221;: fiecarei conexiune noua TCP ii se atribuie un<br />
nou port sursa, asa ca sunt separate, chiar daca se duc spre aceeasi<br />
adresa destinatie IP si acelasi port destinatie. In mod normal primul port<br />
sursa alocat va fi 1024 si creste odata cu trecerea timpului.</p>
<p>7. Interfete dialup: PPP</p>
<p>Cand suni cu modemul tau la un ISP, si se conecteaza la modemul lor, kernelul<br />
nu incepe pur si simplu sa trimita pachete IP prin conexiune. Exista un<br />
protocol numit PPP (point-to-point protocol),  care este folosit pentru a<br />
negocia cu celalalt capat inainte de a se permite trimiterea oricaror pachete.<br />
Acesta este folosit de catre ISP pentru identificarea celui care a sunat: pe<br />
sistemul tau linux, un program numit  &#8220;daemon PPP&#8221; se ocupa cu partea ta de<br />
negociere.</p>
<p>Pentru ca in lume sunt atatia utilizatori de dial-up, de obicei acestia nu<br />
au propria lor adresa IP: cele mai multe ISP-uri iti vor aloca una din<br />
adresele lor cand te vei conecta (daemonul PPP va negocia acest lucru). Aceasta<br />
este adesea numita &#8220;adresa IP dinamica&#8221;, diferita fata de &#8220;adresa IP statica&#8221;<br />
care este cazul normal cand ai propria ta conexiune permanenta. In mod normal<br />
aceasta adresa este determinata de modem, data urmatoare cand te conectezi,<br />
probabil ca vei nimeri alt modem, si astfel vei avea alta adresa IP.</p>
<p>8. Cum arata pachetele</p>
<p>Pentru cei foarte curiosi iata o descriere a structurii unui pachet. Sunt mai<br />
multe aplicatii care captureaza pachetele care intra sau care ies dintr-un<br />
sistem linux: cel mai comun este &#8220;tcpdump&#8221; (care intelege mai multe<br />
protocoale decat TCP), dar unul mai fain este &#8220;ethereal&#8221;. Aceste aplicatii<br />
sunt numite &#8220;snifere de pachete&#8221;.</p>
<p>Inceputul fiecarui pachet contine informatii cum ar fi destinatia, sursa,<br />
tipul pachetului, si alte detalii administrative. Aceasta parte a unui pachet<br />
este numita &#8220;header&#8221;. Restul pachetului, ce contine datele propriu-zise, este<br />
in mod uzual numit &#8220;corpul pachetului&#8221;.</p>
<p>Asa ca orice pachet IP incepe cu un &#8220;header IP&#8221;: in marime de cel putin 20<br />
bytes. Arata cam asa (aceasta diagrama fu furata cu nerusinare din RFC 791<br />
(nu de catre traducator:))):</p>
<p>.&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-.<br />
|Version|  IHL  |Type of Service|          Total Length         |<br />
|&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|         Identification        |Flags|      Fragment Offset    |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|  Time to Live |    Protocol   |         Header Checksum       |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|                       Source Address                          |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|<br />
|                    Destination Address                        |<br />
&#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221;</p>
<p>Campurile importante sunt Protocol, care indica daca pachetul este de tip TCP<br />
(numarul 6), un pachet UDP (numar 17) sau alceva, adresa IP sursa, si adresa<br />
IP destinatie.</p>
<p>Acum, daca acel camp referitor protocolului spune ca pachetul este TCP, atunci<br />
imediat un header TCP va urma imediat header-ului IP: header-ul TCP este<br />
deasemenea de cel putin 20 bytes marime:</p>
<p>.&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-.<br />
|          Source Port          |       Destination Port        |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|                        Sequence Number                        |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|<br />
|                    Acknowledgment Number                      |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+-+-+-+-+-+-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|  Data |           |U|A|P|R|S|F|                               |<br />
| Offset| Reserved  |R|C|S|S|Y|I|            Window             |<br />
|       |           |G|K|H|T|N|N|                               |<br />
|&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+-+-+-+-+-+-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|           Checksum            |         Urgent Pointer        |<br />
&#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221;</p>
<p>Cele mai importante campuri sunt aici campurile reprezentand portul sursa si<br />
portul destinatie care determina catre ce serviciu este destinat pachetul<br />
(sau, in cazul pachetelor replica, de la care serviciu provine). Numerele<br />
&#8220;sequence&#8221; si &#8220;acknowledgment&#8221; sunt folosite pentru a tine o ordine in<br />
pachete si pentru a spune celuilalt capat ce pachete au fost primite.<br />
Flag-urile ACK, SYN, RST si FIN (scrise pe verticala) sunt biti unici<br />
folositi pentru negocierea deschiderii (SYN) sau inchiderii (RST sau FIN)<br />
conexiunilor.</p>
<p>Dupa acest header urmeaza mesajul real pe care il trimite aplicatia (corpul<br />
pachetului). Un pachet normal are pana la 1500 bytes: aceasta inseamna ca cel<br />
mai mare spatiu pe care il poate ocupa datele este de 1460 bytes (20 bytes<br />
header-ul IP, 20 bytes header-ul TCP): peste 97%.</p>
<p>9. Sumar</p>
<p>In concluzie internetul modern foloseste pachete IP pentru a comunica, si<br />
cele mai multe dintre aceste pachete folosesc TCP pentru controlul conexiunii.<br />
Noduri speciale denumite &#8220;rutere&#8221; conecteaza micile retele in retele mai<br />
mari, si paseaza pachetele catre destinatia lor finala. Marea majoritatea a<br />
computerelor sunt parte doar dintr-o retea (au doar o singura interfata),<br />
spre deosebire de rutere.</p>
<p>Fiecare interfata are o adresa IP unica, care seamana cu &#8220;1.2.3.4&#8243;:<br />
interfetele in aceeasi retea vor avea adrese IP inrudite, cu acelasi<br />
inceput, la fel cum telefoanele dintr-o anumita zona au acelasi prefix.<br />
Adresele de retea sunt asemanatoare adreselor IP,  urmate insa de semnul &#8220;/&#8221;<br />
si un numar pentru a se specifica portiunea din acea adresa care reprezinta<br />
prefixul, de exemplu &#8220;1.12.0.0/24&#8243; inseamna ca primele 3 grupuri de cifre<br />
reprezinta adresa de retea, fiecare cifra reprezinta 8 biti.</p>
<p>Masinile au asignate nume de catre  serviciul de nume pe domenii: programele<br />
interogheaza serverele de nume adrese IP, furnizand acestora nume de genul:<br />
&#8220;www.lug.ro&#8221;. Aceasta adresa IP este apoi folosita ca adresa IP<br />
destinatie pentru a vorbi cu acel nod.</p>
<p>Rusty este destul de nepriceput pentru a scrie documente, in special pentru<br />
incepatori.</p>
<p>Enjoy!</p>
<p>Rusty.</p>
<p>10. Multumiri</p>
<p>Multumiri lui Alison, pentru ca mi-a spus in cel mai frumos mod posibil ce<br />
tampenii am scris in versiunile de inceput.</p>
<p>11. Index</p>
<p>o  &#8220;100baseT&#8221;</p>
<p>o  &#8220;10base2&#8243;</p>
<p>o  &#8220;10baseT&#8221;</p>
<p>o  &#8220;Broadcast address&#8221; &#8211; adresa de broadcast</p>
<p>o  &#8220;Coax, Coaxial cable&#8221;</p>
<p>o  &#8220;Computer network&#8221; &#8211; retea de computere</p>
<p>o  &#8220;Default route&#8221; &#8211; ruta default</p>
<p>o  &#8220;Destination port&#8221; &#8211; port destinatie</p>
<p>o  &#8220;DNS, Domain Name Service&#8221; &#8211; serviciu de nume pe domenii DNS</p>
<p>o  &#8220;Dynamic IP address&#8221;- adresa IP dinamica</p>
<p>o  &#8220;Ethernet&#8221;</p>
<p>o  &#8220;Fiber&#8221; &#8211; fibra</p>
<p>o  &#8220;Gigabit Ethernet&#8221;</p>
<p>o  &#8220;Hop&#8221;</p>
<p>o  &#8220;Hub&#8221;</p>
<p>o  &#8220;Internet&#8221;</p>
<p>o  &#8220;IP, Internet Protocol&#8221;</p>
<p>o  &#8220;IP address&#8221; &#8211; adresa ip</p>
<p>o  &#8220;IP header&#8221; &#8211; header IP</p>
<p>o  &#8220;IPv4, IP version 4&#8243;</p>
<p>o  &#8220;IPv6, IP version 6&#8243;</p>
<p>o  &#8220;LAN, Local Area Network&#8221; &#8211; retea locala</p>
<p>o  &#8220;Link-level protocol&#8221; &#8211; protocol de nivel de legatura</p>
<p>o  &#8220;Modem&#8221;</p>
<p>o  &#8220;Name server&#8221; &#8211; server de nume</p>
<p>o  &#8220;Netmask&#8221; &#8211; netmask</p>
<p>o  &#8220;Network address, network mask&#8221; &#8211; adresa de retea, mask de retea</p>
<p>o  &#8220;Network interface, interface&#8221; &#8211; interfata de retea, interfata</p>
<p>o  &#8220;Network link&#8221; &#8211; legatura de retea</p>
<p>o  &#8220;Network protocol, protocol&#8221; &#8211; protocol de retea, protocol</p>
<p>o  &#8220;Node&#8221; &#8211; nod</p>
<p>o  &#8220;Packet body&#8221; &#8211; corp al pachetului</p>
<p>o  &#8220;Packet header&#8221; &#8211; header al pachetului</p>
<p>o  &#8220;Packet sniffer&#8221; &#8211; snifer de pachete</p>
<p>o  &#8220;Packet&#8221; &#8211; pachet</p>
<p>o  &#8220;Port, TCP port, UDP port&#8221; &#8211; port, port TCP, port UDP</p>
<p>o  &#8220;PPP, Point-to-Point Protocol&#8221;</p>
<p>o  &#8220;PPP daemon&#8221; &#8211; daemon PPP</p>
<p>o  &#8220;Protocol stack&#8221; &#8211; stiva de protocoale</p>
<p>o  &#8220;Retransmission&#8221; &#8211; retransmitere</p>
<p>o  &#8220;Route&#8221; &#8211; ruta</p>
<p>o  &#8220;Router&#8221; &#8211; ruter</p>
<p>o  &#8220;Routing&#8221; &#8211; rutare</p>
<p>o  &#8220;Sneakernet&#8221;</p>
<p>o  &#8220;Source port&#8221; &#8211; port sursa</p>
<p>o  &#8220;Star-topology&#8221; &#8211; topologie in stea</p>
<p>o  &#8220;Static IP address&#8221; &#8211; adresa IP statica</p>
<p>o  &#8220;Sub-network&#8221; &#8211; sub-retea</p>
<p>o  &#8220;TCP, Transmission Control Protocol&#8221; TCP, protocol cu controlul<br />
transportului</p>
<p>o  &#8220;TCP header&#8221; &#8211; header TCP</p>
<p>o  &#8220;Terminator&#8221; &#8211; terminator</p>
<p>o  &#8220;Topology&#8221; &#8211; topologie</p>
<p>o  &#8220;UDP, User Datagram Protocol&#8221; &#8211; UDP, protocol pentru datagrame<br />
utilizator</p>
<p>o  &#8220;UTP, Unshielded Twisted Pair&#8221;</p>
<p>o  &#8220;WAN, Wide Area Network&#8221; &#8211; retea intinsa</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=169</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPCHAINS pentru Linux. HOWTO</title>
		<link>http://resurse-educationale.uv.ro/?p=165</link>
		<comments>http://resurse-educationale.uv.ro/?p=165#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:36:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Servers]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[chains]]></category>
		<category><![CDATA[conexiuni]]></category>
		<category><![CDATA[dmz]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[interfata]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[retea]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[udp]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=165</guid>
		<description><![CDATA[traducere ver. 0.2 de catre Riddl Documentul a fost tradus intr-un ritm foarte alert. Nu este o traducere profesionala. Deasemenea nu este o traducere mot-a-mot. Am incercat sa respect versiunea originala. Multumiri lui Gushterul. Daca gasiti greseli sau aveti obervatii &#8230; <a href="http://resurse-educationale.uv.ro/?p=165">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>traducere ver. 0.2 de catre Riddl<img title="More..." src="http://resurse-educationale.uv.ro/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /><img title="More..." src="http://resurse-educationale.uv.ro/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /><br />
Documentul a fost tradus intr-un ritm foarte alert.<br />
Nu este o traducere profesionala. Deasemenea nu este o traducere mot-a-mot.<br />
Am incercat sa respect versiunea originala.<br />
Multumiri lui Gushterul. Daca gasiti greseli sau aveti obervatii dati-mi<br />
un mail pentru Riddl la &#8220;discutii at gmx dot net&#8221;. Nu uitati sa precizati<br />
numele documentului.<br />
Multumesc anticipat.<br />
Pentru ultima versiune a acestei traduceri verifica<br />
&lt;http://www.securityorg.net/docs/&gt;.</p>
<p>Lecturare placuta!</p>
<p>______________________________________________________________________<br />
Rusty Russell<br />
v1.0.8, Tue Jul  4 14:20:53 EST 2000</p>
<p>Acest document descrie cum sa obtii, instalezi si configurezi software-ul<br />
ipchains pentru realizarea de firewall sub Linux, precum si cateva<br />
posibilitati de folosire al acestuia.<br />
______________________________________________________________________</p>
<p>Cuprins</p>
<p>1. Introducere<br />
1.1. La ce foloseste?<br />
1.2. De ce?<br />
1.3. Cum?<br />
1.4. De unde?<br />
2. Bazele teoretice ale filtrarii de pachete<br />
2.1. La ce foloseste?<br />
2.2. De ce?<br />
2.3. Cum?<br />
2.3.1. Un kernel ce are compilat suport pentru filtrare de<br />
pachete<br />
2.3.2. ipchains<br />
2.3.3. Crearea regulilor permanente<br />
3. Sunt derutat! Rutare, masqueradare, forwardare de pachete, ipautofw&#8230;.<br />
3.1. Ghidul de trei linii al lui Rusty privind masqueradarea<br />
3.2. Promovare gratuita: regulile WatchGuard<br />
3.3. Firewall-uri obisnuite<br />
3.3.1. Retea privata: Proxy-uri traditionale<br />
3.3.2. Retea privata: Proxy-uri transparente<br />
3.3.3. Retea privata: Masquerading<br />
3.3.4. Retea publica<br />
3.3.5. Servicii interne limitate<br />
3.4. Mai multe informatii despre masquerading</p>
<p>4. Filtrul de pachete<br />
4.1. Cum travereseaza pachetele filtrele<br />
4.1.1. Folosirea ipchains<br />
4.1.2. Ce vei vedea cand porneste computerul<br />
4.1.3. Operatii pentru o singura regula<br />
4.1.4. Optiuni de filtrare<br />
4.1.4.1. Specificarea adreselor IP sursa si destinatie<br />
4.1.4.2. Specificarea inversa<br />
4.1.4.3. Specificarea protocolului<br />
4.1.4.3.1. Specificarea porturilor TCP si UDP<br />
4.1.4.3.2. Specificarea tipului si codului<br />
ICMP<br />
4.1.4.4. Specificarea interfetei<br />
4.1.4.5. Specificarea doar a pachetelor TCP SYN<br />
4.1.4.6. Despre fragmente<br />
4.1.5. Efectele filtrarii de pachete<br />
4.1.5.1. Specificarea unei tinte<br />
4.1.5.2. Logarea pachetelor<br />
4.1.5.3. Schimbarea tos (type of service)<br />
4.1.5.4. Marcarea unui pachet<br />
4.1.5.5. Operatii pentru un chain<br />
4.1.5.6. Crearea unui chain nou<br />
4.1.5.7. Stergerea unui chain<br />
4.1.5.8. Stergerea tuturor regulilor unui chain<br />
4.1.5.9. Listarea regulilor unui chain<br />
4.1.5.10. Resetarea (aducerea la 0) a counter-elor<br />
4.1.5.11. Setarea policy-ului<br />
4.1.6. Operatii pentru masquerading<br />
4.1.7. Verificarea unui pachet<br />
4.1.8. Mai multe reguli dintr-o data si ceea ce se intampla<br />
atunci<br />
4.2. Exemple folositoare<br />
4.2.1. Folosirea ipchains-save<br />
4.2.2. Folosirea ipchains-restore<br />
5. Diverse<br />
5.1. Cum sa iti organizezi regulile firewall-ului<br />
5.2. Ce anume sa nu filtrezi spre afara<br />
5.2.1. Pachete icmp<br />
5.2.2. Conexiunile TCP catre servere DNS (servere de nume)<br />
5.2.3. FTP<br />
5.3. Filtrarea Pingului Mortii<br />
5.4. Filtrarea pentru Teardrop si Bonk<br />
5.5. Filtrarea fragmentelor in masa<br />
5.6. Schimbarea regulilor din firewall<br />
5.7. Cum realizez protectia impotriva spoofarii IP<br />
5.8. Proiecte mai avansate<br />
5.8.1. SPF: filtrare dupa starea pachetului (stateful packet<br />
filtering)<br />
5.8.2. &#8220;Hack-ul&#8221; ftp-data al lui Michael Hasenstein<br />
5.9. Planuri de viitor<br />
6. Probleme des intalnite<br />
6.1. ipchains -L ingheata!<br />
6.2. Specificarea inversa nu poate fi realizata!<br />
6.3. Masqueradarea/Forwardarea nu se realizeaza!<br />
6.4. Tinta -j REDIR nu merge!<br />
6.5. Specificare mai multor interfete (ex &#8220;-i ppp+&#8221;) nu merge!<br />
6.6. TOS nu merge!<br />
6.7. ipautofw si ipportfw nu merg!<br />
6.8. xosview este stricat!<br />
6.9. Segmentation Fault din cauza tintei &#8220;-j REDIRECT&#8221;!<br />
6.10. Nu pot preciza valori de timeout pentru masquerading!<br />
6.11. Vreau sa filtrez IPX!<br />
7. Un exemplu serios<br />
7.1. Topologia retelei<br />
7.2. Scopurile<br />
7.3. Inainte de realizarea filtrarii de pachete<br />
7.4. Filtrarea de pachete pentru pachetele directe<br />
7.4.1. Trecerea spre alte chain-uri din chain-ul forward<br />
7.4.2. Definirea chain-ului icmp-acc<br />
7.4.3. Reguli pentru conexiuni reteaua interna ==&gt; DMZ<br />
(servere)<br />
7.4.4. Reguli pentru conexiuni din reteaua externa ==&gt; DMZ<br />
(servere)<br />
7.4.5. Reguli pentru conexiuni din reteaua interna ==&gt; reteaua<br />
externa<br />
7.4.6. Reguli pentru conexiuni din DMZ ==&gt; reteaua interna<br />
7.4.7. Reguli pentru conexiuni din DMZ ==&gt; reteaua externa<br />
7.4.8. Reguli pentru conexiuni din reteaua externa ==&gt; reteaua<br />
interna<br />
7.4.9. Filtrul de pachete pentru insusi sistemul care este<br />
ruter<br />
7.4.9.1. Interfata catre reteaua externa<br />
7.4.9.2. Interfata catre reteaua de servere (DMZ)<br />
7.4.9.3. Interfata catre reteaua interna<br />
7.5. In final<br />
8. Anexa: Diferente intre ipchains si ipfwadm<br />
8.1. Tabel pentru informare rapida<br />
8.2. Exemple de comenzi ipfwadm translatate in ipchains<br />
9. Anexa: Folosirea scriptului ipfwadm-wrapper<br />
10. Anexa: Multumiri.<br />
10.1. Traduceri</p>
<p><span id="more-165"></span></p>
<p>______________________________________________________________________</p>
<p>1. Introducere</p>
<p>Aceste este IPCHAINS-HOWTO pentru Linux; citeste capitolul &#8220;De unde?&#8221;<br />
pentru site-ul principal care contine ultima veriune. Ar trebui sa citesti<br />
deasemenea NET-3-HOWTO. IP-Masquerading HOWTO, PPP-HOWTO, Ethernet-HOWTO si<br />
Firewall HOWTO ar fi deasemenea interesante de citit (la fel ar putea sa fie<br />
intesante si FAQ-ul alt.fan.bigfoot).</p>
<p>Daca filtrarea de pachete este ok pentru tine, citeste sectiunea &#8220;De ce?&#8221;,<br />
sectiunea &#8220;Cum?&#8221;, si citeste printre randuri sectiunea &#8220;Reguli pentru<br />
firewall&#8221;.</p>
<p>Daca faci trecerea de la ipfwadm, citeste sectiunea &#8220;Introducere&#8221;,&#8221;Cum?&#8221;,<br />
anexa &#8220;Diferente intre ipchains si ipfwadm&#8221; si sectiunea &#8220;Folosirea<br />
scriptului ipfwadm-wrapper&#8221;.</p>
<p>1.1. La ce foloseste?</p>
<p>Ipchains pentru linux este o rescriere a codului pentru firewall IPv4 pentru<br />
Linux (care a fost in mare preluat de la BSD) si o rescriere a ipfwadm, care<br />
este o rescriere a ipfw apartinand BSD-ului. Ipchains este cerut pentru<br />
administrarea filtrelor de pachete in kernelurile Linux versiunea 2.1.102 si<br />
mai avansate.</p>
<p>1.2. De ce?</p>
<p>Deoarece: codul mai vechi pentru firewall nu intelegea fragmentele, avea<br />
counter-e pe 32 biti (cel putin pe Intel), nu suporta alte protocoale in afara<br />
TCP, UDP si ICMP, nu putea sa realizeze schimbari mari rapid, nu stia sa<br />
specifice reguli inverse, are cateva inflorituri, si poate fi greu de manevrat<br />
(facandu-l predispus la erori din partea utilizatorului).</p>
<p>1.3. Cum?</p>
<p>In mod curent codul pentru filtrarea de pachete este inclus in kernelurile de<br />
la versiunea 2.1.102.. Pentru versiunile 2.0 va trebui sa aplici un patch<br />
pe care il downloadezi de pe pagina web. Daca kernelul 2.0 este mai recent<br />
decat patch-ul respectiv, ar trebui sa mearga; aceasta parte de cod din kernel<br />
este destul de stabila (ex. patch pentru kernel 2.0.34 este bun si pentru<br />
kernel 2.0.35). Deoarece patch-ul pentru ver. 2.0 este incompatibil cu<br />
patch-urile pentru ipportfw si ipautofw, nu recomand aplicarea acestuia decat<br />
in cazul in care ai mare nevoie de functionalitatea oferita de ipchains.</p>
<p>1.4. De unde?</p>
<p>Pagina oficiala poate fi gasita in trei locuri:<br />
Multumiri lui Penguin Computing  &lt;http://netfilter.filewatcher.org/ipchains&gt;<br />
Multumiri echipei SAMBA &lt;http://www.samba.org/netfilter/ipchains&gt;<br />
Multumiri lui Jim Pick   &lt;http://netfilter.kernelnotes.org/ipchains&gt;.</p>
<p>Exista o lista de discutii pentru rapoarte privind bug-uri, discutii,<br />
dezvoltare si folosire. Subscrie-te pe aceasta lista trimitand la subscribe at<br />
east.balius.com un mesaj avand in corpul mesajului &#8220;subscribe ipchains-list&#8221;.<br />
Pentru a trimite mail la toti cei care sunt subscrisi pe lista foloseste<br />
adresa ipchains-list at east.balius.com.</p>
<p>2. Bazele teoretice ale filtrarii de pachete</p>
<p>2.1. La ce foloseste?</p>
<p>Intreg traficul dintr-o retea este transmis sub forma de pachete. De exemplu,<br />
downloadarea unui fisier (sa zicem, in marime de 50K) va cauza primirea a in<br />
jur de 36 de pachete cu o marime de 1460 bytes fiecare.</p>
<p>Partea de inceput a oricarui pachet spune unde se duce, de unde a venit, tipul<br />
pachetului, si alte asemenea detalii. Aceasta parte de inceput a pachetului se<br />
numeste header. Restul pachetului care contine informatia propriu-zisa este<br />
numita body (corp).</p>
<p>Unele protcoale, cum ar fi TCP, care este folosit pentru trafic web, mail, si<br />
conectarea de la distanta pe alte sisteme, folosesc termenul de &#8220;conexiune&#8221; &#8211;<br />
inainte de transmiterea oricaror informatii cu date propriu-zise, pachete<br />
diferite (cu headere speciale) sunt schimbate, spunand  &#8220;Vreau sa ma<br />
conectez&#8221;, &#8220;OK&#8221;, si &#8220;Mersi&#8221;. Apoi pachete normale sunt schimbate.</p>
<p>Un filtru de pachete este o portiune de cod care se uita la headerul<br />
pachetelor pe masura ce acestea trec, si decid soarta intregului pachet. Poate<br />
sa decida sa ignore pachetul (ignora pachetul ca si cum nu ar fi fost<br />
primit), accepta pachetul (lasa pachetul sa intre), sau sa respinga pachetul<br />
(asemanator cu ignorarea pachetul cu deosebira ca spune sistemului care l-a<br />
trimis acest lucru).</p>
<p>Sub linux, filtrarea de pachete este compilata in kernel, si sunt cateva<br />
smecherii pe care le putem face cu pachetele, dar ramane valabil principiul<br />
general al examinarii headerelor si determinarea sortii pachetului.</p>
<p>2.2. De ce?</p>
<p>Control. Securitate. Vigilenta.</p>
<p>Control:<br />
cand folosesti un sistem Linux pentru a-ti conecta reteaua interna<br />
la o alta retea (sa spunem, Internet) ai posibilitatea de a permite<br />
un anumit tip de trafic, si sa refuzi pe altele. De exemplu,<br />
header-ul contine adresa destinatie a unui pachet, asa ca poti<br />
preveni pachetele sa se duca spre o anumita parte a retelei<br />
exterioare. Ca un alt exemplu, folosesc Netscape pentru accesarea<br />
arhivelor Dilbert. Sunt reclame pe pagina de la doubleclick.net, si<br />
Netscape imi pierde timpul incarcandu-le. Spunand filtrului de pachete<br />
sa nu permita pachete de la sau spre nici una din adresele detinute<br />
de catre doubleclick.net rezolva aceasta problema (cu toate acestea<br />
sunt modalitati mai bune pentru aceasta: vezi Junkbuster).</p>
<p>Securitate:<br />
cand sistemul tau Linux este singurul intre haosul Internetului<br />
si reteaua ta ordonata si delicata, este placut sa stii ca poti<br />
sa restrictionezi ceea ce vine tropaind la usa. De exemplu, poti sa<br />
permiti la tot sa iasa din retea, dar ai putea fi ingrijorat de<br />
binecunoscutul &#8220;Ping al Mortii&#8221; venind de la persoanele din afara rau<br />
intentionate. Ca un alt exemplu, s-ar putea sa nu doresti ca<br />
persoanele din afara sa se telnet-uiasca pe sistemul tau Linux, chiar<br />
daca toate conturile tale au parole. Poate doresti (ca multi oameni)<br />
sa fii un observator  al Internet-ului, si nu server (de voie, sau in<br />
alt mod). Pur si simplu nu lasa pe nimeni sa se conecteze, punand<br />
fitrul de pachete sa respinga pachetele folosite la initierea de<br />
conexiuni.</p>
<p>Vigilenta:<br />
uneori o masina prost configurata in reteaua locala va decide sa<br />
arunce pachete spre lumea din afara. Este dragut sa spui filtrului de<br />
pachete sa te anunte daca se intampla ceva anormal; poate poti face<br />
ceva cu privire la acel lucru, sau poate esti doar curios.</p>
<p>2.3. Cum?</p>
<p>2.3.1. Un kernel ce are compilat suport pentru filtrare de pachete</p>
<p>Ai nevoie de un kernel care sa aiba suport compilat pentru IP firewall chains.<br />
Poti sa iti dai seama daca ai kernelul care iti trebuie verificand existenta<br />
fisierului &#8220;/proc/net/ip_fwchains&#8221;. Daca acesta exista, este ok.</p>
<p>Daca nu, trebuie sa compilezi un kernel cu suport pentru IP firewall chains.<br />
Intai downloadeaza sursele kernelului pe care il doresti. Daca ai sursele<br />
pentru kernel peste versiunea 2.1.102, inclusiv, nu va fi necesar sa ii aplici<br />
patch. In caz contrar, aplica un patch de pe pagina web listata mai sus, si<br />
realizeaza configuratia cum este detaliat mai jos. Daca nu stii cum sa faci<br />
asta nu intra in panica &#8212; citeste Kernel-HOWTO.</p>
<p>Optiunile de configurarea ce trebuie facute pentru kernel ver 2.0 sunt:</p>
<p>______________________________________________________________________<br />
CONFIG_EXPERIMENTAL=y<br />
CONFIG_FIREWALL=y<br />
CONFIG_IP_FIREWALL=y<br />
CONFIG_IP_FIREWALL_CHAINS=y<br />
______________________________________________________________________</p>
<p>Pentru kernelurile ver. 2.1 sau 2.2:</p>
<p>______________________________________________________________________<br />
CONFIG_FIREWALL=y<br />
CONFIG_IP_FIREWALL=y<br />
______________________________________________________________________</p>
<p>Comanda ipchains cumunica kernelului si ii spune ce pachete sa filtreze. Mai<br />
jos este prezentat cum vei realiza filtrarea de pachete.</p>
<p>2.3.2. ipchains</p>
<p>Comanda ipchains introduce si sterge reguli din portiunea din kernel<br />
referitoare la filtrarea de pachete. Aceasta inseamna ca orice vei realiza va<br />
fi pierdut dupa rebootare, citeste &#8220;Crearea regulilor permanente&#8221; pentru a<br />
vedea cum sa faci regulile permanente.</p>
<p>ipchains inlocuieste ipfwadm, care a fost folosit pentru vechiul cod de<br />
firewall IP. Exista o multime de scripturi folositoare de pe site-ul ftp al<br />
ipchains-ului:</p>
<p>http://netfilter.filewatcher.org/ipchains/ipchains-scripts-1.1.2.tar.gz</p>
<p>Aceasta arhiva contine un script numit ipfwadm-wrapper care iti permite sa<br />
realizezi filtrarea de pachete exact cum era inainte. Probabil ca nu ar trebui<br />
sa folosesti acest scipt in afara de cazul cand doresti o cale rapida de a<br />
upgrada un sistem ce foloseste ipfwadm (este mai incet, nu verifica<br />
argumentele, etc.). In acest caz nu ai nevoie nici de acest HOWTO.</p>
<p>Vezi anexa &#8220;Diferente intre ipchains si ipfwadm&#8221; si anexa &#8220;Folosirea scriptului<br />
ipfwadm-wrapper&#8221; pentru mai multe detalii  privind ipfwadm.</p>
<p>2.3.3. Crearea regulilor permanente</p>
<p>Regulile curente ale firewall-ului se afla in kernel, si de aceea vor fi<br />
pierdute la rebootare. Recomand folosirea scripturile &#8220;ipchains-save&#8221; si<br />
&#8220;ipchains-restore&#8221; pentru a face regulile permanente. Pentru a realiza<br />
aceasta, seteazati regulile, apoi ruleaza (ca root):</p>
<p># ipchains-save &gt; /etc/ipchains.rules<br />
#</p>
<p>Creaza un script astfel:</p>
<p>#! /bin/sh<br />
# Script to control packet filtering.</p>
<p># If no rules, do nothing.<br />
[ -f /etc/ipchains.rules ] || exit 0</p>
<p>case &#8220;$1&#8243; in<br />
start)<br />
echo -n &#8220;Turning on packet filtering:&#8221;<br />
/sbin/ipchains-restore &lt; /etc/ipchains.rules || exit 1<br />
echo 1 &gt; /proc/sys/net/ipv4/ip_forward<br />
echo &#8220;.&#8221;<br />
;;<br />
stop)<br />
echo -n &#8220;Turning off packet filtering:&#8221;<br />
echo 0 &gt; /proc/sys/net/ipv4/ip_forward<br />
/sbin/ipchains -F<br />
/sbin/ipchains -X<br />
/sbin/ipchains -P input ACCEPT<br />
/sbin/ipchains -P output ACCEPT<br />
/sbin/ipchains -P forward ACCEPT<br />
echo &#8220;.&#8221;<br />
;;<br />
*)</p>
<p>echo &#8220;Usage: /etc/init.d/packetfilter {start|stop}&#8221;<br />
exit 1<br />
;;<br />
esac</p>
<p>exit 0</p>
<p>Asigura-te ca acest script este rulat devreme in procesul de incarcare al<br />
sistemului.  In cazul meu (Debian 2.1), am facut o legatura simbolica numita<br />
&#8220;S39packetfilter&#8221; in directorul &#8220;/etc/rcS.d&#8221; (acesta va fi rulat inainte de<br />
S40network).</p>
<p>3. Sunt derutat! Rutare, masqueradare, forwardare de pachete, ipautofw&#8230;.</p>
<p>Acest HOWTO este dedicat filtrarii de pachete. Aceasta inseamna a decide ce<br />
pachete sa lasi sa treaca sau nu. Cu toate acestea, Linux-ul fiind terenul de<br />
joaca al hackerilor probabil ca doresti sa realizezi mai multe de atat.</p>
<p>O problema este faptul ca aceeasi comanda &#8220;ipchains&#8221; este folosita sa<br />
controlezi masqueradingul cat si realizarea de proxy transparent, deasemenea<br />
aceastea sunt diferite fata de filtrarea de pachete (implementarea Linux<br />
curenta le pune una langa celelalte,  lasand impresia ca sunt strans<br />
inrudite).</p>
<p>Realizarea de masquerading si proxy transparent sunt detaliate in HOWTO-uri<br />
separate, si auto forwardarea si fowardarea de porturi sunt controlate de<br />
comenzi diferite, dar cum multa lume ma intreaba despre acestea, voi include o<br />
multime de scenarii posibile si voi indica momentul cand trebuie aplicat<br />
fiecare. Meritele de securitate ale fiecarei configuratii nu va fi discutat<br />
aici.</p>
<p>3.1. Ghidul de trei linii al lui Rusty privind masqueradarea</p>
<p>Se presupune ca interfata ta externa este &#8220;ppp0&#8243;. Foloseste comanda &#8220;ifconfig&#8221;<br />
pentru a afla interfata, si modifica dupa caz:</p>
<p># ipchains -P forward DENY<br />
# ipchains -A forward -i ppp0 -j MASQ<br />
# echo 1 &gt; /proc/sys/net/ipv4/ip_forward</p>
<p>3.2. Promovare gratuita: regulile WatchGuard</p>
<p>Poti sa cumperi firewall-uri gata facute. Unul excelent este FireBox de la<br />
WatchGuard. Este excelent pentru ca imi place, este sigur, este bazat pe<br />
Linux, si pentru ca au finantat suportul pentru ipchains cat si pentru noul<br />
cod de firewall (pentru 2.4). Pe scurt, WatchGuard ma platesc pe mine pentru a<br />
avea ce manca in timp ce muncesc pentru voi. Asa ca ia in considere produsul<br />
lor.</p>
<p>http://www.watchguard.com &lt;http://www.watchguard.com&gt;</p>
<p>3.3. Firewall-uri obisnuite</p>
<p>Te ocupi de littlecorp.com. Ai o retea interna, si o conexiune PPP catre<br />
internet (de pe ruterul firewall.littlecorp.com care are adresa 1.2.3.4).<br />
Folosesti ethernet pentru reteaua locala, si sistemul tau se numeste &#8220;myhost&#8221;.<br />
Sectiunea care urmeaza va ilustra diferite scenarii care sunt obisnuite.<br />
Cititi cu atentie, pentru ca sunt fiecare usor diferite.</p>
<p>3.3.1. Retea privata: Proxy-uri traditionale</p>
<p>In acest scenariu, pachetele din reteaua privata nu vor ajunge pe Internet si<br />
viceversa. Adresele IP pentru reteaua privata ar trebui sa fie asignate din<br />
clasa de IP-uri pentru retele private conform cu RFC1918 (ex: 10.*.*.*,<br />
172.16.*.*-172.31.*.* or 192.168.*.*).</p>
<p>Singurul mod prin care te conecteazi la Internet este prin conectare la<br />
firewall, care este singurul sistem comun celor doua retele, pe care le<br />
conecteaza. Pentru a realiza acest lucru folosesti (pe firewall) o aplicatie<br />
numita proxy (exista proxy-uri pentru FTP, www, telnet, RealAudio, Usenet News<br />
si alte servicii). Citeste Firewall HOWTO.</p>
<p>Orice servicii pe care le doresti accesibile de pe Internet trebuie sa fie pe<br />
firewall. (insa vezi &#8220;Servicii interne limitate&#8221;).</p>
<p>Exemplu: Permiterea acesului web din reteaua privata catre Internet</p>
<p>1. Reteaua privata are asignate adresele 192.168.1.*, myhost fiind sistemul cu<br />
adresa 192.168.1.100, iar interfata ethernet a firewall-ului avand asignata<br />
adresa 192.168.1.1.</p>
<p>2. Un proxy pentru web (ex. squid) este instalat si configurat pe firewall, sa<br />
spunem ca asculta pe portul 8080.</p>
<p>3. Netscape-ul din reteaua privata este configurat sa foloseasca drept proxy<br />
portul 8080 de pe firewall.</p>
<p>4. DNS nu trebuie sa fie configurat in reteaua privata.</p>
<p>5. DNS trebuie sa fie configurat pe firewall.</p>
<p>6. Nici o ruta default (gateway) nu trebuie sa fie configurata in reteaua<br />
privata.</p>
<p>Netscape de pe myhost citeste http://slashdot.org</p>
<p>1. Netscape se conecteaza la portul 8080 de pe firewall, folosind portul 1050<br />
de pe myhost. Intreaba de pagina web a adresei &#8220;http://slashdot.org&#8221;.</p>
<p>2. Proxy-ul se uita dupa numele &#8220;slashdot.org&#8221;, si gaseste 207.218.152.131.<br />
Apoi deschide o conexiune catre acea adresa IP (folosind portul 1025 de pe<br />
interfata externa a firewall-ului), si intreaba serverul web (portul 80) de<br />
pagina web.</p>
<p>3. Pe masura ce primeste pagina web prin conexiunea cu serverul de web,<br />
firewall-ul copiaza informatia catre conexiunea cu Netscape.</p>
<p>4. Netscape afiseaza pagina</p>
<p>Din punctul de vede al slashdot.org, conexiunea este facuta de la 1.2.3.4,<br />
portul 1025 catre 207.218.152.131 (slashdot.org), portul 80. Din punctul de<br />
vedere al myhost conexiunea este realizata de la 192.168.1.100 (myhost),<br />
portul 1050, catre 192.168.1.1 (interfata ethernet a firewall-ului), portul<br />
8080.</p>
<p>3.3.2. Retea privata: Proxy-uri transparente</p>
<p>In acest scenariu, pachetele din reteaua privata nu vor ajunge pe Internet si<br />
viceversa. Adresele IP pentru reteaua privata ar trebui sa fie asignate din<br />
clasa de IP-uri pentru retele private conform cu RFC1918 (ex: 10.*.*.*,<br />
172.16.*.*-172.31.*.* or 192.168.*.*).</p>
<p>Singurul mod prin care te conectezi la Internet este prin conectare la<br />
firewall, care este singurul sistem comun celor doua retele, pe care le<br />
conecteaza. In acest scop rulezi o aplicatie (pe firewall) numita proxy<br />
transparent; kernelul schimba destinatia pachetele din reteaua privata care ar<br />
fi trebuit sa fie trimise spre Internet catre proxy-ul transparent. (modifica<br />
rutarea).</p>
<p>Proxy transparent insemna ca hosturile din reteaua privata nu au nevoie sa<br />
shtie ca este implicat un proxy.</p>
<p>Orice servicii pe care le doresti accesibile de pe Internet trebuie sa fie pe<br />
firewall. (insa vezi &#8220;Servicii interne limitate&#8221;).</p>
<p>Exemplu: Permiterea acesului web din reteaua privata catre Internet</p>
<p>1. Reteaua privata are asignate adresele 192.168.1.*, myhost fiind sistemul cu<br />
adresa 192.168.1.100, iar interfata ethernet a firewall-ului avand asignata<br />
adresa 192.168.1.1.</p>
<p>2. Un proxy de web transparent (cred ca sunt patch-uri pentru squid, pentru ai<br />
permite sa lucreze in acest mod, sau incerca &#8220;transproxy&#8221;) este instalat si<br />
configurat pe firewall, sa spunem ca asculta pe portul 8080.</p>
<p>3. Kernelului ii este spus, folosind ipchains, sa redirecteze conexiunile<br />
catre portul 80 spre proxy.</p>
<p>4. Netscape din reteaua privata este configurat sa se conecteze direct.</p>
<p>5. DNS trebuie sa fie configurat in reteaua privata (trebuie sa rulezi un<br />
server DNS pentru reteaua locala, ca un proxy, pe firewall).</p>
<p>6. Ruta default (gateway) trebuie sa fie configurata in reteaua privata,<br />
pentru a trimite pachetele catre firewall.</p>
<p>Netscape de pe myhost citeste http://slashdot.org.</p>
<p>1. Netscape rezolva numele &#8220;slashdot.org&#8221; in adresa 207.218.152.131. Apoi<br />
deschide o conexiune catre aceea adresa folosind portul local 1050, si<br />
cere serverului de web (portul 80) pagina web.</p>
<p>2. Pe masura ce pachetele de la myhost (portul 1050) catre slashdot.org<br />
(portul 80, trec prin firewall, ele sunt redirectate catre proxy-ul<br />
transparent ce asculta pe portul 8080. Proxy-ul transparent deschide o<br />
conexiune (folosind portul local 1025) catre 207.218.152.131, portul 80 (care<br />
este adresa reala catre care se indreptau pachetele originale).</p>
<p>3. Pe masura ce primeste pagina web prin conexiunea cu serverul de web,<br />
firewall-ul copiaza informatia catre conexiunea cu Netscape.</p>
<p>4. Netscape afiseaza pagina.</p>
<p>Din punctul de vedere al slashdot.org, conexiunea este facuta de la 1.2.3.4<br />
(interfata PPP a firewall-ului), portul 1025 catre 207.218.152.131<br />
(slashdot.org), portul 80. Din punctul de vedere al myhost conexiunea este<br />
realizata de la 192.168.1.100 (myhost), portul 1050, catre 207.218.152.131<br />
(slashdot.org) portul 80, dar defapt vorbeste cu proxy-ul transparent.</p>
<p>3.3.3. Retea privata: Masquerading</p>
<p>In acest scenariu, pachetele din reteaua privata nu vor ajunge pe Internet<br />
fara o modificare in prealabil si viceversa. Adresele IP pentru reteaua<br />
privata ar trebui sa fie asignate din clasa de IP-uri pentru retele private<br />
conform cu RFC1918 (ex: 10.*.*.*, 172.16.*.*-172.31.*.* sau 192.168.*.*).</p>
<p>In loc sa folosim un proxy, folosim o facilitate speciala a kernelului numita<br />
&#8220;masquerading&#8221;. Masqueradarea recreeaza pachetele pe masura ce acestea trec<br />
prin firewall, in asa fel incat intodeauna par ca vin de la insusi firewall-ul.<br />
Apoi rescrie raspunsurile in asa fel incat apar ca si cum ar veni de la insasi<br />
destinatia originala.</p>
<p>Masquerading are module speciale pentru unele protocoale mai speciale, cum ar<br />
fi FTP, RealAudio, Quake, etc. Pentru protocoale pentru care nu se poate<br />
realiza acest lucru, facilitatea &#8220;forwardare automata&#8221; care poate manipula<br />
unele dintre aceste protocoale prin realizarea automata de forwardare pentru<br />
porturile necesare. Vezi &#8220;ipportfw&#8221; (kernelurile 2.0) sau &#8220;ipmasqadm&#8221;<br />
(kernelurile 2.1).</p>
<p>Orice servicii pe care le doresti accesibile de pe Internet trebuie sa fie pe<br />
firewall. (insa vezi &#8220;Servicii interne limitate&#8221;).</p>
<p>Exemplu: Permiterea accesului la web din reteaua privata catre Internet.</p>
<p>1. Adresa privata are asignate adresele 192.168.1.*, myhost fiind sistemul cu<br />
adresa 192.168.1.100, iar interfata ethernet a firewall-ului avand asignata<br />
adresa 192.168.1.1.</p>
<p>2. Firewall-ul este configurat sa realizeze masquerading pentru pachetele care<br />
pleaca din reteaua privata spre Internet, portul 80.</p>
<p>3. Netscape este configurat sa se conecteze direct.</p>
<p>4. DNS trebuie configurat corect in reteaua privata.</p>
<p>5. Firewall-ul ar trebui sa fie ruta default (gateway) pentru reteaua privata.</p>
<p>Netscape de pe myhost citeste http://slashdot.org</p>
<p>1. Netscape rezolva numele &#8220;slashdot.org&#8221; in adresa IP 207.218.152.131. Apoi<br />
deschide o conexiune catre acea adresa IP, folosind portul local 1050, si cere<br />
serverului de web (portul 80) pagina web.</p>
<p>2. Pe masura ce pachetele de la myhost (portul 1050) catre slashdot.org<br />
(portul 80) trec prin firewall, acestea sunt rescrie pentru a parea ca vin de<br />
pe interfata PPP a firewall-ului, portul 65000. Firewall-ul are o adresa<br />
internet valida (1.2.3.4) asa ca pachetele replica de la slashdot.org sunt<br />
rutate inapoi corect.</p>
<p>3. Pe masura ce pachetele de la slashdot.org (portul 80) sunt rutate inapoi<br />
catre firewall.littlecorp.com (portul 65000), acestea sunt rescrise pentru a<br />
se inapoia catre myhost, portul 1050. Aceasta este reala magie a<br />
masqueradingului: tine minte cand rescrie pachetele ce ies pentru ca sa poata<br />
rescrie pachetele replica pe masura ce acestea vin.</p>
<p>4. Netscape afiseaza pagina.</p>
<p>Din punctul de vedere al slashdot.org, conexiunea este realizata de la adresa<br />
IP 1.2.3.4 (interfata PPP a firewall-ului) portul 65000, catre<br />
207.218.152.131 (slashdot.org) portul 80.</p>
<p>3.3.4. Retea publica</p>
<p>In acest scenariu,  reteaua ta personala este parte din Internet: pachetele<br />
pot sa circule fara nici o modificare intre ambele retele. Adresele IP ale<br />
retelei interne trebuie sa fie asignate printr-o cerere pentru un bloc de<br />
adrese IP, astfel incat restul Internetului sa stie cum sa ruteze pachetele<br />
catre aceasta. Aceasta implica o conexiune permanenta.</p>
<p>In acest caz, filtrul de pachete este folosit pentru a decide ce pachete sa fie<br />
forwardate intre reteaua ta si restul Internetului, de exemplu sa permiti<br />
restului Internetului accesul numai la serverele interne de web.</p>
<p>Exemplu: Permiterea accesului web din reteaua personala catre Internet</p>
<p>1. Reteaua interna are adresele IP asignate conform cu blocul de adrese IP pe<br />
care le-ai inregistrat. (sa zicem 1.2.3.*)</p>
<p>2. Firewall-ul este configurat sa permita traficul.</p>
<p>3. Netscape este configurat sa se conecteze direct.</p>
<p>4. DNS trebuie sa fie corect configurat in reteaua ta.</p>
<p>5. Firewall-ul trebuie sa fie ruta default (gateway) pentru reteaua ta.</p>
<p>Netscape de pe myhost citeste http://slashdot.org</p>
<p>1. Netscape rezolva numele &#8220;slashdot.org&#8221; in adresa IP 207.218.152.131.<br />
Deschide apoi o conexiune catre aceea adresa IP, folosind portul local 1050,<br />
si cere serverului de web (portul 80) pagina web.</p>
<p>2. Pachetele trec prin firewall-ul tau la fel cum trec prin multe alte rutere<br />
intre tine si slashdot.org.</p>
<p>3. Netscape afiseaza pagina.</p>
<p>Exista doar o singura conexiune: de la 1.2.3.4 (myhost) portul 1050, la<br />
207.218.152.131 (slashdot.org) portul 80.</p>
<p>3.3.5. Servicii interne limitate</p>
<p>Sunt cateva lucruri pe care le poti intreprinde pentru a permite accesul din<br />
afara Internetului catre servicile interne, decat sa rulezi acele servici pe<br />
firewall. Aceast lucru este posibil printr-o solutie pentru conexiunile<br />
externe in gen proxy sau masquerading.</p>
<p>Cea mai simpla abordare este sa rulezi aplicatia &#8220;redirector&#8221;, care este un<br />
proxy care asteapta o conexiune pe un port dat, si apoi deschide o conexiune<br />
interna catre un host intern, pe un anumit port, si copiaza datele intre cele<br />
doua conexiuni. Din punctul de vedere al Internetului, conexiunea este facuta<br />
pe firewall. Din punctul de vedere al serverului intern, conexiunea este<br />
facuta intre interfata interna a firewall-ului si serverul intern.</p>
<p>O alta cale (care, pentru kernel ver. 2.0 este necesar un patch pentru<br />
ipportwf, sau un kernel versiunea 2.1 sau peste) este sa folosesti forwardarea<br />
de porturi din kernel. Aceasta realizeaza acelasi lucru ca &#8220;redirector&#8221;<br />
intr-un mod diferit: kernelul rescrie pachetele pe masura ce ele trec,<br />
schimbandu-le adresa si portul destinatie catre un host si port anumit din<br />
reteaua interna. Din punctul de vedere al Internetului conexiunea este facuta<br />
cu firewall-ul. Din punctul de vedere al serverului intern, conexiunea este<br />
una directa intre serverul intern si hostul din Internet.</p>
<p>3.4. Mai multe informatii despre masquerading</p>
<p>David Ranch a scris un excelent nou HOWTO despre masquerading, care se<br />
suprapune mult peste acest HOWTO. Poti sa gasesti acest HOWTO la</p>
<p>http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html</p>
<p>Pagina oficiala pentru Masquerading este la:</p>
<p>http://ipmasq.cjb.net &lt;http://ipmasq.cjb.net&gt;</p>
<p>4. Filtrul de pachete</p>
<p>Aceasta sectiune descrie tot ceea ce trebuie sa stii cu adevarat pentru a<br />
realiza un filtru de pachete ca sa iti indeplineasca cerintele.</p>
<p>4.1. Cum travereseaza pachetele filtrele</p>
<p>Kernelul porneste cu trei liste de reguli; aceste liste se numesc chain-uri.<br />
Aceste trei chain-uri incluse default sunt: input, output si forward. Cand un<br />
pachet soseste (sa zicem, prin placa Ethernet) kernelul foloseste chain-ul<br />
input pentru a decide soarta pachetului. Daca trece de acest chain, kernelul<br />
decide unde sa trimita pachetul (aceasta este numita rutare). Daca este<br />
destinat pentru o alta masina, pachetul trece prin chain-ul forward. In final,<br />
chiar inainte ca un pachet sa plece, kernelul verifica chain-ul output.</p>
<p>Un chain este o lista cu reguli ce trebuie verificate. Fiecare regula spune<br />
&#8220;daca headerul pachetului arata asa, atunci iata ce sa faci cu pachetul&#8221;. Daca<br />
regula nu se potriveste cu pachetul, atunci urmatoarea regula din chain este<br />
examinata. In final, daca nu mai exista reguli de verificat, atunci kernelul<br />
verifica politica (policy-ul) pe care o are chain-ul. Intr-un sistem in care<br />
se pune baza pe securitate, de obicei politica este sa ignore pachetul sa sa<br />
ii dea reject.</p>
<p>Pentru fanii ASCII, aceasta este calea pe care o parcurge un pachet:</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
|            ACCEPT/                              interfata lo |<br />
v           REDIRECT                  _______                  |<br />
&#8211;&gt; C &#8211;&gt; S &#8211;&gt; ______ &#8211;&gt; D &#8211;&gt; ~~~~~~~~ &#8211;&gt;|Chain-ul|&#8212;&gt; _________&#8211;&gt;<br />
h     a  |Chain-ul|    e    {Decizie  }  |forward |    |Chain-ul |ACCEPT<br />
e     n  |input   |    m    {de rutare}  |________|&#8212;&gt;|output   |<br />
c     i  |________|    a     ~~~~~~~~        |     | -&gt;|_________|<br />
k     t       |        s       |             |     | |     |<br />
s     y       |        q       |             v     | |     |<br />
u     |       v        e       v            DENY/  | |     v<br />
m     |     DENY/      r   Proces Local    REJECT  | |   DENY/<br />
|     v    REJECT      a       |                   | |  REJECT<br />
|   DENY               d       &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; |<br />
v                      e &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
DENY</p>
<p>Iata o descriere a fiecarui pas:</p>
<p>Checksum: Acesta este un test pentru a vedea daca pachetul a fost corupt in<br />
vreun fel. Daca da, atunci este ignorat.</p>
<p>Normalitate (sanity): Acest test defapt exista inainte fiecarui chain, dar<br />
acela care se face inainte chain-ului input este cel mai important. Pachetele<br />
malformate ar putea sa incurce codul de verificare al regulilor, aceastea sunt<br />
ignorate aici (daca acest lucru se intampla, un mesaj este trimis catre<br />
syslog).</p>
<p>Chain-ul input: Acesta este primul chain din firewall unde pachetul va fi<br />
verificat. Daca decizia chain-ului nu este DENY (ignora) sau REJECT, pachetul<br />
isi continua drumul.</p>
<p>Demasquerade:Daca pachetul este o replica la un pachet asupra caruia a fost<br />
realizata masquerading, se realizeaza asupra acestuia demasquradare, iar apoi<br />
se indreapta direct catre chain-ul output. Daca nu folosesti Masquerading IP,<br />
poti sa stergi mental aceasta din diagrama.</p>
<p>Decizie de rutare: Campul privind destinatia este examinat de catre codul ce<br />
realizeaza rutarea, pentru a decide daca pachetul trebuie sa se indrepte catre<br />
un proces local (vezi &#8220;Procesul local&#8221; de mai jos) sau forwardat catre o<br />
masina la distanta (vezi &#8220;Chain-ul forward&#8221; de mai jos).</p>
<p>Procesul local: Un proces ruland pe masina poate primi pachete dupa pasul<br />
deciziei privind rutarea pachetelor, si poate trimite pachete (care trec prin<br />
pasul deciziei rutarii, apoi travereseaza chain-ul output)</p>
<p>Interfata lo: Daca pachetele unui proces local, sunt destinate pentru un<br />
proces local, acestea vor iesi prin chain-ul output cu interfata setata &#8220;lo&#8221;,<br />
apoi se vor intoarce prin chain-ul input cu interfata deasemenea &#8220;lo&#8221;.<br />
Interfata &#8220;lo&#8221; este numita interfata loopback.</p>
<p>local: daca pachetul nu a fost creat de un proces local, atunci chain-ul<br />
forward este verificat, in caz contrar pachetul se duce catre chain-ul output.</p>
<p>Chain-ul forward: Acest chain este traversat de orice pachet care incearca sa<br />
treaca prin aceasta masina catre alta.</p>
<p>Chain-ul output: Acest chain este traversat de toate pachetele chiar inainte<br />
de a iesi.</p>
<p>4.1.1. Folosirea ipchains</p>
<p>In primul rand, asigurate ca ai versiunea de ipchains la care se refera acest<br />
document.</p>
<p>$ ipchains &#8211;version<br />
ipchains 1.3.9, 17-Mar-1999</p>
<p>Observatie: recomand 1.3.4 (care nu are optiuni in format lung, cum ar fi<br />
&#8220;&#8211;sport&#8221;), 1.3.8 sau mai avansate; acestea fiind foarte stabile.</p>
<p>ipchains are o destul de detaliata pagina de manual (man ipchains), si daca<br />
ai nevoie de mai multe detalii in particular, poti sa verifici interfata<br />
pentru programare (man 4 ipfw), sau fisierul net/ipv4/ip_fw.c in sursele<br />
kernelului 2.1.x, care este (bineinteles) o sursa de incredere.</p>
<p>Mai exista deasemenea o fisa de referinta rapida creata de catre Scott Bronson<br />
in arhiva surselor, in format US Letter PostScript(TM) si A4.</p>
<p>Sunt mai multe lucruri diferite pe care le poti face cu ipchains. In primul<br />
rand comenzi prin care poti administra un chain intreg. Incepi cu trei<br />
chain-uri compilate default pe care nu le poti sterge: input, output si<br />
forward.</p>
<p>1. Creaza un chain nou (-N).<br />
2. Sterge un chain gol (-X).<br />
3. Schimba policy-ul (politica) pentru unul din chain-urile default (-P).<br />
4. Listeaza regulile dintr-un chain (-L).<br />
5. Sterge regulile dintr-un chain (-F)<br />
6. Reseteaza counter-ele pentru pachete si bytes pentru toate regulile<br />
dintr-un chain (-Z).</p>
<p>Sunt mai multe moduri de a manipula regulile dintr-un chain:</p>
<p>1. Adauga o noua regula intr-un chain (-A).<br />
2. Introduce o noua regula la o pozitia anumita intr-un chain (-I) (default<br />
adauga la inceput).<br />
3. Inlocuieste o regula la o anumita pozitie din chain (-R).<br />
4. Sterge o regula la o anumita pozitie din chain (-D).<br />
5. Sterge prima regula care se potriveste din chain (-D).</p>
<p>Sunt cateva operatii si pentru masquerading:</p>
<p>1. Listeaza conexiunile pentru care se fac in mod curent masquerading<br />
(-M -L).<br />
2. Stabileste valori de timeout pentru masquerading (-M -S). (Dar citeste si<br />
&#8220;Nu pot preciza valori de timeout pentru masquerading!&#8221;)</p>
<p>Ultima (si poate cea mai folositoare) functie iti permite sa verifici ce s-ar<br />
intampla cu un pachet dat daca ar traversa un chain dat.</p>
<p>4.1.2. Ce vei vedea cand porneste computerul</p>
<p>Inainte de rularea oricarei comenzi ipchains (fii atent, unele distributii<br />
ruleaza ipchains in scripturile de initializare), nu vor exista nici un fel de<br />
reguli in nici unul dintre chain-urile incluse default (&#8220;input&#8221;, &#8220;output&#8221; si<br />
&#8220;forward&#8221;), si fiecare din aceste chain-uri va avea un policy de ACCEPT.<br />
Aceasta inseamna ca nu exista filtrare de pachete.</p>
<p>4.1.3. Operatii pentru o singura regula</p>
<p>Acesta este unul dintre cele mai importante lucruri; manipularea regulilor.<br />
Cel mai obisnuit, vei folosi probabil comenzile de adaugare (-A) si de<br />
stergere (-D). Celelalte (-I pentru introducere si -R pentru inlocuire) sunt<br />
doar prelungiri ale comenzilor precedente.</p>
<p>Fiecare regula specifica o multime de conditii pe care un pachet trebuie sa le<br />
indeplineasca, si ce sa faca daca regulile sunt indeplinite (o &#8220;tinta&#8221;). De<br />
exemplu, s-ar putea sa doresti sa ignori toate pachetele ICMP venind de la<br />
adresa 127.0.0.1. Deci, in acest caz conditiile sunt ca protocolul sa fie<br />
ICMP si adresa sursa sa fie 127.0.0.1. Tinta noastra este &#8220;DENY&#8221;.</p>
<p>127.0.0.1 este interfata &#8220;loopback&#8221;, care exista chiar daca nu ai legatura<br />
reala la o retea. Poti folosi programul &#8220;ping&#8221; pentru a genera acest tip de<br />
pachete (pur si simplu trimite pachete ICMP de tip 8 (echo request) la care<br />
toate host-urile ar trebui sa raspunda cu pachete ICMP de tip 0 (echo replay)). Aceast program este foarte folositor pentru teste.</p>
<p># ping -c 1 127.0.0.1<br />
PING 127.0.0.1 (127.0.0.1): 56 data bytes<br />
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms</p>
<p>&#8212; 127.0.0.1 ping statistics &#8212;<br />
1 packets transmitted, 1 packets received, 0% packet loss<br />
round-trip min/avg/max = 0.2/0.2/0.2 ms<br />
# iptables -A input -s 127.0.0.1 -p icmp -j DENY<br />
# ping -c 1 127.0.0.1<br />
PING 127.0.0.1 (127.0.0.1): 56 data bytes</p>
<p>&#8212; 127.0.0.1 ping statistics &#8212;<br />
1 packets transmitted, 0 packets received, 100% packet loss<br />
#</p>
<p>Poti vedea aici ca primul ping reuseste (&#8220;-c 1&#8243; spune sa sa trimita doar un<br />
singur pachet).</p>
<p>Apoi adaugam in coada (-A) chain-ului &#8220;input&#8221;, o regula ce spune ca<br />
pentru pachetele de la 127.0.0.1 (&#8220;-s 127.0.0.1&#8243;) de tip ICMP (&#8220;-p icmp&#8221;)<br />
trebuie sa sarim la &#8220;DENY&#8221; (&#8220;-j DENY&#8221;).</p>
<p>Apoi testam regula noastra, folosind al doilea ping. Va fi o pauza pana cand<br />
programul se da batut sa astepte un raspuns care nu va veni niciodata.</p>
<p>Am putea sa stergem regula in  doua moduri. Intai, deoarece stim ca este<br />
singura regula din chain-ul input, putem folosi o stergere numarata, ca<br />
in:</p>
<p># iptables -D input 1<br />
#</p>
<p>Pentru a sterge regula cu numarul 1 din chain-ul input.</p>
<p>Al doilea mod este sa scriem comanda prin care am introdus regula -A, dar sa<br />
inlocuim -A cu -D. Aceasta este folositor cand ai un chain complex de reguli<br />
si nu doresti sa le numeri ca sa iti dai seama ca este a 37-a regula de<br />
care vrei sa scapi. In aces caz, vom folosi:</p>
<p># ipchains -D input -s 127.0.0.1 -p icmp -j DENY<br />
#</p>
<p>Sintaxa comenzii -D trebuie sa aiba exact aceleasi optiuni cum are comanda -A<br />
(sau -I, sau -R). Daca sunt reguli identice in acelasi chain, numai prima<br />
regula va fi stearsa.</p>
<p>4.1.4. Optiuni de filtrare</p>
<p>Am vazut folosirea optiunii &#8220;-p&#8221; pentru a specifica protocolul, si optiunii<br />
&#8220;-s&#8221; pentru a specifica adresa sursa, dar sunt alte optiuni pe care le putem<br />
folosi pentru a preciza caracteristici ale pachetului. Ceea ce urmeaza este<br />
un compedium complet.</p>
<p>4.1.4.1. Specificarea adreselor IP sursa si destinatie</p>
<p>Adresele IP ale sursei (&#8220;-s&#8221;) si destinatiei (&#8220;-d&#8221;) pot fi specificate in<br />
patru moduri. Cea mai obisnuita forma este sa folosesti numele complet, cum<br />
ar fi &#8220;localhost&#8221; sau &#8220;www.securityorg.net&#8221;. Cea de-a doua cale este sa<br />
specifici adresa IP cum ar fi &#8220;127.0.0.1&#8243;.</p>
<p>Cea de a treia si a patra cale permite specificarea unui grup de adrese IP,<br />
cum ar fi &#8220;199.95.207.0/24&#8243; sau &#8220;199.95.207.0/255.255.255.0&#8243;. Amandoua<br />
specifica orice adresa IP de la 199.95.207.0 pana la 199.95.207.255 inclusiv;<br />
cifrele dupa &#8220;/&#8221; spun care parti din adresa IP sunt semnificative. &#8220;/32&#8243; sau<br />
&#8220;/255.255.255.255&#8243; este default (se potriveste cu toata adresa IP). Pentru a<br />
specifica oricare adresa IP &#8220;/0&#8243; poate fi folosit, astfel:</p>
<p># ipchains -A input -s 0/0 -j DENY<br />
#</p>
<p>Aceasta este folosit in mod rar, deoarece efectul de mai sus este asemanator<br />
cu nespecificare deloc a optiunii &#8220;-s&#8221;.</p>
<p>4.1.4.2. Specificarea inversa</p>
<p>Multe optiuni, inclusiv optiunile &#8220;-s&#8221; si &#8220;-d&#8221; pot avea argumentele precedate<br />
de &#8220;!&#8221; (pronuntat &#8220;nu&#8221;) pentru a corespunde adreselor care NU sunt egale cu<br />
adresele date. De exemplu, &#8220;-s ! localhost&#8221; corespunde oricarui pachet care<br />
nu vine de la localhost.</p>
<p>4.1.4.3. Specificarea protocolului</p>
<p>Protocolul poate fi specificat prin optiunea &#8220;-p&#8221;. Protocolul poate fi un<br />
numar ( daca stii valorile numerice de protocol pentru IP) sau un nume pentru<br />
cazurile speciale de &#8220;TCP&#8221;, &#8220;UDP&#8221; sau &#8220;ICMP&#8221;. Nu conteaza daca se foloseste<br />
sau nu CAPS, asa ca &#8220;tcp&#8221; merge la fel ca si &#8220;TCP&#8221;.</p>
<p>Numele protocolului poate fi precedat de &#8220;!&#8221;, pentru a inversa, ca si &#8220;-p !<br />
tcp&#8221; pentru a specifica pachetele care nu sunt TCP.</p>
<p>4.1.4.3.1. Specificarea porturilor TCP si UDP</p>
<p>Pentru cazul special cand este specificat un protocol TCP si UDP, poate fi<br />
precizat un argument in plus insemnand portul TCP sau UDP, sau un sir<br />
(inclusiv capetele sirului) de porturi (citeste insa mai jos &#8220;Despre<br />
fragmente&#8221;). Un sir este reprezentat prin caracterul &#8220;:&#8221;, cum ar fi<br />
&#8220;6000:6010&#8243; care acopera 11 numere de porturi, de la 6000 la 6010 inclusiv.<br />
Daca limita de jos este omisa, atunci este considerata 0. Daca limita de sus<br />
este omisa, atunci este considerata 65535. Deci, pentru a specifica<br />
conexiunile TCP venind de la porturile sub 1024, sintaxa ar fi urmatoarea<br />
&#8220;-p TCP -s 0.0.0.0/0 :1023&#8243;. Numerele de porturi pot fi specificate si prin<br />
nume, exemplu &#8220;www&#8221;.</p>
<p>Observatie: sensul regulii poate fi inversat si in cazul porturilor daca se<br />
pune in fata acestui argument semnul &#8220;!&#8221;. Deci, pentru a specifica orice<br />
pachet care este pachet TCP dar nu este WWW, ai scrie astfel:</p>
<p>-p TCP -d 0.0.0.0/0 ! www</p>
<p>Este important sa realizezi ca</p>
<p>-p TCP -d ! 192.168.1.1 www</p>
<p>este foarte diferit de</p>
<p>-p TCP -d 192.168.1.1 ! www</p>
<p>Prima regula se potriveste cu toate pachetele care sunt de tip TCP, spre<br />
portul 80 si care nu au ca destinatie adresa 192.168.1.1. Iar, cea de a doua<br />
regula se potriveste cu toate pachetele de tip TCP care au ca destinatie<br />
192.168.1.1, fara sa fie spre portul 80.</p>
<p>In sfarsit, pentru regula urmatoare se potrivesc pachetele care nu au ca<br />
destinatie adresa 192.168.1.1 si nici portul 80.</p>
<p>-p TCP -d ! 192.168.1.1 ! www</p>
<p>4.1.4.3.2. Specificarea tipului si codului ICMP</p>
<p>Cand este precizat tipul de protocol ICMP, exista deasemenea argumente ce pot<br />
fi precizate in plus. ICMP nu are porturi. ICMP are un tip si un cod.</p>
<p>Poti sa le specifici folosind nume ICMP (vezi ipchains -h icmp pentru a lista<br />
aceste nume) dupa optiunea &#8220;-s&#8221;, sau ca numere insemnand tipul ICMP si codul,<br />
unde tipul urmeaza dupa optiunea &#8220;-s&#8221;, iar codul dupa optiunea &#8220;-d&#8221;.</p>
<p>Numele ICMP sunt destul de lungi: trebuie sa folosesti doar destul de multe<br />
litere astfel incat sa se deosebeasca unele de altele.</p>
<p>Iata o mica tabela pentru cele mai intalnite tipuri de pachete ICMP:</p>
<p>Numar   Nume                     Cerut de catre</p>
<p>0       echo-reply               ping<br />
3       destination-unreachable  Any TCP/UDP traffic.<br />
5       redirect                 routing if not running routing daemon<br />
8       echo-request             ping<br />
11      time-exceeded            traceroute</p>
<p>Observatie: numele ICMP nu pot fi precedate deocamdata de semnul &#8220;!&#8221;.</p>
<p>Sub nici o forma sa nu blochezi toate pachetele ICMP de tip 3! Citeste mai jos<br />
&#8220;Pachete icmp&#8221;.</p>
<p>4.1.4.4. Specificarea interfetei</p>
<p>Optiunea &#8220;-i&#8221; specifica numele interfatei cu care sa corespunda. O interfata<br />
este dispozitivul fizic prin care intra pachetul sau prin care iese pachetul.<br />
Poti folosi comanda ifconfig pentru a lista interfetele care sunt &#8220;sus&#8221;.<br />
(in stare de functionare in acel moment).</p>
<p>Interfata pentru pentru pachete ce sosesc (pachetele ce traverseaza chain-ul<br />
input) este considerata interfata prin care au intrat. In mod logic, interfata<br />
pentru pachetele care pleaca (pachetele ce traverseaza chain-ul output) este<br />
interfata prin care vor iesi. Interfata pentru pachetele ce traverseaza<br />
chain-ul forward este deasemenea interfata prin care vor iesi pachetele.</p>
<p>Este perfect valabil sa specifici o interfata care nu exista;<br />
regula nu se va potrivi cu nici un pachet pana cand interfata nu este sus.<br />
Aceasta este extrem de folositor pentru legaturi PPP de dial-up (de obicei<br />
interfete ppp0) si asemanatoare.</p>
<p>Ca un caz special, un nume de interfata terminandu-se cu &#8220;+&#8221; se va potrivi cu<br />
toate interfetele (fie ca exista sau nu) care incep cu acel sir de caractere.<br />
De exemplu pentru a specifica o regula care sa se potriveasca tuturor<br />
interfetelor PPP, optiunea -i ppp+ ar fi folosita.</p>
<p>Numele interfetei poate fi precedata de &#8220;!&#8221;, pentru a corespunde cu pachetul<br />
care nu se potriveste cu intefata specificata.</p>
<p>4.1.4.5. Specificarea doar a pachetelor TCP SYN</p>
<p>Uneori este folositor sa permiti conexiunile TCP intr-o singura directie, nu<br />
si in cealalta. De exemplu, ai putea sa permiti conexiuni catre un server<br />
extern WWW, dar nici o conexiune de la acel server.</p>
<p>Naiv ar fi sa blochezi pachetele TCP dinspre server. Din pacate, conexiunile<br />
TCP cer ca pachetele sa circule in ambele directii.</p>
<p>Solutia ar fi sa blochezi numai pachetele folosite pentru a initia<br />
conexiuni. Aceste pachete sunt numite pachete SYN (ok, tehnic sunt pachete cu<br />
flag SYN pus si cu flagurile RST si ACK nepuse, dar le numim pe scurt<br />
pachete SYN). Prin ignorarea acestor pachete, putem sa oprim aceste<br />
conexiuni.</p>
<p>Optiunea &#8220;-y&#8221; este folosita pentru aceasta; este valida numai pentru<br />
regulile in care specificam tcp ca protocol. De exemplu, pentru a specifica<br />
incercarile de conexiune de la 192.168.1.1:</p>
<p>-p TCP -s 192.168.1.1 -y</p>
<p>Aceasta optiune poate fi inversat prin precedarea &#8220;-y&#8221; cu semnul &#8220;!&#8221;, care se<br />
potriveste pentru toate pachetele care nu initiaza conexiuni.</p>
<p>4.1.4.6. Despre fragmente</p>
<p>Uneori un pachet este prea mare pentru a incape cu totul pe conexiune. Cand<br />
aceasta se intampla, pachetul este divizat in fragmente, si trimis ca pachete<br />
multiple. Celalalt capat reansambleaza aceste fragmente pentru a construi<br />
intregul pachet.</p>
<p>Problema cu fragmentele este ca unele dintre argumentele descrise mai sus (in<br />
particular portul sursa, portul destinatie, tipul ICMP, codul ICMP, flagul syn<br />
TCP) cere kernelului sa verifice inceputul pachetului, care exista numai in<br />
primul pachet.</p>
<p>Daca sistemul tau este singura conexiune catre o retea externa, atunci poti<br />
spune kernelului Linux sa reansambleze toate pachetele care trec prin el, prin<br />
compilarea kernelului cu optiunea &#8220;IP: always defragment set&#8221; egala cu &#8220;Y&#8221;.</p>
<p>In caz contrar, este important sa stii cum sunt tratate fragmentele de catre<br />
regulile de filtrare. Orice regula de filtrare care cere informatii pe care<br />
nu le avem nu se va potrivi. Aceasta inseamna ca primul fragment este tratat<br />
ca orice alt pachet. Al doilea si urmatoarele nu vor mai fi. De aceea o<br />
regula  -p tcp -s 192.168.1.1 www (specificand un port sursa &#8220;www&#8221;) nu se vor<br />
potrivi cu un fragment (altul decat primul). Nici regula opusa nu va face<br />
acest lucru -p TCP -s 192.168.1.1 ! www.</p>
<p>Oricum, poti sa specifici o regula special pentru fragmentul al doilea si<br />
urmatoarele, folosind optiunea &#8220;-f&#8221;. Evident, nu este corect sa specifici<br />
porturi TCP sau UDP, tip ICMP, cod ICMP, sau flag syn TCP, intr-o asemenea<br />
regula cu referire la fragmente.</p>
<p>Este de asemenea legal sa specifici ca o regula nu se aplica la al doilea si<br />
urmatoarele fragmente, prin precedarea lui &#8220;-f&#8221; cu &#8220;!&#8221;.</p>
<p>De obicei este considerat sigur sa lasi sa treaca al doilea si urmatoarele<br />
fragmente, deoarece filtrarea va afecta primul fragment, si de aceea previne<br />
reansamblarea pe calculatorul destinatie; cu toate acestea, sunt cunoscute<br />
bug-uri care permit caderea sistemului doar prin simpla trasnmitere de<br />
fragmente. Este decizia ta.</p>
<p>Nota pentru network-heads: pachetele cu malformatii (pachete TCP, UDP si<br />
ICMP prea scurte codului de firewall ca sa citeasca tipul portului sau codul<br />
ICMP si tipul) sunt tratate ca fragmente de asemenea. Doar fragmentele TCP<br />
care incep de la pozitia 8 sunt ignorate de catre kernel (un mesaj este trimis<br />
catre syslog, daca acest lucru se intampla). De exemplu, urmatoarea regula va<br />
ignora toate fragmentele ce au ca destinatie 192.168.1.1:</p>
<p># ipchains -A output -f -d 192.168.1.1 -j DENY<br />
#</p>
<p>4.1.5. Efectele filtrarii de pachete</p>
<p>Acum stim toate modurile in care putem sa folosim o regula pentru a se potrivi<br />
anumitor pachete. Daca un pachet se potriveste cu o regula, urmatoarele<br />
lucruri se intampla:</p>
<p>1. Counter-ul de byte pentru acea regula creste cu o valoare egala cu<br />
marimea pachetului (header si restul pachetului)<br />
2. Counter-ul de pachete pentru acea regula este incrementat.<br />
3. Daca regula o cere, informatii despre pachet sunt scrise in fisierele de<br />
log.<br />
4. Daca regula o cere, TOS al pachetului este schimbat.<br />
5. Daca regula o cere, pachetul este marcat (acest lucru nu este posibil in<br />
kernelurile ver. 2.0).<br />
6. Tinta regulii este examinata pentru a decide soarta acelui pachet.</p>
<p>Pentru varietate le voi examina in ordinea importantei.</p>
<p>4.1.5.1. Specificarea unei tinte</p>
<p>O tinta spune kernelului ce sa faca pachetului care se potriveste unei<br />
reguli. ipchains foloseste &#8220;-j&#8221; (in sensul &#8220;sare la&#8221;) pentru argumentul<br />
tintei. Numele tintei trebuie sa fie mai mic decat 8 caractere, si conteaza<br />
daca este scris cu litere mici sau mari: &#8220;RETURN&#8221; sau &#8220;return&#8221; sunt lucruri<br />
diferite.</p>
<p>Cel mai simplu caz este atunci cand nu este nici o tinta specificata. Acest<br />
tip de regula (numita uneori &#8220;accounting rule&#8221;) este folositoare cand dorim<br />
sa avem o evidenta a numarului de pachete care indeplinesc anumite conditii.<br />
Chiar daca se potriveste sau nu kernelul examineaza urmatoarea regula din<br />
chain. De exemplu, pentru a numara pachetele care vin de la 192.168.1.1:</p>
<p># ipchains -A input -s 192.168.1.1<br />
#</p>
<p>(Folosind &#8220;ipchains -L -v&#8221; putem vedea counter-ele de pachete si bytes<br />
asociate fiecarei reguli.)</p>
<p>Exista sase tinte speciale. Primele trei sunt destul de simple: ACCEPT,<br />
REJECT si DENY. ACCEPT lasa pachetul sa treaca. DENY ignora pachetul ca si<br />
cand nu ar fi fost primit. REJECT ignora pachetul, insa (daca nu a fost un<br />
pachet ICMP) trimite un pachet replica ICMP catre sursa care spune ca<br />
destinatia nu poate fi atinsa (destination unreachable).</p>
<p>Urmatoarea regula, MASQ spune kernelului sa masqueradeze pachetul. Pentru ca<br />
aceasta tinta sa poate fi folosita trebuie sa fie compilat kernelul cu suport<br />
pentru &#8220;IP Masquerading&#8221;. Pentru detalii privind masquerading citeste<br />
Masquerading-HOWTO si anexa &#8220;Diferente intre ipchains si ipfwadm&#8221;. Aceasta<br />
tinta este corecta numai pentru pachetele ce traverseaza chain-ul forward.</p>
<p>O alta tinta importnta este REDIRECT care comunica kernelului sa trimita un<br />
pachet catre un port local in loc de destinatia spre care se indrepta.<br />
Aceasta poate fi specificata doar pentru regulile in care se specifica<br />
protocolul TCP sau UDP. Optional, poate fi specificat un port, sub forma de<br />
nume sau numar, in continuare la &#8220;-j REDIRECT&#8221; care va determina ca pachetul<br />
sa fie redirectat catre un anumit port, nu spre portul spre care se indrepta.<br />
Aceasta tinta este valabila doar pentru pachetele ce traverseaza chain-ul<br />
input.</p>
<p>Ultima tinta este RETURN, care este similar cu ajungerea pachetului direct la<br />
sfarsitul chain-ului (citeste &#8220;Setarea policy-ului&#8221; de mai jos).</p>
<p>Orice alta tinta indica un chain definit de catre utilizator (cum este descris<br />
in &#8220;Operatii pentru un chain&#8221; de mai jos). Pachetul va incepe traversarea<br />
regulilor in acel chain. Daca acel chain nu decide soarta pachetului, odata<br />
traversarea terminata in acel chain, traversarea este continuata de la<br />
urmatoarea regula din chain-ul anterior.</p>
<p>Considera doua chain-uri: input (chain-ul predefinit) si test (un chain<br />
definit de catre utitlizator).</p>
<p>`input&#8217;                         `Test&#8217;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| Rule1: -p ICMP -j REJECT |    | Rule1: -s 192.168.1.1    |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|    |&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|<br />
| Rule2: -p TCP -j Test    |    | Rule2: -d 192.168.1.1    |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| Rule3: -p UDP -j DENY    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Considera un pachet TCP venind de la 192.168.1.1 si ducandu-se catre 1.2.3.4.<br />
Acesta intra in chain-ul INPUT. Rule1 nu se potriveste cu el, Rule2 se<br />
potriveste asa ca urmatoarea regula care este examinata este prima din<br />
chain-ul test. Rule1 se potriveste dar nu este specificata nici o tinta,<br />
asa ca urmatoarea regula este examinata. Rule2 nu se potriveste asa ca am<br />
ajuns la sfarsitul chain-ului. Astfel ne reintoarcem in chain-ul INPUT, unde<br />
am examinat Rule2, asa ca examinam Rule3 care nici aceasta nu se potriveste.</p>
<p>Deci calea urmata de catre pachet este:</p>
<p>v    __________________________<br />
`input&#8217;                |   /    `Test&#8217;                v<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8211;/    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|&#8212;-<br />
| Rule1                 | /|    | Rule1                |   |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|/-|    |&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|&#8212;|<br />
| Rule2                 /  |    | Rule2                |   |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;v&#8212;-<br />
| Rule3                 /&#8211;+___________________________/<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;<br />
v</p>
<p>Citeste sectiunea &#8220;Cum sa iti organizezi regulile firewall-ului&#8221; pentru<br />
modalitati efective de a folosi chain-uri definite de catre utilizator.</p>
<p>4.1.5.2. Logarea pachetelor<br />
(nt. log= jurnal,logare=scriere in fisiere de log)</p>
<p>Aceasta este un efect secundare pe care il poate avea faptul ca un pachet sa<br />
se potriveasca cu o regula, poti sa decizi ca informatii despre pachetul<br />
respectiv sa fie scris in fisierele de log prin folosirea optiunii &#8220;-l&#8221;. In<br />
mod normal nu vei dori acest lucru pentru pachetele normale, dar aceasta este<br />
o optiune folositoare in cazul unor anumite pachete.</p>
<p>Kernelul scrie aceste informatii astfel:</p>
<p>Packet log: input DENY eth0 PROTO=17 192.168.2.1:53 192.168.1.1:1025<br />
L=34 S=0&#215;00 I=18 F=0&#215;0000 T=254</p>
<p>Mesajul din loguri este special conceput concis, continand informatii<br />
folositoare. Contine urmatoarele:</p>
<p>1. &#8220;input&#8221; este chain-ul care a continut regula care s-a potrivit cu pachetul,<br />
cauzand mesajul din loguri.</p>
<p>2. &#8220;DENY&#8221; este ceea ce a decis regula privind soarta pachetului. Daca aceasta<br />
este &#8220;-&#8221; atunci regula nu a afectat deloc pachetul (o regula de<br />
contabilizare).</p>
<p>3. &#8220;eth0&#8243; este numele interfetei. Cum pachetul a fost logat in chain-ul input,<br />
inseamna ca &#8220;eth0&#8243; este numele interfetei de intrare.</p>
<p>4. &#8220;PROTO=17&#8243; insemna ca pachetul apartine protocolului 17. O lista cu<br />
numerele de protocoale este data in fisierul &#8220;/etc/protocols&#8221;. Cele mai<br />
intalnite sunt 1 (ICMP), 6 (TCP) si 17 (UDP).</p>
<p>5. &#8220;192.168.2.1&#8243; este sursa IP al pachetului.</p>
<p>6. &#8220;:53&#8243; reprezinta portul sursa al pachetului. Uitandu-ne in fisierul<br />
&#8220;/etc/services&#8221; vedem ca acest numar corespunde portului &#8220;domain&#8221; (probabil ca<br />
este un pachet replica de la serverul DNS). Pentru TCP si UDP, acest numar<br />
reprezinta portul sursa. Pentru ICMP, este tipul ICMP. Pentru alte protocoale<br />
va fi 65535.</p>
<p>7. &#8220;192.168.1.1&#8243; este adresa IP destinatie.</p>
<p>8. &#8220;:1025&#8243; inseamna ca portul destinatie este 1025. Pentru UDP si TCP acesta<br />
reprezinta portul destinatie. Pentru ICMP reprezinta codul. Pentru altele va<br />
fi 65535.</p>
<p>9. &#8220;L=34&#8243; inseamna ca pachetul este in marime totala de 34 bytes.</p>
<p>10. &#8220;S=0&#215;00&#8243; reprezinta tos (type of service). Imparte la 4 aceasta valoare<br />
pentru a avea tos in formatul folosit de catre ipchains.</p>
<p>11. &#8220;I=18&#8243; reprezinta IP ID.</p>
<p>12. &#8220;F=0&#215;0000&#8243; reprezinta offset-ul de fragment pe 16 biti plus flaguri. O<br />
valoare ce incepe cu &#8220;0&#215;4&#8243; sau &#8220;0&#215;5&#8243; inseamna ca bit-ul &#8220;Don&#8217;t Fragment&#8221;<br />
este pus. &#8220;0&#215;2&#8243; sau &#8220;0&#215;3&#8243; inseamna ca bitul &#8220;More Fragments&#8221; este pus;<br />
asteapta-te sa urmeze fragmente dupa acesta. Restul numarului reprezinta<br />
offsetul pentru acest fragment, impartit la 8.</p>
<p>13. &#8220;T=254&#8243; reprezinta Time To Live (ttl, timpul de existenta) al pachetului.<br />
Aceasta valoare este decrementata la fiecare link pe care il trece, si incepe<br />
deobicei la 15 sau 255.</p>
<p>14. &#8220;(#5)&#8221; in kernelurile mai recente (versiunile peste 2.2.9, inclusiv)<br />
reprezinta numarul reguli care a determinat mesajul.</p>
<p>Pe sisteme standard Linux, mesajul kernelului este preluat de klogd (daemonul<br />
de logare al kernelului) care paseaza mai departe mesajul catre syslogd<br />
(deamonul pentru logare al sistemului). Fisierul &#8220;/etc/syslog.conf&#8221;<br />
controleaza comportamentul deamonului syslogd, specificand unde sa afiseze<br />
mesajele primite de la un anumit proces si nivelul de loggare al mesajului<br />
respectiv.</p>
<p>De exemplu, pe sistemul meu, &#8220;/etc/syslog.conf&#8221; contine doua linii care<br />
specifica afisare mesajelor care se potrivesc cu &#8220;kern.info&#8221;.</p>
<p>kern.*                          -/var/log/kern.log<br />
*.=info;*.=notice;*.=warn;\<br />
auth,authpriv.none;\<br />
cron,daemon.none;\<br />
mail,news.none          -/var/log/messages</p>
<p>Aceasta inseamna ca mesajele sunt duplicate in &#8220;/var/log/kern.log&#8221; si in<br />
&#8220;/var/log/messages&#8221;. Pentru mai multe detalii, vezi &#8220;man syslogd.conf&#8221;.</p>
<p>4.1.5.3. Schimbarea tos (type of service)</p>
<p>Exista patru biti rar folositi in headerul IP, numiti biti tipul serviciului<br />
(TOS). Valorea acestor biti determina modul in care vor fi tratate pachetele;<br />
cei patru biti sunt &#8220;intarziere minima&#8221;, &#8220;transmitere maxima&#8221;, &#8220;maxima<br />
siguranta&#8221; si &#8220;cost minim&#8221;. Doar unul dintre acesti biti este permis sa fie<br />
setat. Rob van Nieuwkerk, autorul codul de modificare al TOS, exemplifica:</p>
<p>In special &#8220;intarziere minima&#8221; este important pentru mine. L-am setat<br />
pentru pachetele &#8220;interactive&#8221; de pe ruterul linux. Sunt in spatele<br />
unei legaturi de 33.6K. Linux da prioritate pachetelor in trei cozi de<br />
asteptare. In acest mod am o performanta pentru traficul interactiv in<br />
timp ce fac download-uri (ar fi putut merge mai repede, daca nu ar fi<br />
fost o asa coada de asteptare in driver-ul pentru portul serial,<br />
dar intarziere este acum de numai 1.5 secunde).</p>
<p>Nota: evident, nu ai nici un control asupra pachetelor care vin; poti controla<br />
numai prioritatea pachetelor care pleaca. Pentru a negocia prioritatile cu<br />
celalalt capat este necesar un protocol ca RSVP (nu ma intrebati, nu cunosc<br />
nimic despre el).</p>
<p>Cea mai intalnita folosire este setarea conexiunilor ftp si telnet &#8220;intarziere<br />
minima&#8221; si datelor FTP &#8220;transmitere maxima&#8221;. Aceasta ar putea fi realizata<br />
dupa cum urmeaza:</p>
<p>ipchains -A output -p tcp -d 0.0.0.0/0 telnet -t 0&#215;01 0&#215;10<br />
ipchains -A output -p tcp -d 0.0.0.0/0 ftp -t 0&#215;01 0&#215;10<br />
ipchains -A output -p tcp -s 0.0.0.0/0 ftp-data -t 0&#215;01 0&#215;08</p>
<p>Optiunea &#8220;-t&#8221; are doi parametri, amandoi in format hexazecimal. Aceaste<br />
argumete permite modificarea compleza a bitilor TOS: prima valoare si<br />
valoarea curenta a TOS-ului sunt adunate pe biti, apoi a doua valoare este<br />
XOR-uita cu aceasta. Daca aceasta este prea confuz, foloseste urmatoarea<br />
tabela:</p>
<p>TOS Name         		       		Value           Typical Uses</p>
<p>Minimum Delay     &#8211; intarziere minima 		0&#215;01 0&#215;10       ftp, telnet<br />
Maximum Throughput &#8211; transmitere maxima		0&#215;01 0&#215;08       ftp-data<br />
Maximum Reliability &#8211; maxima siguranta		0&#215;01 0&#215;04       snmp<br />
Minimum Cost        &#8211; cost minim		0&#215;01 0&#215;02       nntp</p>
<p>Andi Kleen precizeaza urmatoarele:</p>
<p>Poate ar fi folositor sa  facem legatura cu parametrul txqueue-len al ifconfig<br />
in discutia despre biti TOS. Lungimea default a cozii de asteptare pentru<br />
interfata este optimizata pentru placile ethernet, pentru modemuri aceasta<br />
este prea lunga rezultand un randament scazut al planificarii in 3 benzi (in<br />
care punerea in lista de asteptare este realizata de catre TOS). Este o idee<br />
buna sa o setezi cu o valoare optima intre 4-10 pentru modem sau legaturi<br />
simple ISDN; pentru mai multe interfete o coada de asteptare mai lunga este<br />
necesara. Aceasta este o problema pentru kernelurile 2.0 si 2.1, dar in 2.1<br />
este disponibila o optiune pentru ifconfig (cu o versiune recenta de<br />
nettools), pe cand in 2.0 sunt necesare patch-uri pentru codul sursa al<br />
driverelor.</p>
<p>Deci, pentru a avea beneficii maxime din manipularea TOS pentru conexiuni PPP,<br />
da comanda &#8220;ifconfig $1 txqueuelen&#8221; in scriptul /etc/ppp/ip-up. Numarul care<br />
trebuie folosit depinde de viteza modemului si marimea bufferului; dupa cum<br />
spune si Andi:</p>
<p>Cea mai optima valoare pentru o configuratie data trebuie experimentata. Daca<br />
listele de asteptare sunt prea scurte pe un ruter, atunci pachetele vor fi<br />
ignorate. Deasemenea exista beneficii chiar fara rescrierea TOS, rescriere TOS<br />
este folositoare pentru programele necooperante (dar toate programele standard<br />
ce folosesc Linux sunt cooperante).</p>
<p>4.1.5.4. Marcarea unui pachet</p>
<p>Acest lucru permite interctiuni puternice si complexe cu noua implemetare<br />
Quality of Service apartinand lui Alex Kuznetsov, la fel ca si forwardarea<br />
bazata pe marcarea pachetelor in kernelurile versiunea 2.1 si mai avansate.<br />
Aceasta optiune este ignorata in ver. 2.0.</p>
<p>4.1.5.5. Operatii pentru un chain</p>
<p>O foarte folositoare caracteristica a ipchains-ului este posibilitatea<br />
gruparii regulilor in chain-uri. Poti sa denumesti chain-urile cum doresti,<br />
atata timp cat nu intra in conflict cu chain-urile predefinite  (input,<br />
output, forward) sau cu tintele (MASQ, REDIRECT, ACCEPT, DENY, REJECT sau<br />
RETURN). Recomand sa folosesti numirea chain-urile cu litere mari, deoarece<br />
voi folosi numele mari pentru viitoare extensii. Numele unui chain poate fi in<br />
lungime de pana la 8 caractere.</p>
<p>4.1.5.6. Crearea unui chain nou</p>
<p>Sa creeam un chain nou cu numele de test.</p>
<p># ipchains -N test<br />
#</p>
<p>Este simplu. Acum poti sa pui reguli in el in felul in care este prezentat mai<br />
sus.</p>
<p>4.1.5.7. Stergerea unui chain</p>
<p>Stergerea unui chain este simpla de asemenea.</p>
<p># ipchains -X test<br />
#</p>
<p>De ce &#8220;-X&#8221;, pentru ca toate literele bune au fost folosite.</p>
<p>Exista doua restrictii in ceea ce priveste stergerea de chain-uri: chain-ul<br />
trebuie sa fie gol (vezi &#8220;Stergerea tuturor regulilor unui chain&#8221; de mai jos)<br />
si nu trebuie sa fie tinta nici unei reguli. Nu poti sterge nici unul dintre<br />
chain-urile predefinite.</p>
<p>4.1.5.8. Stergerea tuturor regulilor unui chain</p>
<p>Si acest lucru este simplu de realizat prin optiunea &#8220;-F&#8221;, de exemplu:</p>
<p># ipchains -F forward<br />
#</p>
<p>Daca nu specifici un chain atunci toate regulile vor fi sterse.</p>
<p>4.1.5.9. Listarea regulilor unui chain</p>
<p>Poti lista toate regulile dintr-un chain folosind comanda &#8220;-L&#8221;:</p>
<p># ipchains -L input<br />
Chain input (refcnt = 0): (policy ACCEPT)<br />
target     prot opt    source                destination           ports<br />
ACCEPT     icmp &#8212;&#8211;  anywhere              anywhere              any<br />
# ipchains -L test<br />
Chain test (refcnt = 1):<br />
target     prot opt    source                destination           ports<br />
DENY       icmp &#8212;&#8211;  localnet/24           anywhere              any<br />
#</p>
<p>&#8220;Refcnt-ul&#8221; afisat la listarea regulilor din chain-ul test, indica numarul de<br />
reguli care au ca tinta chain-ul test. Valoarea acesteia trebuie sa fie 0 (si<br />
chain-ul sa fie gol) inainte ca acest chain sa poata fi sters.</p>
<p>Daca numele chain-ului este omis atunci toate chain-urile sunt listate chiar<br />
si cele goale.</p>
<p>Sunt trei optiuni care pot fi folosite impreuna cu &#8220;-L&#8221;. Optiunea &#8220;-n&#8221;<br />
(numeric) este foarte folositoare deorece impiedica ipchains sa incerce<br />
rezolvarea IP-lor in nume, care (daca folosesti ca majoritatea oamenilor DNS)<br />
va cauza mari intarzieri daca DNS-ul tau nu este configurat corect, sau ai<br />
filtrat cererile catre serverele DNS. Cauzeaza deasemenea afisarea porturilor<br />
sub forma de numere, mai degraba decat nume.</p>
<p>Optiunea &#8220;-v&#8221; iti arata toate detaliile regulii, cum ar fii counter-ele de<br />
pachete si bytes, mask-urile TOS, interfetele si marcajul pachetelor. In caz<br />
contrar aceste optiuni sunt omise. De exemplu:</p>
<p># ipchains -v -L input<br />
Chain input (refcnt = 1): (policy ACCEPT)<br />
pkts bytes target     prot opt   tosa tosx  ifname    mark        source                destination           ports<br />
10   840 ACCEPT     icmp &#8212;&#8211; 0xFF 0&#215;00  lo                    anywhere              anywhere              any</p>
<p>Observati ca valoarea countere-lor pentru pachete si bytes sunt afisate cu<br />
ajutorul sufixelor &#8220;K&#8221;, &#8220;M&#8221; sau &#8220;G&#8221; pentru 1000, 1.000.000 si respectiv<br />
1.000.000.000. Folosirea optiunii &#8220;-x&#8221; (expandeaza numerele) afiseaza numerele<br />
in format lung in ca bytes.</p>
<p>4.1.5.10. Resetarea (aducerea la 0) a counter-elor</p>
<p>Este folositor sa ai posibilitatea de a reseta counter-ele. Aceasta se<br />
realizeaza cu ajutorul optiunii &#8220;-Z&#8221;. De exemplu:</p>
<p># ipchains -v -L input<br />
Chain input (refcnt = 1): (policy ACCEPT)<br />
pkts bytes target     prot opt   tosa tosx  ifname    mark        source                destination           ports<br />
10   840 ACCEPT     icmp &#8212;&#8211; 0xFF 0&#215;00  lo                    anywhere              anywhere              any<br />
# ipchains -Z input<br />
# ipchains -v -L input<br />
Chain input (refcnt = 1): (policy ACCEPT)<br />
pkts bytes target     prot opt   tosa tosx  ifname    mark        source                destination           ports<br />
0     0 ACCEPT     icmp &#8212;&#8211; 0xFF 0&#215;00  lo                    anywhere              anywhere              any<br />
#</p>
<p>Problema cand abordezi lucrurile in acest mod este ca uneori doresti sa vezi<br />
valorile counter-elor chiar inainte de a le reseta. In exemplul de mai sus,<br />
este posibil ca unele pachete sa fii trecut intre comenzile &#8220;-L&#8221; si &#8220;-Z&#8221;. Din<br />
acest motiv este posibila folosirea impreuna a acestor comenzi, sa resetezi<br />
valoarea counter-elor chiar in momentul afisarii acestora. Din nefericire,<br />
daca faci asta, nu poti sa actionezi doar asupra unui singur chain, trebuie sa<br />
listezi si resetezi counter-ele pentru toate chain-urile.</p>
<p># ipchains -L -v -Z<br />
Chain input (policy ACCEPT):<br />
pkts bytes target     prot opt   tosa tosx  ifname    mark        source                destination           ports<br />
10   840 ACCEPT     icmp &#8212;&#8211; 0xFF 0&#215;00  lo                    anywhere              anywhere              any<br />
Chain forward (refcnt = 1): (policy ACCEPT)<br />
Chain output (refcnt = 1): (policy ACCEPT)<br />
Chain test (refcnt = 0):<br />
0     0 DENY       icmp &#8212;&#8211; 0xFF 0&#215;00  ppp0                  localnet/24           anywhere              any<br />
# ipchains -L -v<br />
Chain input (policy ACCEPT):<br />
pkts bytes target     prot opt   tosa tosx  ifname    mark        source                destination           ports<br />
10   840 ACCEPT     icmp &#8212;&#8211; 0xFF 0&#215;00  lo                    anywhere              anywhere              any<br />
Chain forward (refcnt = 1): (policy ACCEPT)<br />
Chain output (refcnt = 1): (policy ACCEPT)<br />
Chain test (refcnt = 0):<br />
0     0 DENY       icmp &#8212;&#8211; 0xFF 0&#215;00  ppp0                  localnet/24           anywhere              any<br />
#</p>
<p>4.1.5.11. Setarea policy-ului</p>
<p>Am atins in treacat ce se intampla cand un pachet ajunge la capatul unuia<br />
dintre chain-urile predefinite, cand am discutat modul in care pachetele<br />
circula prin chain-uri, in capitolul de mai sus &#8220;Specificarea unei tinte&#8221;.<br />
In acest caz, politica (policy-ul) chain-ului determina soarta pachetului.<br />
Doar chain-urile predefinite (input, output si forward) au policy, deoarece<br />
in chain-urile definite de catre utilizator cand se ajunge la capatul<br />
acestora, traversarea continua din chain-ul anterior.</p>
<p>Policy-ul poate fi unul din primele patru tinte speciale: ACCEPT, DENY,<br />
REJECT  sau MASQ. MASQ este valid doar pentru chain-ul &#8220;forward&#8221;.</p>
<p>Este deasemenea important sa observi ca tinta RETURN intr-o regula intr-unul<br />
din chain-urile predefinite este folositoare pentru a se folosi in mod special<br />
policy-ul chain-ului, cand un pachet se potriveste cu regula.</p>
<p>4.1.6. Operatii pentru masquerading</p>
<p>Sunt cativa parametri pe care ii poti modifica in cazul masquerading-ului.<br />
Sunt legate de ipchains, pentru ca nu se merita scrierea unei noi comenzi<br />
pentru aceasta.</p>
<p>Comanda pentru masqueradare este &#8220;-M&#8221;, si poate fi combinata cu &#8220;-L&#8221; pentru a<br />
lista conexiunile care sunt in mod curent masqueradate, sau cu &#8220;-S&#8221; pentru a<br />
seta parametrii pentru masquerading.</p>
<p>Comanda &#8220;-L&#8221; poate fi insotita de &#8220;-n&#8221; (afisarea de numere in loc de nume<br />
pentru adrese IP si porturi)  sau &#8220;-v&#8221; (afiseaza deltas in numere succesive<br />
pentru conexiunile masquradate, doar in caz daca te intereseaza).</p>
<p>Comanda &#8220;-S&#8221; ar trebui urmata de trei valori pentru timeout, fiecare valoare<br />
in secunde: pentru sesiunile TCP, pentru sesiunile TCP dupa un pachet FIN, si<br />
pentru pachete UDP. Daca nu doresti una din aceste valori, pur si simplu pune<br />
valoarea 0.</p>
<p>Valorile default sunt listate in &#8220;/usr/src/linux/include/net/ip_masq.h&#8221; si<br />
sunt  15 minute, 2 minute si respectiv 5 minute.</p>
<p>Cea mai intalnita valoare ce trebuie schimbata este prima, pentru FTP (vezi<br />
mai jos &#8220;FTP&#8221;).</p>
<p>Observa problemele legate de setarea valorile pentru timeout in &#8220;Nu pot<br />
preciza timeout-uri pentru masquerading&#8221;.</p>
<p>4.1.7. Verificarea unui pachet</p>
<p>Uneori doresti sa vezi ce se intampla cand intra un anumit pachet, cum ar fi<br />
pentru testarea regulilor firewall-ului. ipchains are comanda &#8220;-C&#8221;, ce<br />
permite acest lucru, folosind exact aceleasi rutine pe care le foloseste<br />
kernelul pentru diagnosticarea pachetelor reale.</p>
<p>Poti stipula care chain sa testeze pachetul cu optiunea &#8220;-C&#8221; urmat de<br />
numele pachetului. In timp ce kernelul incepe intodeauna traversarea in<br />
chain-urile input, output sau forward, ai puterea sa incepi traversarea in<br />
orice chain in scopul testarii.</p>
<p>Detaliile in ceea ce priveste &#8220;pachetul&#8221; sunt specificate folosind aceeasi<br />
sintaxa din specificarea regulilor. In special, protocolul &#8220;-p&#8221;, adresa sursa<br />
&#8220;-s&#8221;, adresa destinatie &#8220;-d&#8221;, si interfata &#8220;-i&#8221; sunt obligatorii. Daca<br />
protocolul este TCP sau UDP, atunci un singur port destinatie si un singur<br />
port sursa trebuie specificat, daca protocolul este ICMP atunci trebuie<br />
specificat tipul si codul (doar daca nu este specificata optiunea &#8220;-f&#8221; pentru<br />
a preciza un fragment, caz in care aceste optiuni sunt ilegale).</p>
<p>Daca protocolul este TCP (si optiunea &#8220;-f&#8221; nu este specificata), optiunea &#8220;-y&#8221;<br />
poate fi specificata, pentru a indica faptul ca pachetul de test are bitul SYN<br />
pus.</p>
<p>Dam mai jos un exemplu de testare a unui pachet ce vine de la 192.168.1.1,<br />
portul 60000 catre 192.168.1.2, portul www, intrand prin interfata eth0, in<br />
chain-ul &#8220;input&#8221;. Acesta este un caz clasic de initiere a unei conexiuni www:</p>
<p># ipchains -C input -p tcp -y -i eth0 -s 192.168.1.1 60000 -d 192.168.1.2 www<br />
packet accepted<br />
#</p>
<p>4.1.8. Mai multe reguli dintr-o data si ceea ce se intampla atunci</p>
<p>Uneori o singura linie de comanda poate produce mai multe efecte. Aceasta se<br />
realizeaza in doua moduri. Intai, poti sa specifici un hostname care este<br />
rezolvat (folosind DNS) in mai multe adrese IP, ipchains se va comporta ca si<br />
cum ai fi dat mai multe comenzi pentru fiecare adresa IP in parte.</p>
<p>De exemplu, daca hostname-ul &#8220;www.foo.com&#8221; este rezolvat in trei adrese IP,<br />
si hostname-ul &#8220;www.bar.com&#8221; in doua adrese IP, atunci comanda<br />
&#8220;ipchains -A input -j reject -s www.bar.com -d www.foo.com&#8221; ar fi echivalenta<br />
cu introducerea a sase reguli diferite in chain-ul input, daca s-ar folosi<br />
adrese IP.</p>
<p>Un alt mod prin care sa determini ipchains sa realizeze mai multe actiuni este<br />
prin folosirea optiunii bidirectionale &#8220;-b&#8221;. Aceasta optiune determina<br />
ipchains sa se comporte ca si cum ai fi dat comanda de doua ori, insa a doua<br />
oara cu parametrii de la sursa si destinatie inversati. De exemplu, pentru a<br />
evita forwardarea catre sau de la 192.168.1.1:</p>
<p># ipchains -b -A forward -j reject -s 192.168.1.1<br />
#</p>
<p>Personal, nu imi place prea mult aceasta optiune &#8220;-b&#8221;; daca doresti utilitate<br />
citeste &#8220;Folosirea ipchains-save&#8221; de mai jos.</p>
<p>Optiunea &#8220;-b&#8221; poate fi folosita langa comenzile de introducere de reguli<br />
(&#8220;-I&#8221;), stergere (&#8220;-D&#8221;) (dar nu varianta care accepta un numar al unei<br />
reguli), adaugare (&#8220;-A&#8221;) si verificare (&#8220;-C&#8221;).</p>
<p>O alta optiune folositoare este &#8220;-v&#8221; care iti afiseaza exact ceea ce ipchains<br />
realizeaza prin comenzile date. Acest lucru este folositor daca folosesti<br />
comenzi ce pot avea efectul a mai multor reguli. De exemplu, aici verificam<br />
comportamentul fragmentelor intre 192.168.1.1 si 192.168.1.2.</p>
<p># ipchains -v -b -C input -p tcp -f -s 192.168.1.1 -d 192.168.1.2 -i lo<br />
tcp opt   &#8212;f- tos 0xFF 0&#215;00  via lo    192.168.1.1  -&gt; 192.168.1.2<br />
* -&gt;   *<br />
packet accepted<br />
tcp opt   &#8212;f- tos 0xFF 0&#215;00  via lo    192.168.1.2  -&gt; 192.168.1.1<br />
* -&gt;   *<br />
packet accepted<br />
#</p>
<p>4.2. Exemple folositoare</p>
<p>Am o conexiune dialup PPP (-i ppp0). Citesc stirile (-p TCP -s<br />
news.virtual.net.au nntp) si mail-ul (-p TCP -s mail.virtual.net.au pop-3) de<br />
fiecare data cand ma conectez. Folosesc metoda de FTP a Debianului pentru a-mi<br />
updata sistemul regulat (-p TCP -y -s ftp.debian.org.au ftp-data). Navighez pe<br />
web cu ajutorul proxy-ului ISP-ului atata timp cat acesta merge (-p TCP -d<br />
proxy.virtual.net.au 8080), dar nu suport bannerele de la doubleclick.net in<br />
arhivele Dilbert (-p TCP -y -d 199.95.207.0/24 and -p TCP -y -d<br />
199.95.208.0/24).</p>
<p>Nu ma deranjeaza ca oameni sa incerce sa faca ftp pe masina mea cat timp sunt<br />
online (-p TCP -d $LOCALIP ftp), dar nu vreau ca nimeni din exterior sa<br />
pretinda ca are una din adresele retelei mele interne (-s 192.168.1.0/24).<br />
Acest lucru este numit spoofare IP, si exista o modalitate mai buna de a te<br />
proteja impotriva acesteia in kernelurile 2.1.x si mai avansate: citeste &#8220;Cum<br />
realizez protectia impotriva spoofarii IP&#8221;.</p>
<p>Aceasta configurare este destul de simpla, pentru ca nu sunt in mod curent<br />
alte hosturi in reteaua mea interna.</p>
<p>Doresc ca nici un proces local (ex. lynx, netscape) sa se conecteze la<br />
doubleclick.net:</p>
<p># ipchains -A output -d 199.95.207.0/24 -j REJECT<br />
# ipchains -A output -d 199.95.208.0/24 -j REJECT<br />
#</p>
<p>Acum doresc sa realizez prioritati asupra a pachete variate ce pleaca (nu prea<br />
are sens sa fac acest lucru pentru pachetele ce intra). Cum am un numar mai<br />
mare de acest tip de reguli, are sens sa le pun pe toate intr-un singur chain,<br />
numit ppp-out.</p>
<p># ipchains -N ppp-out<br />
# ipchains -A output -i ppp0 -j ppp-out<br />
#</p>
<p>Intarziere minima pentru traficul www si telnet.</p>
<p># ipchains -A ppp-out -p TCP -d proxy.virtual.net.au 8080 -t 0&#215;01 0&#215;10<br />
# ipchains -A ppp-out -p TCP -d 0.0.0.0/0 telnet -t 0&#215;01 0&#215;10<br />
#</p>
<p>Cost minim pentru canalul de date ftp, nntp, si pop3:</p>
<p># ipchains -A ppp-out -p TCP -d 0.0.0.0/0 ftp-data -t 0&#215;01 0&#215;02<br />
# ipchains -A ppp-out -p TCP -d 0.0.0.0/0 nntp -t 0&#215;01 0&#215;02<br />
# ipchains -A ppp-out -p TCP -d 0.0.0.0/0 pop-3 -t 0&#215;01 0&#215;02<br />
#</p>
<p>Sunt cateva restrictii pentru pachetele ce vin prin interfata ppp0: se cream<br />
atunci un chain numit &#8220;ppp-in&#8221;:</p>
<p># ipchains -N ppp-in<br />
# ipchains -A input -i ppp0 -j ppp-in<br />
#</p>
<p>Acum, nici un pachet care vine prin interfata ppp0, nu are voie sa pretinda ca<br />
are adresa sursa 192.168.1.*, asa ca le igoram si le logam:</p>
<p># ipchains -A ppp-in -s 192.168.1.0/24 -l -j DENY<br />
#</p>
<p>Permit pachetele catre DNS (rulez un server de nume care inainteaza toate<br />
cererile catre 203.29.16.1, asa ca ma astept la pachete replica DNS doar de<br />
acolo, pachete catre portul ftp, si doar canalul de date pentru conexiunile<br />
ftp in exterior (care ar trebui sa fie doar pe un port peste 1023, si pe<br />
porturile pentru X11 in jur de 6000).</p>
<p># ipchains -A ppp-in -p UDP -s 203.29.16.1 -d $LOCALIP dns -j ACCEPT<br />
# ipchains -A ppp-in -p TCP -s 0.0.0.0/0 ftp-data -d $LOCALIP 1024:5999 -j ACCEPT<br />
# ipchains -A ppp-in -p TCP -s 0.0.0.0/0 ftp-data -d $LOCALIP 6010: -j ACCEPT<br />
# ipchains -A ppp-in -p TCP -d $LOCALIP ftp -j ACCEPT<br />
#</p>
<p>Accept replay-urile la pachetele TCP:</p>
<p># ipchains -A ppp-in -p TCP ! -y -j ACCEPT<br />
#</p>
<p>In sfarsit conexiunile locale sunt ok:</p>
<p># ipchains -A input -i lo -j ACCEPT<br />
#</p>
<p>Acum, politica default in chain-ul input este DENY, astfel incat orice altceva<br />
este ignorat:</p>
<p># ipchains -P input DENY<br />
#</p>
<p>Observatie: Nu mi-as configura chain-urile in aceasta ordine, deoarece<br />
pachetele ar putea sa treaca in timp ce introduc regulile. Cel mai sigur este<br />
sa setezi politica DENY intai, apoi sa introduci regulile. Bineinteles, daca<br />
regulile tale au nevoie de cereri DNS pentru a rezolva numele, s-ar putea sa<br />
fi in necaz.</p>
<p>4.2.1. Folosirea ipchains-save</p>
<p>Configurarea regulilor pentru firewall in modul in care doresti, si apoi sa<br />
incerci sa memorezi comenzile pe care le-ai folosit ca sa faci acelasi lucru<br />
din nou este chinuitor.</p>
<p>Asa ca, ipchains-save este un script care citeste configuratia curenta a<br />
chain-urilor si le salveaza intr-un fisier. Deocamdata te tin in suspans cu<br />
privire la ce realizeaza ipchains-retore.</p>
<p>ipchains-save poate salva un singur chain, sau toate chain-urile (daca nici un<br />
nume de chain, nu este specificat). Singura optiune permisa este &#8220;-v&#8221; care<br />
afiseaza regulile pe masura ce acestea sunt salvate. Politica acestor chain-uri<br />
este deasemenea salvata pentru chain-urile input, output si forward.</p>
<p># ipchains-save &gt; my_firewall<br />
Saving `input&#8217;.<br />
Saving `output&#8217;.<br />
Saving `forward&#8217;.<br />
Saving `ppp-in&#8217;.<br />
Saving `ppp-out&#8217;.<br />
#</p>
<p>4.2.2. Folosirea ipchains-restore</p>
<p>ipchains-restore restaureaza chain-urile salvate cu ipchains-save. Poate avea<br />
doua optiuni: &#8220;-v&#8221; care afiseaza fiecare regula pe masura ce este adaugata, si<br />
&#8220;-f&#8221; care obliga stergerea chain-urile definite de catre utilizator daca<br />
exista, in modul descris mai jos.</p>
<p>Daca este gasit un chain definit de utilizator este gasit in fisierul din care<br />
se restaureaza regulile, ipchains verifica daca nu exista deja acel chain.<br />
Daca exista, atunci vei fi intrebat daca fie chain-ul respectiv sa fie golit<br />
de reguli, fie sa fie sarit. Daca specifici &#8220;-f&#8221; in linia de comanda, nu vei<br />
mai fi intrebat, chain-ul va fi golit de reguli.</p>
<p>De exemplu:</p>
<p># ipchains-restore &lt; my_firewall<br />
Restoring `input&#8217;.<br />
Restoring `output&#8217;.<br />
Restoring `forward&#8217;.<br />
Restoring `ppp-in&#8217;.<br />
Chain `ppp-in&#8217; already exists. Skip or flush? [S/f]? s<br />
Skipping `ppp-in&#8217;.<br />
Restoring `ppp-out&#8217;.<br />
Chain `ppp-out&#8217; already exists. Skip or flush? [S/f]? f<br />
Flushing `ppp-out&#8217;.<br />
#</p>
<p>5. Diverse</p>
<p>Aceasta parte contine toate informatiile si FAQ-urile pe care nu am putut sa<br />
le introduc in structura de mai sus.</p>
<p>5.1. Cum sa iti organizezi regulile firewall-ului</p>
<p>Aceasta intrebare cere putina gandire. Poti incerca sa le organizezi pentru a<br />
optimiza viteza (minimizezi numarul de reguli pentru cele mai comune pachete)<br />
sau sa cresti manevrabilitatea.</p>
<p>Daca ai o legatura care se intrerupe, sa spunem o conexiune PPP, ai putea dori<br />
ca prima regula in chain-ul input sa fie &#8220;-i ppp0 -j DENY&#8221; in timpul bootarii,<br />
apoi sa ai ceva de genul acesta in scriptul ip-up:</p>
<p># Re-create the `ppp-in&#8217; chain.<br />
ipchains-restore -f &lt; ppp-in.firewall</p>
<p># Replace DENY rule with jump to ppp-handling chain.<br />
ipchains -R input 1 -i ppp0 -j ppp-in</p>
<p>Scriptul ip-down ar arata astfel:</p>
<p>ipchains -R input 1 -i ppp0 -j DENY</p>
<p>5.2. Ce anume sa nu filtrezi spre afara</p>
<p>Sunt cateva lucruri de care trebuie sa fi constient inainte de a incepe<br />
filtrarea pachetelor pe care nu le doresti.</p>
<p>5.2.1. Pachete icmp</p>
<p>ICMP este folosit (printre alte lucruri) pentru a indica esecul alte<br />
protocoale (cum ar fi TCP si UDP). Pachetele &#8220;destination-unreachable&#8221; in<br />
special. Blocarea acestor pachete inseamna ca niciodata nu vei avea erori de<br />
genul &#8220;Host unreachable&#8221; sau &#8220;No route to host&#8221;; orice conexiune doar va<br />
astepta o replica (replay) care nu va veni niciodata. Aceasta este iritabil,<br />
dar rar fatal.</p>
<p>O problema mai grava este rolul ICMP in descoperirea MTU-ului. Toate<br />
implementarile bune TCP (Linux este inclus) folosesc descoperirea MTU pentru a<br />
incerca sa isi dea seama care este marimea maxima a unui pachet care poate<br />
ajunge la destinatie fara sa fie fragmentat (fragmentarea incetineste<br />
performanta, in special cand fragmente ocazionale sunt pierdute). Descoperirea<br />
MTU functioneaza prin transmiterea de pachete cu bit &#8220;nu fragmenta&#8221; pus, si<br />
apoi transmiterea de pachete mai mici daca primeste replica ICMP indicand ca<br />
este necesarea fragmentarea. Acesta este un tip de pachet<br />
&#8220;destination-unreachable&#8221;, si daca nu este primit, sistemul nu isi va reduce<br />
MTU-ul, si performantele nu vor exista.</p>
<p>Observa faptul ca este comun sa blochezi toate pachetele ICMP de redirectare<br />
(de tip 5); aceastea pot fi folosite pentru a manvevra rutarea (deasemenea<br />
stive bune IP au masuri de protectie), asa ca sunt vazute ca risc minim.</p>
<p>5.2.2. Conexiunile TCP catre servere DNS (servere de nume)</p>
<p>Daca incerci sa blochezi conexiunile TCP catre exterior, tine minte ca DNS nu<br />
foloseste intodeauna UDP; daca raspunsul de la server depaseste 512 bytes,<br />
clientul foloseste o conexiune TCP (tot spre portul 53) pentru date.</p>
<p>Aceasta poate fi o capcana deoarece DNS va merge in mare parte. Daca nu<br />
permiti asemenea transferuri TCP; este posibil sa experimentezi intarzieri<br />
mari si alte probleme ocazionale DNS.</p>
<p>Daca aceste cereri DNS sunt intodeauna catre aceeasi sursa externa (fie direct<br />
prin folosirea liniei de nameserver din /etc/resolv.conf, fie folosind un<br />
nameserver pentru cache in mod forward), atunci ai nevoie doar sa permiti<br />
conexiunile TCP catre portul 53 pe acel nameserver de la portul local 53 (in<br />
caz in care folosesti nameserver pentru cache) sau de la un port local (&gt;1023)<br />
daca folosesti /etc/resolv.conf.</p>
<p>5.2.3. FTP</p>
<p>Problema clasica a filtrului de pachete este FTP. FTP are doua moduri; cel<br />
traditional care este numit mod activ, si cel mai recent care este numit ftp<br />
pasiv. Browsere-le web folosesc de obicei default modul pasiv, pe cand<br />
ftp-urile din linia de comanda modul activ.</p>
<p>In mod activ, cand celalalt capat doreste sa trimita un fisier (sau chiar ca<br />
rezultat a unei comenzi ls sau dir) incerca sa deschida o conexiune TCP catre<br />
masina locala. Asta inseamna ca nu poti sa filtrezi aceste conexiuni TCP fara sa<br />
impiedici conexiunile ftp active.</p>
<p>Daca ai posibilitatea sa folosesti ftp pasiv, atunci este bine;  modul pasiv<br />
creaza conexiuni TCP de la client la server, chiar si pentru datele care vin.<br />
In caz contrar, este recomandat sa lasi conexiunile TCP pe porturile locale<br />
mai mari de 1024 si nu intre 6000 si 6010 (6000 este folosit de X).</p>
<p>5.3. Filtrarea Pingului Mortii</p>
<p>Sistemele Linux sunt acum imune la celebrul Ping al Mortii, care presupune<br />
trimiterea de pachetele ICMP anormal de mari care umple bufferele in stiva TCP<br />
de pe sistem cauzand blocarea acestuia.</p>
<p>Daca protejezi sisteme care ar putea fi vulnerabile, poti in mod simplu sa<br />
ignori fragmentele ICMP. In mod normal pachetele ICMP nu sunt atat de mari<br />
pentru a fi nevoie de fragmentarea acestora, asa ca nu va influenta nimic in<br />
rau, exceptand ping-urile cu pachete de marime mare. Am auzit (neconfimat)<br />
rapoarte cum ca pentru unele sisteme ar fi suficient numai ultimul fragment al<br />
unui asemenea pachet ICMP, pentru a bloca sistemul, deci blocarea numai a<br />
primului fragment nu este recomandata.</p>
<p>In timp ce exploiturile pe care le-am vazut foloseau numai protocolul ICMP<br />
pentru aceste atacuri, nu exista nici un motiv pentru care TCP si UDP sa nu<br />
fie folosit in acelasi mod, asa ca blocarea fragmentelor ICMP este doar o<br />
solutie temporara.</p>
<p>5.4. Filtrarea pentru Teardrop si Bonk</p>
<p>Teardrop si Bonk sunt doua tipuri de atacuri (in principal asupra masinilor ce<br />
ruleaza Windows NT) care se bazeaza pe fragmente ce se suprapun partial.<br />
Acestea pot fi oprite prin configurarea sistemului Linux sa realizeze<br />
defragmentare sau sa nu permita fragmente catre sistemele vulnerabile.</p>
<p>5.5. Filtrarea fragmentelor in masa</p>
<p>Cateva stive TCP mai putin sigure se spune ca au probleme in ceea ce priveste<br />
numarul mare de fragmente de pachete, atunci cand nu primesc toate<br />
fragmentele. Linux nu are aceasta problema. Poti filtra aceste fragmente (care<br />
pot sa impiedice folosirea lor legitima) sau sa compilezi kernelul cu optiunea<br />
&#8220;IP: always defragment&#8221; setata &#8220;Y&#8221; (doar daca sistemul tau linux este singura<br />
ruta pentru aceste pachete).</p>
<p>5.6. Schimbarea regulilor din firewall</p>
<p>Sunt cateva probleme legate de viteza cu care pot fi schimbate regulile din<br />
firewall. Daca nu esti atent, poti sa lasi pachete sa intre cand esti la<br />
jumatatea acestor modificari. O rezolvare simpla ar fi:</p>
<p># ipchains -I input 1 -j DENY<br />
# ipchains -I output 1 -j DENY<br />
# ipchains -I forward 1 -j DENY</p>
<p>&#8230; realizeaza modificari &#8230;</p>
<p># ipchains -D input 1<br />
# ipchains -D output 1<br />
# ipchains -D forward 1<br />
#</p>
<p>Se ignora astfel toate pachetele pe durata modificarilor.</p>
<p>Daca schimbarile tale sunt doar intr-un singur chain, ai putea crea un nou<br />
chain cu noile reguli, si apoi sa inlocuiesti (&#8220;-R&#8221;) regula care facea<br />
referire la vechiul chain  cu o noua regula catre noul chain: apoi poti sa<br />
stergi vechiul chain. Aceasta inlocuire va fi automata.</p>
<p>5.7. Cum realizez protectia impotriva spoofarii IP</p>
<p>Spoofarea IP este o tehnica in care un host trimite pachete care pretind ca<br />
sunt de la un alt host. Cum filtrarea de pachete ia decizii bazandu-se pe<br />
adresa sursa, spoofarea IP este folosita pentru a pacali filtrele de pachete.<br />
Este folosita deasemenea pentru a ascunde identitatea atacatorilor care<br />
folosesc atacuri SYN, Teardrop, Ping of Death si similare (nu iti face griji<br />
daca nu stii ce inseamna).</p>
<p>Cea mai buna cale de a te proteja contra spoofarii este  Verificarea adresei<br />
sursa, si este realizata de catre codul de rutare, si deloc de catre cel al<br />
firewall-ului. Verifica existenta fisierului<br />
/proc/sys/net/ipv4/conf/all/rp_filter. Daca exista, atunci pornirea<br />
Verificarii adresei sursa este solutia potrivita pentru tine. Pentru a realiza<br />
acest lucru, introduce urmatoarele linii undeva in scripturile de pornire,<br />
inainte de initializarea oricarei interfete de retea:</p>
<p># Aceastea este cea mai buna metoda:<br />
# da drumu la Verificarea adresei sursa si ai protectie anti-spoof<br />
# pentru toate interfetele curente si viitoare.<br />
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then<br />
echo -n &#8220;Setting up IP spoofing protection&#8230;&#8221;<br />
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do<br />
echo 1 &gt; $f<br />
done<br />
echo &#8220;done.&#8221;<br />
else<br />
echo PROBLEMS SETTING UP IP SPOOFING PROTECTION.  BE WORRIED.<br />
echo &#8220;CONTROL-D will exit from this shell and continue system startup.&#8221;<br />
echo<br />
# Start a single user shell on the console<br />
/sbin/sulogin $CONSOLE<br />
fi</p>
<p>(nt. sau in fisierul sysctl.conf adauga:<br />
# Controls source route verification<br />
net.ipv4.conf.default.rp_filter = 1<br />
)</p>
<p>Daca nu poti realiza acest lucru, atunci poti in mod manual sa introduci<br />
reguli pentru a proteja fiecare interfata. Aceasta cere insa cunoasterea<br />
fiecarei interfete. Kernelurile 2.1 rejecteaza automat pachetele care pretind<br />
a veni de la adresele 127.* (rezervate pentru interfata loopback, lo).</p>
<p>De exemplu, sa presupunem ca avem trei interfete, eth0, eth1 si ppp0. Folosim<br />
ifconfig pentru a vedea adresele interfetelor si netmaskul acestora. Sa zicem<br />
ca eth0 este atasata unei retele 192.168.1.0 cu netmask-ul 255.255.255.0, eth1<br />
apartine unei retele 10.0.0.0 cu netmask 255.0.0.0, si ppp0 este conectata la<br />
Internet (unde orice adrese, exceptand cele din clasele private, sunt<br />
permise). Introducem regulile:</p>
<p># ipchains -A input -i eth0 -s ! 192.168.1.0/255.255.255.0 -j DENY<br />
# ipchains -A input -i ! eth0 -s 192.168.1.0/255.255.255.0 -j DENY<br />
# ipchains -A input -i eth1 -s ! 10.0.0.0/255.0.0.0 -j DENY<br />
# ipchains -A input -i ! eth1 -s 10.0.0.0/255.0.0.0 -j DENY<br />
#</p>
<p>Aceasta rezolvare a problemei nu este atat de buna cum este Verificarea<br />
adresei sursa, deoarece daca reteaua se schimba, trebuie sa iti modifici<br />
regulile din firewall.</p>
<p>Daca ai un kernel ver 2.0, ai dori sa iti protejezi chiar si interfata<br />
loopback:</p>
<p># ipchains -A input -i ! lo -s 127.0.0.0/255.0.0.0 -j DENY<br />
#</p>
<p>5.8. Proiecte mai avansate</p>
<p>Exista o biblioteca pe care am scris-o, inclusa in distributia surselor numita<br />
&#8220;libfw&#8221;. Aceasta foloseste posibilitatea din IP Chains ver 1.3 si peste, de<br />
a copia un pachet pentru a putea fi folosit in mediul utilizator (folosind<br />
optiunea IP_FIREWALL_NETLINK).</p>
<p>Valorea cu care este marcat pachetul poate fi folosita pentru a specifica<br />
parametrii de Calitate a serviciului pentru pachete, sau pentru a specifica<br />
cum ar trebui sa fie facuta forwardarea de porturi pentru pachete. Nu am<br />
folosit nici una dintre acestea, dar daca ai vreo observatie contacteaza-ma.</p>
<p>Lucuri cum ar fi verificarea dupa stare (prefer termenul de firewall dinamic)<br />
pot fi implementate in mediul utilizator prin folosirea acestei biblioteci.<br />
Alta idee mai interesanta ar fi controlarea pachetelor intr-un mediu<br />
utilizator cu ajutorul unui daemon, destul de usor de realizat.</p>
<p>5.8.1. SPF: filtrare dupa starea pachetului (stateful packet filtering)</p>
<p>ftp://ftp.interlinx.bc.ca/pub/spf &lt;ftp://ftp.interlinx.bc.ca/pub/spf&gt; este<br />
site-ul proiectului SPF, apartinand lui Brian Murrell, care realizeaza<br />
urmarirea conexiunile in mediu utilizator. Se adauga astfel securitate<br />
simnificativa pentru site-uri cu banda limitata.</p>
<p>In prezent nu este disponibila multa documentatie, dar iata postari pe o lista<br />
de discutii in care Brian raspunde la niste intrebari:</p>
<p>&gt; cred ca se realizeaza exact ce doresc. Intra in functiune o regula<br />
&gt; temporara pentru a permite intrarea pachetele ce vin ca raspuns la o<br />
&gt; cerere anterioara<br />
Da, exact asta se realizeaza. Cu cat este mai compatibil cu mai multe<br />
protocoale, cu atat regula temporara este corecta. Pentru moment<br />
suporta (din cate imi amintesc, scuzati eventualele erori sau<br />
omisiuni) FTP (atat activ, cat si pasiv, inautru sau spre exterior),<br />
RealAudio, traceroute, ICMP si ICQ simplu (conexiuni dinspre servere<br />
ICQ, si conexiuni TCP directe, dar conexiuni secundare directe TCP<br />
pentru lucruri ca transferul de fisiere, nu sunt inca realizate)</p>
<p>&gt; este un inlocuitor pentru ipchains sau un lucru suplimentar?<br />
Este un lucru suplimentar. Gandeste-te la ipchains ca la un engine<br />
care permite sau interzice pachetelor traversarea printr-un sistem<br />
linux. SPF este driver-ul, care monitorizeaza constant traficul si<br />
comunica ipchains-ului ce anume sa schimbe in reguli pentru a permite<br />
un anumit tip de trafic.</p>
<p>5.8.2. &#8220;Hack-ul&#8221; ftp-data al lui Michael Hasenstein</p>
<p>Michael Hasenstein, de la SuSE, a scris un patch de kernel care adauga<br />
urmarirea conexiunilor ftp pentru ipchains. Poate fi gasit la</p>
<p>http://www.suse.de/~mha/patch.ftp-data-2.gz</p>
<p>&lt;http://www.suse.de/~mha/patch.ftp-data-2.gz&gt;.</p>
<p>5.9. Planuri de viitor</p>
<p>Realizarea de firewall si NAT-ul au fost rescrise pentru 2.4. Planuri si<br />
discutii sunt disponibile pe lista de discutii de la netfilter (vezi<br />
http://lists.samba.org &lt;http://lists.samba.org&gt;). Aceste versiuni noi ar<br />
trebui sa rezolve multe dintre problemele actuale de utilizare (realizarea de<br />
masquerading si firewall nu ar trebui sa fie asa de grea) si sa permite<br />
dezvoltarea de firewall-uri mai flexibile.</p>
<p>6. Probleme des intalnite</p>
<p>6.1. ipchains -L ingheata!</p>
<p>Probabil ca ai blocate cererile catre DNS; eventual va da timeout. Incearca sa<br />
folosesti optiunea &#8220;-n&#8221; (numeric), care previne ipchains sa rezolve numele.</p>
<p>6.2. Specificarea inversa nu poate fi realizata!</p>
<p>Trebuie sa pui semnul &#8220;!&#8221; singur, cu spatii de o parte si de alta. O greseala<br />
clasica este:</p>
<p># ipchains -A input -i !eth0 -j DENY<br />
#</p>
<p>Nu va exista niciodata o interfata numita &#8220;!eth0&#8243;, dar ipchains nu isi da<br />
seama de acest lucru.</p>
<p>6.3. Masqueradarea/Forwardarea nu se realizeaza!</p>
<p>Verifica daca forwardarea pentru pachete este setata (in kernelurile recente<br />
default este scos, insemnand ca pachetele nici macar nu vor incerca sa<br />
traverseze chain-ul &#8220;forward&#8221;). Poti sa ii pornesti aceasta facilitate prin:</p>
<p># echo 1 &gt; /proc/sys/net/ipv4/ip_forward<br />
#</p>
<p>Daca aceasta comanda functioneaza, o poti pune intr-unul din scripturile ce<br />
ruleaza la bootare, pentru a avea tot timpul aceasta facilitate; desi vei dori<br />
sa iti configurezi firewall-ul, in caz contrar exista posibilitatea ca unele<br />
pachete sa treaca.</p>
<p>6.4. Tinta -j REDIR nu merge!</p>
<p>Trebuie sa permiti forwardarea de pachete (citeste mai sus) pentru ca<br />
redirectarea sa fie posibila; altfel codul de rutare ignora pachetul. Asa ca<br />
daca folosesti doar redirect, si nu ai forwarding-ul setat, ar trebui sa iti<br />
dai seama ca este de la asta.</p>
<p>Observa ca REDIR (fiind in chain-ul input) nu afecteaza conexiunile catre<br />
procesele locale.</p>
<p>6.5. Specificare mai multor interfete (ex &#8220;-i ppp+&#8221;) nu merge!</p>
<p>Exista un defect de programare in kernelurile ver. 2.1.102 si 2.1.103 (si<br />
in unele patch-uri mai vechi pe care le-am relizat) care determina<br />
comanda ipchains de specificare a mai multor interfete (ex &#8220;-i ppp+&#8221;) sa nu<br />
mearga.</p>
<p>Acest lucru a fost indreptat in kernelurile recente si in patch-ul 2.0.34 de<br />
pe site-ul web. Poti deasemenea sa il indrepti manual, in sursele kernelului<br />
modificand linia 63 din fisierul include/linux/ip_fw.h:</p>
<p>#define IP_FW_F_MASK    0x002F  /* All possible flag bits mask   */</p>
<p>In loc de 0x002F ar trebui sa fie &#8220;0x003F&#8221;. Modifica si recompileaza kernelul.</p>
<p>6.6. TOS nu merge!</p>
<p>Aceasta este greseala mea: setarea campului TOS nu a setat in realitate TOS<br />
in kernelurile ver. 2.1.102 pana la 2.1.111. Aceasta problema a fost rezolvata<br />
in 2.1.112.</p>
<p>6.7. ipautofw si ipportfw nu merg!</p>
<p>Pentru 2.0.x, aceasta este adevarat; nu am avut timp pentru a crea si mentine<br />
un patch pentru ipchains si ipautofw/ipportfw.</p>
<p>Pentru 2.1.x, downloadeaza ipmasqadm al lui Juan Ciarlante de la:<br />
&lt;url url=&#8221;http://juanjox.linuxhq.com/&#8221;<br />
name=&#8221;http://juanjox.linuxhq.com/&#8221;&gt;</p>
<p>si foloseste-l la fel ca si cum ai fi folosit ipautofw si ipportfw, cu<br />
exceptia faptului ca in loc de ipportfw tastezi ipmasqadm portfw, si in loc de<br />
ipautofw tastezi ipmasqadm autofw.</p>
<p>6.8. xosview este stricat!</p>
<p>Fa upgrade la versiunea 1.6.0 sau mai avansata, unde nu este necesar nici un<br />
fel de reguli in firewall pentru kernelurile 2.1.x. Se pare ca iar nu<br />
functioneaza in ver. 1.6.1.; te rog contacteaza autorul (nu este greseala<br />
mea!).</p>
<p>6.9. Segmentation Fault din cauza tintei &#8220;-j REDIRECT&#8221;!</p>
<p>Acesta este o eroare de programare in ipchains, ver. 1.3.3. Upgrade.</p>
<p>6.10. Nu pot preciza valori de timeout pentru masquerading!</p>
<p>Este adevarat (pentru kernelurile 2.1.x) pana la ver. 2.1.123. In 2.1.124,<br />
incercarea de a seta valori pentru timeout-ul din masqueradig cauza o blocare<br />
a kernelului (schimba return cu ret la linia 1328 din fisierul<br />
net/ipv4/ip_fw.c). In 2.1.125, functioneaza cum trebuie.</p>
<p>6.11. Vreau sa filtrez IPX!</p>
<p>Asta se pare ca vor si altii. Din pacate codul meu acopera doar IP. Insa,<br />
exista posibilitatea pentru a filtra IPX! Trebuie doar sa scrii codul, te voi<br />
ajuta unde este posibil.</p>
<p>7. Un exemplu serios</p>
<p>Acest exemplu a fost luat de la Michael Neuling si tutorialul meu din<br />
LinuxWorld din Martie 1999; acesta nu este singura cale pentru a rezova<br />
problema data, dar este probabil cea mai simpla. Sper ca o sa o gasesti<br />
interesanta.</p>
<p>7.1. Topologia retelei</p>
<p>- O retea interna masqueradata (sisteme de operare variate), pe care o numim<br />
&#8220;GOOD&#8221;.</p>
<p>- Servere expuse intr-o retea separata (numita &#8220;DMZ&#8221; de la zona<br />
demilitarizata).</p>
<p>- Conexiunea PPP catre Internet (numita &#8220;BAD&#8221;).</p>
<p>Retea externa    (BAD)<br />
|<br />
|<br />
ppp0|<br />
&#8212;&#8212;&#8212;&#8212;&#8212;<br />
| 192.84.219.1|           Reteaua de servere (DMZ)<br />
|             |eth0<br />
|             |&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
|             |192.84.219.250 |             |              |<br />
|             |               |             |              |<br />
|192.168.1.250|               |             |              |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;          &#8212;&#8212;&#8211;       &#8212;&#8212;-        &#8212;&#8212;-<br />
| eth1            | SMTP |       | DNS |        | WWW |<br />
|                 &#8212;&#8212;&#8211;       &#8212;&#8212;-        &#8212;&#8212;-<br />
|              192.84.219.128  192.84.219.129  192.84.218.130<br />
|<br />
Retea interna    (GOOD)</p>
<p>7.2. Scopurile</p>
<p>Filtrul de pachete de pe ruter:</p>
<p>PING orice retea<br />
Aceasta este folositor pentru a verifica daca un sistem este oprit.</p>
<p>TRACEROUTE orice retea<br />
Inca odata, folositor pentru analize.</p>
<p>Acces DNS<br />
Pentru a face ping-ul si DNS-ul mai folositor</p>
<p>In cadrul DMZ:<br />
Serverul de mail (SMTP):</p>
<p>- SMTP catre exterior<br />
- Permiterea accesului SMTP din interior si exterior<br />
- Permiterea accesului POP3 din interior.</p>
<p>Serverul de nume (DNS):</p>
<p>- Trimitere de pachete DNS catre exterior<br />
- Permiterea accesului DNS din reteaua interna, externa si de pe ruter.</p>
<p>Serverul WWW:</p>
<p>- Permiterea accesului http din exterior si interior<br />
- Permiterea accesului rsync din interior</p>
<p>Reteaua interna:</p>
<p>Permiterea accesului www, ftp, ssh si traceroute<br />
Aceastea sunt lucruri permise destul de standard, in unele<br />
locuri sistemele au voie sa faca orice, dar aici vom fi mai<br />
restrictivi.</p>
<p>Permiterea accesului SMTP catre serverul de mail<br />
Evident, dorim ca sa aiba posibilitatea sa trimita mailuri.</p>
<p>Permiterea accesului POP3 catre serverul de mail<br />
In acest mod isi pot citi mail-ul.</p>
<p>Permiterea accesului DNS catre nameserver<br />
Au nevoie de posibilitatea de a rezolva numele externe pentru<br />
www, ssh, ftp, si traceroute.</p>
<p>Permiterea accesului rsync catre serverul de web<br />
Acesta este modul prin care vor sincroniza serverul extern de<br />
web cu cel intern.</p>
<p>Permiterea accesului WWW catre serverul de WEB<br />
Evident, trebuie sa poata fi accesat serverul nostru extern<br />
de web.</p>
<p>Permiterea ping-ului catre ruter<br />
Pentru a realiza daca este jos ruterul, ca sa nu dea vina pe<br />
noi daca un server extern este jos.</p>
<p>7.3. Inainte de realizarea filtrarii de pachete</p>
<p>- Anti-spoofing<br />
Cum nu avem de a face cu rutare asimetrica, putem in mod simplu sa dam<br />
drumul la anti-spoofing pentru toate interfetele.</p>
<p># for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 &gt; $f; done<br />
#</p>
<p>- Configurarea filtrului de pachete sa interzica (DENY) toate pachetele<br />
Permitem insa traficul pentru interfata loopback, dar nu permiterm<br />
nimic alceva.</p>
<p># ipchains -A input -i ! lo -j DENY<br />
# ipchains -A output -i ! lo -j DENY<br />
# ipchains -A forward -j DENY<br />
#</p>
<p>- Configurarea interfetelor<br />
Aceasta este de obicei realizata in scripturile de initializare. Fii<br />
sigur ca pasii de mai sus sunt realizati inainte de configurarea<br />
interfetelor, pentru a preveni scaparea eventualelor pachete.</p>
<p>- Introduce modulele de masquerading specifice protocolului<br />
Este necesar sa introducem modulul de masquerading pentru FTP, astfel<br />
incat ftp activ si pasiv sa fie disponibile din reteaua interna.</p>
<p># insmod ip_masq_ftp<br />
#</p>
<p>7.4. Filtrarea de pachete pentru pachetele directe</p>
<p>Deorece se realizeaza masquerading, cel mai bine este sa le filtrezi in<br />
chain-ul forward.</p>
<p>Imparte chain-ul forward in diferite chain-uri definite de catre utilizator in<br />
functie de interfata sursa/destinatie; aceasta abordare imparte problema in<br />
bucati.</p>
<p>ipchains -N good-dmz<br />
ipchains -N bad-dmz<br />
ipchains -N good-bad<br />
ipchains -N dmz-good<br />
ipchains -N dmz-bad<br />
ipchains -N bad-good</p>
<p>Acceptarea erorile standard ICMP este un lucru obisnuit, asa ca specificam un<br />
chain pentru acestea.</p>
<p>ipchains -N icmp-acc</p>
<p>7.4.1. Trecerea spre alte chain-uri din chain-ul forward</p>
<p>Din nefericire, in chain-ul forward cunoastem doar interfata de iesire. De<br />
aceea, pentru a realiza interfata pe unde a intrat pachetul, ne folosim de<br />
adresa sursa (facilitatea anti-spoofing previne adresele sursa false).</p>
<p>Observa ca logam toate pachetele cu adresa sursa falsa (evident, aceasta nu ar<br />
trebui sa se intample niciodata).</p>
<p>ipchains -A forward -s 192.168.1.0/24 -i eth0 -j good-dmz<br />
ipchains -A forward -s 192.168.1.0/24 -i ppp0 -j good-bad<br />
ipchains -A forward -s 192.84.219.0/24 -i ppp0 -j dmz-bad<br />
ipchains -A forward -s 192.84.219.0/24 -i eth1 -j dmz-good<br />
ipchains -A forward -i eth0 -j bad-dmz<br />
ipchains -A forward -i eth1 -j bad-good<br />
ipchains -A forward -j DENY -l</p>
<p>7.4.2. Definirea chain-ului icmp-acc</p>
<p>Pachetele care sunt erori ICMP sunt acceptate, in caz contrar, traversarea va<br />
continua din chain-ul anterior.</p>
<p>ipchains -A icmp-acc -p icmp &#8211;icmp-type destination-unreachable -j ACCEPT<br />
ipchains -A icmp-acc -p icmp &#8211;icmp-type source-quench -j ACCEPT<br />
ipchains -A icmp-acc -p icmp &#8211;icmp-type time-exceeded -j ACCEPT<br />
ipchains -A icmp-acc -p icmp &#8211;icmp-type parameter-problem -j ACCEPT</p>
<p>7.4.3. Reguli pentru conexiuni reteaua interna ==&gt; DMZ</p>
<p>Restrictii interne:</p>
<p>- Este permis accesul WWW, ftp, traceroute, ssh catre exterior<br />
- Este permis accesul accesul SMTP catre serverul de mail<br />
- Este permis accesul pop3 catre serverul de mail<br />
- Este permis accesul DNS la namerserver<br />
- Este permis rsync catre serverul de Web<br />
- Este permis accesul WWW catre serverul de Web<br />
- Este permis ping catre ruter</p>
<p>Am putea sa realizam masquerading din reteaua interna catre DMZ, dar nu facem<br />
acest lucru. Cum nimeni din reteaua interna nu ar trebui sa incerce sa faca<br />
lucruri rele, logam toate pachetele ce sunt interzise.</p>
<p>Observati ca in versiunile mai vechi de Debian numesc &#8220;pop3&#8243; &#8220;pop-3&#8243; care nu<br />
respecta RFC1700.</p>
<p>ipchains -A good-dmz -p tcp -d 192.84.219.128 smtp -j ACCEPT<br />
ipchains -A good-dmz -p tcp -d 192.84.219.128 pop3 -j ACCEPT<br />
ipchains -A good-dmz -p udp -d 192.84.219.129 domain -j ACCEPT<br />
ipchains -A good-dmz -p tcp -d 192.84.219.129 domain -j ACCEPT<br />
ipchains -A good-dmz -p tcp -d 192.84.218.130 www -j ACCEPT<br />
ipchains -A good-dmz -p tcp -d 192.84.218.130 rsync -j ACCEPT<br />
ipchains -A good-dmz -p icmp -j icmp-acc<br />
ipchains -A good-dmz -j DENY -l</p>
<p>7.4.5. Reguli pentru conexiuni din reteaua interna ==&gt; reteaua externa</p>
<p>Restrictionare in reteaua DMZ numai la:<br />
- serverul de mail:<br />
- SMTP catre exterior<br />
- acceptare acces SMTP din interior si exterior<br />
- acceptare acces pop3 din interior</p>
<p>- serverul de nume:<br />
- trimitere cereri DNS catre exterior<br />
- acceptarea acces DNS din reteaua interna, externa si ruter</p>
<p>- serverul de web:<br />
- acceptare acces HTTP din exterior si interior<br />
- acceptare acces rsync din interior</p>
<p>Lucruri pe care le permitem din Internet catre DMZ</p>
<p>- nu logam  violarile, deoarece se pot intampla.</p>
<p>ipchains -A bad-dmz -p tcp -d 192.84.219.128 smtp -j ACCEPT<br />
ipchains -A bad-dmz -p udp -d 192.84.219.129 domain -j ACCEPT<br />
ipchains -A bad-dmz -p tcp -d 192.84.219.129 domain -j ACCEPT<br />
ipchains -A bad-dmz -p tcp -d 192.84.218.130 www -j ACCEPT<br />
ipchains -A bad-dmz -p icmp -j icmp-acc<br />
ipchains -A bad-dmz -j DENY</p>
<p>7.4.5. Reguli pentru conexiuni din reteaua interna ==&gt; reteaua externa</p>
<p>Restrictionare in reteaua interna numai la:<br />
- permiterea in exterior traficului WWW, ftp, traceroute, ssh<br />
- acceptare acces SMTP catre serverul de mail<br />
- acceptare acces POP-3 catre serverul de mail<br />
- acceptare acces DNS catre nameserver<br />
- acceptare acces rsync catre nameserver<br />
- acceptare acces WWW catre serverul de web<br />
- acceptare ping catre ruter<br />
- logare a violarilor<br />
- porturile UDP destinatie 33434 sunt permise si folosite de<br />
traceroute</p>
<p>Multi oameni permit totul din reteaua locala, noi nu.<br />
Ftp pasiv este utilizat cu ajutorul modulului de masquerading.</p>
<p>ipchains -A good-bad -p tcp &#8211;dport www -j MASQ<br />
ipchains -A good-bad -p tcp &#8211;dport ssh -j MASQ<br />
ipchains -A good-bad -p udp &#8211;dport 33434:33500 -j MASQ<br />
ipchains -A good-bad -p tcp &#8211;dport ftp -j MASQ<br />
ipchains -A good-bad -p icmp &#8211;icmp-type ping -j MASQ<br />
ipchains -A good-bad -j REJECT -l</p>
<p>7.4.6. Reguli pentru conexiuni din DMZ ==&gt; reteaua interna</p>
<p>Restrictionare in reteaua interna numai la:<br />
- permiterea in exterior traficului WWW, ftp, traceroute, ssh<br />
- acceptare acces SMTP catre serverul de mail<br />
- acceptare acces POP-3 catre serverul de mail<br />
- acceptare acces DNS catre nameserver<br />
- acceptare acces rsync catre nameserver<br />
- acceptare acces WWW catre serverul de web<br />
- acceptare ping catre ruter</p>
<p>Daca realizam masquerading din reteaua interna catre DMZ, pur si si<br />
simplu refuzam pachetele ce vin din cealalta parte. Astfel, permitem<br />
pachetele care nu pot fi decat parte a unei conexiuni stabilite.</p>
<p>ipchains -A dmz-good -p tcp ! -y -s 192.84.219.128 smtp -j ACCEPT<br />
ipchains -A dmz-good -p udp -s 192.84.219.129 domain -j ACCEPT<br />
ipchains -A dmz-good -p tcp ! -y -s 192.84.219.129 domain -j ACCEPT<br />
ipchains -A dmz-good -p tcp ! -y -s 192.84.218.130 www -j ACCEPT<br />
ipchains -A dmz-good -p tcp ! -y -s 192.84.218.130 rsync -j ACCEPT<br />
ipchains -A dmz-good -p icmp -j icmp-acc<br />
ipchains -A dmz-good -j DENY -l</p>
<p>7.4.7. Reguli pentru conexiuni din DMZ ==&gt; reteaua externa</p>
<p>Restrictionare in reteaua DMZ numai la:<br />
- serverul de mail:<br />
- SMTP catre exterior<br />
- acceptare acces SMTP din interior si exterior<br />
- acceptare acces pop3 din interior</p>
<p>- serverul de nume:<br />
- trimitere cereri DNS catre exterior<br />
- acceptarea acces DNS din reteaua interna, externa si ruter</p>
<p>- serverul de web:<br />
- acceptare acces HTTP din exterior si interior<br />
- acceptare acces rsync din interior</p>
<p>ipchains -A dmz-bad -p tcp -s 192.84.219.128 smtp -j ACCEPT<br />
ipchains -A dmz-bad -p udp -s 192.84.219.129 domain -j ACCEPT<br />
ipchains -A dmz-bad -p tcp -s 192.84.219.129 domain -j ACCEPT<br />
ipchains -A dmz-bad -p tcp ! -y -s 192.84.218.130 www -j ACCEPT<br />
ipchains -A dmz-bad -p icmp -j icmp-acc<br />
ipchains -A dmz-bad -j DENY -l</p>
<p>7.4.8. Reguli pentru conexiuni din reteaua externa ==&gt; reteaua interna</p>
<p>- Nu permitem nici o conexiune nemasqueradata din reteaua externa catre<br />
reteaua interna</p>
<p>ipchains -A bad-good -j REJECT</p>
<p>7.4.9. Filtrul de pachete pentru insusi sistemul care este ruter</p>
<p>- Daca doresti sa filtrezi pachetele ce au ca destinatie insusi ruterul,<br />
aceasta sa realizeaza in chain-ul input. Cream cate un chain pentru fiecare<br />
interfata destinatie.</p>
<p>ipchains -N bad-if<br />
ipchains -N dmz-if<br />
ipchains -N good-if</p>
<p>- Cream reguli pentru a sari la aceste chain-uri</p>
<p>ipchains -A input -d 192.84.219.1 -j bad-if<br />
ipchains -A input -d 192.84.219.250 -j dmz-if<br />
ipchains -A input -d 192.168.1.250 -j good-if</p>
<p>7.4.9.1. Interfata catre reteaua externa</p>
<p>Restrictionarea ruterului numai la:<br />
- PING catre orice retea<br />
- TRACEROUTE catre orice retea<br />
- acces catre DNS<br />
- Interfata externa primeste deasemenea replay-uri la pachetele<br />
masqueradate (masquerading foloseste porturile sursa 61000 si<br />
65095), erorile ICMP pentru acestea si replay-urile la PING.</p>
<p>ipchains -A bad-if -i ! ppp0 -j DENY -l<br />
ipchains -A bad-if -p TCP &#8211;dport 61000:65095 -j ACCEPT<br />
ipchains -A bad-if -p UDP &#8211;dport 61000:65095 -j ACCEPT<br />
ipchains -A bad-if -p ICMP &#8211;icmp-type pong -j ACCEPT<br />
ipchains -A bad-if -j icmp-acc<br />
ipchains -A bad-if -j DENY</p>
<p>7.4.9.2. Interfata catre reteaua de servere (DMZ)</p>
<p>Restrictionarea ruterului numai la:<br />
- PING catre orice retea<br />
- TRACEROUTE catre orice retea<br />
- acces catre DNS<br />
- interfata catre DMZ primeste replay-uri DNS, ping si erori ICMP</p>
<p>ipchains -A dmz-if -i ! eth0 -j DENY<br />
ipchains -A dmz-if -p TCP ! -y -s 192.84.219.129 53 -j ACCEPT<br />
ipchains -A dmz-if -p UDP -s 192.84.219.129 53 -j ACCEPT<br />
ipchains -A dmz-if -p ICMP &#8211;icmp-type pong -j ACCEPT<br />
ipchains -A dmz-if -j icmp-acc<br />
ipchains -A dmz-if -j DENY -l</p>
<p>7.4.9.3. Interfata catre reteaua interna</p>
<p>Restrictionarea ruterului numai la:<br />
- PING catre orice retea<br />
- TRACEROUTE catre orice retea<br />
- acces catre DNS</p>
<p>Restrictionarea retelei interne numai la:<br />
- permiterea in exterior traficului WWW, ftp, traceroute, ssh<br />
- acceptare acces SMTP catre serverul de mail<br />
- acceptare acces POP-3 catre serverul de mail<br />
- acceptare acces DNS catre nameserver<br />
- acceptare acces rsync catre nameserver<br />
- acceptare acces WWW catre serverul de web<br />
- acceptare ping catre ruter<br />
- interfata interna primeste ping-uri, replay-uri la ping si erori ICMP</p>
<p>ipchains -A good-if -i ! eth1 -j DENY<br />
ipchains -A good-if -p ICMP &#8211;icmp-type ping -j ACCEPT<br />
ipchains -A good-if -p ICMP &#8211;icmp-type pong -j ACCEPT<br />
ipchains -A good-if -j icmp-acc<br />
ipchains -A good-if -j DENY -l</p>
<p>7.5. In final</p>
<p>- Stergerea regulilor ce blocheaza pachetele:</p>
<p>ipchains -D input 1<br />
ipchains -D forward 1<br />
ipchains -D output 1</p>
<p>8. Anexa: Diferente intre ipchains si ipfwadm</p>
<p>Unele dintre aceste modificari sunt un rezultat al schimbarilor din kernel, si<br />
unele al faptului ca ipchains este diferit de ipfwadm</p>
<p>1. Multe argumente au fost schimbate: literele mari indica o comanda, literele<br />
mici indica o optiune.</p>
<p>2. Chain-uri arbitrare sunt posibile, deci chiar si chain-urile predefinite<br />
au nume intregi in loc de argumente (ex. &#8220;input&#8221; in loc de &#8220;-I&#8221;).</p>
<p>3. Optiunea &#8220;-k&#8221; a disparut: foloseste &#8220;! -y&#8221;.</p>
<p>4. Optiunea &#8220;-b&#8221; defapt introduce/sterge/adauga doua reguli, ma degraba decat<br />
o singura regula bidirectionala.</p>
<p>5. Optiunea &#8220;-b&#8221; poate fi folosita impreauna cu &#8220;-C&#8221; pentru a realiza doua<br />
verificari (cate una in fiecare directie).</p>
<p>6. Optiunea &#8220;-x&#8221; in folosire cu &#8220;-l&#8221; a fost inlocuit cu &#8220;-v&#8221;.</p>
<p>7. Porturi multiple sursa si destinatie nu mai sunt suportate. Din fericire<br />
faptul ca se pot nega siruri de porturi a indreptat pe undeva acest lucru.</p>
<p>8. Interfetele pot fi specificate numai prin nume (nu si prin adrese). Vechea<br />
sintaxa s-a schimbat in liniste oricum pentru kernelurile versiunea 2.1.</p>
<p>9. Fragmentele sunt examinate, nu mai sunt permise automat.</p>
<p>10. Accounting chain-urile explicite au fost inlaturate</p>
<p>11. Protocoale diferite peste IP pot fi testate.</p>
<p>12. Comportamentul vechi pentru potrivirea SYN si ACK (care inainte a fost<br />
ignorat pentru pachetele non-TCP) s-a schimbat; optiunea SYN nu este valida<br />
pentru reguli care nu sunt specifice TCP.</p>
<p>13. Counterele sunt acum pe 64 de biti pentru masini pe 32 de bit, nu pe 32 de<br />
biti.</p>
<p>14. Inversarea optiunilor este posibila.</p>
<p>15. Codurile ICMP sunt suportate acum.</p>
<p>16. Definirea mai multe interfete odata este suportata.</p>
<p>17. Manipularea TOS este acum verificata: inainte kernelul te oprea in<br />
liniste, acum ipchains returneaza o eroare pentru cazurile invalide.</p>
<p>8.1. Tabel pentru informare rapida</p>
<p>[ In principal, argumentele pentru comenzi sunt cu litere mari, si argumentele<br />
pentru optiuni sunt cu litere mici ]</p>
<p>Inca un lucru de observat, masquerading este specificat prin &#8220;-j MASQ&#8221;, este<br />
complet diferit fata de &#8220;-j ACCEPT&#8221;, si nu tratat doar ca un efect secundar,<br />
cum face ipfwadm.</p>
<p>================================================================<br />
| ipfwadm      | ipchains              | Note<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -A [both]    | -N acct               | Creeaza un chain &#8220;acct&#8221;<br />
|              |&amp; -I 1 input -j acct   | si determina pachetele din<br />
|              |&amp; -I 1 output -j acct  | chain-ul input si output<br />
|              |&amp; acct                 | sa il traverseze<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -A in        | input                 | O regula fara nici o tinta<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -A out       | output                | O regula fara nici o tinta<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -F           | forward               | Foloseste acesta ca [chain].<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -I           | input                 | Foloseste acesta ca [chain].<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -O           | output                | Foloseste acesta ca [chain].<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -M -l        | -M -L                 |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -M -s        | -M -S                 |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -a policy    | -A [chain] -j POLICY  | (dar vezi -r si -m).<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -d policy    | -D [chain] -j POLICY  | (dar vezi -r si -m).<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -i policy    | -I 1 [chain] -j POLICY| (dar vezi -r si -m).<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -l           | -L                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -z           | -Z                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -f           | -F                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -p           | -P                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -c           | -C                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -P           | -p                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -S           | -s                    | Accepta un port sau un sir<br />
|              |                       | nu valori multiple.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -D           | -d                    | Accepta un port sau un sir<br />
|              |                       | nu valori multiple.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -V           | &lt;none&gt;                | Foloseste -i [nume].<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -W           | -i                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -b           | -b                    | Acum sunt defapt 2 reguli.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -e           | -v                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -k           | ! -y                  | Nu functioneaza daca nu<br />
|              |                       | este specificat -p tcp.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -m           | -j MASQ               |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -n           | -n                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -o           | -l                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -r [redirpt] | -j REDIRECT [redirpt] |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -t           | -t                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -v           | -v                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -x           | -x                    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| -y           | -y                    | Nu functioneaza daca nu<br />
|              |                       | este specificat -p tcp.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>8.2. Exemple de comenzi ipfwadm translatate in ipchains</p>
<p>Comanda veche: ipfwadm -F  -p deny</p>
<p>Comanda noua: ipchains -P forward DENY</p>
<p>Comanda veche: ipfwadm -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0</p>
<p>Comanda noua: ipchains -A forward -j MASQ -s 192.168.0.0/24 -d<br />
0.0.0.0/0</p>
<p>Comanda veche: ipfwadm -I -a accept -V 10.1.2.1 -S 10.0.0.0/8 -D<br />
0.0.0.0/0</p>
<p>Comanda noua: ipchains -A input -j ACCEPT -i eth0 -s 10.0.0.0/8 -d<br />
0.0.0.0/0</p>
<p>(Observa ca nu exista nici un echivalent pentru a specifica interfata prin<br />
adresa: foloseste numele interfetei. Pe aceasta masina, 10.1.2.1 corespunde cu<br />
eth0).</p>
<p>9. Anexa: Folosirea scriptului ipfwadm-wrapper</p>
<p>Scriptul ipfwadm-wrapper ar trebui sa fie un inlocuitor pentru ipfwadm pentru<br />
compatibilitate cu ipfwadm 2.3a.</p>
<p>Singura optiune pe care nu o poate folosi este &#8220;-V&#8221;. Cand aceasta este<br />
folosita un avertisment este afisat. Daca optiunea &#8220;-W&#8221; este deasemenea<br />
folosita, optiunea &#8220;-V&#8221; este ignorata. In caz contrar, scriptul incearca sa<br />
gaseasca numele interfetei asociata cu aceea adresa folosind ifconfig. Daca<br />
acest lucru nu reuseste (cum ar fi din cauza ca interfata nu este activata)<br />
atunci scriptul se opreste cu un mesaj de eroare.</p>
<p>Acest avertizment poate fi ascuns daca se inlocuieste &#8220;-V&#8221; cu &#8220;-W&#8221;, sau<br />
redirectand output-ul scriptului catre /dev/null.</p>
<p>Daca gasesti greseli in acest script, sau lucruri care sunt diferite intre<br />
realul ipfwadm si acest script, te rog sa imi trimiti bug-ul: trimite un<br />
e-mail la rusty@linuxcare.com cu &#8220;BUG-REPORT&#8221; in campul subiectului. Te rog sa<br />
listezi versiunea ta de ipfwadm  (ipfwadm -h), versiunea de ipchains (ipchains<br />
&#8211;version) si versiunea scriptului ipfwadm wrapper (ipfwadm-wrapper<br />
&#8211;version). Trimite de asemenea output-ul pentru ipchains-save. Multumiri<br />
anticipate.</p>
<p>Folosirea impreuna a acestui script si ipchains este riscul tau.</p>
<p>10. Anexa: Multumiri.</p>
<p>Multe multumiri pentru Michael Neuling, care a realizat prima versiune de cod<br />
pentru IP chains in timp ce lucra pentru mine. Imi cer scuze in mod public<br />
pentru ca nu am luat in considerare ideea sa de result-caching, pe care a<br />
propus-o mai tarziu Alan Cox, si pe care in final am inceput sa o implementez,<br />
observand greselile mele.</p>
<p>Multumiri lui Alan Cox, pentru tech suport de 24 de ore prin e-mail, si pentru<br />
incurajari.</p>
<p>Multumiri tuturor autorilor codului ipfwadm si ipfw, in special lui Jos Vos.</p>
<p>Multumiri pentru beta-testeri si vanatorii de bug-uri in special lui: Jordan<br />
Mendelson, Shaw Carruthers, Kevin Moule, Dr. Liviu Daia, Helmut Adams,<br />
Franck Sicard, Kevin Littlejohn, Matt Kemner, John D. Hardin, Alexey<br />
Kuznetsov, Leos Bitto, Jim Kunzman, Gerard Gerritsen, Serge Sivkov,<br />
Andrew Burgess, Steve Schmidtke, Richard Offer, Bernhard Weisshuhn,<br />
Larry Auton, Ambrose Li, Pavel Krauz, Steve Chadsey, Francesco<br />
Potorti`, Alain Knaff, Casper Boden-Cummins and Henry Hollenberg.</p>
<p>10.1. Traduceri</p>
<p>Oamenii care realizeaza traduceri ar trebui sa se puna la inceputul paginii de<br />
Multumiri, astfel:&#8221;Multe multumiri lui XXX, pentru traducerea exacta din<br />
engleza. Apoi spune-mi despre traducere ta, pentru a putea sa te includ aici.</p>
<p>Arnaud Launay, asl@launay.org:</p>
<p>http://www.freenix.fr/unix/linux/HOWTO/IPCHAINS-HOWTO.html</p>
<p>&lt;http://www.freenix.fr/unix/linux/HOWTO/IPCHAINS-HOWTO.html&gt;</p>
<p>Giovanni Bortolozzo, borto@pluto.linux.it:</p>
<p>http://www.pluto.linux.it/ildp/HOWTO/IPCHAINS-HOWTO.html</p>
<p>&lt;http://www.pluto.linux.it/ildp/HOWTO/IPCHAINS-HOWTO.html&gt;</p>
<p>Herman Rodrнguez, herman@maristas.dhis.org:</p>
<p>http://netfilter.kernelnotes.org/ipchains/spanish/HOWTO.html</p>
<p>&lt;http://netfilter.kernelnotes.org/ipchains/spanish/HOWTO.html&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=165</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
