<?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; Web</title>
	<atom:link href="http://resurse-educationale.uv.ro/?cat=17&#038;feed=rss2" 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>Cum sa realizezi masquerading, transparent proxy,  forwardare de porturi, si alte forme de NAT pentru kernelurile Linux ver 2.4.</title>
		<link>http://resurse-educationale.uv.ro/?p=173</link>
		<comments>http://resurse-educationale.uv.ro/?p=173#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:50:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[dnat]]></category>
		<category><![CDATA[forward]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[mapare]]></category>
		<category><![CDATA[masquerading]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[porturi]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[redirectare]]></category>
		<category><![CDATA[snat]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=173</guid>
		<description><![CDATA[traducere ver. 0.2 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=173">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>traducere ver. 0.2 de catre Riddl</p>
<p>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!<br />
______________________________________________________________________<br />
Linux 2.4 NAT HOWTO<br />
Rusty Russell, lista de discutii netfilter@lists.samba.org<br />
$Revision: 1.3 $ $Date: 2002/06/05 13:21:56 $</p>
<p>Acest document descrie cum sa realizezi masquerading, transparent proxy,<br />
forwardare de porturi, si alte forme de NAT pentru kernelurile Linux ver 2.4.</p>
<p>______________________________________________________________________</p>
<p>Cuprins</p>
<p>1. Introducere<br />
2. Care este site-ul oficial si care sunt listele de discutii?<br />
2.1. Ce inseamna NAT?<br />
2.2. De ce as dori sa realizez NAT?<br />
3. Doua tipuri de NAT<br />
4. Trecere rapida de la kernelurile 2.0 si 2.2<br />
4.1. Doresc sa realizez doar masquerading! Help!<br />
4.2. Dar despre ipmasqadm?<br />
5. Controlul a ceea ce dorim sa facem cu NAT?<br />
5.1 Selectare simpla folosind iptables<br />
5.2 Aspecte delicate in privinta selectarii pachetelor ce le dorim<br />
modificate<br />
6. Cum sa modificam pachetele<br />
6.1 Folosirea NAT pentru modificarea adresei sursa (SNAT)<br />
6.1.1 Masquerading<br />
6.2 Folosirea NAT pentru modificarea adresei destinatie (DNAT)<br />
6.2.2 Redirectare<br />
6.3 Mapare complexa<br />
6.3.1. Selectarea de adrese multiple dintr-un sir<br />
6.3.2. Realizarea de mapare NAT nula<br />
6.3.3. Comportamentul NAT standard<br />
6.3.4. Mapare implicita a porturilor sursa<br />
6.3.5. Ce se intampla cand NAT-area nu reuseste<br />
6.3.6. Mapari multiple, Suprapuneri si Conflicte<br />
6.3.7. Schimbarea destinatiei conexiunilor generate local<br />
7. Protocoale speciale<br />
8. Avertizmente privind folosirea NAT<br />
9. Folosirea SNAT si rutarea<br />
10. Folosirea DNAT pentru adrese aflate in aceeasi retea.<br />
11. Multumiri</p>
<p><span id="more-173"></span></p>
<p>______________________________________________________________________</p>
<p>1. Introducere</p>
<p>Bine ai venit!</p>
<p>Esti pe cale sa incepi sa inveti fascinanta (si uneori inspaimantatoare)<br />
lume a NAT-ului: traducerea adreselor de retea. Acest Howto iti va fi<br />
oarecum un ghid precis pentru kernelurile din linux ver. 2.4 si peste.</p>
<p>In kernelul de linux ver. 2.4, a fost introdus suport pentru modificarea<br />
pachetelor, numit &#8220;netfilter&#8221;. Un nivel deasupra acestuia pune la dispozitie<br />
NAT (translatarea adreselor de retea), complet rescris fata de versiunile din<br />
kernelurile anterioare.</p>
<p>(C) 2000 Paul &#8220;Rusty&#8221; Russell.  Sub licenta GNU GPL.</p>
<p>2. Care este site-ul oficial si care sunt listele 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>2.1. Ce inseamna NAT?</p>
<p>In mod normal, pachetele intr-o retea se deplaseaza de la sursa  (cum ar fi<br />
computerul tau) la destinatia  (cum ar fi www.securityorg.net) prin mai<br />
multe legaturi de retea diferite: de exemplu cam 19 de la locatia in care ma<br />
aflu eu. Nici una din aceste legaturi nu iti modifica pachetul, pur si simplu<br />
este trimis mai departe.</p>
<p>Daca una din aceste legaturi ar fi facut NAT, atunci ar fi modificat sursa sau<br />
destinatia pachetului ce intra. Dupa cum iti imaginezi nu asa a fost conceput<br />
sistemul sa functioneze, si din aceasta cauza NAT este intodeauna ceva<br />
in genul unui infirm. Deobicei legatura care a facut NAT va tine minte cum a<br />
modificat pachetul, si cand un pachet replica vine din cealalta parte, va<br />
realiza modificarea inversa a pachetului replica, asa ca totul va functiona.</p>
<p>2.2. De ce as dori sa realizez NAT?</p>
<p>Intr-o lume perfecta nu ai avea nevoie. Intre timp, principale motive sunt:</p>
<p>Conexiunile prin modem la internet<br />
Cele mai multe ISP-uri iti dau doar o singura adresa IP cand te<br />
conectezi la ei. Poti trimite pachete cu orice adresa sursa pe care o<br />
doresti, dar doar pachetele cu aceasta adresa IP se vor intoarce la<br />
tine. Daca doresti sa folosesti mai multe sisteme (cum ar fi reteaua<br />
de acasa) pentru a le conecta la internet prin aceasta singura<br />
legatura vei avea nevoie de NAT.<br />
Aceasta este de departe cel mai raspandit mod de folosire al NAT-ului<br />
din zilele noastre, cunoscut si sub numele de &#8220;masquerading&#8221; in lumea<br />
Linuxului. Eu numesc aceasta SNAT, deoarece modifici adresa sursa a<br />
primului pachet.</p>
<p>Servere multiple<br />
Uneori doresti sa modifici directia in care sa se indrepte pachetele<br />
ce intra in reteaua ta. In mod frecvent aceasta este (ca si mai sus)<br />
deoarece ai doar o singura adresa IP, dar doresti ca oameni sa poata<br />
sa ajunga la computerele din spatele sistemului cu adresa IP &#8220;reala&#8221;.<br />
Daca rescrii adresa destinatie a pachetelor care intra, poti realiza<br />
acest lucru. Acest tip de NAT a fost numit forwardare (inaintare) de<br />
porturi in versiunile anterioare de Linux.<br />
O variatie des intalnita a acestei aplicatii al NAT-ului este<br />
load-sharing-ul (incarcare partajata), unde se mapeaza mai multe<br />
sisteme, permitand sistemelor sa ajung la aceste sisteme. Daca<br />
realizezi acest lucru la o scara mare, ar fi bine sa te uiti pe<br />
Linux Virtual Server &lt;http://linuxvirtualserver.org/&gt;.</p>
<p>Proxy transparent<br />
Uneori doresti sa para ca fiecare pachet care trece prin sistemul tau<br />
Linux este destinat pentru un program ruland chiar pe sistemul tau.<br />
Acest lucru este folosit pentru a realiza proxy-uri transparente: un<br />
proxy este un program care se interpune intre reteaua ta si lumea<br />
exterioara, mediand comunicarea intre ele. Se numeste transparent<br />
deoarece reteaua ta nici nu va realiza ca foloseste un proxy, doar daca<br />
bineinteles, proxy-ul nu functioneaza.<br />
Squid-ul poate fi configurat sa ruleze in acest mod, si aceasta era<br />
numita redirectare sau realizare de proxy transparent in versiunile<br />
anterioare de linux.</p>
<p>3. Doua tipuri de NAT</p>
<p>Am impartit NAT-ul in doua tipuri: NAT pentru sursa (SNAT) si NAT pentru<br />
destinatie (DNAT).</p>
<p>SNAT este realizat atunci cand modifici adresa sursa al primului pachet:<br />
schimbi sursa de unde porneste conexiunea. SNAT este intodeauna realizat dupa<br />
procesul de rutare al pachetelor, chiar inainte de a pleca pe conexiune<br />
pachetul. Masquerading este o forma particulara de SNAT.</p>
<p>DNAT este realizat cand modifici adresa destinatie al primului pachet: schimbi<br />
destinatia unde va fi facuta conexiunea. DNAT este intodeauna realizat<br />
inainte de rutarea pachetelor, cand pachetul tocmai a venit prin interfata.<br />
Forwardare de porturi, load-sharing-ul, si proxy-ul transparent sunt toate<br />
forme de DNAT.</p>
<p>4. Trecere rapida de la kernelurile 2.0 si 2.2</p>
<p>Imi pare rau pentru aceia dintre dumneavastra socati de trecerea de la<br />
versiunea 2.0 (ipfwadm) la 2.2 (ipchains). Exista vesti bune si vesti proaste.</p>
<p>In primul rand, poti in mod simplu sa folosesti ipchains si ipfwadm ca mai<br />
inainte. Pentru aceasta trebuie sa incarci (insmod) modulele pentru kernel<br />
&#8220;ipchains.o&#8221; sau &#8220;ipfwadm.o&#8221; ce se gasesc in ultima distributie netfilter.<br />
Acestea se exclud reciproc (ai fost avertizat), si nu ar trebui folosite cu<br />
nici un alt modul din netfilter.</p>
<p>Odata ce unul din aceste module a fost incarcat, vei putea folos ipchains si<br />
ipfwadm in mod normal, insa cu unele diferente:</p>
<p>- Setarea de timeout-uri pentru masquerading cu ipchains  -M -S, sau ipfwadm<br />
-M -s nu rezolva nimic. Cum timeout-urile sunt mai mari pentru noua<br />
infrastructura NAT, acest lucru nu ar trebui sa conteze.</p>
<p>- Campurile init_seq, delta si previous_delta in listarea detaliata a<br />
masqueradarii sunt intodeauna zero.</p>
<p>- Resetarea si listarea counter-elor simultana &#8220;-Z -L&#8221; nu mai este posibila:<br />
countere-le nu vor fi resetate.</p>
<p>- Nivelul de compatibilitate nu este foarte bun pentru un numar de conexiuni<br />
foarte mare: nu il folosi pentru gateway-ul corporatiei.</p>
<p>Hackerii pot deasemenea sa observe:</p>
<p>- Acum te poti lega si pe porturile 61000-65095 chiar daca realizezi<br />
masquerading. Codul pentru masqueradare obisnuia sa considere ca nimic in<br />
aceasta raza ar fi fost ceva corect, asa ca programele nu puteau sa o<br />
foloseasca.</p>
<p>- &#8220;Hack-ul&#8221; (nedocumentat) &#8220;getsockname&#8221;, pe care programele ce realizau proxy<br />
transparent il puteau folosi pentru a afla adresa reala a conexiunilor nu<br />
mai este disponibil.</p>
<p>- &#8220;Hack-ul&#8221; (nedocumentat) bind-to-foreign-address (atasare pe o adresa<br />
straina) nu mai este deasemnea implementat; acesta era folosit pentru a<br />
completa iluzia de proxy transparent.</p>
<p>4.1. Doresc sa realizez doar masquerading! Help!</p>
<p>Aceasta este ce vor majoritatea oamenilor. Daca ai o adresa PPP IP dinamica,<br />
vrei in mod simplu sa spui sistemului tau ca toate pachetele ce vin din<br />
reteaua interna ar trebui sa fie modificate astfel incat sa para ca vin de la<br />
sistemul tau.</p>
<p># Incarca modulul NAT (acesta introduce toate modulele necesare)<br />
modprobe iptable_nat</p>
<p># In tabela NAT (-t nat) in chain-ul POSTROUTING adauga o regula<br />
# pentru toate pachetele care ies prin ppp0 (-p ppp0) care precizeaza<br />
# sa masqueradeze conexiunea (-j MASQUERADE).<br />
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</p>
<p># Da drumul la forwardarea IP<br />
echo 1 &gt; /proc/sys/net/ipv4/ip_forward</p>
<p>Observatie: aici nu faci nici un fel de filtrare a pachetelor: pentru aceasta<br />
citeste Packet Filtering HOWTO: capitolul &#8220;Folosirea impreuna a NAT-ului si a<br />
filtrarii de pachete&#8221;.</p>
<p>4.2. Dar despre ipmasqadm?</p>
<p>Nu este cazul sa ne facem probleme prea mari pentru compatibilitate. Poti<br />
folosi in mod simplu  &#8220;iptables -t nat&#8221; pentru a realiza forwardare de<br />
porturi. De exemplu, in Linux 2.2 ai fi facut:</p>
<p># Linux 2.2<br />
# Forwardeaza pachetele TCP catre portul 8080, adresa 1.2.3.4, spre<br />
# portul 80, adresa 192.168.1.1<br />
ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80</p>
<p>Acum ar trebui sa faci:</p>
<p># Linux 2.4<br />
# Adauga o regula inainte de procesul rutarii in chain-ul PREROUTING<br />
# (-A PREROUTING) in tabela NAT (-t nat) pentru ca pachetele TCP<br />
# (-p tcp) care vin spre adresa 1.2.3.4 (-d 1.2.3.4), portul 8080<br />
# (&#8211;dport 8080) sa aiba destinatia mapata (-j DNAT) catre<br />
# 192.168.1.1, portul 80 (&#8211;to 192.168.1.1:80)<br />
iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 &#8211;dport 8080 \<br />
-j DNAT &#8211;to 192.168.1.1:80</p>
<p>5. Controlul a ceea ce dorim sa facem cu NAT?</p>
<p>Ai nevoie sa scrii reguli NAT pentru a spune kernelului ce conexiuni sa<br />
schimbe, si cum sa le schimbe. Pentru a realiza aceasta folosim comanda<br />
iptables, si precizam ca dorim a schimba tabela NAT prin specificarea optiunii<br />
&#8220;-t nat&#8221;.</p>
<p>Tabela regulilor NAT cuprinde trei liste numite &#8220;chain-uri&#8221;: fiecare regula<br />
este examinata in chain pana cand una se potriveste. Doua chain-uri sunt<br />
numite PREROUTING (pentru DNAT, pentru pachetele care tocmai au intrat) si<br />
POSTROUTING (pentru SNAT, pentru pachetele care sunt pe cale sa iasa). Al<br />
treilea chain (OUTPUT) va fi ignorat in cele ce urmeaza.</p>
<p>Urmatoarea diagrama ilustreaza destul de bine cum stau lucrurile:</p>
<p>_____                                     _____<br />
/     \                                   /     \<br />
PREROUTING &#8211;&gt;[Routing ]&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&gt;POSTROUTING&#8212;&#8211;&gt;<br />
\D-NAT/     [Decision]                    \S-NAT/<br />
|                            ^<br />
|                            |<br />
|                            |<br />
|                            |<br />
|                            |<br />
|                            |<br />
|                            |<br />
&#8212;&#8212;&#8211;&gt; Local Process &#8212;&#8212;</p>
<p>La fiecare dintre punctele de mai sus, cand un pachet trece este determinat<br />
carei conexiuni ii este asociat. Daca este o conexiune noua, este determinat<br />
chain-ul corespunzator in tabela NAT pentru a determina ce sa facem cu acel<br />
pachet. Raspunsul determinat va fi aplicat pentru toate pachetele viitoare<br />
apartinand acelei conexiuni.</p>
<p>5.1 Selectare simpla folosind iptables</p>
<p>iptables admite un numar de optiuni standard dupa cum sunt listate mai jos.<br />
Toate optiunile care incep cu &#8220;&#8211;&#8221; pot fi prescurtate, atat timp cat iptables<br />
poate sa le deosebeasca de alte optiuni. Daca kernelul tau are iptables<br />
compilat ca modul, este necesar sa incarci intai modulul iptables: &#8220;insmod<br />
ip_tables&#8221;.</p>
<p>Cea mai importanta optiune in acest caz este optiunea de selectare a tabelei,<br />
&#8220;-t&#8221;. Pentru toate actiune NAT, vei dori sa folosesti &#8220;-t nat&#8221; pentru tabela<br />
NAT. A doua cea mai importanta optiune este &#8220;-A&#8221; pentru a adauga o noua regula<br />
la sfarsitul unui chain (&#8220;-A POSTROUTING&#8221;), sau &#8220;-I&#8221; pentru a insera o regula<br />
la inceputul unui chain (&#8220;-I PREROUTING&#8221;).</p>
<p>Poti specifia sursa (&#8220;-s&#8221; sau &#8220;&#8211;source&#8221;) si destinatia (&#8220;-d&#8221; sau<br />
&#8220;&#8211;destination&#8221;) pachetelor pe care le doresti sa le prelucrezi prin NAT.<br />
Aceste optiuni pot fi urmate de o singura adresa IP (192.168.1.1), un nume<br />
(www.securityorg.net), sau o adresa de retea (192.168.1.0/24 sau<br />
192.168.1.0/255.255.255.0).</p>
<p>Poti specifica interfata cu care sa se potriveasca regula, de intrare (&#8220;-i&#8221;<br />
sau &#8220;&#8211;in-interface&#8221;) sau de iesire (&#8220;-o&#8221; sau &#8220;&#8211;out-interface&#8221;), dar ceea ce<br />
poti specifica depinde si de chain-ul in care introduci regula: pentru<br />
chain-ul PREROUTING poti selecta numai interfete prin care intra pachetele,<br />
si in chain-ul POSTROUTING poti selecta numai interfete de iesire. Daca<br />
folosesti o interfata gresita iptables iti va da eroare.</p>
<p>5.2 Aspecte delicate in privinta selectarii pachetelor ce le dorim modificate</p>
<p>Am spus mai sus ca poti preciza o adresa sursa si destinatie. Daca vei omite<br />
optiunea privitoare la adresa sursa, atunci regula se va potrivi pentru<br />
orice adresa sursa. Analog, daca omiti optiunea pentru adresa destinatie, atunci<br />
regula se va potrivi pentru orice adresa destinatie.</p>
<p>Poti deasemenea indica un protocol specific (&#8220;-p&#8221; sau &#8220;&#8211;protocol&#8221;), cum ar fi<br />
TCP sau UDP; doar pachetele de acest tip se vor potrivi cu regula. Principalul<br />
motiv pentru a preciza unul dintre aceste protocoale permite apoi folosirea de<br />
noi optiuni: in special optiunile &#8220;&#8211;source-port&#8221; si &#8220;&#8211;destination-port&#8221;<br />
(prescurtate &#8220;&#8211;sport&#8221; si &#8220;&#8211;dport&#8221;).</p>
<p>Aceste optiuni iti permite sa specifici ca numai pachetele cu anumite porturi<br />
destinatie sau porturi sursa se vor potrivi cu regulii. Aceste optiuni sunt<br />
folositoare, de exemplu, pentru redirectarea cererilor web (porturile TCP 80<br />
sau 8080) si nemodificarea celorlalte pachete.</p>
<p>Aceste optiuni trebuie sa fie puse dupa optiunea &#8220;-p&#8221; (care are ca alt efect<br />
incarcarea optiunilor extinse pentru acel protocol). Poti folosi pentru<br />
porturi numere, sau nume cum sunt scrise in fisierul /etc/services.</p>
<p>Toate caracteristicile dupa care poti selecta un pachet sunt detaliate in<br />
pagina de manual pentru iptables (man iptables).</p>
<p>6. Cum sa modificam pachetele</p>
<p>In concluzie, acum stim cum sa selectam pachetele pe care le dorim modificate.<br />
Pentru a scrie regulile complete trebuie sa spunem kernelului cu exactitate<br />
ceea ce dorim sa facem pachetelor.</p>
<p>6.1 Folosirea NAT pentru modificarea adresei sursa</p>
<p>Doresti sa faci SNAT; sa schimbi adresa sursa a conexiunilor cu ceva diferit.<br />
Acesta este realizat in chain-ul POSTROUTING, chiar inainte de a fi trimis<br />
pachetul; acesta este un detaliu important, deoarece inseamna ca orice alceva<br />
in sistemul Linux (rutare, filtrare de pachete) va vedea doar pachetul<br />
neschimbat. Mai inseamna deasemenea ca optiunea &#8220;-o&#8221; (interfata de iesire)<br />
poate fi folosita.</p>
<p>SNAT este specificat folosind optiunea &#8220;-j SNAT&#8221;; si optiunea &#8220;&#8211;to-source&#8221;<br />
specifica o adresa IP, un sir de adrese IP, si un port optional sau un sir de<br />
porturi (doar in cazul protocoalelor UDP si TCP).</p>
<p>## Schimba adresa sursa cu 1.2.3.4<br />
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT &#8211;to 1.2.3.4</p>
<p>## Schimba adresa sursa cu 1.2.3.4, 1.2.3.5 sau 1.2.3.6<br />
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT &#8211;to 1.2.3.4-1.2.3.6</p>
<p>## Schimba adresa sursa cu 1.2.3.4, si porturile intre 1-1023<br />
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT &#8211;to 1.2.3.4:1-1023</p>
<p>6.1.1 Masquerading</p>
<p>Exista un caz particular de SNAT numit masquerading: ar trebui sa fie folosit<br />
numai pentru adrese IP asignate dinamic, cum ar fi in cazul celor ce se<br />
conecteaza prin dial-up (pentru adrese IP statice, foloseste SNAT ca mai sus).</p>
<p>Nu este necesar cand faci masquerading sa specifici adresa sursa: deoarece va<br />
folosi adresa sursa a interfetei prin care va iesi pachetul. Dar ce este mai<br />
importat, daca legatura cu ISP-ul cade, conexiunile (care acum sunt pierdute<br />
oricum) sunt uitate, acest lucru inseamnand mai putine probleme tehnice cand<br />
legatura cu ISP-ul revine cu o noua adresa IP.</p>
<p>## masqueradare pentru ppp0<br />
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</p>
<p>6.2 Folosirea NAT pentru modificarea adresei destinatie (DNAT)</p>
<p>Aceasta se realizeaza  in chain-ul PREROUTING, exact  dupa primirea<br />
pachetului, aceasta insemna ca orice in sistemul Linux (rutare, filtrare de<br />
pachete) va vedea pachetul cu noua adresa destinatie. Mai inseamna ca optiunea<br />
&#8220;-i&#8221; (interfata de intrare) poate fi folosita.</p>
<p>Se specifica folosirea DNAT cu ajutorul optiunii &#8220;-j DNAT&#8221;, iar optiunea<br />
&#8220;&#8211;to-detination&#8221; specifica o adresa IP, un sir de adrese IP, si un port<br />
optional sau un sir de porturi (acest lucru fiind valabil doar pentru<br />
protocoalele UPD si TCP).</p>
<p>## Schimba adresa destinatie cu 5.6.7.8<br />
# iptables -t nat -A PREROUTING -i eth0 -j DNAT &#8211;to 5.6.7.8</p>
<p>## Schimba adresa destinatie cu  5.6.7.8, 5.6.7.9 sau 5.6.7.10.<br />
# iptables -t nat -A PREROUTING -i eth0 -j DNAT &#8211;to 5.6.7.8-5.6.7.10</p>
<p>##Schimba adresa destinatie a traficului spre portul 80 cu 5.6.7.8, port 8080.<br />
# iptables -t nat -A PREROUTING -p tcp &#8211;dport 80 -i eth0 \<br />
-j DNAT &#8211;to 5.6.7.8:8080</p>
<p>6.2.2 Redirectare</p>
<p>Exista un caz particular de DNAT numita redirectare: este o simpla conventie<br />
care este echivalenta cu a realiza DNAT catre adresa interfetei prin care<br />
intra pachetele.</p>
<p>## Trimite traficul care vine pe portul 80 catre squid (proxy-ul<br />
transparent<br />
# iptables -t nat -A PREROUTING -i eth1 -p tcp &#8211;dport 80 \<br />
-j REDIRECT &#8211;to-port 3128</p>
<p>Observatie: squid-ul trebuie sa fie configurat pentru a putea fi folosit ca<br />
proxy transparent!</p>
<p>6.3 Mapare complexa</p>
<p>Sunt cateva lucruri rafinate in folosirea NAT pe care majoritatea oamenilor nu<br />
vor avea nevoie sa le foloseasca. Aceste lucruri sunt documentate mai jos<br />
pentru curiosi.</p>
<p>6.3.1. Selectarea de adrese multiple dintr-un sir</p>
<p>Daca un sir de adrese IP este specificat, adresa IP care va fi folosita este<br />
bazata pe cea mai putin folosita la conexiuni adresa IP de care sistemul stie.<br />
Acest comportament furnizeaza load-balancing primar.</p>
<p>6.3.2. Realizarea de mapare NAT nula</p>
<p>Poti folosi tinta &#8220;-j ACCEPT&#8221; pentru a permite realizarea conexiunii fara sa<br />
fie realizat deloc NAT.</p>
<p>6.3.3. Comportamentul NAT standard</p>
<p>Comportamentul obisnuit este sa modifice conexiunea cat mai putin posibil, cu<br />
exceptia regulilor date de catre utilizator. Aceasta inseamna ca nu vor fi<br />
remapate porturile decat daca suntem obligati sa realizam acest lucru.</p>
<p>6.3.4. Mapare implicita a porturilor sursa</p>
<p>Chiar daca folosirea NAT nu este ceruta pentru o conexiune, translatarea<br />
portului sursa poate fi facut automat, daca o alta conexiune a fost mapata<br />
peste una noua. De exemplu considerati un caz care este comun in masquerading:</p>
<p>1. O conexiune web este realizata de la un sistem cu IP-ul 192.1.1.1 cu portul<br />
sursa 1024 catre www.securityorg.net portul 80.</p>
<p>2. Aceasta conexiune este masqueradata de un sistem care se ocupa cu acest<br />
lucru, pentru a folosi IP-ul sursa al sistemului ce realizeaza masqueradarea<br />
(1.2.3.4)</p>
<p>3. Insusi sistemul ce realizeaza masquerading initiaza o conexiune catre<br />
www.securityorg.net, portul 80, de la 1.2.3.4 (adresa interfetei externe)<br />
portul 1024</p>
<p>4. Codul NAT va modifica portul sursa al celei de-a doua conexiuni cu 1025,<br />
astfel ca sa nu existe conflict intre cele doua conexiuni.</p>
<p>Cand se realizeaza aceasta mapare automata a sursei, porturile sunt impartite<br />
in trei clase:</p>
<p>o Porturile sub 512<br />
o Porturile intre 512 si 1023<br />
o Porturile de la 1024, inclusiv, in sus</p>
<p>Un port nu va fi niciodata mapat automat intr-o clasa diferita.</p>
<p>6.3.5. Ce se intampla cand NAT-area nu reuseste</p>
<p>Daca nu mai este disponibil nici un mod in care sa se relizeze maparea unica a<br />
conexiunii cerute de catre utilizator, conexiunea va fi abandonata. Acest<br />
comportament se aplica ai in cazurile in care pachetele nu au putut fi<br />
clasificate ca parte a unei conexiuni, deoarece sunt malformate, sau sistemul<br />
nu mai are memorie libera, etc.</p>
<p>6.3.6. Mapari multiple, Suprapuneri si Conflicte</p>
<p>Daca ai reguli care folosesc NAT pentru mapare de porturi aflate intr-o raza<br />
comuna; codul NAT este destul de inteligent pentru a evita conflicte. Aceasta<br />
pentru ca, avand doua reguli, este corecta maparea adresei sursa pentru<br />
192.168.1.1 si respectiv 192.168.1.2 in adresa 1.2.3.4.</p>
<p>Mai mult, poti face mapare peste adrese IP reale folosite, atat timp cat<br />
aceste adrese trec deasemenea prin masina care realizeaza maparea. Asa ca daca<br />
ai o retea asignata (1.2.3.0/24), dar ai o retea interna care foloseste<br />
aceasta clasa de IP-uri si inca o retea care foloseste o clasa de adrese IP<br />
private 192.168.1.0/24, poti sa realizezi SNAT pentru adresele cu sursa IP<br />
192.168.1.0/24 peste adresele din reteaua 1.2.3.0, fara sa iti fie teama de<br />
conflicte:</p>
<p># iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \<br />
-j SNAT &#8211;to 1.2.3.0/24</p>
<p>Aceeasi logica se aplica adreselor folosite de insusi sistemul ce realizeaza<br />
NAT: in acest fel functioneaza si masquerading-ul (prin folosirea impreuna a<br />
adresei interfatei de catre pachetele masqueradate si pachetele &#8220;reale&#8221;<br />
venite de la insusi sistemul ca realizeaza masquerading-ul).</p>
<p>De altfel, poti mapa aceleasi pachete pe mai multe sisteme diferite, si<br />
acestea vor fi folosite in comun. De exemplu, daca nu doresti sa mappezi nimic<br />
peste adresa 1.2.3.5, ai putea sa dai urmatoarea comanda:</p>
<p># iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \<br />
-j SNAT &#8211;to 1.2.3.0-1.2.3.4 &#8211;to 1.2.3.6-1.2.3.254</p>
<p>6.3.7. Schimbarea destinatiei conexiunilor generate local</p>
<p>Codul NAT iti permite sa introduce reguli in chainul OUTPUT avand ca tinta<br />
DNAT, dar acest lucru nu este in intregime suportat in kernelurile 2.4 (poate<br />
fi programat dar are nevoie de noi optiuni, testari, si putina programare,<br />
asa ca daca nimeni nu il contacteaza pe Rusty pentru al scrie, nu o sa fie<br />
disponibil prea devreme).</p>
<p>Limitarea curenta este faptul ca poti sa schimbi destinatia pachetelor doar<br />
catre sistemul local ( &#8220;-j DNAT &#8211;to 127.0.0.1&#8243;), nu si catre alte sisteme, in<br />
caz contrar replicile nu vor fi primite in mod corect inapoi.</p>
<p>7. Protocoale speciale</p>
<p>Unele protocoale nu accepta sa fie NAT-uite. Pentru fiecare dintre aceste<br />
protocoale, doua module speciale trebuiesc scrie; unul pentru urmarirea<br />
conexiunilor si al doilea pentru operatia de NAT-are propriu-zisa.</p>
<p>In cadrul distributiei netfilter, exista module pentru ftp: ip_conntrack_ftp.o<br />
si ip_nat_ftp.o. Daca le inserezi in kernel (insmod) sau le compilezi in<br />
kernel, atunci realizarea oricarui tip de NAT pentru conexiuni ftp ar trebui<br />
sa functioneze. Daca nu, atunci poti folosi ftp pasiv, si chiar si atunci s-ar<br />
putea sa nu functioneze foarte sigur daca vrei sa realizezi alceva decat SNAT.</p>
<p>8. Avertizmente privind folosirea NAT</p>
<p>Daca realizezi NAT pentru o conexiune, pachetele venind din ambele sensuri<br />
(din afara si din inauntrul retelei) trebuie sa treaca prin sistemul care<br />
realizeaza NAT-area, in caz contrar lucrurile nu vor functiona sigur. In<br />
special, codul urmarii conexiunilor reansambleaza fragmentele, care inseamna<br />
ca nu numai depistarea conexiunilor nu va fi sigura, dar chiar si pachetele<br />
s-ar putea sa nu treaca deloc, ca fragmente fiind retinute.</p>
<p>9. Folosirea SNAT si rutarea</p>
<p>Daca doresti sa realizezi SNAT, vei dori sa fii sigur ca fiecare masina la<br />
care ajung pachete care sunt parte a unei conexiuni SNAT, vor trimite<br />
pachetele replica inapoi la sistemul care realizeaza SNAT-ul.<br />
De exemplu, daca mapezi niste pachete ce ies, cu adresa sursa 1.2.3.4, atunci<br />
ruterul extern trebuie sa stie ca trebuie sa trimita pachetele replica inapoi<br />
(care vor avea adresa destinatie 1.2.3.4) catre acest sistem.<br />
Acest lucru poate fi realizat in urmatoarele moduri:</p>
<p>1. Daca realizezi SNAT peste adresa propriului sistem (pentru care rutarea si<br />
toate celelalte merg deja), nu trebuie sa faci nimic</p>
<p>2. Daca realizezi SNAT peste o adresa nefolosita din propriul LAN (de exemplu,<br />
mappezi peste 1.2.3.99, o adresa IP nefolosita din reteaua ta  1.2.3.0/24),<br />
sistemul ce realizeaza NAT va trebui sa raspunda la cereri ARP pentru aceea<br />
adresa ca si pentru propria sa adresa: cea mai simpla metoda de a rezolva<br />
acest lucru este sa creezi un alias pentru adresa IP, de exemplu:</p>
<p># ip address add 1.2.3.99 dev eth0</p>
<p>3. Daca realizezi SNAT peste o adresa complet diferita, va trebui sa te asiguri<br />
ca masinile la care vor ajunge pachetele SNAT-atate vor ruta aceasta adresa<br />
inapoi catre sistemul pe care se realizeaza SNAT-ul. Aceasta este realizata<br />
deja daca sistemul care realizeaza SNAT-ul este gateway-ul lor default, in caz<br />
contrar va trebui sa adaugi o ruta pe fiecare sistem prin care trec pachetele<br />
modificate.</p>
<p>10. Folosirea DNAT pentru adrese aflate in aceeasi retea.</p>
<p>Daca realizezi forwardare de porturi inapoi in aceeasi retea, trebuie sa fii<br />
sigur ca atat pachetele viitoare cat si pachetele ce vin in replica vor trece<br />
prin sistemul ce realizeaza DNAT-ul (pentru ca acestea sa fie modificate).<br />
Codul NAT va bloca (inca din ver. 2.4.0-test6) pachetele ICMP de redirectare<br />
care rezulta atunci cand pachetele NAT-ate se indreapta catre aceeasi interfata<br />
spre care au venit, dar serverul care primeste acele pachete va incerca in<br />
continuare sa raspunda direct catre client (care nu va recunoaste pachetele<br />
replica).</p>
<p>Cazul clasic este cand un sistem din reteaua interna incearca sa acceseze<br />
serverul www &#8220;public&#8221;, care este defapt DNAT-at de la adresa publica (1.2.3.4)<br />
catre un sistem din reteaua interna (192.168.1.1), astfel:</p>
<p># iptables -t nat -A PREROUTING -d 1.2.3.4 \<br />
-p tcp &#8211;dport 80 -j DNAT &#8211;to 192.168.1.1</p>
<p>O cale este sa rulezi un server de DNS intern care sa stie adresa IP reala<br />
(interna) al site-ului public de web, si sa inainteze toate celelate cereri<br />
catre un server DNS extern. Aceasta inseamna ca va fi folosita o conexiune<br />
directa catre server-ul de web, fara sa mai fie nevoie de a trece prin<br />
sistemul care realizeaza NAT.</p>
<p>Cealalta cale este sa realizezi, pe sistemul care face DNAT, mapparea adresei<br />
sursa spre propria lui adresa pentru conexiunile venind din reteaua interna,<br />
pacalind serverul de web sa trimita pachetele replica spre masina ce se ocupa<br />
cu NAT-area. Pentru acest exemplu vom proceda astfel (presupunem ca adresa IP<br />
al sistemului care realizeaza NAT este 192.168.1.250):</p>
<p># iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 \<br />
-p tcp &#8211;dport 80 -j SNAT &#8211;to 192.168.1.250</p>
<p>Deoarece regula din chain-ul PREROUTING este executata prima, pachetele vor fi<br />
deja destinate pentru server-ul de web intern: putem preciza care din pachete<br />
sunt din reteaua interna dupa adresa IP sursa.</p>
<p>11. Multumiri</p>
<p>Multumirile sunt in primul rand pentru WatchGuard, si David Bonn, care a<br />
crezut in ideea netfilter destul pentru a ma sustine sa o tranform in<br />
realitate. Si pentru toti ceilalti, care m-au suportat cand faceam pe grozavul<br />
cand am invatat despre uratenia NAT-ului, in special celor ce mi-au citit<br />
jurnalul.</p>
<p>Rusty.</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=173</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>
		<item>
		<title>CUM SA administrati rapid un DNS. HOWTO</title>
		<link>http://resurse-educationale.uv.ro/?p=162</link>
		<comments>http://resurse-educationale.uv.ro/?p=162#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:29:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Servers]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[administrare]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[controler]]></category>
		<category><![CDATA[dialup]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[domen]]></category>
		<category><![CDATA[domeniu]]></category>
		<category><![CDATA[hosturi]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[isdn]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[name]]></category>
		<category><![CDATA[named]]></category>
		<category><![CDATA[nume]]></category>
		<category><![CDATA[rezolutie]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[servere]]></category>
		<category><![CDATA[slip]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=162</guid>
		<description><![CDATA[DNS HOWTO Nicolai Langfeldt (janl@linpro.no), Jamie Norrish and others Version 3.1, 2001-01-18 Traducerea: Victor Plugaru(vuk@go.ro). Cu scuzele de rigoare pentru eventualele greseli si/sau inadvertente. CUM SA administrati rapid un DNS. ______________________________________________________________________ Cuprins 1. Preambul 1.1 Chestiuni legale 1.2 Credit si &#8230; <a href="http://resurse-educationale.uv.ro/?p=162">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>DNS HOWTO<br />
Nicolai Langfeldt (janl@linpro.no), Jamie Norrish and others<br />
Version 3.1, 2001-01-18<br />
Traducerea: Victor Plugaru(vuk@go.ro). Cu scuzele de rigoare<br />
pentru eventualele greseli si/sau inadvertente.</p>
<p>CUM SA administrati rapid un DNS.<br />
______________________________________________________________________</p>
<p>Cuprins</p>
<p>1. Preambul</p>
<p>1.1 Chestiuni legale<br />
1.2 Credit si cereri de suport.<br />
1.3 Dedicatie</p>
<p>2. Introducere.</p>
<p>3. Caching name server.</p>
<p>3.1 Pornirea lui named<br />
3.2 Resolvere<br />
3.3 Felicitari</p>
<p>4. Forwarding</p>
<p>5. Un domeniu simplu</p>
<p>5.1 Intai teorie seaca<br />
5.2 Propriul nostru domeniu<br />
5.3 Zona reverse<br />
5.4 Cuvinte de atentionare<br />
5.5 De ce nu functioneaza interogarile inverse.<br />
5.5.1 Zona reverse nu este investita.<br />
5.5.2 Aveti un subnet fara clase<br />
5.6 Servere slave (sclav)</p>
<p>6. Optiuni de securitate fundamentale.</p>
<p>6.1 Restrictionarea transferurilor pe zone<br />
6.2 Protectia in situatii de spoofing<br />
6.3 Rularea lui named ca non-root</p>
<p>7. Un exemplu real de domeniu</p>
<p>7.1 /etc/named.conf (sau /var/named/named.conf)<br />
7.2 /var/named/root.hints<br />
7.3 /var/named/zone/127.0.0<br />
7.4 /var/named/zone/land-5.com<br />
7.5 /var/named/zone/206.6.177</p>
<p>8. Intretinere</p>
<p>9. Conversia de la versiunea 4 la versiunea 8</p>
<p>10. Intrebari si raspunsuri</p>
<p>11. Cum sa deveniti un administrator DNS la scara mare.</p>
<p><span id="more-162"></span></p>
<p>______________________________________________________________________</p>
<p>1. Preambul</p>
<p>Cuvinte cheie: DNS, BIND, BIND 4, BIND 8, named, dialup, ppp, slip, ISDN,<br />
internet, domeniu, nume, rezolutie, hosturi, caching.</p>
<p>Acest document este parte din Proiectul Documentatiei Linux (Linux<br />
Documentation Project)</p>
<p>1.1. Chestiuni legale</p>
<p>(C)opyright 1995-2001 Nicolai Langfeldt, Jamie Norrish &amp; Co.<br />
Nu distribuiti modificand fara copyright, distribuiti liberi dar<br />
pastrati mesajul de copyright.</p>
<p>1.2. Credite si cereri de suport</p>
<p>Vreau sa multumesc lui Arnt Gulbrandsen caruia i-am cauzat suferinta<br />
cu aceste tiparituri si care mi-a oferit multe sugestii utile. Vreau<br />
sa multumesc de asemeni numeroselor persoane care mi-au trimis sugestii si<br />
note prin e-mail.</p>
<p>Acesta nu va fi niciodata un document final; va rog sa imi trimiteti<br />
e-mailuri despre problemele si succesele dumneavoastra. Puteti da o mana<br />
de ajutor la imbunatatirea acestui HOWTO. Asa ca va rog sa trimiteti<br />
comentarii si/sau sugestii la janl@linpro.no. Sau cumparati cartea mea<br />
despre DNS. Vedeti bibliografia despre informatii in legatura cu aceasta<br />
chestiune. Daca trimiteti un e-mail si asteptati raspunsuri, dati dovada de<br />
curtoazie si asigurati-va ca adresa de reply este corecta si functioneaza.<br />
Tot astfel, va rog sa cititi sectiunea &#8220;qanda&#8221; inainte de a-mi trimite<br />
e-mail. Inca un lucru, inteleg doar limbile norvegiana si engleza.</p>
<p>Acesta este un HOWTO (CUM_SA). L-am intretinut ca parte a LDP din 1995. Am<br />
scris, in timpul anului 2000 o carte pe aceiasi tema. Vreau sa spun ca,<br />
desi acest HOWTO este asemanator cartii din multe puncte de vedere, nu<br />
este o versiune redusa astfel incat sa promovez vinderea cartii. Veti gasi<br />
cartea in bibliografie in finalul acestui HOWTO. Cititorii acestui HOWTO<br />
m-au ajutat sa inteleg ceea ce e dificil de inteles in legatura cu<br />
DNS. Aceasta m-a ajutat la carte, iar cartea m-a ajutat de asemeni<br />
sa inteleg la ce ar servi acest HOWTO. Acest HOWTO a completat cartea.<br />
Cartea a completat versiunea 3 a acestui HOWTO. Multumirile mele<br />
editorului cartii, care si-a incercat norocul cu mine <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>1.3. Dedicatie</p>
<p>Acest HOWTO este dedicat lui Anne Line Norheim Langfeldt, desi dansa nu il<br />
va citi niciodata pentru ca nu e genul.</p>
<p>1. Introducere</p>
<p>Ce este si ce nu este aceasta.</p>
<p>DNS este Domain Name System (Sistemul Domeniului de Nume). DNS converteste<br />
numele masinilor (de calcul) in adrese IP pe care toate masinile de pe<br />
Internet le au.  Translateaza (sau &#8220;mapeaza&#8221; cum se zice in jargon) din<br />
nume in adrese si din adrese in nume, precum si alte cateva lucruri. Acest<br />
HOWTO documenteaza definirea acestor mapari folosind sisteme UNIX, cu<br />
cateva lucruri specifice Linux-ului.</p>
<p>O mapare este o simpla asociere intre doua lucruri, in acest caz un nume<br />
de masina, ca ftp.linux.org, si IP-ul masinii (sau adresa)<br />
199.249.150.4. DNS-ul contine de asemeni mapari si in alt sens, din<br />
IP catre numele masinii; aceasta se numeste &#8220;mapare inversa&#8221;</p>
<p>DNS este, pentru neinitiati (dumneavoastra <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , una dintre<br />
cele mai obscure domenii din administrarea retelelor. Din fericire, DNS nu<br />
este chiar asa de greu. Acest HOWTO va incerca sa va clarifice<br />
cateva lucruri. Descrie cum sa setati un server de nume DNS simplu,<br />
incepand doar cu un server cache si pana la a seta un sever DNS primar<br />
pentru domeniu. Pentru setari mai complexe consultati sectiunea &#8220;qanda&#8221;<br />
din acest document. Daca nu este descris acolo (ceea ce va trebuie),<br />
va trebui sa consultati documentatie &#8220;adevarata&#8221;. Voi reveni si voi arata<br />
in ce consta aceasta documentatie &#8220;adevarata&#8221; in &#8220;ultimul capitol&#8221;.</p>
<p>Inainte de a incepe ar trebui sa va configurati masina astfel incat sa<br />
puteti folosi telnet de la si catre aceasta masina si sa puteti face tot<br />
felul de conexiuni in retea, si in special sa puteti da telnet 127.0.0.1<br />
si sa reusiti sa intrati pe propria masina (ar trebui sa incercati<br />
asta chiar acum!). Va trebuie de asemeni fisierele /etc/nsswitch.conf,<br />
/etc/resolv.conf si /etc/hosts corecte, ca punct de plecare pentru ca nu<br />
le voi explica functiile aici. Daca nu aveti toate acestea configurate si<br />
in stare de functionare, Networking-HOWTO si/sau Networking-Overview-HOWTO<br />
explica cum sa le configurati. CItiti-le.</p>
<p>Cand spun &#8220;masina dumneavoastra&#8221; inteleg masina pe care vreti<br />
sa configurati DNS, nu orice alta masina pe care o aveti si care ar fi<br />
implicata in efortul de a pune la punct reteaua.</p>
<p>Presupun ca nu sunteti in spatele nici unui fel de firewall care blocheaza<br />
interogarile de nume. Daca sunteti in atare situatie, vedeti sectiunea<br />
&#8220;quanda&#8221;.</p>
<p>Serverul de nume in UNIX este indeplinit de un program numit named. Acesta<br />
este o parte a pachetului &#8220;BIND&#8221; coordonat de The Internet<br />
Software Cosortium. Named este inclus in majoritatea distributiilor de Linux<br />
si este de obicei instalat in /usr/sbin/named, de obicei dintr-un pachet<br />
BIND.</p>
<p>Daca aveti un named probabil ca il puteti si folosi. Daca nu aveti unul,<br />
puteti lua distributia binara de de pe un site ftp Linux, sau luati ultima<br />
si cea mai &#8220;tare&#8221; sursa de la &lt;ftp://ftp.isc.org/isc/bind/src/&gt;. Acest<br />
HOWTO se refera la BIND versiunea 8. Versiunea veche a acestui document,<br />
despre BIND 4 este inca disponibila la &lt;http://www.math.uio.no/~janl/DNS/&gt;.<br />
in caz ca folositi BIND 4. Daca paginile man ale named (chiar la sfarsit,<br />
in sectiunea FILES) fac referire la named.conf, aveti BIND 8. Daca fac<br />
referire la named.boot, aveti BIND 4. Daca aveti BIND 4<br />
si sunteti constient de problemele de securitate, ar fi bine sa faceti<br />
uprade la BIND 8. Acum.</p>
<p>DNS este o baza de date distribuita in retea. Aveti grija ce puneti in ea.<br />
Daca puneti &#8220;balarii&#8221; in ea, dumneavoastra si altii, tot &#8220;balarii&#8221;<br />
veti avea. Mentineti DNS-ul restrans si consistent si veti avea parte de<br />
servicii de buna calitate de la el. Invatati sa il folositi, administrati,<br />
depanati si veti fi inca un bun administrator, evitand ingenuncherea<br />
Internetului din cauza prostului management.</p>
<p>Indicatie: faceti copii de rezerva a tuturor fisierelor pe care va indic<br />
sa le modificati, daca le aveti deja, asa incat daca trecand<br />
prin acestea (configurari, modificari) nimic nu mai merge, sa puteti<br />
reveni la vechea dumneavoastra stare de functionare.</p>
<p>3. Caching name server</p>
<p>Un prim model de configurarie DNS, foarte util pentru dialup, modem<br />
de cablu si utilizatori ADSL.</p>
<p>In distributiile Redhat si inrudite puteti obtine aceleasi rezultate<br />
practice ca in prima sectiune a acestui HOWTO, instaland<br />
pachetul BIND, utilitarele bind si caching-nameserver-ul. Daca<br />
folositi Debian, instalati bind si bind-doc. Bine inteles ca<br />
doar instaland aceste pachete nu veti invata atat de mult ca si cand ati<br />
citi acest HOWTO. Asa ca instalati pachetele si verificati fisierele<br />
instalate.</p>
<p>Un server cache de nume va gasi raspunsuri la interogarile de nume si va<br />
memora aceste raspunsuri pentru data viitoare cand veti<br />
avea nevoie. Aceasta va scurta semnificativ timpul de asteptare urmatoarea<br />
data, in special daca aveti o conexiune lenta.</p>
<p>In primul rand aveti nevoie de un fisier numit /etc/named.conf<br />
(Debian: /etc/bind/named.conf). Acesta este citit cand named porneste.<br />
Deocamdata ar trebui sa contina pur si simplu:</p>
<p>______________________________________________________________________<br />
// Config file for caching only name server</p>
<p>options {<br />
directory &#8220;/var/named&#8221;;</p>
<p>// Uncommenting this might help if you have to go through a<br />
// firewall and things are not working out.  But you probably<br />
// need to talk to your firewall admin.</p>
<p>// query-source port 53;<br />
};</p>
<p>zone &#8220;.&#8221; {<br />
type hint;<br />
file &#8220;root.hints&#8221;;<br />
};</p>
<p>zone &#8220;0.0.127.in-addr.arpa&#8221; {<br />
type master;<br />
file &#8220;pz/127.0.0&#8243;;<br />
};<br />
______________________________________________________________________</p>
<p>Pachetele distributiilor Linux pot folosi diferite nume de fisiere<br />
pentru fiecare tip de fisier mentionat aici, cu toate acestea, continutul<br />
va fi identic.</p>
<p>Linia &#8220;directory&#8221; ii spune lui named unde sa caute fisiere. Toate fisierele<br />
named subsecvente vor fi relative la aceasta. pz este un director sub<br />
/var/named, de ex. /var/named/pz. /var/named este directorul corect<br />
potrivit Standardului de Fisiere Linux.</p>
<p>Fisierul /var/named/root.hints ar trebui sa contina urmatoarele: (daca<br />
execuati cut si paste dintr-o versiune electronica a acestui document,<br />
aveti in vedere ca nu trebuie sa existe spatii de inceput in acest fisier,<br />
de exemplu toate liniile trebuie sa inceapa cu un caracter<br />
non-blank. Anumite programe de procesare de text vor insera spatii<br />
la inceputul liniilor, cauzand confuzie. In acest caz va rog<br />
sa indepartati spatiile goale.)</p>
<p>______________________________________________________________________<br />
;<br />
; There might be opening comments here if you already have this file.<br />
; If not don&#8217;t worry.<br />
;<br />
.                       6D IN NS        M.ROOT-SERVERS.NET.<br />
.                       6D IN NS        I.ROOT-SERVERS.NET.<br />
.                       6D IN NS        E.ROOT-SERVERS.NET.<br />
.                       6D IN NS        D.ROOT-SERVERS.NET.<br />
.                       6D IN NS        A.ROOT-SERVERS.NET.<br />
.                       6D IN NS        H.ROOT-SERVERS.NET.<br />
.                       6D IN NS        C.ROOT-SERVERS.NET.<br />
.                       6D IN NS        G.ROOT-SERVERS.NET.<br />
.                       6D IN NS        F.ROOT-SERVERS.NET.<br />
.                       6D IN NS        B.ROOT-SERVERS.NET.<br />
.                       6D IN NS        J.ROOT-SERVERS.NET.<br />
.                       6D IN NS        K.ROOT-SERVERS.NET.<br />
.                       6D IN NS        L.ROOT-SERVERS.NET.<br />
;<br />
M.ROOT-SERVERS.NET.     6D IN A         202.12.27.33<br />
I.ROOT-SERVERS.NET.     6D IN A         192.36.148.17<br />
E.ROOT-SERVERS.NET.     6D IN A         192.203.230.10<br />
D.ROOT-SERVERS.NET.     6D IN A         128.8.10.90<br />
A.ROOT-SERVERS.NET.     6D IN A         198.41.0.4<br />
H.ROOT-SERVERS.NET.     6D IN A         128.63.2.53<br />
C.ROOT-SERVERS.NET.     6D IN A         192.33.4.12<br />
G.ROOT-SERVERS.NET.     6D IN A         192.112.36.4<br />
F.ROOT-SERVERS.NET.     6D IN A         192.5.5.241<br />
B.ROOT-SERVERS.NET.     6D IN A         128.9.0.107<br />
J.ROOT-SERVERS.NET.     6D IN A         198.41.0.10<br />
K.ROOT-SERVERS.NET.     6D IN A         193.0.14.129<br />
L.ROOT-SERVERS.NET.     6D IN A         198.32.64.12<br />
______________________________________________________________________</p>
<p>Fisierul descrie serverele de nume &#8220;radacina&#8221; din lume. Acestea se schimba<br />
in timp si trebuie mentinute permanent. Vedeti sectiunea &#8220;intretinere&#8221;<br />
despre cum sa mentineti la curent acest fisier.</p>
<p>Urmatoarea sectiune in named.conf este ultima zona. II voi explica<br />
utilizarea intr-un capitol ulterior. Deocamdata creati din aceasta un<br />
fisier numit 127.0.0 in subdirectorul pz (din nou, indepartati<br />
spatiile goale daca executati cut si paste).</p>
<p>______________________________________________________________________<br />
$TTL 3D<br />
@               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (<br />
1       ; Serial<br />
8H      ; Refresh<br />
2H      ; Retry<br />
4W      ; Expire<br />
1D)     ; Minimum TTL<br />
NS      ns.linux.bogus.<br />
1                       PTR     localhost.<br />
______________________________________________________________________</p>
<p>Pe urma, aveti nevoie de un fisier /etc/resolv.conf care sa arate cam asa:<br />
(indepartati spatiile!)</p>
<p>______________________________________________________________________<br />
search subdomain.your-domain.edu your-domain.edu<br />
nameserver 127.0.0.1<br />
______________________________________________________________________</p>
<p>Linia &#8220;search&#8221; specifica ce domenii ar trebui cautate pentru un nume de<br />
host la care vreti sa va conectati. Linia &#8220;nameserver&#8221; indica serverul<br />
dumneavoastra de nume, in acest caz propria dumneavoastra masina,<br />
daca acolo ruleaza named (127.0.0.1 e perfect, nu conteaza ca mai aveti si<br />
alta adresa IP). Daca doriti sa apara mai multe servere de nume, puneti<br />
cate o linie &#8220;nameserver&#8221; pentru fiecare. (Nota: named niciodata<br />
nu citeste acest fisier, ci rezolverul, programul care il utilizeaza<br />
pe named. Nota2 :in unele fisiere resolv.conf gasiti o linie &#8220;domain&#8221;. E<br />
in regula, dar nu folositi si &#8220;search&#8221; si &#8220;domain&#8221;, doar una dintre ele va<br />
merge).</p>
<p>Pentru a ilustra ce face acest fisier: daca un client incearca<br />
sa caute (hostul) &#8220;foo&#8221;, atunci foo.subdomeniu.domeniul-tau.edu este<br />
incercat primul, apoi foo.domeniul-tau.edu si apoi foo. Nu e de preferat<br />
sa puneti prea multe domenii in linia &#8220;search&#8221; pentru ca va dura mult sa<br />
le interogheze pe toate.</p>
<p>Exemplul de mai sus presupune ca apartineti domeniului<br />
subdomeniu.domeniul-tau.edu; atunci masina dumneavoastra este numita<br />
probabil masina-ta.subdomeniu.domeniul-tau.edu Linia &#8220;search&#8221; n-ar trebui<br />
sa contina TLD-ul dumneavoastra (Top Level Domain &#8220;edu&#8221;- Domeniul de Nivel<br />
Inalt) in acest caz. Daca aveti nevoie sa va conectati<br />
la hosturi din alt domeniu, in mod frecvent, puteti adauga acel domeniu in<br />
linia &#8220;search&#8221; astfel: (indepartati spatiile!)</p>
<p>______________________________________________________________________<br />
search subdomain.your-domain.edu your-domain.edu other-domain.com<br />
______________________________________________________________________</p>
<p>si asa mai departe. Evident, trebuie sa puneti nume reale de domeniu<br />
in locul celor din exemplu. Importat: observati lipsa punctelor de<br />
la sfarsitul numelor de domeniu.</p>
<p>3.1 Pornirea lui named</p>
<p>Dupa toate acestea este timpul sa pornim named. Daca folositi o conexiune<br />
dialup, conectati-va intai. Dati comanda &#8220;ndc start&#8221; si apasati Enter,<br />
fara nici o optiune. Daca nu merge asa, incercati &#8220;/usr/sbin/ndc start&#8221;.<br />
Daca tot nu merge, vedeti sectiunea &#8220;qanda&#8221;. Daca observati in<br />
fisierul mesajelor syslog (de obicei /var/adm/messages sau<br />
/var/log/messages) in timp ce porniti named (incercati tail -f<br />
/var/log/messages), ar trebui sa vedeti ceva asemanator :</p>
<p>(liniile care se incheie in \ continua pe linia urmatoare)</p>
<p>Dec 15 23:53:29 localhost named[3768]: starting.  named 8.2.2-P7 \<br />
Fri Nov 10 04:50:23 EST 2000^Iprospector@porky.\<br />
devel.redhat.com:/usr/src/bs/BUILD/bind-8.2.2_P7/\<br />
src/bin/named<br />
Dec 15 23:53:29 localhost named[3768]: hint zone &#8220;&#8221; (IN) loaded\<br />
(serial 0)<br />
Dec 15 23:53:29 localhost named[3768]:Zone &#8220;0.0.127.in-addr.arpa&#8221;\<br />
(file pz/127.0.0): No default TTL set using SOA\<br />
minimum instead<br />
Dec 15 23:53:29 localhost named[3768]: master zone\<br />
&#8220;0.0.127.in-addr.arpa&#8221; (IN) loaded (serial 1)<br />
Dec 15 23:53:29 localhost named[3768]:listening on [127.0.0.1].53 (lo)<br />
Dec 15 23:53:29 localhost named[3768]: listening on [10.0.0.129].53\<br />
(wvlan0)<br />
Dec 15 23:53:29 localhost named[3768]: Forwarding source address is\<br />
[0.0.0.0].1034<br />
Dec 15 23:53:29 localhost named[3769]: Ready to answer queries.</p>
<p>Daca sunt multe mesaje de eroare, trebuie sa fie o greseala<br />
pe undeva. Named va indica fisierul unde se afla greseala. Reveniti si<br />
verificati fisierul respectiv. Dati comanda &#8220;ndc restart&#8221; si ati<br />
rezolvat problema.</p>
<p>Acum puteti testa configurarea. In mod traditional, un program numit<br />
nslookup e folosit pentru aceasta. In mod curent, dig e recomandat.</p>
<p>$ dig -x 127.0.0.1</p>
<p>; &lt;&lt;&gt;&gt; DiG 8.2 &lt;&lt;&gt;&gt; -x<br />
;; res options: init recurs defnam dnsrch<br />
;; got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 4<br />
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY:1, ADDITIONAL: 0<br />
;; QUERY SECTION:<br />
;;      1.0.0.127.in-addr.arpa, type = ANY, class = IN</p>
<p>;; ANSWER SECTION:<br />
1.0.0.127.in-addr.arpa.  1D IN PTR  localhost.</p>
<p>;; AUTHORITY SECTION:<br />
0.0.127.in-addr.arpa.   1D IN NS        ns.penguin.bv.</p>
<p>;; Total query time: 30 msec<br />
;; FROM: lookfar to SERVER: default &#8212; 127.0.0.1<br />
;; WHEN: Sat Dec 16 00:16:12 2000<br />
;; MSG SIZE  sent: 40  rcvd: 110</p>
<p>Daca ati obtinut aceasta, serviciul functioneaza. Speram. Daca treburile<br />
stau altfel, reveniti si verificati totul. De fiecare data cand moficati<br />
fisierul named.conf, trebuie sa reporniti named cu comanda ndc restart.</p>
<p>Acum puteti efectua o interogare. Incercati sa cautati o masina apropiata.<br />
pat.uio.no este apropiata de mine, la Universitatea din Oslo.</p>
<p>$ dig pat.uio.no</p>
<p>; &lt;&lt;&gt;&gt; DiG 8.2 &lt;&lt;&gt;&gt; pat.uio.no<br />
;; res options: init recurs defnam dnsrch<br />
;; got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode:QUERY, status: NOERROR, id: 4<br />
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY:3, ADDITIONAL: 3<br />
;; QUERY SECTION:<br />
;;      pat.uio.no, type = A, class = IN</p>
<p>;; ANSWER SECTION:<br />
pat.uio.no.             1D IN A		 129.240.130.16</p>
<p>;; AUTHORITY SECTION:<br />
uio.no.                 1D IN NS        nissen.uio.no.<br />
uio.no.                 1D IN NS        ifi.uio.no.<br />
uio.no.                 1D IN NS        nn.uninett.no.</p>
<p>;; ADDITIONAL SECTION:<br />
nissen.uio.no.          1D IN A         129.240.2.3<br />
ifi.uio.no.             1H IN A         129.240.64.2<br />
nn.uninett.no.          1D IN A         158.38.0.181</p>
<p>;; Total query time: 112 msec<br />
;; FROM: lookfar to SERVER: default &#8212; 127.0.0.1<br />
;; WHEN: Sat Dec 16 00:23:07 2000<br />
;; MSG SIZE  sent: 28  rcvd: 162</p>
<p>De data aceasta dig a cerut lui named sa caute masina pat.uio.no.<br />
A contactat una dintre masinile server de nume indicate in fisierul<br />
root.hints si a cerut calea de acolo. Poate dura putin pana obtine<br />
rezultatul, dupa cum va trebui sa caute in domeniile din /etc/resolv.conf.<br />
Observati &#8220;aa&#8221; in linia &#8220;flags:&#8221;. Inseamna ca raspunsul este<br />
autoritativ, venit proaspat de la un server autoritativ. Voi explica<br />
ce inseamna &#8220;autoritativ&#8221; mai tarziu.</p>
<p>Daca veti face aceiasi interogare din nou, veti obtine aceasta:</p>
<p>$ dig pat.uio.no</p>
<p>; &lt;&lt;&gt;&gt; DiG 8.2 &lt;&lt;&gt;&gt; pat.uio.no<br />
;; res options: init recurs defnam dnsrch<br />
;; got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status:NOERROR, id: 4<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3<br />
;; QUERY SECTION:<br />
;;      pat.uio.no, type = A, class = IN</p>
<p>;; ANSWER SECTION:<br />
pat.uio.no.             23h59m58s IN A  129.240.130.16</p>
<p>;; AUTHORITY SECTION:<br />
UIO.NO.                 23h59m58s IN NS  nissen.UIO.NO.<br />
UIO.NO.                 23h59m58s IN NS  ifi.UIO.NO.<br />
UIO.NO.                 23h59m58s IN NS  nn.uninett.NO.</p>
<p>;; ADDITIONAL SECTION:<br />
nissen.UIO.NO.          23h59m58s   IN A  129.240.2.3<br />
ifi.UIO.NO.             1d23h59m58s IN A  129.240.64.2<br />
nn.uninett.NO.          1d23h59m58s IN A  158.38.0.181</p>
<p>;; Total query time: 4 msec<br />
;; FROM: lookfar to SERVER: default &#8212; 127.0.0.1<br />
;; WHEN: Sat Dec 16 00:23:09 2000<br />
;; MSG SIZE  sent: 28  rcvd: 162</p>
<p>Observati lipsa flagului &#8220;aa&#8221; din acest rezultat. Inseamna ca named<br />
nu a mai iesit in retea pentru a afla acest raspuns, daca informatia se<br />
afla in cache acum. Dar informatia din cache poate fi veche (stale). Asa<br />
ca sunteti informati despre aceasta (foarte subtil)<br />
prin lipsa lui &#8220;aa&#8221;. Dar oricum, acum stiti ca serviciul cache functioneaza.</p>
<p>3.2. Rezolvere</p>
<p>Toate sistemele de operare care implementeaza standardul C API fac uz de<br />
apelul gethostbyname si gethostbyaddr. Acestea pot obtine informatii din<br />
diverse surse. Din ce surse se alimenteaza, este indicat in fisierul<br />
/etc/nsswitch.conf in Linux (si alte UNIX-uri). Acesta este un fisier lung<br />
care specifica din ce fisier sau baza de date se vor obtine diferitele<br />
tipuri de date. De obicei contine informatii folositoare la inceput, pe<br />
care ar trebui sa le cititi. Dupa aceasta, cautati linia incapand cu<br />
&#8220;hosts:&#8221;; va trebui sa aveti:</p>
<p>______________________________________________________________________<br />
hosts:      files dns<br />
______________________________________________________________________</p>
<p>(va aduceti aminte de spatiile de inceput, nu-i asa? Nu le voi mai mentiona)</p>
<p>Daca nu exista nici o linie cu &#8220;hosts:&#8221;, puneti una ca mai<br />
sus. Aceasta indica cum ca programele ar trebui sa examineze<br />
fisierul /etc/hosts intai, apoi sa verifice DNS-ul conform /etc/resolv.conf.</p>
<p>3.3. Felicitari</p>
<p>Acum deja stiti cum sa configurati un named cu caching. Luati o bere, un<br />
lapte acru si sarbatoriti.</p>
<p>4. Forwarding</p>
<p>In retele mari, bine organizate, academice sau ISP (Internet Service<br />
Provider &#8211; Furnizor de Servicii Internet), veti constata uneori ca<br />
administratorii de retea au pus la punct o ierarhie de servere DNS<br />
pentru forwarding (inaintare- transfer), care usureaza<br />
incarcarea retelei interiorare si exterioare. Nu e usor de stiut daca va<br />
aflati intr-o asemenea retea sau nu. Oricum, nu este important si,<br />
folosind serverul DNS al furnizorului dumneavoastra din retea ca &#8220;forwarder&#8221;<br />
puteti obtine raspunsurile mai rapid si cu o incarcare mai mica a retelei.<br />
Daca folositi un modem, aceasta poate fi chiar un castig. De<br />
dragul acestui exemplu sa presupunem ca furnizorul are doua servere de<br />
nume pe care vrea sa le folositi cu IP-urile 10.0.0.1 si 10.1.0.1. Atunci,<br />
in named.conf la dumneavoastra, in interiorul sectiunii &#8220;options&#8221;,<br />
inserati aceste linii:</p>
<p>______________________________________________________________________<br />
forward first;<br />
forwarders {<br />
10.0.0.1;<br />
10.1.0.1;<br />
};<br />
______________________________________________________________________</p>
<p>Exista de asemeni o smecherie draguta pentru masinile dialup care folosesc<br />
&#8220;forwardere&#8221;. Este descrisa in sectiunea &#8220;qanda&#8221;.</p>
<p>Restartati serverul de nume si testati-l cu dig. Ar trebui sa mearga perfect.</p>
<p>5. Un domeniu simplu</p>
<p>Cum configurati propriul domeniu.</p>
<p>5.1. Intai teorie seaca</p>
<p>In primul rand: ati citit tot pana aici, nu? Trebuie.</p>
<p>Inainte de a porni intr-adevar aceasta sectiune, va voi expune ceva<br />
teorie si un exemplu despre cum functioneaza DNS. Si o veti citi pentru ca<br />
va este necesara. Daca nu doriti, ar trebui macar sa o parcurgeti rapid.<br />
Opriti-va din cititul printre randuri cand ajungeti la ceea ce ar trebui<br />
sa aveti in fisierul named.conf.</p>
<p>DNS este un sistem ierarhic, arborescent. Varful este notat &#8220;.&#8221; si<br />
este denumit &#8220;root&#8221;, cum este uzual pentru structurile de<br />
date arborescente. Dedesubt exista un numar de Top Level Domain &#8211; Domenii<br />
de Nivel Inalt &#8211; TLD-uri. Cele mai cunoscute sunt .COM .ORG .EDU .NET, dar<br />
sunt mai multe. Ca si la un arbore, exista o radacina care se imparte pe<br />
ramuri. Daca aveti ceva cunostinte despre computere, veti recunoaste DNS<br />
ca un arbore de cautare si veti fi capabili sa gasiti nodurile nodurile<br />
mici (leaf nodes) si marginile (edges). Punctele sunt noduri, marginile<br />
sunt in nume. Cand cautati o masina, interogarea porneste recursiv<br />
in ierarhie, plecand de la radacina (root). Daca doriti sa aflati adresa<br />
pentru prep.ai.mit.edu, serverul dumneavoastra de nume va incepe<br />
sa caute undeva. Incepe prin a cauta in cache. Daca stie raspunsul,<br />
avandu-l in cache mai dinainte, va raspunde imediat, asa cum am vazut in<br />
ultima sectiune. Daca nu stie, va indeparta partea din nume incepand de la<br />
stanga, verificand daca stie ceva despre ai.mit.edu, apoi mit.edu., apoi<br />
edu., si apoi daca nu cumva &#8220;.&#8221; are cunostinta, pentru ca asa s-a specificat in<br />
fisierul hints (indicii). Apoi va intreba un server &#8220;.&#8221; (root)<br />
despre prep.ai.mit.edu. Acest server &#8220;.&#8221; nu va sti raspunsul dar<br />
va ajuta serverul dumneavoastra in calea sa, dandu-i o referinta,<br />
spunandu-i unde sa mai caute. Aceste referinte vor conduce eventual<br />
serverul dumneavoastra catre un server de nume care cunoaste<br />
raspunsul. Voi ilustra aceasta acum, &#8220;+norec&#8221; inseamna ca &#8220;dig&#8221; aplica<br />
interogari ne-recursive, asa ca va trebui sa aplicam chiar noi<br />
recursivitatea. Cealalta optiune ar fi sa reducem cantitatea de date<br />
pe care &#8220;dig&#8221; o produce asa incat sa nu avem de-a face cu prea multe pagini:</p>
<p>$ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu.<br />
;; res options: init defnam dnsrch<br />
;; got answer:<br />
; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 13<br />
;; AUTHORITY SECTION:<br />
.                       5d23h48m47s IN NS  I.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  E.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  D.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  A.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  H.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  C.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  G.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  F.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  B.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  J.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  K.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  L.ROOT-SERVERS.NET.<br />
.                       5d23h48m47s IN NS  M.ROOT-SERVERS.NET.</p>
<p>;; ADDITIONAL SECTION:<br />
I.ROOT-SERVERS.NET.     6d23h48m47s IN A  192.36.148.17<br />
E.ROOT-SERVERS.NET.     6d23h48m47s IN A  192.203.230.10<br />
D.ROOT-SERVERS.NET.     6d23h48m47s IN A  128.8.10.90<br />
A.ROOT-SERVERS.NET.     6d23h48m47s IN A  198.41.0.4<br />
H.ROOT-SERVERS.NET.     6d23h48m47s IN A  128.63.2.53<br />
C.ROOT-SERVERS.NET.     6d23h48m47s IN A  192.33.4.12<br />
G.ROOT-SERVERS.NET.     6d23h48m47s IN A  192.112.36.4<br />
F.ROOT-SERVERS.NET.     6d23h48m47s IN A  192.5.5.241<br />
B.ROOT-SERVERS.NET.     6d23h48m47s IN A  128.9.0.107<br />
J.ROOT-SERVERS.NET.     6d23h48m47s IN A  198.41.0.10<br />
K.ROOT-SERVERS.NET.     6d23h48m47s IN A  193.0.14.129<br />
L.ROOT-SERVERS.NET.     6d23h48m47s IN A  198.32.64.12<br />
M.ROOT-SERVERS.NET.     6d23h48m47s IN A  202.12.27.33</p>
<p>Aceasta este referinta. Ne ofera doar o &#8220;sectiune autoritativa&#8221;<br />
nu o &#8220;sectiune de raspuns&#8221;. Propriul nostru nameserver ne raporteaza<br />
la alt nameserver. Alegeti la intamplare:</p>
<p>$ dig +norec +noH +noques +nostats +nocmd<br />
prep.ai.mit.edu. @H.ROOT-SERVE<br />
; (1 server found)<br />
;; res options: init defnam dnsrch<br />
;; got answer:<br />
; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 3<br />
;; AUTHORITY SECTION:<br />
MIT.EDU.                2D IN NS        BITSY.MIT.EDU.<br />
MIT.EDU.                2D IN NS        STRAWB.MIT.EDU.<br />
MIT.EDU.                2D IN NS        W20NS.MIT.EDU.</p>
<p>;; ADDITIONAL SECTION:<br />
BITSY.MIT.EDU.          2D IN A         18.72.0.3<br />
STRAWB.MIT.EDU.         2D IN A         18.71.0.151<br />
W20NS.MIT.EDU.          2D IN A         18.70.0.160</p>
<p>Se refera la serverele MIT.EDU odata. Din nou, alegeti unul la intamplare:</p>
<p>$ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu. @bitsy.mit.edu<br />
; (1 server found)<br />
;; res options: init defnam dnsrch<br />
;; got answer:<br />
; flags: qr ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4<br />
;; ANSWER SECTION:<br />
prep.ai.mit.edu.        3h50m7s IN A    198.186.203.18</p>
<p>;; AUTHORITY SECTION:<br />
AI.MIT.EDU.             6H IN NS        FEDEX.AI.MIT.EDU.<br />
AI.MIT.EDU.             6H IN NS        LIFE.AI.MIT.EDU.<br />
AI.MIT.EDU.             6H IN NS        ALPHA-BITS.AI.MIT.EDU.<br />
AI.MIT.EDU.             6H IN NS        BEET-CHEX.AI.MIT.EDU.</p>
<p>;; ADDITIONAL SECTION:<br />
FEDEX.AI.MIT.EDU.       6H IN A         192.148.252.43<br />
LIFE.AI.MIT.EDU.        6H IN A         128.52.32.80<br />
ALPHA-BITS.AI.MIT.EDU.  6H IN A         128.52.32.5<br />
BEET-CHEX.AI.MIT.EDU.   6H IN A         128.52.32.22</p>
<p>DE data aceasta avem o &#8220;sectiune de raspuns&#8221; si un raspuns la interogarea<br />
noastra. &#8220;Sectiunea autoritativa&#8221; contine informatii despre ce servere<br />
sa interogam despre ai.mit.edu data viitoare. Asa ca le puteti interoga<br />
data viitoare direct despre ce nume va intereseaza din domeniul ai.mit.edu.</p>
<p>Deci pornind de la &#8220;.&#8221; am gasit serverele de nume pentru fiecare nivel<br />
in numele de domeniu, prin referinte. Daca ati folosit propriul<br />
server de nume in loc de alte servere,<br />
nameserverul dumneavoastra a stocat, bineinteles in cache, toata<br />
informatia pe care a gasit-o &#8220;sapand&#8221; (comanda &#8220;dig&#8221;) pentru aceasta, si<br />
nu va trebui sa cerceteze mult pentru raspunsuri, un timp.</p>
<p>In structura arborescenta analoga, fiecare &#8220;.&#8221; este un punct<br />
de ramificatie si fiecare parte intre &#8220;.&#8221; reprezinta<br />
numele ramurilor individuale in arbore. Unul urca pe arbore luand numele<br />
pe care il dorim (prep.ai.mit.edu) intreband root-ul &#8220;.&#8221; sau orice<br />
server parinte dinspre root  catre prep.ai.mit.edu despre care<br />
avem informatii in cache. Odata ce limitele cache-ului<br />
sunt atinse, rezolverul recursiv &#8220;iese&#8221; interogand serverele, obtinand<br />
referinte (margini &#8211; edges) in nume.</p>
<p>Un domeniu mai putin discutat, dar la fel de important<br />
este in-addr.arpa. Este de asemeni catalogat ca un domeniu &#8220;normal&#8221; ne<br />
permite sa obtinem numele host-ului cand ii cunoastem adresa. Un lucru<br />
important de retinut aici este ca adresele IP sunt scrise in<br />
ordine inversa in domeniul in-addr.arpa. Daca aveti adresa unei masini, de<br />
exemplu 192.148.52.43, named procedeaza ca in exemplul cu<br />
prep.ai.mit.edu:<br />
cauta serverele arpa. , cauta serverele in-addr.arpa, cauta serverele<br />
192.in-addr.arpa. , cauta serverele 148.192.in-addr.arpa., cauta serverele<br />
52.148.192.in-addr.arpa. , cauta inregistrarile necesare pentru<br />
43.52.148.192.in-addr.arpa. Inteligent, nu? (Spuneti &#8220;da&#8221;.) Reversia<br />
numerelor poate crea confuzie.</p>
<p>5.2. Propriul nostru domeniu</p>
<p>Acum sa definim propriul nostru domeniu. Vom face domeniul linux.bogus<br />
si vom defini masini in el. Voi folosi nume de domenii total aiurea,<br />
astfel incat sa ne asiguram ca nu deranjam pe nimeni Acolo Afara.</p>
<p>Inca un lucru inainte de a incepe. Nu toate caracterele sunt permise<br />
in numele de domenii. Suntem restrictionati la caracterele din alfabetul<br />
englez: a-z si numere 0-9 si caracterul &#8220;-&#8221;. Limitati-va la aceste<br />
caractere. Caracterele majuscule si minuscule sunt identice pentru DNS,<br />
deci pat.uio.no este identic cu Pat.Uio.No.</p>
<p>Am pornit deja aceasta parte cu o linie in named.conf:</p>
<p>______________________________________________________________________<br />
zone &#8220;0.0.127.in-addr.arpa&#8221; {<br />
type master;<br />
file &#8220;pz/127.0.0&#8243;;<br />
};<br />
______________________________________________________________________</p>
<p>Va rog sa observati lipsa lui &#8220;.&#8221; la sfarsitul numelor de domeniu in acest<br />
fisier. Acesta spune ca acum vom definit zona 0.0.127.in-addr.arpa, care<br />
este serverul master pentru ea si care este stocat in fisierul numit<br />
pz/127.0.0. Deja am configurat acest fisier, care arata:</p>
<p>______________________________________________________________________<br />
$TTL 3D<br />
@               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (<br />
1       ; Serial<br />
8H      ; Refresh<br />
2H      ; Retry<br />
4W      ; Expire<br />
1D)     ; Minimum TTL<br />
NS      ns.linux.bogus.<br />
1                       PTR     localhost.<br />
______________________________________________________________________</p>
<p>Observati &#8220;.&#8221; la sfarsitul fiecarui nume de domeniu in acest fisier,<br />
in contrast cu named.conf de mai sus. Unii prefera sa inceapa fiecare zona<br />
cu directiva $ORIGIN, dar aceasta configurare este superflua. Originea<br />
(din care face parte ierarhia DNS) unei fisier zona este specificata<br />
in sectiunea &#8220;zone&#8221; din fisierul named.conf; in acest caz este<br />
0.0.127.in-addr.arpa.</p>
<p>Acest &#8220;fisier zona&#8221; contine 3 &#8220;inregistrari resursa&#8221; (RR): A SOA RR.  A NS<br />
RR si un PTR RR. SOA este prescurtarea pentru Start of Authority. &#8220;@&#8221;<br />
este notatia speciala semnificand originea, si cum coloana &#8220;domain&#8221; pentru<br />
acest fisier indica 0.0.127.in-addr.arpa, prima linie inseamna in realitate:</p>
<p>0.0.127.in-addr.arpa.   IN      SOA &#8230;</p>
<p>NS este name server RR. Nu este nici un &#8220;@&#8221; la inceputul acestei linii;<br />
este implicit pentru ca inceputul liniei anterioare incepe cu un &#8220;@&#8221;. Va<br />
scuteste de redactat. Astfel, linia NS poate fi scrisa deasemeni:</p>
<p>0.0.127.in-addr.arpa.   IN      NS      ns.linux.bogus</p>
<p>Aceasta spune DNS-ului ce masina este name-serverul pentru<br />
domeniul 0.0.127.in-addr.arpa, este ns.linux.bogus. &#8220;ns&#8221; este un nume<br />
uzitat pentru serverele de nume, dar ca si pentru serverele web care<br />
sunt numite www.ceva numele poate fi oricare.</p>
<p>Si, in final, inregistrarea PTR (Domain Name Pointer &#8211; Pointerul Numelui<br />
de Domeniu) arata ca hostul de la adresa 1 din<br />
subnetul 0.0.127.in-addr.arpa, de exemplu 127.0.0.1 este numit localhost.</p>
<p>Inregistrarea SOA este preambulul tuturor fisierelor de zona, si ar trebui<br />
sa fie exact cate una pentru fiecare fisier de zona. Aceasta descrie zona,<br />
de unde vine (o masina numita ns.linux.bogus), cine este responsabil<br />
pentru continutul ei (hostmaster@linux.bogus; ar trebui sa inserati adresa<br />
dumneavoastra de e-mail aici), ce versiune a fisierului zona este (serial:1)<br />
si alte lucruri care au de-a face cu cachingul si serverele DNS secundare.<br />
Pentru restul campurilor (refresh, retry, expire si minimum)<br />
folositi numerele utilizate in acest HOWTO si ar trebui sa fiti in<br />
siguranta. Inainte de SOA apare o linie esentiala, linia $TTL 3D. Puneti<br />
in ea toate fisierele de zona.</p>
<p>Acum reporniti named (cu comanda ndc restart) si folositi &#8220;dig&#8221; pentru a<br />
examina rezultatele. -x cere o interogare inversa:</p>
<p>$ dig -x 127.0.0.1</p>
<p>; &lt;&lt;&gt;&gt; DiG 8.2 &lt;&lt;&gt;&gt; -x<br />
;; res options: init recurs defnam dnsrch<br />
;; got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 4<br />
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0<br />
;; QUERY SECTION:<br />
;;      1.0.0.127.in-addr.arpa, type = ANY, class = IN</p>
<p>;; ANSWER SECTION:<br />
1.0.0.127.in-addr.arpa.  1D IN PTR  localhost.</p>
<p>;; AUTHORITY SECTION:<br />
0.0.127.in-addr.arpa.   1D IN NS        ns.penguin.bv.</p>
<p>;; Total query time: 5 msec<br />
;; FROM: lookfar to SERVER: default &#8212; 127.0.0.1<br />
;; WHEN: Sat Dec 16 01:13:48 2000<br />
;; MSG SIZE  sent: 40  rcvd: 110</p>
<p>Deci se descurca sa obtina localhostul din 127.0.0.1, e OK. Acum, pentru<br />
scopul nostru principal, inserati o noua sectiune zona (&#8220;zone&#8221;) in<br />
named.conf:</p>
<p>______________________________________________________________________<br />
zone &#8220;linux.bogus&#8221; {<br />
notify no;<br />
type master;<br />
file &#8220;pz/linux.bogus&#8221;;<br />
};<br />
______________________________________________________________________</p>
<p>Observati din nou lipsa &#8220;.&#8221; din numele de domeniu din fisierul named.conf.<br />
In fisierul zona linux.bogus vom pune niste date total aiurea.</p>
<p>______________________________________________________________________<br />
;<br />
; Zone file for linux.bogus<br />
;<br />
; The full zone file<br />
;<br />
$TTL 3D<br />
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (<br />
199802151       ; serial, todays date + todays serial<br />
8H              ; refresh, seconds<br />
2H              ; retry, seconds<br />
4W              ; expire, seconds<br />
1D )            ; minimum, seconds<br />
;<br />
NS      ns              ; Inet Address of name server<br />
MX      10 mail.linux.bogus     ; Primary Mail Exchanger<br />
MX      20 mail.friend.bogus.   ; Secondary Mail Exchanger<br />
;<br />
localhost       A       127.0.0.1<br />
ns              A       192.168.196.2<br />
mail            A       192.168.196.4<br />
______________________________________________________________________</p>
<p>Doua lucruri trebuie observate in legatura cu inregistrarea SOA:<br />
ns.linux.bogus trebuie sa fie o masina cu inregistrare &#8220;A&#8221;. Nu este in<br />
regula sa avem o inregistrarea CNAME pentru masina mentionata in<br />
inregistrarea SOA. Numele ei nu este obligatoriu sa fie &#8220;ns&#8221;, poate<br />
fi orice nume &#8220;legal&#8221;, acceptabil, de host. Apoi, hostmaster.linux.bogus<br />
trebuie citit ca hostmaster@linux.bogus. Acesta ar trebui sa fie un mail<br />
alias sau un mailbox (cutie postala) unde persoanele care intretin DNS-ul<br />
ar trebui sa citeasca frecvent mailul. Orice mail privind domeniul va fi<br />
trimis la adresa listata aici. Numele nu e necesar<br />
sa fie &#8220;hostmaster&#8221;, paote fi adresa dumneavoastra normala<br />
de e-mail, dar adresa de e-mail &#8220;hostmaster&#8221; ar trebui sa functioneze<br />
la fel de bine.</p>
<p>Exista un tip nou &#8220;RR&#8221; in acest fisier, RR-ul &#8220;MX&#8221;-ului sau<br />
Mail Exchanger-ului. Acesta indica sistemului de e-mail unde<br />
sa trimita mailul adresat cuiva@linux.bogus, dupa nume<br />
mail.linux.bogus sau mail.friend.bogus. Numerele din fata fiecarei<br />
masini este prioritatea RR-ului MailExchangerului. RR-ul<br />
cu cel mai mic numar (10) este unde mailul ar trebui sa fie trimis daca<br />
este posibil. Daca acesta rateaza, mailul va fi trimis urmatorului<br />
cu numar mai mare, un manager de e-mail secundar (mail handler),<br />
de exemplu mail.friend.bogus, care are prioritatea 20 aici.</p>
<p>Restartati named cu &#8220;ndc restart&#8221;. Examinati rezultatul cu &#8220;dig&#8221;:</p>
<p>$ dig any linux.bogus +pfmin<br />
;; res options: init recurs defnam dnsrch<br />
;; got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 23499<br />
;; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 1<br />
;; QUERY SECTION:<br />
;;      linux.bogus, type = ANY, class = IN</p>
<p>;; ANSWER SECTION:<br />
linux.bogus.            3D IN MX        10 mail.linux.bogus.linux.bogus.<br />
linux.bogus.            3D IN MX        20 mail.friend.bogus.<br />
linux.bogus.            3D IN NS        ns.linux.bogus.<br />
linux.bogus.            3D IN SOA       ns.linux.bogus.hostmaster.linux<br />
199802151       ; serial<br />
8H              ; refresh<br />
2H              ; retry<br />
4W              ; expiry<br />
1D )            ; minimum</p>
<p>Examinand cu atentie rezultatele de mai sus, veti descoperi o hiba. Linia</p>
<p>linux.bogus.            3D IN MX		10 mail.linux.bogus.linux.bogus.</p>
<p>este total gresita. Ar trebui sa fie:</p>
<p>linux.bogus.            3D IN MX        10 mail.linux.bogus.</p>
<p>Am facut intentionat o greseala, ca sa puteti invata din ea <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Privind<br />
in fisierul zona, vom observa aceasta linie;</p>
<p>MX      10 mail.linux.bogus     ; Primary Mail Exchanger</p>
<p>Lipseste un punct. Sau are prea multe &#8220;linux.bogus&#8221;. Daca un nume de<br />
masina nu se termina cu punct intr-un fisier zona, originea este adaugata<br />
la sfarsitul lui, cauzand dublura linux.bogus.linux.bogus. Asa ca ori</p>
<p>______________________________________________________________________<br />
MX      10 mail.linux.bogus.    ; Primary Mail Exchanger<br />
______________________________________________________________________</p>
<p>ori</p>
<p>______________________________________________________________________<br />
MX      10 mail                 ; Primary Mail Exchanger<br />
______________________________________________________________________</p>
<p>este corect. Prefer ultima forma, e mai putin de scris.<br />
Sunt anumiti experti in BIND care dezaproba, si altii care aproba aceasta.<br />
Intr-un fisier zona, domeniul ar trebui sa fie ori scris si terminat<br />
in &#8220;.&#8221; ori ne inclus deloc, caz in care ramane implicita originea.</p>
<p>Trebuie sa va stresez cu ideea ca in fisierul named.conf nu trebuie sa fie<br />
semne &#8220;.&#8221; dupa numele de domenii. N-aveti idee de cate ori<br />
prea multe sau prea putine &#8220;.&#8221; au pus in stare de confuzie utilizatorii.</p>
<p>Deci, ideea mea aici este noul fisier zona , cu cateva informatii in plus:</p>
<p>______________________________________________________________________<br />
;<br />
; Zone file for linux.bogus<br />
;<br />
; The full zone file<br />
;<br />
$TTL 3D<br />
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (<br />
199802151       ; serial, todays date + todays serial<br />
8H              ; refresh, seconds<br />
2H              ; retry, seconds<br />
4W              ; expire, seconds<br />
1D )            ; minimum, seconds<br />
;<br />
TXT     &#8220;Linux.Bogus, your DNS consultants&#8221;<br />
NS      ns              ; Inet Address of name server<br />
NS      ns.friend.bogus.<br />
MX      10 mail         ; Primary Mail Exchanger<br />
MX      20 mail.friend.bogus. ; Secondary Mail Exchanger</p>
<p>localhost       A       127.0.0.1</p>
<p>gw              A       192.168.196.1<br />
HINFO   &#8220;Cisco&#8221; &#8220;IOS&#8221;<br />
TXT     &#8220;The router&#8221;</p>
<p>ns              A       192.168.196.2<br />
MX      10 mail<br />
MX      20 mail.friend.bogus.<br />
HINFO   &#8220;Pentium&#8221; &#8220;Linux 2.0&#8243;<br />
www             CNAME   ns</p>
<p>donald          A       192.168.196.3<br />
MX      10 mail<br />
MX      20 mail.friend.bogus.<br />
HINFO   &#8220;i486&#8243;      &#8220;Linux 2.0&#8243;<br />
TXT     &#8220;DEK&#8221;</p>
<p>mail            A       192.168.196.4<br />
MX      10 mail<br />
MX      20 mail.friend.bogus.<br />
HINFO   &#8220;386sx&#8221; &#8220;Linux 1.2&#8243;</p>
<p>ftp             A       192.168.196.5<br />
MX      10 mail<br />
MX      20 mail.friend.bogus.<br />
HINFO   &#8220;P6&#8243; &#8220;Linux 2.1.86&#8243;<br />
______________________________________________________________________</p>
<p>Aici sunt cateva noi RR-uri: HINFO (Host INFOrmation) are doua parti; e un<br />
obicei bun sa le comentati pe fiecare. Prima parte este harware-ul si<br />
CPU-ul din respectiva masina, iar a doua parte<br />
este software-ul sau sitemul de operare de pe masina. Masina &#8220;ns&#8221; este<br />
un Pentium si ruleaza Linux 2.0. CNAME (Canonical NAME) este o cale de a<br />
da fiecarei masini mai multe nume. Deci &#8220;www&#8221; este un alias pentru &#8220;ns&#8221;.</p>
<p>Utilizarea inregistrarii CNAME este controversata. Dar e in OK sa urmati<br />
regula potrivit careia o inregistrare MX, CNAME sau SOA nu trebuie sa nu<br />
se refere niciodata la o inregistrare CNAME, trebuie intotdeauna sa se<br />
refere la o inregistrare &#8220;A&#8221;, deci este inadmisibil sa avem:</p>
<p>______________________________________________________________________<br />
foobar          CNAME   www                     ; NO!<br />
______________________________________________________________________</p>
<p>dar corect sa avem</p>
<p>______________________________________________________________________<br />
foobar          CNAME   ns                      ; Yes!<br />
______________________________________________________________________</p>
<p>Este de asemeni sigur sa presupunem ca un CNAME nu este un nume de<br />
host corect pentru o adresa de e-mail: webmaster@www.linux.bogus<br />
este o adresa de e-mail ilegala, incorecta, data de configurarea de mai sus.<br />
Va puteti chiar astepta la cativa administratori de e-mail de Afara sa<br />
restrictioneze aceasta regula, daca pentru<br />
dumneavoasta functioneaza. Calea pentru a evita aceasta este sa folositi<br />
inregistrari &#8220;A&#8221; (si poate si altele, cum ar fi reguli MX) in loc:</p>
<p>______________________________________________________________________<br />
www             A       192.168.196.2<br />
______________________________________________________________________</p>
<p>Un numar de arch-BIND-wizards recomanda sa nu utilizati de loc<br />
CNAME. Dar discutia legata aceasta nu face obiectul acestui HOWTO.</p>
<p>Dar cum vedeti, acest HOWTO si multe site-uri nu urmeaza aceasta regula.</p>
<p>Incarcati noua baza de date cu &#8220;ndc reload&#8221; ceea ce il obliga<br />
pe named sa-si reciteasca fisierele.</p>
<p>$ dig linux.bogus axfr</p>
<p>; &lt;&lt;&gt;&gt; DiG 8.2 &lt;&lt;&gt;&gt; linux.bogus axfr<br />
$ORIGIN linux.bogus.<br />
@                       3D IN SOA       ns hostmaster (<br />
199802151       ; serial<br />
8H              ; refresh<br />
2H              ; retry<br />
4W              ; expiry<br />
1D )            ; minimum</p>
<p>3D IN NS        ns<br />
3D IN NS        ns.friend.bogus.<br />
3D IN MX        10 mail<br />
3D IN MX        20 mail.friend.bogus.<br />
3D IN TXT       &#8220;Linux.Bogus, your DNS consultants&#8221;<br />
gw                      3D IN TXT       &#8220;The router&#8221;<br />
3D IN HINFO     &#8220;Cisco&#8221; &#8220;IOS&#8221;<br />
3D IN A         192.168.196.1<br />
localhost               3D IN A         127.0.0.1<br />
mail                    3D IN HINFO     &#8220;386sx&#8221; &#8220;Linux 1.2&#8243;<br />
3D IN MX        10 mail<br />
3D IN MX        20 mail.friend.bogus.<br />
3D IN A         192.168.196.4<br />
www                     3D IN CNAME     ns<br />
donald                  3D IN TXT       &#8220;DEK&#8221;<br />
3D IN HINFO     &#8220;i486&#8243; &#8220;Linux 2.0&#8243;<br />
3D IN MX        10 mail<br />
3D IN MX        20 mail.friend.bogus.<br />
3D IN A         192.168.196.3<br />
ns                      3D IN HINFO     &#8220;Pentium&#8221; &#8220;Linux 2.0&#8243;<br />
3D IN MX        10 mail<br />
3D IN MX        20 mail.friend.bogus.<br />
3D IN A         192.168.196.2<br />
ftp                     3D IN HINFO     &#8220;P6&#8243; &#8220;Linux 2.1.86&#8243;<br />
3D IN MX        10 mail<br />
3D IN MX        20 mail.friend.bogus.<br />
3D IN A         192.168.196.5<br />
@                       3D IN SOA       ns hostmaster (<br />
199802151       ; serial<br />
8H              ; refresh<br />
2H              ; retry<br />
4W              ; expiry<br />
1D )            ; minimum</p>
<p>;; Received 29 answers (29 records).<br />
;; FROM: lookfar to SERVER: 127.0.0.1<br />
;; WHEN: Sat Dec 16 01:35:05 2000</p>
<p>Asta e bine. Si observati ca arata chiar ca fisierul zona. Sa verificam ce<br />
spune doar pentru www:</p>
<p>$ dig www.linux.bogus +pfmin<br />
;; res options: init recurs defnam dnsrch<br />
;; got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 27345<br />
;; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1<br />
;; QUERY SECTION:<br />
;;      www.linux.bogus, type = A, class = IN</p>
<p>;; ANSWER SECTION:<br />
www.linux.bogus.        3D IN CNAME     ns.linux.bogus.<br />
ns.linux.bogus.         3D IN A         192.168.196.2</p>
<p>Cu alte cuvinte, numele real al lui www.linux.bogus este ns.linux.bogus,<br />
si va da si cateva informatii despre &#8220;ns&#8221; de asemeni, suficient pentru a<br />
va conecta la el daca cere un program.</p>
<p>Acum suntem la jumatatea drumului.</p>
<p>5.3. Zona reverse</p>
<p>Acum programele pot converti numele din linux.bogus in adrese la care se<br />
conecteaza. Dar de asemeni este ceruta o zona reverse, una care sa<br />
faca DNS-ul capabil sa converteasca adresele in nume. Acest nume<br />
este folosit de o multime de servere de diverse tipuri (FTP, WWW, IRC si<br />
altele) pentru a decide daca vor comunica cu dumneavoastra sau nu, si daca<br />
da, ce prioritate vi se va acorda. Pentru acces deplin la toate serviciile<br />
Internet , o zona reverse este necesara.</p>
<p>Puneti aceasta in named.conf:</p>
<p>______________________________________________________________________<br />
zone &#8220;196.168.192.in-addr.arpa&#8221; {<br />
notify no;<br />
type master;<br />
file &#8220;pz/192.168.196&#8243;;<br />
};<br />
______________________________________________________________________</p>
<p>Este exact acelasi lucru ca si cu 0.0.127.in-addr.arpa si continuturile<br />
sunt similare:</p>
<p>______________________________________________________________________<br />
$TTL 3D<br />
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (<br />
199802151 ; Serial, todays date + todays serial<br />
8H      ; Refresh<br />
2H      ; Retry<br />
4W      ; Expire<br />
1D)     ; Minimum TTL<br />
NS      ns.linux.bogus.</p>
<p>1               PTR     gw.linux.bogus.<br />
2               PTR     ns.linux.bogus.<br />
3               PTR     donald.linux.bogus.<br />
4               PTR     mail.linux.bogus.<br />
5               PTR     ftp.linux.bogus.<br />
______________________________________________________________________</p>
<p>Acum restartati named-ul cu &#8220;ndc restart&#8221; si examinati rezultatele cu &#8220;dig&#8221;:</p>
<p>______________________________________________________________________<br />
$ dig -x 192.168.196.4 +pfmin<br />
;; res options: init recurs defnam dnsrch<br />
;; got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 8764<br />
;; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1<br />
;; QUERY SECTION:<br />
;;      4.196.168.192.in-addr.arpa, type = ANY, class = IN</p>
<p>;; ANSWER SECTION:<br />
4.196.168.192.in-addr.arpa.  3D IN PTR  mail.linux.bogus.<br />
______________________________________________________________________</p>
<p>deci arata OK, executati &#8220;dig&#8221; pentru toata configuratia pentru a o examina:</p>
<p>______________________________________________________________________<br />
dig -x 192.168.196 AXFR</p>
<p>; &lt;&lt;&gt;&gt; DiG 8.2 &lt;&lt;&gt;&gt; -x AXFR<br />
$ORIGIN 196.168.192.in-addr.arpa.<br />
@                       3D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (<br />
199802151       ; serial<br />
8H              ; refresh<br />
2H              ; retry<br />
4W              ; expiry<br />
1D )            ; minimum</p>
<p>3D IN NS        ns.linux.bogus.<br />
4                   3D IN PTR       mail.linux.bogus.<br />
2                   3D IN PTR       ns.linux.bogus.<br />
5                   3D IN PTR       ftp.linux.bogus.<br />
3                   3D IN PTR       donald.linux.bogus.<br />
1                   3D IN PTR       gw.linux.bogus.<br />
@                   3D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (<br />
199802151       ; serial<br />
8H              ; refresh<br />
2H              ; retry<br />
4W              ; expiry<br />
1D )            ; minimum</p>
<p>;; Received 8 answers (8 records).<br />
;; FROM: lookfar to SERVER: 127.0.0.1<br />
;; WHEN: Sat Dec 16 01:44:03 2000<br />
____________________________________________________________________</p>
<p>Arata bine! Daca output-ul dumneavoastra nu arata la fel, cautati eroarea<br />
in mesajele din syslog. Am explicat cum sa faceti aceasta in prima<br />
sectiune la paragraful &#8220;Pornirea lui named&#8221;.</p>
<p>5.4. Cuvinte de atentionare.</p>
<p>Trebuie sa adaug niste lucruri aici. Numerele IP utilizate in exemplele de<br />
mai sus sunt luate din blocul &#8220;retelelor private&#8221;, ele nu sunt permise a<br />
se utiliza in Internet, deci sunt potrivite a fi utilizate intr-un exemplu<br />
ca acest HOWTO. Al doilea lucru este numarul de notificare:linia. Acesta<br />
ii spune lui named sa nu notifice serverele secundare (slave)<br />
cand a suferit o actualizare la unul dintre fisierele sale &#8220;zone&#8221;. In BIND 8<br />
named poate notifica celelalte servere listate in inregistrarile NS in<br />
fisierul &#8220;zone&#8221; cand o zona este actualizata. Aceasta situatie<br />
este avantajoasa in mod normal. Dar pentru experimente private<br />
cu zone, aceasta optiune ar trebui sa fie dezactivata &#8211; nu vrem sa<br />
poluam Internetul cu experimentele noastre, nu?</p>
<p>Si, bineinteles, acest domeniu este total aiurea si la fel<br />
sunt toate adresele din el. Pentru un exemplu real vedeti urmatoarea<br />
sectiune principala.</p>
<p>5.5. De ce nu functioneaza interogarile inverse (reverse lookups).</p>
<p>Sunt cateva &#8220;chestii&#8221; care in mod normal sunt evitate la interogarile<br />
de nume vazute adesea la configurarea zonelor inverse. Inainte<br />
de a trece mai departe, trebuie ca pe masinile dumneavoastra, interogarile<br />
inverse sa fie functionale pe propriul nameserver. Daca nu functioneaza,<br />
reveniti si puneti totul la punct inainte de a continua.</p>
<p>Voi discuta doua situatii de nefunctionare a interogarilor<br />
inverse, asa cum sunt vazute din afara retelei dumneavoastra.</p>
<p>5.5.1 Zona inversa nu este investita.</p>
<p>Cand cereti unui provider o plaja de adrese si un nume de domeniu,<br />
numele de domeniu este in mod normal investit. Investirea este &#8220;eticheta&#8221;<br />
pe care NS (Name Server) o inregistreaza si care va ajuta sa treceti de la<br />
un nameserver la altul, asa cum am explicat in &#8220;teoria seaca&#8221; de mai<br />
sus. Ati citit aceasta, nu-i asa? Daca zona inversa nu functioneaza,<br />
reveniti si cititi-o. Acum.</p>
<p>Zona inversa trebuie de asemeni investita. Daca aveti clasa 192.168.196 de<br />
la provider cu domeniul linux.bogus, ei trebuie sa insereze inregistrarile<br />
NS atat pentru zona directa (forward) cat si pentru cea inversa. Daca<br />
urmati lantul de la in-addr.arpa in sus pana la reteaua dvs, probabil<br />
gasiti o ruptura in acest lant, cel mai probabil la providerul dvs. Gasind<br />
ruptura din lant, contactati providerul si cereti-i sa corecteze eroarea.</p>
<p>5.5.2. Aveti un subnet fara clase.</p>
<p>Acesta este oarecum un subiect avansat, dar subneturile fara clase sunt<br />
ceva comun in ziua de azi si probabil ca aveti unul daca sunteti intr-o<br />
firma mica.</p>
<p>Un subnet fara clase este ceea ce tine Internetul in picioare in<br />
zilele noastre. Cu cativa ani in urma au fost discutii intense cu privire<br />
la limitarile adreselor IP. Tipii de la IETF (Internet Engineering<br />
Task Force &#8211; ei mentin Internetul in stare de functionare) si-au stors<br />
creierii si au rezolvat problema. Cu un pret. Pretul este ca veti<br />
obtine mai putin de un subnet de clasa &#8220;C&#8221; si unele lucruri s-ar putea<br />
sa crape. Va rog consultati ASK MR DNS la:<br />
&lt;http://www.acmebw.com/askmrdns/00007.htm&gt; pentru o buna explicatie<br />
cu privire la aceste lucruri, si cum sa va descurcati.</p>
<p>Ati citit-o? Eu nu o voi explica, asa ca, va rog cititi-o!</p>
<p>Prima parte a acestei probleme este ca ISP-ul dvs. trebuie<br />
sa inteleaga tehnica descrisa de Mr. DNS. Nu toti ISP-stii mici au habar<br />
de aceasta problema. Daca asa sta treaba, va trebui sa le explicati<br />
problema si sa si insistati. Asigurati-va ca ati inteles-o dvs. intai. <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Ei vor configura atunci o zona inversa foarte draguta pe serverul lor,<br />
pe care o puteti examina spre corectitudine cu &#8220;dig&#8221;.</p>
<p>A doua si ultima parte a problemei este ca trebuie sa intelegeti<br />
tehnica. Daca nu sunteti sigur, reveniti si recititi-o. Atunci puteti sa<br />
va configurati propria zona inversa fara clase, asa cum este descrisa<br />
de Mr. DNS.</p>
<p>Mai e o capcana care pandeste aici. Rezolverele vechi nu vor fi capabile<br />
sa urmeze &#8220;fenta&#8221; cu CNAME in lantul de rezolvare si vor esua in<br />
incercarea de a rezolva invers masina dvs. Rezultatul poate fi acela<br />
ca serverul ii aloca o clasa de acces incorecta,<br />
interzicerea accesului sau ceva de genul aceasta. Daca va impotmoliti<br />
intr-un asemena serviciu, singura solutie (despre care am cunostinta) este<br />
pentru ISP sa insereze inregistrarea dvs. PTR direct in fisierul zonei<br />
fara clase in loc de inregistrare CNAME.</p>
<p>Alte ISP-uri ofera alte cai de a rezolva aceasta problema, cum ar fi<br />
formularele bazate pe Web care va permit sa va introduceti maparile inverse.</p>
<p>5.6. Servere slave (sclav)</p>
<p>Odata ce v-ati setat corect zonele pe serverele master, trebuie sa<br />
configurati macar un server slave (&#8220;sclav&#8221;). Serverele slave sunt necesare<br />
pentru a asigura robustetea serviciilor. Daca serverul master a picat,<br />
oamenii de pe internet vor putea totusi primit date despre doemeniu de<br />
la serverul slave. Un server slave ar trebui sa fie cat mai indepartat<br />
de dvs posibil si sa imparta cu serverul master cat mai<br />
putine din resursele de alimentare cu energie, LAN, ISP, oras, tara.<br />
Daca toate aceste lucruri sunt diferite de ale serverului master, aveti un<br />
bun server slave.</p>
<p>Un server slave este pur si simplu un nameserver care copie fisierele zone<br />
de la master. Il configurati astfel:</p>
<p>______________________________________________________________________<br />
zone &#8220;linux.bogus&#8221; {<br />
type slave;<br />
file &#8220;sz/linux.bogus&#8221;;<br />
masters { 192.168.196.2; };<br />
};<br />
______________________________________________________________________</p>
<p>Un mecanism numit trasfer de zone este folosit pentru a copia datele.<br />
Transferul de zone este controlat de inregistrarea SOA:</p>
<p>______________________________________________________________________<br />
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (<br />
199802151       ; serial, todays date + todays serial<br />
8H              ; refresh, seconds<br />
2H              ; retry, seconds<br />
4W              ; expire, seconds<br />
1D )            ; minimum, seconds<br />
______________________________________________________________________</p>
<p>O zona este transferata doar daca numarul serial al masterului este mai<br />
mare decat al slave-ului. Dupa fiecare interval de refresh, slave-ul<br />
va verifica daca masterul a fost actualizat.<br />
Daca verificarea esueaza (pentru ca masterul nu este disponibil)<br />
va reincerca verificarea. Daca va continua sa esueze atat timp cat dureaza<br />
intervalul de expirare, slave-ul va sterge zona din propriul sistem de<br />
fisiere si nu va mai actiona ca server pentru acea zona.</p>
<p>6. Optiuni fundamentale de securitate.</p>
<p>de Jamie Norrish</p>
<p>Seterea optiunilor de configurare pentru a reduce posibilitatea aparitiei<br />
problemelor</p>
<p>Sunt cativa pasi simpli pe care ii puteti parcurge si care va vor asigura<br />
un server mai sigur si totodata ii vor reduce incarcarea. Materialul<br />
prezentat aici nu este mai mult decat un puct de plecare. Daca va preocupa<br />
securitatea (si ar trebui sa va preocupe), va rog sa consultati si<br />
alte resurse de pe Internet (vedeti &#8220;ultimul capitol&#8221;).</p>
<p>Urmatoarele directive de configurare apar in named.conf.<br />
Daca o directiva apare in sectiunea &#8220;options&#8221; din fisier, se<br />
aplica tuturor zonelor listate in acel fisier. Daca apare in optiunile<br />
unei zone, se aplica numai acelei zone. On optiune dintr-o<br />
zona suprascrie, anuleaza o inregistrare din zona &#8220;options&#8221;.</p>
<p>6.1. Restrictionarea trasferului pe zone.</p>
<p>Pentru ca serverele slave sa fie capabile sa raspunda interogarilor spre<br />
domeniul dvs. trebuie sa fie capabile sa transfere informatia zona de la<br />
serverul primar. In foarte putine cazuri e nevoie de aceasta. De<br />
aceea, restrictionati transferurile pe zona, folosind optiunea<br />
&#8220;allow-trasfer&#8221;. Presupunand ca 194.168.1.4 este adresa IP a lui<br />
ns.friend.bogus, si adaugandu-va in scop de depanare:</p>
<p>______________________________________________________________________<br />
zone &#8220;linux.bogus&#8221; {<br />
allow-transfer { 192.168.1.4; localhost; };<br />
};<br />
______________________________________________________________________</p>
<p>Restrictionand transferul pe zone, va asigurati ca singura<br />
informatie disponibila utilizatorilor este cea pe care acestia o cer<br />
direct = nimeni nu poate cere, interoga toate detaliile configurarii dvs.</p>
<p>6.2. Protectia impotriva spoofing-ului.</p>
<p>In primul rand, dezactivati orice interogari pentru domenii care nu va<br />
apartin, cu exceptia masinii dvs. interne/locale. Aceasta nu<br />
doar preintampina utilizarea frauduloasa a serverului dvs. DNS, dar reduce<br />
si utilizarea ne-necesara a acestuia.</p>
<p>______________________________________________________________________<br />
options {<br />
allow-query { 192.168.196.0/24; localhost; };<br />
};</p>
<p>zone &#8220;linux.bogus&#8221; {<br />
allow-query { any; };<br />
};</p>
<p>zone &#8220;196.168.192.in-addr.arpa&#8221; {<br />
allow-query { any; };<br />
};<br />
______________________________________________________________________</p>
<p>Mai departe, dezactivati interogarile recursive cu exceptia celor de<br />
la masinile locale/interne. Aceasta reduce riscul atacurilor<br />
prin &#8220;otravirea&#8221; cache-ului, cand date false alimenteaza serverul.</p>
<p>______________________________________________________________________<br />
options {<br />
allow-recursion { 192.168.196.0/24; localhost; };<br />
};<br />
______________________________________________________________________</p>
<p>6.3. Rularea lui named ca non-root.</p>
<p>Este o idee buna sa rulati named ca utilizator altul decat root, asa incat<br />
daca acesta este compromis, privilegiile castigate de catre cracker<br />
sa fie cat mai limitate. Intai trebuie sa creati un grup si un<br />
utilizator sub care named sa ruleze, si apoi sa modificati scriptul pe<br />
care il folositi pentru a porni named. Transferati noul grup si utilizator<br />
catre named folosind flagurile -d si -u.</p>
<p>De exemplu, in Debian GNU/Linux 2.2 ati putea modifica scriptul /etc/init.d/bind<br />
pentru a contine urmatoarea linie (unde userul si grupul &#8220;named&#8221; au fost<br />
deja create):</p>
<p>______________________________________________________________________<br />
start-stop-daemon &#8211;start &#8211;quiet &#8211;exec /usr/sbin/named &#8212; -u named -g named<br />
______________________________________________________________________</p>
<p>La fel se procedeaza si cu RedHat si cu celelalte distributii. Dave Lugo a<br />
descris un setup dual chroot<br />
&lt;http://www.etherboy.com/dns/chrootdns.html&gt; care s-ar putea<br />
sa fie interesant de citit.</p>
<p>7. Un exemplu real de domeniu.</p>
<p>Unde vom lista fisiere reale de zona.</p>
<p>Utilizatorii mi-au sugerat sa includ un exemplu real de domeniu, ca si<br />
unul tutorial, de instructaj.</p>
<p>Folosesc acest exemplu cu permisiunea lui David Bullock de la LAND-5.<br />
Aceste fisiere dateaza din 24 septembrie 1996, si au fost editate pentru a<br />
se conforma restrictiilor BIND 8 si folosesc extensii scrise<br />
de mine. Deci, ceea ce vedeti aici s-ar putea sa difere de ceea<br />
ce ati putea afla interogand LAND-5 acum.</p>
<p>7.1.  /etc/named.conf (sau /var/named/named.conf)</p>
<p>Aici gasim zona master pentru cele doua zone inverse necesare: reteaua<br />
127.0.0  si subreteaua (subnetul) de la LAND-5  206.6.177 ca linie primara<br />
pentru zona de forward a LAND-5 land-5.com. Observati ca in loc ca toate<br />
fisierele sa fie adunate nu in directorul &#8220;pz&#8221; asa cum am facut in acest<br />
HOWTO, le pune intr-un director numit &#8220;zone&#8221;.</p>
<p>______________________________________________________________________<br />
// Boot file for LAND-5 name server</p>
<p>options {<br />
directory &#8220;/var/named&#8221;;<br />
};</p>
<p>zone &#8220;.&#8221; {<br />
type hint;<br />
file &#8220;root.hints&#8221;;<br />
};</p>
<p>zone &#8220;0.0.127.in-addr.arpa&#8221; {<br />
type master;<br />
file &#8220;zone/127.0.0&#8243;;<br />
};</p>
<p>zone &#8220;land-5.com&#8221; {<br />
type master;<br />
file &#8220;zone/land-5.com&#8221;;<br />
};</p>
<p>zone &#8220;177.6.206.in-addr.arpa&#8221; {<br />
type master;<br />
file &#8220;zone/206.6.177&#8243;;<br />
};<br />
______________________________________________________________________</p>
<p>Daca puneti aceasta in fisierul dvs. named.conf spre a va juca, VA ROG<br />
puneti &#8220;notify no: &#8221; in sectiunea zone, pentru cele doua zone land-5,<br />
spre a evita incidentele.</p>
<p>7.2.  /var/named/root.hints</p>
<p>Tineti minte ca acest fisier este dinamic, iar cel listat aici este<br />
vechi. Mai bine folositi unul produs cu &#8220;dig&#8221; asa cum am<br />
explicat mai devreme:</p>
<p>______________________________________________________________________<br />
; &lt;&lt;&gt;&gt; DiG 8.1 &lt;&lt;&gt;&gt; @A.ROOT-SERVERS.NET.<br />
; (1 server found)<br />
;; res options: init recurs defnam dnsrch<br />
;; got answer:<br />
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 10<br />
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13<br />
;; QUERY SECTION:<br />
;;      ., type = NS, class = IN</p>
<p>;; ANSWER SECTION:<br />
.                     6D IN NS        G.ROOT-SERVERS.NET.<br />
.                     6D IN NS        J.ROOT-SERVERS.NET.<br />
.                     6D IN NS        K.ROOT-SERVERS.NET.<br />
.                     6D IN NS        L.ROOT-SERVERS.NET.<br />
.                     6D IN NS        M.ROOT-SERVERS.NET.<br />
.                     6D IN NS        A.ROOT-SERVERS.NET.<br />
.                     6D IN NS        H.ROOT-SERVERS.NET.<br />
.                     6D IN NS        B.ROOT-SERVERS.NET.<br />
.                     6D IN NS        C.ROOT-SERVERS.NET.<br />
.                     6D IN NS        D.ROOT-SERVERS.NET.<br />
.                     6D IN NS        E.ROOT-SERVERS.NET.<br />
.                     6D IN NS        I.ROOT-SERVERS.NET.<br />
.                     6D IN NS        F.ROOT-SERVERS.NET.</p>
<p>;; ADDITIONAL SECTION:<br />
G.ROOT-SERVERS.NET.     5w6d16h IN A    192.112.36.4<br />
J.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.10<br />
K.ROOT-SERVERS.NET.     5w6d16h IN A    193.0.14.129<br />
L.ROOT-SERVERS.NET.     5w6d16h IN A    198.32.64.12<br />
M.ROOT-SERVERS.NET.     5w6d16h IN A    202.12.27.33<br />
A.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.4<br />
H.ROOT-SERVERS.NET.     5w6d16h IN A    128.63.2.53<br />
B.ROOT-SERVERS.NET.     5w6d16h IN A    128.9.0.107<br />
C.ROOT-SERVERS.NET.     5w6d16h IN A    192.33.4.12<br />
D.ROOT-SERVERS.NET.     5w6d16h IN A    128.8.10.90<br />
E.ROOT-SERVERS.NET.     5w6d16h IN A    192.203.230.10<br />
I.ROOT-SERVERS.NET.     5w6d16h IN A    192.36.148.17<br />
F.ROOT-SERVERS.NET.     5w6d16h IN A    192.5.5.241</p>
<p>;; Total query time: 215 msec<br />
;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET.  198.41.0.4<br />
;; WHEN: Sun Feb 15 01:22:51 1998<br />
;; MSG SIZE  sent: 17  rcvd: 436<br />
______________________________________________________________________</p>
<p>7.3.  /var/named/zone/127.0.0</p>
<p>Doar bazele, inregistrarea SOA obligatorie, si o inregistrare<br />
care mapeaza 127.0.0.1 catre localhost. Ambele sunt necesare. Nimic mai<br />
mult nu ar trebui sa fie in acest fisier. Nu vor<br />
trebui niciodata updatate, decat daca nameserver-ul sau adresa hostmaster<br />
a dvs se modifica.</p>
<p>______________________________________________________________________<br />
@               IN      SOA     land-5.com. root.land-5.com. (<br />
199609203       ; Serial<br />
28800   ; Refresh<br />
7200    ; Retry<br />
604800  ; Expire<br />
86400)  ; Minimum TTL<br />
NS      land-5.com.</p>
<p>1                       PTR     localhost.<br />
______________________________________________________________________</p>
<p>Daca veti cauta intr-o instalare BIND aleatorie, veti observa probabil<br />
ca linia $TTL lipseste. Nu a fost folosita inainte si doar versiunea 8.2<br />
BIND avertizeaza asupra lipsei acesteia. Va recomand sa puneti linia $TTL<br />
in fisierele zona cand observati ca lipseste.</p>
<p>7.4.  /var/named/zone/land-5.com</p>
<p>Aici observam inregistrarea SOA obligatorie, inregistrarea<br />
NS necesara. Putem vedea ca are un nameserver secundar la ns2.psi.net. Asa<br />
ar trebui sa fie, intotdeauna sa fie un al doilea nameserver<br />
in afara retelei, ca backup. Observam ca exista un host master numit<br />
land-5 care se ocupa de multiplele servicii Internet, si ca acesta<br />
este inregistrat cu CNAME ( o alternativa este utilizarea inregistrarii A).</p>
<p>Asa cum vedem din inregistrarea SOA, fisierul zona incepe cu land-5.com,<br />
persoana de contact este root@land-5.com. hostmaster este o alta<br />
adresa folosita adesea pentru persoana de contact. Numarul serial este<br />
obisnuitul format yyyymmdd cu numarul serial de astazi adaugat. Aceasta<br />
este probabil a sasea versiune a fisierului zona, din 20<br />
septembrie 1996. Tineti minte ca numarul serial trebuie sa creasca<br />
monoton, aici este un singur digit pentru numarul serial de astazi, dupa 9<br />
editari va trebui sa astepam pana maine inainte<br />
de a edita din nou fisierul. Ganditi-ba la posibilitatea de a folosi 2<br />
digiti.</p>
<p>______________________________________________________________________<br />
@       IN      SOA     land-5.com. root.land-5.com. (<br />
199609206       ; serial, todays date + todays serial<br />
8H              ; refresh, seconds<br />
2H              ; retry, seconds<br />
4W              ; expire, seconds<br />
1D )            ; minimum, seconds<br />
NS      land-5.com.<br />
NS      ns2.psi.net.<br />
MX      10 land-5.com.  ; Primary Mail Exchanger<br />
TXT     &#8220;LAND-5 Corporation&#8221;</p>
<p>localhost       A       127.0.0.1</p>
<p>router          A       206.6.177.1</p>
<p>land-5.com.     A       206.6.177.2<br />
ns              A       206.6.177.3<br />
www             A       207.159.141.192</p>
<p>ftp             CNAME   land-5.com.<br />
mail            CNAME   land-5.com.<br />
news            CNAME   land-5.com.</p>
<p>funn            A       206.6.177.2</p>
<p>;<br />
;       Workstations<br />
;<br />
ws-177200       A       206.6.177.200<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
ws-177201       A       206.6.177.201<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
ws-177202       A       206.6.177.202<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
ws-177203       A       206.6.177.203<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
ws-177204       A       206.6.177.204<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
ws-177205       A       206.6.177.205<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
; {Many repetitive definitions deleted &#8211; SNIP}<br />
ws-177250       A       206.6.177.250<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
ws-177251       A       206.6.177.251<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
ws-177252       A       206.6.177.252<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
ws-177253       A       206.6.177.253<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
ws-177254       A       206.6.177.254<br />
MX      10 land-5.com.   ; Primary Mail Host<br />
______________________________________________________________________</p>
<p>Daca veti examina nameserverul lui land-5, veti observa ca numele<br />
hosturilor sunt exprimate in forma ws_number. De la ultimele versiuni de<br />
BIND4 ,named a inceput sa intareasca restrictiile in legatura<br />
cu caracterele ce pot fi folosite in numele hosturilor. Asa ca aceasta<br />
nu functioneaza sub BIND8, asa ca am inlocuit caracterul &#8220;-&#8221; (liniuta)<br />
cu caracterul &#8220;_&#8221; pentru a fi folosit in acest HOWTO.</p>
<p>Un alt lucru de remarcat este ca statiile de lucru nu au nume individuale,<br />
ci mai curand un prefix urmat de doua din ultimile parti ale<br />
IP-ului. Folosirea unei astfel de conventii poate simplifica<br />
intretinerea semnificativ, dar poate fi un pic impersonala si,<br />
in fapt, o sursa de iritare printre clientii dumneavoastra.</p>
<p>De asemeni, observam ca funn.land-5.com este un alias<br />
pentru land-5.com, dar folosind inregistrarea A nu CNAME. Aceasta este o<br />
buna politica, asa cum am spus si mai devreme.</p>
<p>7.5.  /var/named/zone/206.6.177</p>
<p>Voi face comentariile dupa acest fisier:</p>
<p>______________________________________________________________________<br />
@               IN      SOA     land-5.com. root.land-5.com. (<br />
199609206       ; Serial<br />
28800   ; Refresh<br />
7200    ; Retry<br />
604800  ; Expire<br />
86400)  ; Minimum TTL<br />
NS      land-5.com.<br />
NS      ns2.psi.net.<br />
;<br />
;       Servers<br />
;<br />
1       PTR     router.land-5.com.<br />
2       PTR     land-5.com.<br />
2       PTR     funn.land-5.com.<br />
;<br />
;       Workstations<br />
;<br />
200     PTR     ws-177200.land-5.com.<br />
201     PTR     ws-177201.land-5.com.<br />
202     PTR     ws-177202.land-5.com.<br />
203     PTR     ws-177203.land-5.com.<br />
204     PTR     ws-177204.land-5.com.<br />
205     PTR     ws-177205.land-5.com.<br />
; {Many repetitive definitions deleted &#8211; SNIP}<br />
250     PTR     ws-177250.land-5.com.<br />
251     PTR     ws-177251.land-5.com.<br />
252     PTR     ws-177252.land-5.com.<br />
253     PTR     ws-177253.land-5.com.<br />
254     PTR     ws-177254.land-5.com.<br />
______________________________________________________________________</p>
<p>Zona inversa este partea de configurare care da dureri de cap. Este<br />
folosita pentru a identifica numele de host daca aveti IP-ul<br />
unei masini. Exemplu: sunteti un server IRC si acceptati conexiuni de la<br />
clientii IRC. Oricum, sunteti un server norvegian si acceptati<br />
doar conexiuni de la clientii din Norvegia si celelalte tari scandinave.<br />
Cand primiti o conexiune de la un client, biblioteca C e capabila sa<br />
va spune IP-ul masinii client, pentru ca numarul IP este continut in toate<br />
pachetele care traverseaza reteaua. Acum puteti invoca o functie<br />
numita gethostbyaddr care cauta numele unui host avand data adresa IP.<br />
Gethostbyaddr va interoga un server DNS, care va traversa reteaua<br />
de servere DNS cautand masina respectiva. Sa presupunem ca conexiunea client<br />
este de la ws-177200.land-5.com. Numarul IP pe care biblioteca C il<br />
livreaza catre serverul IRC este 206.6.177.200. Pentru a afla numele<br />
acelei masini trebuie sa gasim 200.177.6.206.in-addr.arpa. Serverul DNS va<br />
trebui intai sa gaseasca serverele arpa. , apoi in-addr.arpa. ,<br />
urmand calea inversa spre 206, apoi 6, in final gasind serverul pentru<br />
177.6.206.in-addr.arpa la LAND-5. De unde va lua raspunsul final, cum ca<br />
pentru 200.177.6.206.in-addr.arpa avem o inregistrare &#8220;PTR<br />
ws-177200.land-5.com&#8221; insemnand ca numele care insoteste 206.6.177.200<br />
este ws-177200.land-5.com.</p>
<p>Inapoi la exemplul cu serverele IRC. Serverul IRC accepta doar conexiuni<br />
din tari scandinave, de exemplu:  *.no, *.se, *.dk, numele<br />
ws-177200.land-5.com e clar ca nu indeplineste aceasta conditie si<br />
serverul ii va respinge conexiunea. Daca nu a fost<br />
mapare inversa a lui 206.2.177.200 prin zona in-addr.arpa serverul nu va<br />
fi capabil sa gaseasca numele deloc si nici sa compare 206.2.177.200<br />
cu *.no, *.se and *.dk, asa ca acestea nu se vor potrivi nicicum.</p>
<p>Unii va vor spune ca maparea inversa nu este importanta pentru servere sau<br />
nu este importanta deloc. Nu este asa: multe servere FTP, news, IRC<br />
si unele servere WWW (web) nu vor accepta conexiuni de la masini ale caror<br />
nume nu le pot afla. Deci maparea inversa este de fapt obligatorie<br />
si necesara.</p>
<p>8. Intretinere.</p>
<p>Tineti-l in viata.</p>
<p>Exista o sarcina de intretinere cand aveti de-a face cu named-uri, alta<br />
decat a le mentine ruland. Aceea de a mentine fisierul<br />
root.hints actualizat, la zi. Cea mai usoara cale este cu &#8220;dig&#8221;. Prima<br />
data rulati &#8220;dig&#8221; fara nici un argument, si veti obtine datele din<br />
&#8220;root.hints&#8221; conform propriului nameserver. Apoi interogati unul<br />
dintre rootservere listate cu &#8220;dig @rootserver&#8221;. Veti observa ca<br />
rezultatul seamana foarte bine cu un<br />
fisier &#8220;root.hints&#8221;. Salvati-l intr-un fisier (dig<br />
@e.root-servers.net . ns &gt;root.hints.new) si inlocuiti vechiul<br />
root.hints cu el.</p>
<p>Nu uitati sa restartati named dupa inlocuirea fisierului cache.</p>
<p>Al Longyear mi-a trimis acest script care rulat, poate actualiza automat<br />
fisierul root.hints. Instalati-l intr-o intrare crontab pentru a<br />
fi rulat odata pe luna si puteti uita de el. Scriptul presupune ca<br />
va merge serviciul de mail si ca este definita adresa de hostmaster.<br />
Puteti sa il modificati pentru a se potrivi configuratiei dvs.</p>
<p>______________________________________________________________________<br />
#!/bin/sh<br />
#<br />
# Update the nameserver cache information file once per month.<br />
# This is run automatically by a cron entry.<br />
#<br />
# Original by Al Longyear<br />
# Updated for BIND 8 by Nicolai Langfeldt<br />
# Miscelanious error-conditions reported by David A. Ranch<br />
# Ping test suggested by Martin Foster<br />
# named up-test suggested by Erik Bryer.<br />
#<br />
(<br />
echo &#8220;To: hostmaster &lt;hostmaster&gt;&#8221;<br />
echo &#8220;From: system &lt;root&gt;&#8221;</p>
<p># Is named up? Check the status of named.<br />
case &#8216;ndc status 2&gt;&amp;1 in<br />
*&#8217;cannot connect to command channel&#8217;*)<br />
echo &#8220;named is DOWN. root.hints was NOT updated&#8221;<br />
echo<br />
exit 0<br />
;;<br />
esac<br />
PATH=/sbin:/usr/sbin:/bin:/usr/bin:<br />
export PATH<br />
# NOTE: /var/named must be writable only by trusted users or this script<br />
# will cause root compromise/denial of service opportunities.<br />
cd /var/named 2&gt;/dev/null || {<br />
echo &#8220;Subject: Cannot cd to /var/named, error $?&#8221;<br />
echo<br />
echo &#8220;The subject says it all&#8221;<br />
exit 1<br />
}</p>
<p># Are we online?  Ping a server at your ISP<br />
case &#8216;ping -qnc 1 some.machine.net 2&gt;&amp;1&#8242; in<br />
*&#8217;100% packet loss&#8217;*)<br />
echo &#8220;Subject: root.hints NOT updated.  The network is DOWN.&#8221;<br />
echo<br />
echo &#8220;The subject says it all&#8221;<br />
exit 1<br />
;;<br />
esac</p>
<p>dig @e.root-servers.net . ns &gt;root.hints.new 2&gt; errors</p>
<p>case &#8216;cat root.hints.new&#8217; in<br />
*NOERROR*)<br />
# It worked<br />
:;;<br />
*)<br />
echo &#8220;Subject: The root.hints file update has FAILED.&#8221;<br />
echo<br />
echo &#8220;The root.hints update has failed&#8221;<br />
echo &#8220;This is the dig output reported:&#8221;<br />
echo<br />
cat root.hints.new errors<br />
exit 1<br />
;;<br />
esac</p>
<p>echo &#8220;Subject: The root.hints file has been updated&#8221;<br />
echo<br />
echo &#8220;The root.hints file has been updated to contain the following<br />
information:&#8221;<br />
echo<br />
cat root.hints.new</p>
<p>chown root.root root.hints.new<br />
chmod 444 root.hints.new<br />
rm -f root.hints.old errors<br />
mv root.hints root.hints.old<br />
mv root.hints.new root.hints<br />
ndc restart<br />
echo<br />
echo &#8220;The nameserver has been restarted to ensure that the update is complete&#8221;<br />
echo &#8220;The previous root.hints file is now called<br />
/var/named/root.hints.old.&#8221;<br />
) 2&gt;&amp;1 | /usr/lib/sendmail -t<br />
exit 0<br />
______________________________________________________________________</p>
<p>Unii dintre dvs v-ati prins ca fisierul root.hints este disponibil<br />
prin ftp din Internic. Va rog nu folositi ftp<br />
pentru a actualiza root.hints, metoda de mai sus este mult mai prietenoasa<br />
pentru net si Internic.</p>
<p>9. Conversia de la versiunea 4 la versiunea 8.</p>
<p>Aceasta a fost la inceput o sectiune despre folosirea lui BIND 8 scrisa de<br />
David E.  Smith (dave@bureau42.ml.org). Am editat cate ceva pentru a<br />
se potrivi noului nume al sectiunii.</p>
<p>Nu sunt prea multe de spus. Cu exceptia inlocuirii fisierului named.boot<br />
cu named.conf, restul este identic. Iar BIND 8 vine cu un script PERL care<br />
converteste totul de la vechiul la noul format. Exemplu de fisier<br />
named.boot (vechiul stil) pentru caching nameserver:</p>
<p>______________________________________________________________________<br />
directory /var/named<br />
cache   .                                     root.hints<br />
primary 0.0.127.IN-ADDR.ARPA                    127.0.0.zone<br />
primary localhost                               localhost.zone<br />
______________________________________________________________________</p>
<p>In linia de comanda, in directorul bind8/src/bin/named (aceasta presupune<br />
ca aveti sursele distributiei). Daca aveti pachetul binar, scriptul e prin<br />
preajma&#8230; Dati comanda :</p>
<p>______________________________________________________________________<br />
./named-bootconf.pl &lt; named.boot &gt; named.conf<br />
______________________________________________________________________</p>
<p>care va crea named.conf:</p>
<p>______________________________________________________________________<br />
// generated by named-bootconf.pl</p>
<p>options {<br />
directory &#8220;/var/named&#8221;;<br />
};</p>
<p>zone &#8220;.&#8221; {<br />
type hint;<br />
file &#8220;root.hints&#8221;;<br />
};</p>
<p>zone &#8220;0.0.127.IN-ADDR.ARPA&#8221; {<br />
type master;<br />
file &#8220;127.0.0.zone&#8221;;<br />
};</p>
<p>zone &#8220;localhost&#8221; {<br />
type master;<br />
file &#8220;localhost.zone&#8221;;<br />
};<br />
______________________________________________________________________</p>
<p>Functioneaza pentru orice intra intr-un fisier named.boot, desi nu<br />
adauga toate imbunatatirile si optiunile de configuratie pe care<br />
le permite BIND8. Aici este un named.conf care face aceleasi<br />
lucruri, dar ceva mai eficient:</p>
<p>______________________________________________________________________<br />
// This is a configuration file for named (from BIND 8.1 or later).<br />
// It would normally be installed as /etc/named.conf.<br />
// The only change made from the tock&#8217; named.conf (aside from this<br />
// comment <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  is that the directory line was uncommented, since I<br />
// already had the zone files in /var/named.</p>
<p>options {<br />
directory &#8220;/var/named&#8221;;<br />
datasize 20M;<br />
};</p>
<p>zone &#8220;localhost&#8221; IN {<br />
type master;<br />
file &#8220;localhost.zone&#8221;;<br />
};</p>
<p>zone &#8220;0.0.127.in-addr.arpa&#8221; IN {<br />
type master;<br />
file &#8220;127.0.0.zone&#8221;;<br />
};</p>
<p>zone &#8220;.&#8221; IN {<br />
type hint;<br />
file &#8220;root.hints&#8221;;<br />
};<br />
______________________________________________________________________</p>
<p>In directorul bind8/src/bin/named/test din distributia BIND 8<br />
gasiti aceasta si copii ale fisierelor zona, pe care multi utilizatori<br />
le pot instala si folosi ca atare. Formatele pentru fisierele root.hints<br />
si fisierele zone sunt identice, ca si comenzile  pentru actualizarea lor.</p>
<p>10 Intrebari si raspunsuri.</p>
<p>Va rog sa cititi aceasta sectiune inainte de a imi trimite e-mail.</p>
<p>1. named-ul meu &#8220;vrea&#8221; un fisier named.boot</p>
<p>Cititi un HOWTO gresit.Vedeti vechea versiune a acestui HOWTO, care<br />
studiaza BIND4 la &lt;http://www.math.uio.no/~janl/DNS/&gt;</p>
<p>2. Cum folosesc DNS-ul  din interiorul unui firewall ?</p>
<p>Indicatie: forward-only . Sau puteti folosi</p>
<p>___________________________________________________________________<br />
query-source port 53;</p>
<p>___________________________________________________________________</p>
<p>in sectiunea &#8220;options&#8221; a lui named.conf.</p>
<p>3. Cum fac DNS-ul sa se &#8220;plimbe&#8221; prin adresele disponibile, pentru<br />
un serviciu, sa zicem www.busy.site, pentru a obtine un efect de<br />
egalizare a incarcarii (loadbalancing), sau similar?</p>
<p>Faceti cateva inregistrari &#8220;A&#8221; pentru www.busy,site  si folositi BIND<br />
4.9.3 sau mai nou. Atunci, BIND va functiona ca perpetuum-mobile in<br />
cautare de raspunsuri. Nu va functiona cu versiuni mai vechi de BIND.</p>
<p>4. Vreau sa configurez un DNS intr-un Intranet (inchis). Cum fac?</p>
<p>Lasati fisierul root.hints si ocupati-va numai de fisierele zone.<br />
Asta inseamna de asemeni ca nu trebuie sa actualizati fiserul .hint<br />
tot timpul</p>
<p>5. Cum configurez un server secundar (slave) ?</p>
<p>Daca serverul primar/master are adresa 127.0.0.1, puneti o linie ca<br />
aceasta in named.conf-ul de la serverul secundar:</p>
<p>___________________________________________________________________<br />
zone &#8220;linux.bogus&#8221; {<br />
type slave;<br />
file &#8220;sz/linux.bogus&#8221;;<br />
masters { 127.0.0.1; };<br />
};</p>
<p>___________________________________________________________________</p>
<p>Puteti lista si alte servere master de unde pot fi copiate zonele,<br />
separate de punct si virgula &#8220;;&#8221;</p>
<p>6. Vreau sa rulez BIND cand sunt deconectat de la Internet.</p>
<p>Sunt patru chestiuni privind aceasta problema:</p>
<p>- Specific lui BIND 8, Adam L Rice mi-a trimis acest e-mail despre cum<br />
sa rulezi DNS fara dureri de cap pe o masina dialup:</p>
<p>Am descoperit in noile versiuni ca acest fisier [&lt;em/shuffeling files,<br />
-ed/] nu mai este necesar. Exista o directiva &#8220;forward&#8221; pe linga<br />
&#8220;forwarderi&#8221;, directiva care controleaza cum aceastia sunt<br />
utilizati. Setarea implicita este &#8220;forward first&#8221;, care interogheaza intai<br />
fiecare dintre &#8220;forwarderi&#8221;, apoi incearca abordarea normala<br />
daca prima varianta esueaza. Aceasta face ca functia gethostbyname() sa se<br />
comporte familiar, luand un timp foarte lung cand legatura<br />
nu functioneaza. Dar daca &#8220;forward only&#8221; este setat, BIND renunta cand<br />
nu primeste un raspuns de la forwarderi iar gethostbyname() raspunde<br />
imediat.</p>
<p>In cazul meu, am adaugat liniile:</p>
<p>forward only;<br />
forwarders { 193.133.58.5; };</p>
<p>in sectiunea options { } din fisierul meu named.conf. Functioneaza<br />
foarte frumos, singurul dezavantaj este ca reduce o incredibil<br />
de sofisticata masinarie software care este DNS la statutul de cache<br />
chior. As fi preferat sa pot rula un cache simplu in loc, dar nu exita asa<br />
ceva care sa inlocuiasca DNS pentru Linux.</p>
<p>- Am receptionat acest mail de la Ian Clark &lt;ic@deakin.edu.au&gt; unde<br />
el explica modul in care face aceasta:</p>
<p>Rulez named pe masina mea &#8220;masquerade&#8221; (cu mascaradare). Am doua fisiere<br />
root.hints, unul numita root.hints.real care contine numele reale ale<br />
root-serverelor si celalalt numit root.hints.fake care contine&#8230;</p>
<p>&#8212;-<br />
; root.hints.fake<br />
; this file contains no information<br />
&#8212;-</p>
<p>cand inchid conexiunea (dialup), copii root.hints.fake peste root.hints si<br />
restartez named.<br />
Cand pornesc conexiunea, copii root.hints.real peste root.hints<br />
si restartez named. Asta o fac din ip-up si ip-down. Prima data cand fac o<br />
interogare offline pe un nume de domeniu, named nu are detalii de oferit<br />
si pune o intrare ca aceasta in mesaje:</p>
<p>Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN</p>
<p>care nu ma deranjeaza.</p>
<p>Deci functioneaza cu siguranta. Pot folosi nameserverul pentru<br />
masinile locale cand sunt deconectat de la Internet fara intarzieri de<br />
timeout pentru interogarile domeniilor externe.</p>
<p>Peter Denison crede ca Ian nu a ajuns prea departe. El scrie:</p>
<p>Cand sunt conectat) alimenteaza toate intrarile din cache (si reteaua locala)<br />
imediat, pentru intrarile reinregistrate in cache,<br />
forward catre nameserver-ul ISP-ului</p>
<p>Cand nu sunt conectat) alimenteaza interogarile retelei locale<br />
imediat, abandoneaza orice alte interogari IMEDIAT</p>
<p>Combinatia dintre schimbarea fisierului root cache si interogarile forward<br />
nu functioneaza.</p>
<p>Deci am configurat (cu unele discutii pe Linux User Group-ul local) doua<br />
named-uri, dupa cum urmeaza:</p>
<p>named-online:   forwards to ISPs nameserver<br />
master for localnet zone<br />
master for localnet reverse zone (1.168.192.in-addr.arpa)<br />
master for 0.0.127.in-addr.arpa<br />
listens on port 60053</p>
<p>named-offline:  no forwarding<br />
&#8220;fake&#8221; root cache file<br />
slave for 3 local zones (master is 127.0.0.1:60053)<br />
listens on port 61053</p>
<p>Si combinand aceasta cu port-forwarding-ul, pentru a trimite portul<br />
53 catre portul 61053 cand suntem off-line si catre portul 60053 cand<br />
suntem online (folosesc noul pachet netfilter sub 2.3.18, dar si vechiul<br />
mecanism ipchains functioneaza).</p>
<p>Observati ca aceasta nu va merge chiar &#8220;din tzeava&#8221; de vreme ce exista<br />
un mic bug in BIND 8.2 pe care l-am semnalat dezvoltatorilor,<br />
care impiedica un server slave sa aiba un master pe aceiasi adresa iP<br />
(chiar si pe un port diferit).</p>
<p>- Am primit informatii despre cum BIND interactioneaza cu NFS si<br />
portmapper-ul pe o masina mai mult off-line, de la Karl-Max Wanger :</p>
<p>Obisnuiesc sa rulez propriul meu named pe toate masinile care se<br />
conecteaza ocazional la Internet prin modem. Nameserverul singur<br />
actioneaza ca un cache, nu are nici o arie de autoritate, si<br />
interogheaza serverele din fisierul root.cache. Ca de obicei in Slackware,<br />
este pornit inainte de nfsd si mountd.</p>
<p>Cu una dintre masinile mele (un notebook Libretto 30) am avut probleme<br />
ca adesea nu puteam sa il montez dintr-un sistem conectat la reteaua mea<br />
LAN. Aceleasi probleme le aveam si din punct de vedere<br />
al legaturilor PPP sau PLIP.</p>
<p>Dupa ceva timp de cercetari si experimente am constatat ca named s-a<br />
incurcat in inregistrarea serviciilor initiate de nfsd si mountd precum si<br />
cu portmapper-ul. Pornind named-ul dupa nfsd si mountd, am scapat complet<br />
de probleme.</p>
<p>Cum nu sunt dezavantaje de asteptat in urma unei asemenea modificari<br />
in ordinea de boot, recomand tuturor sa treaca la aceasta,<br />
pentru a preintampina necazurile.</p>
<p>- In final, exista ceva informatii despre aceasta la Ask MR. DNS la<br />
&lt;http://www.acmebw.com/askmrdns/#linux-dialup&gt;.  Este despre BIND<br />
4, asa ca trebuie sa faceti adaptari la BIND 8.</p>
<p>7. Unde stocheaza caching-nameserver-ul cache-ul si cum pot controla<br />
dimensiunea acestuia?</p>
<p>Cache-ul este stocat complet in memorie, nu este scris pe disc in nici<br />
un moment. De fiecare data cand dati kill lui named, cache-ul este<br />
pierdut. Cache-ul nu este controlabil nicicum, named il controleaza dupa<br />
cateva reguli simple, si cam asta e tot. Nu puteti controla cache-ul sau<br />
dimensiunea acestuia nicicum si pentru nici un motiv. Daca<br />
doriti neaparat, puteti incerca sa hackuiti  named , dar nu este recomandat.</p>
<p>8. Named-ul salveaza cache-ul intre restart-uri? Pot sa il fac sa salveze?</p>
<p>NU, named nu salveaza cache-ul cand dispare. Aceasta inseamna ca<br />
cache-ul trebuie reconstruit de la zero de fiecare data cand named<br />
este repornit. Nu exista nici o metoda de a-l face pe named sa salveze<br />
cache-ul intr-un fisier.</p>
<p>9. Cum imi procur un domeniu? Vreau sa imi configurez propriul<br />
domeniu, denumit de exemplu linux-rules.net. Cum pot sa obtin domeniul<br />
pe care il doresc alocat mie?</p>
<p>Va rog sa va contactati provider-ul. Ei va vor putea ajuta cu<br />
aceasta. Aveti in vedere ca in cele mai multe parti ale lumii,<br />
aceast lucru costa (obtinerea unui nume de domeniu).</p>
<p>10. Cum securizez serverul meu DNS? Cum configurez un DNS split? (separat)</p>
<p>Ambele sunt chestiuni avansate si sunt analizate in<br />
&lt;http://www.etherboy.com/dns/chrootdns.html&gt;. de aceea nu le voi<br />
expune aici.</p>
<p>11. Cum sa devii un DNS de talie mare.</p>
<p>Documentatii si utilitare.</p>
<p>Exista documentatie &#8220;reala&#8221;. Online si tiparita. Citirea acesteia este<br />
necesara pentru a face pasul de la un administrator DNS de mica anvergura<br />
la unul de talie mare. Am tiparit Ghidul Concis al DNS si BIND<br />
(Nicolai Langfeldt) publicata de QUE (ISDN  0-7897-2273-9). Cartea seamana<br />
cu acest HOWTO. Doar mai multe detalii si mai multe despre toate aspectele.<br />
Dar cartea standard este &#8220;DNS and BIND  by C. Liu and P. Albitz<br />
from O&#8217;Reilly &amp; Associates (ISBN   0-937175-82-X). Este excelenta.<br />
Faceti rost de editia a 3-a, care acopera BIND 8 ca si BIND 4. Exista de<br />
asemeni o sectiune DNS si in TCP/IP Network Administration Guide. by Craig<br />
Hunt from O&#8217;Reilly (ISBN 0-937175-82-X).  O alta carte buna si pentru DNS<br />
si pentru orice este Zen and the Art of Motorcycle Maintenance (Zen si<br />
arta intretinerii motocicletei <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   de Robert M. Pirsig <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ISBN 0688052304\<br />
si altii.</p>
<p>Online veti gasi multe chestii la: &lt;http://www.dns.net/dnsrd/&gt; (DNS<br />
Resources Directory),  &lt;http://www.isc.org/bind.html&gt;; FAQ si manual<br />
de referinta  (BOG; BIND Operations Guide) ca si documente si definitii de<br />
protocol si &#8220;hack-uri&#8221; DNS (acestea &#8211; ma rog, nu toate- ca si RFC-urile<br />
sunt continute in distributia BIND). N-am citit chiar toate aceastea,<br />
dar nici mare administrator DNS nu sunt.  Arnt Gulbrandsen pe de<br />
alta parte a citit BOG (BIND Operation Guide) si este extaziat de acesta <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Newsgrupul   &lt;news:comp.protocols.tcp-ip.domains&gt;  este despre DNS.<br />
Pe langa asta, exista un numar de RFC-uri despre DNS, cele mai<br />
importante sunt probabil cele listate aici. Cele care au BCP (Best Current<br />
Practice) sunt cele mai recomandate.</p>
<p>RFC 2671<br />
P. Vixie, Extension Mechanisms for DNS (EDNS0) August 1999.</p>
<p>RFC 2317<br />
, BCP 20, H. Eidnes et. al. Classless IN-ADDR.ARPA delegation,<br />
March 1998. This is about CIDR, or classless subnet reverse<br />
lookups.</p>
<p>RFC 2308<br />
, M. Andrews, Negative Caching of DNS Queries, March 1998.<br />
About negative caching and the $TTL zone file directive.</p>
<p>RFC 2219<br />
, BCP 17, M. Hamilton and R. Wright, Use of DNS Aliases for<br />
Network Services, October 1997.  About CNAME usage.</p>
<p>RFC 2182<br />
, BCP 16, R. Elz et. al., Selection and Operation of Secondary<br />
DNS Servers, July 1997.</p>
<p>RFC 2052<br />
A. Gulbrandsen, P. Vixie, A DNS RR for specifying the location<br />
of services (DNS SRV), October 1996</p>
<p>RFC 1918<br />
Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear,<br />
Address Allocation for Private Internets, 02/29/1996.</p>
<p>RFC 1912<br />
D. Barr, Common DNS Operational and Configuration Errors,<br />
02/28/1996.</p>
<p>RFC 1912 Errors<br />
B. Barr Errors in RFC 1912, this is available at<br />
&lt;http://www.cis.ohio-state.edu/~barr/rfc1912-errors.html&gt;</p>
<p>RFC 1713<br />
A. Romao, Tools for DNS debugging, 11/03/1994.</p>
<p>RFC 1712<br />
C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, DNS Encoding of<br />
Geographical Location, 11/01/1994.</p>
<p>RFC 1183<br />
R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, New DNS RR<br />
Definitions, 10/08/1990.</p>
<p>RFC 1035<br />
P. Mockapetris, Domain names &#8211; implementation and specification,<br />
11/01/1987.</p>
<p>RFC 1034<br />
P. Mockapetris, Domain names &#8211; concepts and facilities,<br />
11/01/1987.</p>
<p>RFC 1033<br />
M. Lottor, Domain administrators operations guide, 11/01/1987.</p>
<p>RFC 1032<br />
M. Stahl, Domain administrators guide, 11/01/1987.</p>
<p>RFC 974<br />
C. Partridge, Mail routing and the domain system, 01/01/1986.</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=162</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web-site pentru afacerea ta pe Internet</title>
		<link>http://resurse-educationale.uv.ro/?p=26</link>
		<comments>http://resurse-educationale.uv.ro/?p=26#comments</comments>
		<pubDate>Mon, 31 Jan 2011 07:31:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programare]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=26</guid>
		<description><![CDATA[Epoca de pionierat a Internetului s-a terminat. In prezent asistam la inceputul unei revolutii in modul de a face afaceri la scara globala, 24 de ore din 24. Afacerile online ( e-business ), comertul electronic, magazinele electronice, etc. au devenit &#8230; <a href="http://resurse-educationale.uv.ro/?p=26">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h3>Epoca de pionierat a Internetului s-a terminat. In prezent asistam la inceputul unei revolutii in modul de a face afaceri la scara globala, 24 de ore din 24. Afacerile online ( e-business ), comertul electronic, magazinele electronice, etc. au devenit deja termeni consacrati in lumea financiara si bancara. Dupa un raport al Forrester Research vanzarile online au crescut de la 300 milioane USD in 1995, la peste 6 miliarde USD in 2000 si se asteapta sa depaseasca cifra de 90 miliarde USD in 2005. In ultimul deceniu, Internetul a evoluat intr-o unealta formidabila avand un impact major in toate aspectele vietii. La fiecare jumatate de an apar schimbari asa de importante incat este imposibil de prevazut unde se va ajunge in urmatorii 10 ani. Conform unor statistici, utilizatorul tipic de Internet este american (84%), alb (87%), vorbitor de limba engleza (93%), in varsta de 35 de ani, educat si avand un salariu bun. Astazi, din ce in ce mai multe firme si chiar persoane particulare au o pagina web. Pe Internet, se gasesc la dispozitia celor interesati toate mijloacele necesare pentru crearea de site-uri web. Se pot realiza atit site-uri simple, avand cateva pagini, cit si site-uri deosebit de complexe, de sute de pagini si care inglobeaza ultimele tehnologii in domeniul: Flash, Shockwave, Java, Javascript, etc. La momentul actual exista din ce in ce mai multe firme care se ocupa cu webdesign, dar preturile cerute pentru realizarea unei pagini web sunt destul de mari. Web-ul astazi, ca si cel de ieri si cel de maine se afla intr-o continua transformare si metamorfoza care pe cei mai multi fie ii lasa rece fie ii ameteste si ii descurajeaza in incercarea de a intelege mai mult. Scopul lucrarii date este de a-l pune in actualitate pe omul “studioso” cu posibilitatile oferite de internet la accesarea informatie si utilizarea ulterioara a acesteia in scopuri proprii. De asemenia, imi propun ca prin lucrarea data persoana fizica sa obtina o idee si informatie mai larga privind posibilitatile proprii de promovare personala si a unei afaceri prin intermediul internetului utilizind web-siturile. In cadrul primului capitol voi demonstra, pe cit e posibil, ca E-afacerile ocupa un segment important in piata afacerilor globale. In primul capitol voi prezenta prin intermediul unor exemple eficacitatea utilizarii internetului prin demonstrarea posibilitatilor largite ale E-learningului, care dupa cum se pare a avut un impact neastptat de mare asupra societatii contemporane. De asemeni voi aduce exemple ale utilizarii Internetului in realizarea unei afacere precum si utilizarea acestuia drept sursa principala de realizare ale bunurilor unui agent economic. Modalitatea de afisare a informatiilor pe internet are loc in mare parte prin intermediul Web-Siturilor, astfel ca in cadrul capitolului doi ma voi opri in mod special asupra acestora. O atentie deosebita o voi acorda clasificarii acestora din diferite puncte de vedere. Ulterior in acest capitol voi atrage atentia asupra principiilor de administrare a afacerilor pe internet. Datorita faptului ca aceasta lucrare va fi concentrata asupra eficientei economice a sit-urilor web, voi analiza unele modele business de sit-uri, oprindu-ma in mod special la modelul publicitar, cel de sustinere a unor afaceri existente precum si modele de lansare a unor noi afaceri cu toate efectele pozitive ulterioare lansarii acestuia, desigur in cazul unei lansari de succes. De asemeni voi prezenta perspectivele generale ale acestor modele de afaceri precum si pe zone geografice concrete, aducind drept exemplu dezvoltzarea in ultimii ani. Dupa ce voi da o explicatie privind tipurile existente ale web-sit-urilor si posibilitatile de utilizare ale acestora, ulterior ma voi opri asupra crearii in sine a acestuia, iar mai amanuntit asupra etapelor de creare a site-ului web, dat fiind importanta cu care trebuie tratat acest proces la fiecare din etapele crearii lui. Am structurat aceest capitol in patru parti care reprezinta, dupa parerea mea, etape absolut obligatorii in realizarea unui site-web care sa atraga vizitatorii. In literatura de specialitate sau pe siturile care furnizeaza informatii despre webdesign probabil aceste etape, precum si pasii necesari pentru parcurgerea lor, vor fi denumite altfel. Din considerente proprii de machetare a lucrarii si pentru a fi pe cit posibil cit mai concisa eu am gasit aceste denumiri. Poate ele nu sunt cele mai sugestive, dar intelegerea si parcurgerea lor in totalitate sunt esentiale daca dorim sa obtinem o audienta maxima pentru site.</h3>
<p><strong> 1.Economia digitala si impactul ei asupra societatii</strong></p>
<h5>Utilizarea larga a tehnologiilor informatiei si comunicatiilor si progresul catre</h5>
<h5>Societatea Informationala asigura cresterea economica in conditii de protectie</h5>
<h5>sporita a mediului, accelerand reducerea consumului fizic in favoarea valorificarii</h5>
<h5>informatiei si a cunoasterii, deplasarea centrului de greutate de la investitii in</h5>
<h5>mijloacele fixe la investitii in capitalul uman. In acest mod,</h5>
<h5>Societatea Informationala integreaza si obiectivele dezvoltarii durabile,</h5>
<h5>bazata pe dreptate sociala si egalitatea sanselor, libertate, diversitate</h5>
<h5>culturala si dezvoltare inovativa, protectie ecologica, restructurarea industriei</h5>
<h5>si a mediului de afaceri.</h5>
<h5>Schimbarile majore din ultimii ani – cresterea exponentiala a comunicatiilor mobile</h5>
<h5>si a numarului utilizatorilor de Internet, contributia sectorului TIC (tehnologiile</h5>
<h5>informatiei si comunicatiilor) la cresterea economica si la crearea de locuri de munca,</h5>
<h5>restructurarea companiilor si a business-ului in general pentru a beneficia mai eficient</h5>
<h5>de noile tehnologii, dezvoltarea accelerata a comertului electronic – sustin tranzitia de</h5>
<h5>la era industriala la cea post &#8211; industriala.</h5>
<h5>Noile tehnologii digitale fac accesul, stocarea si transmiterea informatiei din ce in</h5>
<h5>ce mai facile si mai accesibile. Dispunand de informatia digitala, aceasta poate fi</h5>
<h5>transformata in noi valori economice si sociale, creand imense oportunitati pentru</h5>
<h5>dezvoltarea de noi produse si servicii. Informatia devine resursa-cheie pentru economia digitala.</h5>
<h5>Notiunea de “noua economie” (economia digitala) se refera in special la transformarile</h5>
<h5>actuale ale activitatilor economice ca rezultat al utilizarii tehnologiilor digitale,</h5>
<h5>care asigura accesul, prelucrarea si stocarea informatiei intr-o maniera mai ieftina</h5>
<h5>si mai facila. Noua economie este caracterizata de intensificarea inglobarii cunoasterii</h5>
<h5>in noile produse si servicii, cresterea importantei invatarii si a inovarii, a</h5>
<h5>globalizarii si a dezvoltarii durabile. Volumul enorm al informatiilor schimba modul</h5>
<h5>de functionare a pietelor, facand posibile restructurarea intreprinderilor si aparitia</h5>
<h5>de noi oportunitati pentru crearea de valoare prin exploatarea informatiilor disponibile.</h5>
<h5>In prezent, exista ample dezbateri in mass-media internationala si in mediile politice</h5>
<h5>asupra intrebarii daca aceste modificari sunt suficient de radicale pentru a merita</h5>
<h5>eticheta de “noua economie”. La originea acestor dezbateri stau performantele</h5>
<h5>exceptionale ale economiei americane: 8 ani de crestere continua, cresterea anuala</h5>
<h5>de peste 4% in ultimii ani, inflatia controlata sub 2%, somajul sub 5%.</h5>
<h5>Construirea noului model de societate ridica probleme socio-politice majore &#8211; atat</h5>
<h5>la scara nationala cat si internationala &#8211; de atenuare a fenomenului de &#8220;digital</h5>
<h5>divide&#8221; (excludere de la beneficiile noilor tehnologii a unor categorii sociale</h5>
<h5>si a unor regiuni/zone geografice) si de coeziune sociala, de conservare si promovare</h5>
<h5>a culturii specifice fiecarei natiuni si comunitati locale, de protectie a cetateanului</h5>
<h5>si consumatorului. Solutionarea acestor probleme nu se poate realiza decat printr-un</h5>
<h5>dialog larg intre autoritatile guvernamentale, reprezentantii mediului de afaceri, ai</h5>
<h5>mediului academic si societatea civila.</h5>
<p><a rel="attachment wp-att-20" href="http://resurse-educationale.uv.ro/?attachment_id=20">Download Web site pentru afacere</a></p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=26</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
