iptables tables traverse Aici voi descrie putin Iptables si cateva caracteristici importante Va trebui intai sa intelegem ce este Iptables si la ce foloseste Vom da prima definitie pt Netfilter Netfilter este un component din kernel intrun sistem Linux care permite manipularea pachetelor care atraverseaza un computer Deci asadar putem spune ca este un firewall pt ca ne permite sa efectuam diverse tipuri de setari care la randul lor pot fi foarte complexe Continui sa precisez ca se pot efectua diverse filtrari pt aceste pachete care atraverseaza coputerul de tipul stateful sau diverse altre configurari de tipul NAT Deci am inteles ce este Netfilter , vom merge in continuare pt a intelege ce este Iptables Vom da urmatoarea definitie pt Iptables Iptables este un tool (deci un program) cu care se poate configura Netfilter Iptables permite sa facem anumite reguli pt pachetele care atraverseaza Netfilter Asadar daca ne permite sa construim reguli pt filtre trebuie sa stim la ce layer (livel) lucreaza ,ma refer la ISO OSI Aici putem da urmatoare definitie Iptables lucreaza la urmatoarele layer 3 Network acest layer se concentreaza la adresa sursei si adresa destinatarului 4 Transport acest layer se concentreaza asupra protocoalelor TCP/UDP Deci TCP/UDP folosesc un range de 16 bit pt numere porturilor care poate fi de la 0 la 65535 Iar sdresele ip se baseaza pe un numar de 32 bit 2 Datalink Deci iptables poate sa fie folosit pt protocoalele ICMP si MAC Aici este un tabel cu diverse Layer pt a intelege mai bine structura OSI Acum vom vedea putin structura pt Iptables Vom da o alta simpla definitie : Iptables este compus din tabele care contin chains (lanturi) care contin reguli Exista 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 noi Voi continua cu descrierea tabelelor 1 mangle care se ocupa cu alterarea pachetelor se ocupa cu TTL(time to live ) pt diverse protocoluri TCP/IP 2 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 ele 3 filter ne permite sa filtrem pachetele care trec prin computer Cum am mai zis la randul lor aceste tabele contin anumite chains care contin reguli Voi face o lista cu toate care sunt de default Deci incepem cu primul tabel care va contine urmatoarele chains(lanturi) 1 mangle are ca chains : PREROUTING , INPUT,FORWARD,OUTPUT,POSTROUTING 2 NAT are ca chains : PREROUTING,POSTROUTING,OUTPUT 3 filter are ca chains : INPUT,FORWARD,OUTPUT Pt a vedea aceste tabele impreuna cu chains pe care le contin se poate da urmatorul comand iptables -L -t nume_tabel-L sta pt list -t sta pentru a specifica un tabel Aici mai vreau sa spun ca la randul nostru putem adauga cate chains vrem Cunoscand 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 configura Aici 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 trebuie Vom explica the syntax of ACL cum vin scrise si definite regulile noaste de acum inainte Va trebui sa folosim comenzile pt iptables pt a scrie comenzi Ele 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 , -d 4 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 protocoalele se 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,LOG se va folosi prescurtat -j Aici vom scrie prima noastra regula In exemplul urmator vom bloca adresa 89.45.169.55 in asa fel incat nu va putea comunica cu computerul nostru iptables -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 treaca Trebuie sa adaug ca de default vine folosita tabelul filter , bineinteles poate fi folosit oricare altul folosind optiunea -t si nume_tabel Pt a vedea aceasta regula vom da urmatorul comand iptables -L Dupa 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 aspecte Pt a sterge toate regulile pe care le-am facut vom da urmatorul comand iptables -F-F inseamna flush all the rules (de default ) putem specifica daca vrem ce fel de regula sa stergem si din care chain Pt 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 comand iptables-restore < nume_file.txtDupa cum am vazut tabelul filter contine 3 chains de default , noi pana acum am folosit doar unul INPUT Acest 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 asa La 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 locuri De 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 internet Urmatorul comand ne va permite sa vizualizam mult mai clar regulile noastre iptables -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 avem Pana acum avem o regula deci ne va arata numarul unu Sa zicem ca vrem sa mai adaugam niste reguli care sa fie puse in lista la ce numar vrem noi Cu 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 noi iptables -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 DROP In acest caz ne putem conecta la servarul nostru telnet doar de la adresa 192.168.2 Cum sa stergem oregula sau sa o sostituim cu o alta regula -D delete , -R replace vom sterge regula numarul unu iptables -D INPUT 1Vom sostitui regula numarul unu iptables -R INPUT 1 -p tcp --dport 23 -s -j ACCEPT Asadar toti se pot conecta la servarul nostru telnet Source:Iptables basics