IPTABLES(8) iptables 1.8.13 IPTABLES(8) NUME iptables/ip6tables -- instrument de administrare pentru filtrarea pachetelor IPv4/IPv6 i NAT SINOPSIS iptables [-t tabel] {-A|-C|-D|-V} lan definiie-regula ip6tables [-t tabel] {-A|-C|-D|-V} lan definiie-regula iptables [-t tabel] -I lan [numar-regula] definiie-regula iptables [-t tabel] -R lan numar-regula definiie-regula iptables [-t tabel] -D lan definiie-regula iptables [-t tabel] -S [lan [definiie-regula]] iptables [-t tabel] {-F|-L|-Z} [lan [numar-regula]] [opiuni...] iptables [-t tabel] -N lan iptables [-t tabel] -X [lan] iptables [-t tabel] -P lan politica iptables [-t tabel] -E nume-lan-vechi nume-lan-nou rule-specification = [potriviri...] [inta] potrivire = -m nume-potrivire [opiuni-per-potrivire] inta = -j nume-inta [opiuni-per-inta] DESCRIERE iptables i ip6tables sunt utilizate pentru a configura, intreine i inspecta tabelele de reguli de filtrare a pachetelor IPv4 i IPv6 din nucleul Linux. Pot fi definite mai multe tabele diferite. Fiecare tabel conine un numar de lanuri incorporate i poate conine, de asemenea, lanuri definite de utilizator. Fiecare lan este o lista de reguli care se potrivesc cu un set de pachete. Fiecare regula specifica ce trebuie facut cu un pachet care se potrivete. Aceasta se numete ,,inta", care poate fi un salt la un lan definit de utilizator in acelai tabel. INTE O regula de paravan de protecie specifica criteriile pentru un pachet i o inta. Daca pachetul nu se potrivete, este examinata urmatoarea regula din lan; daca se potrivete, urmatoarea regula este specificata de valoarea intei, care poate fi numele unui lan definit de utilizator, una dintre intele descrise in iptables-extensions(8) sau una dintre valorile speciale ACCEPT, DROP sau RETURN. ACCEPT inseamna ca pachetul trebuie lasat sa treaca. DROP inseamna sa respinga pachetul. RETURN inseamna oprirea parcurgerii acestui lan i reluarea la urmatoarea regula din lanul anterior (de apelare). In cazul in care se ajunge la sfaritul unui lan incorporat sau daca o regula dintr-un lan incorporat cu inta RETURN se potrivete, inta specificata de politica lanului determina soarta pachetului. TABELE In prezent, exista cinci tabele independente (tabelele care sunt prezente in orice moment depind de opiunile de configurare a nucleului i de modulele care sunt prezente). -t, --table tabel Aceasta opiune specifica tabelul de potrivire a pachetelor pe care trebuie sa opereze comanda. Daca nucleul este configurat cu incarcare automata a modulelor, se va incerca incarcarea modulului corespunzator pentru acest tabel, daca acesta nu este deja incarcat. Tabelele sunt urmatoarele: filter: Acesta este tabelul implicit (in cazul in care nu este indicata opiunea -t). Acesta conine lanurile incorporate INPUT (pentru pachetele destinate soclurilor locale), FORWARD (pentru pachetele care sunt direcionate prin maina pentru alte gazde din reea) i OUTPUT (pentru pachetele generate local). nat: Acest tabel este consultat atunci cand se intalnete un pachet care creeaza o noua conexiune. Acesta este format din patru elemente integrate: PREROUTING (pentru modificarea pachetelor imediat ce intra), INPUT ( pentru modificarea pachetelor destinate soclurilor locale), OUTPUT (pentru modificarea pachetelor generate la nivel local inainte de rutare) i POSTROUTING (pentru modificarea pachetelor in momentul in care sunt pe cale sa iasa). Suportul IPv6 NAT este disponibil incepand cu nucleul 3.7. mangle: Acest tabel este utilizat pentru modificarea specializata a pachetelor. Pana la nucleul 2.4.17 avea doua lanuri incorporate: PREROUTING (pentru modificarea pachetelor primite inainte de rutare) i OUTPUT (pentru modificarea pachetelor generate local inainte de rutare). Incepand cu nucleul 2.4.18, sunt acceptate i alte trei lanuri incorporate: INPUT ( pentru pachetele care intra in propria maina), FORWARD (pentru modificarea pachetelor care sunt direcionate prin maina) i POSTROUTING (pentru modificarea pachetelor care urmeaza sa iasa). raw: Acest tabel este utilizat in principal pentru configurarea excepiilor de la urmarirea conexiunilor in combinaie cu obiectivul NOTRACK. Se inregistreaza la carligele netfilter cu o prioritate mai mare i, prin urmare, este apelat inainte de ip_conntrack, sau de orice alte tabele IP. Ofera urmatoarele lanuri incorporate: PREROUTING (pentru pachetele care sosesc prin orice interfaa de reea) i OUTPUT (pentru pachetele generate de procesele locale). security: Acest tabel este utilizat pentru regulile de reea ale controlului de acces obligatoriu (,,Mandatory Access Control": MAC), cum ar fi cele activate de obiectivele SECMARK i CONNSECMARK. Controlul de acces obligatoriu este implementat de modulele de securitate Linux, cum ar fi SELinux. Tabelul de securitate este apelat dupa tabelul de filtrare, permiand ca orice reguli de control discreionar al accesului (DAC) din tabelul de filtrare sa intre in vigoare inaintea regulilor MAC. Acest tabel ofera urmatoarele lanuri incorporate: INPUT (pentru pachetele care intra in maina), OUTPUT (pentru modificarea pachetelor generate local inainte de direcionare) i FORWARD (pentru modificarea pachetelor care sunt direcionate prin maina). OPIUNI Opiunile care sunt recunoscute de iptables i ip6tables pot fi imparite in mai multe grupuri diferite. COMENZI Aceste opiuni specifica aciunea dorita de efectuat. Numai una dintre ele poate fi specificata in linia de comanda, cu excepia cazului in care se specifica altfel mai jos. Pentru versiunile lungi ale numelor comenzilor i opiunilor, trebuie sa folosii doar suficiente litere pentru a va asigura ca iptables o poate diferenia de toate celelalte opiuni. -A, --append lan definiie-regula Adauga una sau mai multe reguli la sfaritul lanului selectat. In cazul in care numele de sursa i/sau de destinaie se rezolva la mai multe adrese, se va adauga o regula pentru fiecare combinaie posibila de adrese. -C, --check lan definiie-regula Verifica daca in lanul selectat exista o regula care corespunde definiiei. Aceasta comanda utilizeaza aceeai logica ca i -D pentru a gasi o intrare corespunzatoare, dar nu modifica configuraia iptables existenta i utilizeaza codul sau de ieire pentru a indica succesul sau eecul. -D, --delete lan definiie-regula -D, --delete lan numar-regula terge una sau mai multe reguli din lanul selectat. Exista doua versiuni ale acestei comenzi: regula poate fi specificata ca numar in lan (incepand de la 1 pentru prima regula) sau ca o regula care trebuie sa se potriveasca. -I, --insert lan [numar-regula] definiie-regula Introduce una sau mai multe reguli in lanul selectat, cu numarul de regula dat. Astfel, daca numarul regulii este 1, regula sau regulile sunt inserate in capul lanului. Aceasta este, de asemenea, valoarea implicita in cazul in care nu se specifica niciun numar de regula. -R, --replace lan numar-regula definiie-regula Inlocuiete o regula din lanul selectat. Daca numele sursa i/sau destinaie se rezolva la mai multe adrese, comanda va eua. Regulile sunt numerotate incepand de la 1. -L, --list [lan] Listeaza toate regulile din lanul selectat. Daca nu este selectat niciun lan, sunt enumerate toate lanurile. La fel ca orice alta comanda <>, se aplica la tabelul specificat (,,filter" este valoarea implicita), astfel incat regulile NAT sunt listate de catre iptables -t nat -n -L Va rugam sa reinei ca aceasta opiune este adesea utilizata impreuna cu opiunea -n, pentru a evita cautarile DNS inverse lungi. Este legal sa se specifice i opiunea -Z (zero), caz in care lanurile vor fi listate i reduse la zero in mod atomic. Rezultatul exact este influenat de celelalte argumente furnizate. Regulile exacte sunt suprimate pana cand se utilizeaza iptables -L -v sau iptables-save(8). -S, --list-rules [lan] Afieaza toate regulile din lanul selectat. Daca nu este selectat niciun lan, toate lanurile sunt afiate ca in cazul <>. La fel ca orice alta comanda <>, se aplica la tabelul specificat (,,filter" este valoarea implicita). -F, --flush [lan] Golete lanul selectat (toate lanurile din tabel, daca nu este indicat niciunul). Acest lucru este echivalent cu tergerea tuturor regulilor una cate una. -Z, --zero [lan [numar-regula]] Se pun la zero contoarele de pachete i de octei din toate lanurile, sau numai din lanul dat, sau numai din regula data dintr-un lan. Este legal sa se specifice i opiunea -L, --list (list), pentru a vedea contoarele imediat inainte de a fi terse; (a se vedea mai sus). -N, --new-chain lan Creeaza un nou lan definit de utilizator cu numele dat. Nu trebuie sa existe deja o inta cu acest nume. -X, --delete-chain [lan] terge lanul specificat. Nu trebuie sa existe referine la lan. Daca exista, trebuie sa tergei sau sa inlocuii regulile de trimitere inainte ca lanul sa poata fi ters. Lanul trebuie sa fie gol, adica sa nu conina nicio regula. Daca nu se furnizeaza niciun argument, se vor terge toate lanurile goale din tabel. Lanurile goale integrate pot fi terse numai cu iptables-nft. -P, --policy lan inta Stabilete politica pentru lanul incorporat (nedefinit de utilizator) la inta data. inta politicii trebuie sa fie ACCEPT sau DROP. -E, --rename-chain lan-vechi lan-nou Redenumete lanul specificat de utilizator cu numele furnizat de utilizator. Aceasta operaie este de ordin cosmetic i nu are niciun efect asupra structurii tabelului. -h Ajutor. Ofera o descriere (deocamdata foarte scurta) a sintaxei comenzii. PARAMETRI Urmatorii parametri alcatuiesc specificaia unei reguli (utilizata in comenzile add, delete, insert, replace i append). -4, --ipv4 Aceasta opiune nu are niciun efect in <> i <>. Daca o regula care utilizeaza opiunea -4 este inserata cu (i numai cu) ip6tables-restore, aceasta va fi ignorata in tacere. Orice alta utilizare va arunca o eroare. Aceasta opiune permite reguli IPv4 i IPv6 intr-un singur fiier de reguli pentru a fi utilizate atat cu <>, cat i cu <>. -6, --ipv6 Daca o regula care utilizeaza opiunea -6 este inserata cu (i numai cu) iptables-restore, aceasta va fi ignorata in tacere. Orice alta utilizare va arunca o eroare. Aceasta opiune permite reguli IPv4 i IPv6 intr-un singur fiier de reguli pentru a fi utilizate atat cu <>, cat i cu <>. Aceasta opiune nu are niciun efect in <> i <>. [!] -p, --protocol protocol Protocolul regulii sau al pachetului care trebuie verificat. Protocolul specificat poate fi unul dintre tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp, mh sau cuvantul cheie special ,,all", sau poate fi o valoare numerica, reprezentand unul dintre aceste protocoale sau unul diferit. Este permis i un nume de protocol din /etc/protocols. Un argument ,,!" inaintea protocolului inverseaza testul. Numarul zero este echivalent cu all. ,,all" se va potrivi cu toate protocoalele i este luat ca valoare implicita atunci cand aceasta opiune este omisa. Reinei ca, in ip6tables, antetele de extensie IPv6, cu excepia esp, nu sunt permise. esp i ipv6-nonext pot fi utilizate cu nucleul versiunea 2.6.11 sau o versiune ulterioara. Numarul zero este echivalent cu all, ceea ce inseamna ca nu putei testa direct campul de protocol pentru valoarea 0. Pentru a se potrivi pe un antet HBH, chiar daca ar fi ultimul, nu putei utiliza -p 0, ci avei intotdeauna nevoie de -m hbh. [!] -s, --source adresa[/masca][,...] Specificarea sursei. adresa poate fi fie un nume de reea, un nume de gazda, o adresa IP de reea (cu /masca), fie o adresa IP simpla. Numele de gazda vor fi rezolvate o singura data, inainte ca regula sa fie transmisa nucleului. Reinei ca specificarea oricarui nume care urmeaza sa fie rezolvat cu o interogare la distana, cum ar fi DNS, este o idee foarte proasta. masca poate fi fie o masca de reea ipv4 (pentru iptables), fie un numar simplu, specificand numarul de 1 din partea stanga a matii de reea. Astfel, o masca iptables de 24 este echivalenta cu 255.255.255.255.0. Un argument ,,!" inainte de specificarea adresei inverseaza sensul adresei. Opiunea --src este un alias pentru aceasta opiune. Pot fi specificate mai multe adrese, dar acest lucru va conduce la extinderea la mai multe reguli (atunci cand se adauga cu -A), sau va determina tergerea mai multor reguli (cu -D). [!] -d, --destination adresa[/masca][,...] Specificarea destinaiei. Pentru o descriere detaliata a sintaxei, a se vedea descrierea opiunii -s (sursa). Opiunea --dst este un alias pentru aceasta opiune. -m, --match potrivire Specifica o potrivire care trebuie utilizata, adica un modul de extensie care testeaza o anumita proprietate. Setul de potriviri constituie condiia in care este invocata o inta. Potrivirile sunt evaluate de la prima la ultima dupa cum este specificat in linia de comanda i funcioneaza in regim de scurtcircuit, adica daca o extensie da un rezultat fals, evaluarea se va opri. -j, --jump inta Aceasta specifica inta regulii, adica ce trebuie facut daca pachetul se potrivete cu ea. inta poate fi un lan definit de utilizator (altul decat cel in care se afla aceasta regula), una dintre intele speciale incorporate care decid imediat soarta pachetului sau o extensie (a se vedea seciunea EXTENSII DE POTRIVIRE I INTA de mai jos). Daca aceasta opiune este omisa intr-o regula (i nu se utilizeaza -g), potrivirea regulii nu va avea niciun efect asupra soartei pachetului, dar contoarele regulii vor fi crescute. -g, --goto lan Aceasta specifica faptul ca prelucrarea trebuie sa continue intr-un lan specificat de utilizator. Spre deosebire de opiunea ,,--jump", RETURN nu va continua procesarea in acest lan, ci in lanul care ne-a apelat prin ,,--jump". [!] -i, --in-interface nume Numele unei interfee prin intermediul careia a fost primit un pachet (numai pentru pachetele care intra in lanurile INPUT, FORWARD i PREROUTING). Atunci cand argumentul ,,!" este utilizat inaintea numelui interfeei, sensul este inversat. Daca numele interfeei se termina cu un ,,+", atunci orice interfaa care incepe cu acest nume se va potrivi. Daca aceasta opiune este omisa, orice nume de interfaa se va potrivi. [!] -o, --out-interface nume Numele unei interfee prin intermediul careia urmeaza sa fie trimis un pachet (pentru pachetele care intra in lanurile FORWARD, OUTPUT i POSTROUTING). Atunci cand argumentul ,,!" este utilizat inaintea numelui interfeei, sensul este inversat. Daca numele interfeei se termina cu un ,,+", atunci orice interfaa care incepe cu acest nume se va potrivi. Daca aceasta opiune este omisa, orice nume de interfaa se va potrivi. [!] -f, --fragment Acest lucru inseamna ca regula se refera numai la al doilea i urmatoarele fragmente IPv4 din pachetele fragmentate. Deoarece nu exista nicio modalitate de a determina porturile sursa sau destinaie ale unui astfel de pachet (sau tipul ICMP), un astfel de pachet nu se va potrivi cu nicio regula care le specifica. Atunci cand argumentul ,,!" precede opiunea ,,-f", regula se va potrivi numai cu fragmentele de antet sau cu pachetele nefragmentate. Aceasta opiune este specifica IPv4, nu este disponibila in <>. -c, --set-counters pachete octei Aceasta permite administratorului sa iniializeze contoarele de pachete i de octei ale unei reguli (in timpul operaiilor INSERT, APPEND, REPLACE). ALTE OPIUNI Se pot specifica urmatoarele opiuni suplimentare: -v, --verbose Ieire detaliata. Aceasta opiune face astfel incat comanda <> sa afieze numele interfeei, opiunile regulii (daca exista) i matile TOS. De asemenea, sunt listate contoarele de pachete i de octei, cu sufixul ,,K", ,,M" sau ,,G" pentru multiplicatori de 1000, 1.000.000 i, respectiv, 1.000.000.000.000 (dar consultai opiunea -x flag pentru a schimba acest lucru). Pentru adaugare, inserare, tergere i inlocuire, acest lucru determina afiarea de informaii detaliate despre regula sau regulile respective. -v poate fi specificat de mai multe ori pentru a emite, eventual, indicaii de depanare mai detaliate: specificata de doua ori, iptables-legacy va afia informaii despre tabele i intrari in libiptc, iptables-nft afieaza regulile in prezentarea netlink (cod VM). Specificata de trei ori, iptables-nft va afia, de asemenea, toate mesajele netlink trimise catre nucleu. -V, --version Afieaza versiunea programului i API-ul nucleului utilizat. -w, --wait [secunde] Ateapta sa se blocheze xtables. Pentru a preveni rularea simultana a mai multor instane ale programului, se va incerca obinerea unui blocaj exclusiv la lansare. In mod implicit, programul va iei daca nu se poate obine blocarea. Aceasta opiune va face ca programul sa atepte (pe termen nedefinit sau timp de secunde opional) pana cand se poate obine blocarea exclusiva. -n, --numeric Ieire numerica. Adresele IP i numerele de port vor fi afiate in format numeric. In mod implicit, programul va incerca sa le afieze ca nume de gazda, nume de reea sau servicii (ori de cate ori este cazul). -x, --exact Expandeaza numerele. Afieaza valoarea exacta a contoarelor de pachete i de octei, in loc sa afieze doar numarul rotunjit in K (multipli de 1000), M (multipli de 1000K) sau G (multipli de 1000M). Aceasta opiune este relevanta numai pentru comanda -L. --line-numbers Cand listeaza regulile, adauga numere de linie la inceputul fiecarei reguli, care corespund poziiei regulii respective in lan. --modprobe=comanda Cand se adauga sau se insereaza reguli intr-un lan, utilizeaza comanda pentru a incarca toate modulele necesare (obiective, extensii de potrivire etc.). FIIER BLOCARE <> utilizeaza fiierul /run/xtables.lock pentru a obine o blocare exclusiva la lansare. Variabila de mediu XTABLES_LOCKFILE poate fi utilizata pentru a suprascrie valoarea implicita. EXTENSII DE POTRIVIRE I INTA <> poate utiliza module de potrivire a pachetelor i module inta extinse. O lista a acestora este disponibila in pagina de manual iptables-extensions(8). DIAGNOSTICARE Diferite mesaje de eroare sunt afiate la ieirea de eroare standard. Codul de ieire este 0 in cazul funcionarii corecte. Erorile care par a fi cauzate de parametrii de linie de comanda nevalabili sau abuzivi determina un cod de ieire 2. Erorile care indica o incompatibilitate intre nucleu i spaiul utilizatorului determina un cod de ieire 3. Erorile care indica o problema de resurse, cum ar fi un blocaj ocupat, alocarea euata a memoriei sau mesaje de eroare din partea nucleului determina un cod de ieire 4. In cele din urma, alte erori determina un cod de ieire 1. ERORI Hibe? Ce sunt astea? ;-) Ei bine, poate dorii sa aruncai o privire la https://bugzilla.netfilter.org/ iptables va iei imediat cu un cod de eroare 111 daca constata ca a fost apelat ca un program setuid-to-root. <> nu poate fi utilizat in sigurana in acest mod deoarece are incredere in bibliotecile partajate (potriviri ,,matches", inte ,,targets") incarcate in timpul execuiei, ruta de cautare poate fi definita cu ajutorul variabilelor de mediu. COMPATIBILITATE CU IPCHAINS Acest iptables este foarte asemanator cu <> de Rusty Russell. Principala diferena consta in faptul ca lanurile INPUT i OUTPUT sunt parcurse numai pentru pachetele care intra in gazda locala i, respectiv, provin din gazda locala. Prin urmare, fiecare pachet trece doar printr-unul dintre cele trei lanuri (cu excepia traficului loopback, care implica ambele lanuri INPUT i OUTPUT); anterior, un pachet redirecionat trecea prin toate cele trei. O alta diferena principala este ca -i se refera la interfaa de intrare; -o se refera la interfaa de ieire, iar ambele sunt disponibile pentru pachetele care intra in lanul FORWARD. Diferitele formate de NAT au fost separate; iptables este un filtru pur de pachete atunci cand se utilizeaza tabelul implicit ,,filter", cu module de extensie opionale. Acest lucru ar trebui sa evite o mare parte din confuzia legata de combinaia de mascare IP i filtrare a pachetelor, observata anterior. Aadar, urmatoarele opiuni sunt tratate diferit: -j MASQ -M -S -M -L Exista alte cateva modificari in <>. CONSULTAI I iptables-apply(8), iptables-save(8), iptables-restore(8), iptables-extensions(8), ,,Packet-filtering-HOWTO" detaliaza utilizarea iptables pentru filtrarea pachetelor, ,,NAT-HOWTO" detaliaza NAT, ,,netfilter-extensions-HOWTO" detaliaza extensiile care nu se afla in distribuia standard, iar ,,netfilter-hacking-HOWTO" detaliaza componentele interne ale <>. A se vedea https://www.netfilter.org/. AUTORI Rusty Russell a scris iniial iptables, in urma unei consultari prealabile cu Michael Neuling. Marc Boucher l-a facut pe Rusty sa renune la <> facand lobby pentru un cadru generic de selectare a pachetelor in <>, apoi a scris tabelul mangle, potrivirea proprietarului, chestiile de marcare i a lucrat peste tot in ,,iptables" facand lucruri interesante. James Morris a scris inta TOS, i potrivirea tos. Jozsef Kadlecsik a scris inta REJECT. Harald Welte a scris inta ULOG i NFQUEUE, noua biblioteca ,,libiptc", precum i potrivirile i intele TTL, DSCP, ECN. Echipa de baza Netfilter este: Jozsef Kadlecsik, Pablo Neira Ayuso, Eric Leblond, Florian Westphal i Arturo Borrero Gonzalez. Membrii emerii ai echipei de baza sunt: Marc Boucher, Martin Josefsson, Yasuyuki Kozakai, James Morris, Harald Welte i Rusty Russell. Pagina de manual scrisa iniial de Herve Eychenne . VERSIUNEA Aceasta pagina de manual se aplica la versiunea iptables/ip6tables 1.8.13. TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . iptables 1.8.13 IPTABLES(8)