pyth0n3 Posted May 23, 2010 Report Posted May 23, 2010 Aici am descris cateva lucruri despre iptables http://rstcenter.com/forum/22903-iptables-basics.rst In aceasta parte vreau sa descriu putin alte cateva aspecte despre iptablesCum am mai zis exista 3 tabele de default care nu pot fi sterse1 mangle2 NAT3 filterFiecare contine anumite chainsLa randul nostru putem crea alte chainsPt a crea un chain se poate folosi optiunea -N dupa care vom specificanumele la chain De exemplu exista si optiunea -E care ne permite sa schimbam numele unui chain cu un alt numeiptables -N LOCALAREAAcest comand va adauga un chain cu numele LOCALAREA la tabelul filter (cum am mai zis de default vine folosit tabelul filter ) daca vrem sa folosim un alt tabel va trebui specificat cu optiunea -tNu uitati ca aceste chain trebuie sa aiba nume diverse , nu e bine sa definiti mai multe chain cu acelasi nume Urmatorul comand va schimba numele la primul chain pe care l-am creatiptables -E LOCALAREA EXTRANETDeci fiecare chain are si o policy de default , am zis ca e ACCEPT pt toate deoarece asa va permite sa treaca tot traficulSpre exemplu daca avem un server ar fii mul mai bine sa schimbam aceasta policy de default si sa o punem pe DROPIn acest caz nu va lasa sa treaca nici un fel de traffic , doar pe care il vom pune noi in anumite reguliPt a schimba aceasta policy se poate folosi optiunea -Piptables -P EXTRANET DROPtot trafficul pt acest chain va fi blocatVa trece doar ceea ce vom defini noi in anumite reguli pt acest chain Vom mai descrie cateva lucruri importanteSpre exemplu putem bloca trafficul care trece prin eth0 sau eth1 astea fiindnumele de la retelele noastreiptables -A INPUT -i eth0 -j DROPnu va permite nici un fel de trafic de la eth0 spre calculatorul nostruAm mai zis ca protocolul TCP are ca layer numarul 4Cu acest protocol putem folosi diverse optiuni pt a construidiverse reguli-p care sta pt protolol , vom putea alege protocolul--sport sau --source-port vom putea alege portul de origine nomal folosit de la > 1024 --dport sau --destination-port care poate fi portul destinataruluiAici a vrea doar sa adaug ca se poate folosi in regula si numele serviciului nu neamarat portul ,pt a vedea o lista mergeti in /etc/servicesUn simplu exemplu va va face sa intelegeti mai bineiptables -A INPUT -p tcp --dport telnet -j DROPAceasta regula poate fi scrisa si in felul urmatorptables -A INPUT -p tcp --dport 23 -j DROPIn acest caz am specificat portuDaca ati observat am specificat doar portul destinatarului in acest caz destinatarul suntem noi deoarece ca chain este folosit INPUT ,Nu tot timpul se poate cunoaste portul sursei asadar se va specifica doar cel al destinataruluiMai exista si optiunea flags--tcp-flags SYN,FIN,ACK SYN,ACKVa trebui sa fim atenti cand vom scrie reguli pt acest protocol pt a nu bloca spre exemplu un handshakeUDP face parte din layer 4 (transport )Exista diverse aplicatii care folosesc acest protocol spre exemplu syslog - udp514-p va specifica protocolulVreau doar sa adaug ca in cazul acestui protocol porturile de la sursa si cele de la destinatie pot fi aceleasiDeci putem cunoaste abele porturiOk acum vom crea o regula care va lasa doar un singur ip sa se conecteza la syslog iar toate celelalte vor fi blocate iptables -A INPUT -p udp --dport 514 -s ! 192.168.1.2 -j DROPInternet Control Messaging Protocol sau prescurtat ICMPPoate fi echo-request - PINGecho-reply - PONGO voi descrie mai clarPING - sistemul nostru va trimite folosind ca chain OUTPUT un echo-requestdestinatarul va primi un echo-request de la noi care va trece prin INPUT chain (doar daca este un system linux , de exemplu un router pt ca foloseste iptables ) daca e windows va il va primi la reteaua specifica a sistemuluiIn acest caz destinatarul ne va raspunde cu un echo-reply -p va specifica si in acest caz protocolul--icmp-type va specifica ce fel de tipPt a vedea toate tipurile vom da urmatorul comandiptables -p icmp --help Vom folosi o regula pt a bloca toate echo-reply care vor veni spre sistemul nostru , nu uitati in acest caz noi putem sa facem ping pe orice ip dar nu vom putea primi nici un raspuns pt ca am blocat aceasta optiune cu o regula de firewalliptables -A INPUT -p icmp --icmp-type echo-reply -j DROPNoi facem ping la un ip dar nu reusim sa primim nici un rezultatNu uitati ca oricine poate sa faca ping la ip-ul nostru si va primi rezultate deoarece noi am blocat folosind ca chain INPUT deci ceea ce intra va fi blocat , nu si trafficul care iesePt a bloca in asa fel incat computerul sau servarul nostru sa nu raspunda la ping va trebui sa folosim ca chai OUTPUTiptables -A Output -p icmp --icmp-type echo-reply -j DROPNimeni in acest caz nu ne va putea face ping , noi putem sa facem ping dar nu putem primi nici un fel de raspunsPt ca sa blocam in asa fel incat sa nu putem face ping de la noi de pe pcexista o simpla regulaiptables -A OUTPUT -p icmp --icmp-type echo-request -j DROPNu putem sa mai facem ping Exista possibilitatea de a scrie reguli in care se pot specifica mai multe porturi folosind virgula intre ele -m multiportvom bloca trafficul care vine pt telnet portul 23 si ftp portul 21Pt a nu scrie 2 reguli vom folosi doar una iptables -A INPUT -tcp -m multiport --dport 23,21 -j DROPFiltru MACPoate fi folosit acest filtru cunoscand adresele MAC Spre exemplu vrem ca sa blocam trafficul de la ip-ul 192.168.1.2O putem face in 2 moduri , blocam ip-ul sau blocam adresa MAC iptables -A INPUT -p tcp -m mac --ma-sourse 00:00:00:00:00:00 -J DROPdaca filtram adrese MAC este putin mai sigur , decat daca filtram adrese ipIn ambele cazuri se poate face spoof dar daca se schimba doar adresa ip regula va fi valabila Pt a vedea toate posibilitatile care se pot folosi in iptables puteti scrie in terminal urmatorul comand iptables --help sauman iptables Daca gasiti greseli de exprimare corectatima , acest text a fost scris de mine , nu a fost folosit nici un dictionar Suntem oameni si e normal sa gresim Mai ales cand nu se vorbeste limba romana decat pe acest forum .Source:Iptables basics part ll matches Quote