| Bazele | ||
|---|---|---|
| Prec | Urm | |
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.Optiunea -t specifica ce tabel sa fie folosit. Default este "filter". Urmatoarele optiuni se pot folosi cu comanda -t.
| Tabel | Explicatie |
| nat | Tabelul 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]. |
| mangle | Cu 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]. |
| filter | Tabelul 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] |
| Comanda | Exemplu | Explicatie |
| -A, --append | iptables -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, --delete | iptables -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, --replace | iptables -R INPUT 1 -s 192.168.0.1 -j DROP | Aceasta comanda inlocuieste vechea regula de la acea linie. |
| -I, --insert | iptables -I INPUT 1 --dport 80 -j ACCEPT | Insereaza o regula in lant. |
| -L, --list | iptables -L INPUT | Listeaza regulile din lant. |
| -F, --flush | iptables -F INPUT | Aceasta comanda sterge toate regulile din lant. Aceasta se specifica fara alte optiuni |
| -Z, --zero | iptables -Z INPUT | Reseteaza toate counte-ele din lantul specificat. |
| -N, --new-chain | iptables -N permis | Aceasta comanda ii spune kernel-ului sa creeze un nou lant, in tabelul specificat, cu numele specificat. |
| -X, --delete-chain | iptables -X permis | Aceasta regula sterge un lant. Este necesar ca lantul sa fie gol. |
| -P, --policy | iptables -P INPUT DROP | Aceasta 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-chain | iptables -E permis nepermis | Comanda -E ii spune kernel-ului sa redenumeasca regula permis in nepermis. |
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
| Potrivire | Exemplu | Explicatie |
| -p, --protocol | iptables -A INPUT -p tcp | Protocoalele pachetelor. Acestea pot fi: tcp, udp si icmp |
| -s, --source | iptables -A INPUT -s 192.168.1.1 | Sursa pachetului. |
| -d, --destination | iptables -A INPUT -d 192.168.1.1 | Destinatia pachetului. |
| -i, --in-interface | iptables -A INPUT -d 192.168.1.1 | Interfata pe care intra pachetele. |
| -o, --out-interface | iptables -A FORWARD -o eth0 | Interfata pe care ies pachetele. |
| -f, --fragment | iptables -A INPUT -f | Spune ca regula se refera la cel de-al II-lea sau restul pachetelor. |
| -c, --set-counters | iptables -A INPUT --set-counters | Seteaza counter-ele la un numar de pachete si un numar de biti. |
Potriviri TCP
| Potrivire | Exemplu |
| -sport, --source-port | iptables -A INPUT -p tcp --sport 22 |
| -dport, --destination-port | iptables -A INPUT -p tcp --dport 22 |
| --tcp-flags | iptables -p tcp --tcp-flags SYN,ACK,FIN SYN |
| --syn | iptables -p tcp --syn |
| --tcp-option | iptables -p tcp --tcp-option 16 |
Portiviri UDP
| Potrivire | Exemplu |
| --sport, --source-port | iptables -A INPUT -p udp --sport 53 |
| --dport, --destination-port | iptables -A INPUT -p udp --dport 53 |
Potriviri ICMP
| Potrivire | Exemplu |
| --icmp-type | iptables -A INPUT -p icmp --icmp-type 8 |
Potriviri MAC
| Potrivire | Exemplu |
| --mac-source | iptables -A INPUT --mac-source 00:00:00:00:00:01 |
Potriviri Limit
| Potrivire | Exemplu |
| --limit | iptables -A INPUT -m limit --limit 3/hour |
| --limit-burst | iptables -A INPUT -m limit --limit-burst 5 |
Potriviri Multiport
| Potrivire | Exemplu |
| --source-port | iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110 |
| --destination-port | iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110 |
| --port | iptables -A INPUT -p tcp -m multiport --port 22,53,80,110 |
Potriviri Mark
| Potrivire | Exemplu |
| --mark | iptables -t mangle -A INPUT -m mark --mark 1 |
Potriviri Owner
| Potrivire | Exemplu |
| --uid-owner | iptables -A OUTPUT -m owner --uid-owner 500 |
| --gid-owner | iptables -A OUTPUT -m owner --gid-owner 0 |
| --pid-owner | iptables -A OUTPUT -m owner --pid-owner 78 |
| --sid-owner | iptables -A OUTPUT -m owner --sid-owner 100 |
Potriviri de stare
| Potrivire | Exemplu |
| --state | iptables -A INPUT -m state --state RELATED,ESTABLISHED |
Potriviri Unclean
| Potrivire | Exemplu |
Potriviri TOS
| Potrivire | Exemplu |
| --tos | iptables -A INPUT -p tcp -m tos --tos 0x16 |
Potriviri TTL
| Potrivire | Exemplu |
| --ttl | iptables -A OUTPUT -m ttl --ttl 60 |
| Prec | Continut | Urm |
| Pregatiri | Traversarea tabelelor si a lanturilor |