Bazele
PrecUrm

1. Bazele

In acest capitol se va discuta amanuntit cum sa faceti propriile reguli. Fiecare regula pe care o inserati intr-un lant poate fi considerata o regula. Fiecare regula este o linie la care kernel-ul se uita pentru a sti ce va face cu pachetul. Daca toate criteriile sau potrivirile sunt intalnite, se executa o tinta. In mod normal am scrie o regula astfel:

iptables [table] <command> <match> <target/jump>

Nimic nu spune ca trebuie sa pui tinta ultima, dar ofera o mai buna citire. In schimb comanda trebuie sa fie scrisa prima, sau imediat dupa specificarea tabel-ului.

2.1 Tabelele

Optiunea -t specifica ce tabel sa fie folosit. Default este "filter". Urmatoarele optiuni se pot folosi cu comanda -t.
TabelExplicatie
natTabelul nat este folosit pentru Translatarea Adresei de Retea. Nu incercati sa faceti nici un fel de filtrare in acest tabel. Aici avem 3 lanturi: PREROUTING [folosit pentru a altera pachetele chiar cand ajung la firewall], OUTPUT [folosit pentru a altera pachetele generate local] si POSTROUTING [folosit pentru a altera pachetele chiar inainte sa iasa].
mangleCu ajutorul acestui tabel se pot shimba diferite pachete, si felul in care arata header-ele printre altele. Exemple ar fi schimbarea TTL-ului, TOS-ului sau MARK-ului. Contine 2 lanturi: PREROUTING [folosit pentru a altera pachetele care ating firewall-ul, inainte de a ajunge la decizia de routare] si OUTPUT [folosit pentru alterarea pachetelor generate local inainte de a ajunge la decizia de routare].
filterTabelul fiter trebuie folosit pentru a filtra pachetele in general. De exemplu, putem sa DROP, LOG, ACCEPT sau REJECT. Aici exista 3 tabele: FORWARD [folosit pentru toate pachetele generate nelocal], INPUT [pentru toate pachetele care sunt destinate pentru localhost] si OUTPUT [folosit pentru toate pachetele generate local]

2.2 Comenzile

ComandaExempluExplicatie
-A, --appendiptables -A INPUT ...Aceasta comanda este folosita pentru adougarea regulii la sfarsitul lantului. Regula, cu alte cuvinte, va fi pusa mereu la sfarsitul lantului, si va fi cercetata ultima.
-D, --deleteiptables -D INPUT --dport 80 -j DROP
iptables -D INPUT 1
Aceasta comanda sterge o regula dintr-un lant. Aceasta poate fi facuta in 2 metode: ori prin a pune un -D in loc de -A ( in regula scrisa ), ori prin numarul acesteia -D lant 1 ( sterge regula 1 [aceasta fiind prima de sus in jos]).
-R, --replaceiptables -R INPUT 1 -s 192.168.0.1 -j DROPAceasta comanda inlocuieste vechea regula de la acea linie.
-I, --insertiptables -I INPUT 1 --dport 80 -j ACCEPTInsereaza o regula in lant.
-L, --listiptables -L INPUTListeaza regulile din lant.
-F, --flushiptables -F INPUTAceasta comanda sterge toate regulile din lant. Aceasta se specifica fara alte optiuni
-Z, --zeroiptables -Z INPUTReseteaza toate counte-ele din lantul specificat.
-N, --new-chainiptables -N permisAceasta comanda ii spune kernel-ului sa creeze un nou lant, in tabelul specificat, cu numele specificat.
-X, --delete-chainiptables -X permisAceasta regula sterge un lant. Este necesar ca lantul sa fie gol.
-P, --policyiptables -P INPUT DROPAceasta comanda ii spune kernel-ului sa seteze o tinta default. Toate pachetele carora nu se potriveste nici o regula vor fi trimise catre aceasta tinta default.
-E, --rename-chainiptables -E permis nepermisComanda -E ii spune kernel-ului sa redenumeasca regula permis in nepermis.

Comanda trebuie sa existe neaparat. Se poate omite numai aunci cand se foloseste optiunea -h pentru a afisa ajutorul.

2.3 Potrivirile ( matches )

In aceasta sectiune se va vorbi mai mult despre portiviri ( matches ). Potrivirile se impart in: potriviri generale ( Generic matches ), dupa care mai exista potriviri TCP, UDP si ICMP, potriviri ce pot fi folosite numai pe acele protocoale.

Potriviri Generale

PotrivireExempluExplicatie
-p, --protocoliptables -A INPUT -p tcpProtocoalele pachetelor. Acestea pot fi: tcp, udp si icmp
-s, --sourceiptables -A INPUT -s 192.168.1.1Sursa pachetului.
-d, --destinationiptables -A INPUT -d 192.168.1.1Destinatia pachetului.
-i, --in-interfaceiptables -A INPUT -d 192.168.1.1Interfata pe care intra pachetele.
-o, --out-interfaceiptables -A FORWARD -o eth0Interfata pe care ies pachetele.
-f, --fragmentiptables -A INPUT -fSpune ca regula se refera la cel de-al II-lea sau restul pachetelor.
-c, --set-countersiptables -A INPUT --set-countersSeteaza counter-ele la un numar de pachete si un numar de biti.

Potriviri TCP

PotrivireExemplu
-sport, --source-portiptables -A INPUT -p tcp --sport 22
-dport, --destination-portiptables -A INPUT -p tcp --dport 22
--tcp-flagsiptables -p tcp --tcp-flags SYN,ACK,FIN SYN
--syniptables -p tcp --syn
--tcp-optioniptables -p tcp --tcp-option 16

Portiviri UDP

PotrivireExemplu
--sport, --source-portiptables -A INPUT -p udp --sport 53
--dport, --destination-portiptables -A INPUT -p udp --dport 53

Potriviri ICMP

PotrivireExemplu
--icmp-typeiptables -A INPUT -p icmp --icmp-type 8

  • Potrivirile explicite sunt potrivirile despre care vorbeam la capitolul Configurarea kernel-ului. Acestea se pot utiliza prin folosirea optiunii -m. Mai jos avem o lista cu potrivirile posibile.
  • Potriviri MAC

    PotrivireExemplu
    --mac-sourceiptables -A INPUT --mac-source 00:00:00:00:00:01

    Potriviri Limit

    PotrivireExemplu
    --limitiptables -A INPUT -m limit --limit 3/hour
    --limit-burstiptables -A INPUT -m limit --limit-burst 5

    Potriviri Multiport

    PotrivireExemplu
    --source-portiptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110
    --destination-portiptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110
    --portiptables -A INPUT -p tcp -m multiport --port 22,53,80,110

    Potriviri Mark

    PotrivireExemplu
    --markiptables -t mangle -A INPUT -m mark --mark 1

    Potriviri Owner

    PotrivireExemplu
    --uid-owneriptables -A OUTPUT -m owner --uid-owner 500
    --gid-owneriptables -A OUTPUT -m owner --gid-owner 0
    --pid-owneriptables -A OUTPUT -m owner --pid-owner 78
    --sid-owneriptables -A OUTPUT -m owner --sid-owner 100

    Potriviri de stare

    PotrivireExemplu
    --stateiptables -A INPUT -m state --state RELATED,ESTABLISHED

    Potriviri Unclean

    PotrivireExemplu

    Potriviri TOS

    PotrivireExemplu
    --tosiptables -A INPUT -p tcp -m tos --tos 0x16

    Potriviri TTL

    PotrivireExemplu
    --ttliptables -A OUTPUT -m ttl --ttl 60

    2.4 Tintele

    ACCPET
    DROP
    QUEUE
    RETURN
    LOG
    MARK
    REJECT
    TOS
    MIRROR
    SNAT
    DNAT
    MASQUERADE
    REDIRECT
    TTL
    ULOG


    PrecContinutUrm
    Pregatiri Traversarea tabelelor si a lanturilor