pyth0n3 Posted May 22, 2010 Report Posted May 22, 2010 (edited) iptables tables traverseAici voi descrie putin Iptables si cateva caracteristici importanteVa trebui intai sa intelegem ce este Iptables si la ce folosesteVom da prima definitie pt NetfilterNetfilter este un component din kernel intrun sistem Linux care permite manipularea pachetelor care atraverseaza un computerDeci asadar putem spune ca este un firewall pt ca ne permite sa efectuam diverse tipuri de setari care la randul lor pot fi foarte complexeContinui sa precisez ca se pot efectua diverse filtrari pt aceste pachete care atraverseaza coputerul de tipul stateful sau diverse altre configurari de tipul NATDeci am inteles ce este Netfilter , vom merge in continuare pt a intelege ce este IptablesVom da urmatoarea definitie pt IptablesIptables este un tool (deci un program) cu care se poate configura NetfilterIptables permite sa facem anumite reguli pt pachetele care atraverseaza NetfilterAsadar daca ne permite sa construim reguli pt filtre trebuie sa stim la ce layer (livel) lucreaza ,ma refer la ISO OSIAici putem da urmatoare definitieIptables lucreaza la urmatoarele layer3 Network acest layer se concentreaza la adresa sursei si adresa destinatarului4 Transport acest layer se concentreaza asupra protocoalelor TCP/UDPDeci TCP/UDP folosesc un range de 16 bit pt numere porturilor care poate fi de la 0 la 65535Iar sdresele ip se baseaza pe un numar de 32 bit2 DatalinkDeci iptables poate sa fie folosit pt protocoalele ICMP si MACAici este un tabel cu diverse Layer pt a intelege mai bine structura OSIAcum vom vedea putin structura pt IptablesVom da o alta simpla definitie :Iptables este compus din tabele care contin chains (lanturi) care contin reguliExista 3 tabele de default care nu pot fi sterse care cum am mai zis contin la randul lor chains care pot contine reguli pe care le scriem noiVoi continua cu descrierea tabelelor 1 mangle care se ocupa cu alterarea pachetelor se ocupa cu TTL(time to live ) pt diverse protocoluri TCP/IP2 NAT care sta pt Network Adress Translation permite sa schimbam anumite adrese ip in alte adrese ip de exemplu intre router si pc sunt doua adrese diverse , NAT ne permite sa putem efectua o conversatie intre ele3 filter ne permite sa filtrem pachetele care trec prin computerCum am mai zis la randul lor aceste tabele contin anumite chains care contin reguliVoi face o lista cu toate care sunt de defaultDeci incepem cu primul tabel care va contine urmatoarele chains(lanturi) 1 mangle are ca chains : PREROUTING , INPUT,FORWARD,OUTPUT,POSTROUTING2 NAT are ca chains : PREROUTING,POSTROUTING,OUTPUT3 filter are ca chains : INPUT,FORWARD,OUTPUTPt a vedea aceste tabele impreuna cu chains pe care le contin se poate da urmatorul comandiptables -L -t nume_tabel-L sta pt list-t sta pentru a specifica un tabelAici mai vreau sa spun ca la randul nostru putem adauga cate chains vremCunoscand aceste tabele si aceste chains va veti intreba ce putem face?Putem defini un ACL (Access Control List ) , este o simpla lista care va da acces la computerul sau ma rog serverul nostru in modul in care vrem noi ,depinde cum o vom configuraAici voi continua sa va spun ca orice fel de router de tipul CISCO sau altul functioneaza in acest fel , deci nu valoreaza nimic daca va cumparati un firewall care costa o gramada de bani si nu il configurati cum trebuieVom explica the syntax of ACL cum vin scrise si definite regulile noaste de acum inainteVa trebui sa folosim comenzile pt iptables pt a scrie comenziEle se structureaza in felul urmator:1 va trebui specificat numele unui chain si ce vrem sa facem(adaugam ,punem )2 va trebui specificat numele tabelului (nat,filter,mangle ,sau oricare altul pe care l-am facut noi personal)3 trebuie sa folosim anumite functii a unui layer spre exemplu 3 (adresa sursei, adresa destinatarului ) pot fi specificate cu urmatoarele abreviatii-s , -d4 treabuie sa specificam ce fel de protocol vrem sa filtram (tcp/udp )nu e neaparat sa facem asta , de default regula va fi valabila pt toate protocoalelese vor folosi comenzile -p ,--sport, --dport (port,source port, destination port )5 va trebui sa adaugam un jump / target ,vom specifica aici ce sa faca cand primeste un pachet spre exemplu DROP, DENNY,ACCEPT,REJECT,LOGse va folosi prescurtat -jAici vom scrie prima noastra regulaIn exemplul urmator vom bloca adresa 89.45.169.55 in asa fel incat nu va putea comunica cu computerul nostruiptables -A INPUT -s 89.45.169.55 -j DROP-A append care va adauga la un chain care se chiama INPUT aceasta regula-s source sursa , adresa de la care vin pachetele-j e un fel de jump care spune ce trebuie facut cu pachetele , in cazul nostru DROP le va arunca , fara sa le sase sa treacaTrebuie sa adaug ca de default vine folosita tabelul filter , bineinteles poate fi folosit oricare altul folosind optiunea -t si nume_tabelPt a vedea aceasta regula vom da urmatorul comand iptables -LDupa ce vom face reboot aceasta regula nu va mai fi de aceea este bine sa le salvam intrun file si sa le incarcam cand vrem noi ,acum vom vedea cateva aspectePt a sterge toate regulile pe care le-am facut vom da urmatorul comandiptables -F-F inseamna flush all the rules (de default )putem specifica daca vrem ce fel de regula sa stergem si din care chainPt a salva regulile pe care le-am scris si nu vrem sa le pierdem vom folosi urmatorul comand iptables-save > nume_file.txt Pt a incarca regulile dintrun file in iptables vom folosi urmatorul comandiptables-restore < nume_file.txtDupa cum am vazut tabelul filter contine 3 chains de default , noi pana acum am folosit doar unul INPUTAcest chain se refera la trefficul sau mai bine zis la pachetele care vin spre computerul nostru , pe care le putem lasa sa treaca , le putem bloca , putem lasa sa treaca doar ceea ce vrem noi ,si tot asaLa randul lui OUTPUT se va referi la pachetele care ies de la noi din calculator si la care putem face ve vrem noi , sa le blocam sau sa blocam doar anumite pachete care peaca spre anumite locuriDe default acesti chain au o anumita policy care este ACCEPT ALL inseamna ca toate pachetele pot intra si toate pot iesi ,deci asta ne permite sa navigam bine si fara probleme in internetUrmatorul comand ne va permite sa vizualizam mult mai clar regulile noastreiptables -L -n -v-L list- n ne va arata regulile numerotate in caz ca avem mai multe-v verbose vom putea vedea si trafficul pe care il avemPana acum avem o regula deci ne va arata numarul unuSa zicem ca vrem sa mai adaugam niste reguli care sa fie puse in lista la ce numar vrem noiCu uratorul comand vom introduce o regula ca sa fie ca numarul 1 (prima regula) ,vom folosi protocolul tcp si nu vom permite la nimeni sa se conecteze la telnet la servarul nostru in afara de o singura adresa ip pe care vrem noiiptables -I INPUT 1 -p tcp --dport 23 -s ! 192.168.1.2 -j DROP-I insert intrun chain INPUT din tabelul predefinit filter am specificat ce numar vrem pt regula 1-p protocolul in cazul nostru tcp--dport destination port in cazul nostru 23 telnet! no from este un operator ca in cazul nostru zice not from 192.168.1.2 deci toate pachetele care vor intra pe portul 23 la noi in server si care nu vor veni de la adresa care am specificat vor fi aruncate deoarece asa am specificat pt comandul jump-j DROPIn acest caz ne putem conecta la servarul nostru telnet doar de la adresa 192.168.2Cum sa stergem oregula sau sa o sostituim cu o alta regula-D delete , -R replacevom sterge regula numarul unuiptables -D INPUT 1Vom sostitui regula numarul unuiptables -R INPUT 1 -p tcp --dport 23 -s -j ACCEPTAsadar toti se pot conecta la servarul nostru telnet Source:Iptables basics Edited May 23, 2010 by pyth0n3 1 Quote
Xander Posted May 22, 2010 Report Posted May 22, 2010 (edited) Deci iptables poate sa fie folosit pt a filtra si pachete de tipul ICMP si MACdaca imi zici un pachet de tip mac imi tai ...P.S.: greu cu romana nu? sau mai bine zis gg Gugal Translate P.P.S: din cate stiu eu cu iptables poti sa faci matching si dupa continut(layer 7 parca) nu numai dupa sursa/destinatie/caracteristicile pachetelor Edited May 22, 2010 by Xander Quote
Torvalds Posted May 23, 2010 Report Posted May 23, 2010 (edited) Trebuia sa scrii mai bine despre folosirea iptables:- Crearea unui nou chain (-N)- Stergerea unui chain gol (-X)- Listarea regulilor dintr-un chain (-L)- Stergerea tuturor regulilor dintr-un chain (-F)- Readucerea la zero a contoarelor regulilor dintr-un chain (-Z)- Atasarea unei noi reguli (-A)- Inserarea unei noi reguli intr-o anume pozitie intr-un chain (-I)- Inlocuirea unei reguli intr-o anume pozitie a unui chain (-R)- Stergerea unei reguli (-D)Specificarea tintelor:- ACCEPT- REJECT- LOG- RETURNCat despre limba romana, nu am nimic cu tine. Scrii ca dracu', dar atata timp cat scrii lizibil si se intelege, nu e nicio problema. Dar pentru orice eventualitate, asa se scrie corect:"Mama, cat cacat poti sa mananci? Vreau sa fac un studiu pentru scoala."Nu asa:"Mama , cat cacat poti sa mananci ? Vreau sa fac un studiu pentru scoala . "P.S. Daca nu ai observat, ma refeream la semnele de punctuatie. Edited May 23, 2010 by Torvalds Quote
pyth0n3 Posted May 23, 2010 Author Report Posted May 23, 2010 OK . nu am folosit nici un Google translate , asta e problema , scris de mine , dar se vede ca cu romana o cam duc rau , asta nu e pt ca o vreau eu , dar credema ca in limba romana numai pe acest forum mai scriu , in rest nu prea vorbesc aceasta limba@xander pt icmp si MAC abia acum am observat greseala , iptables poate fi folosit si cu aceste protocoale Incat pt layer 7 probabil va trebui incarcat modulul l7-filter kernel version in kernel nu sunt sigur ca il are de default si nici nu cred ca acest filtru mai vine updated de ceva timp , oricum se poateIn rest nimeni nu se supara atata timp cat vine corectat pt niste greseli Quote