<?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; filtru de pachete</title>
	<atom:link href="http://resurse-educationale.uv.ro/?feed=rss2&#038;tag=filtru-de-pachete" 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>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>
	</channel>
</rss>
