Iptables (Српски)
iptables je mocan vatreni zid ugradjen u linux kernel i deo je netfilter projekta. Moze se podesiti direktno ili upotrebu jednog od mnogih frontend-ova[broken link: invalid section] i GUI-ja[broken link: invalid section]. ip tabele se koriste za ipv4 i ip6 tabele se koriste za ipv6.
Contents
Instalacija
Prvo, instalirajte korisnicke programe:
# pacman -S iptables
Sledece, dodajte ip tabele u DAEMONS niz u /etc/rc.conf da bi ih ucitali u vasa podesavanja prilikom butovanja:
DAEMONS=(... iptables network ...)
Osnovni koncepti
tabele
iptables sadrze cetiri tabele: raw, filter, nat i mangle.
lanci
Lanci se koriste za zadavanje skupa pravila. Paket pocinje pri vrhu lanca i nastavlja dalje ka dole dok ne pogodi pravilo. Postoje tri ugradjena lanca: INPUT, OUTPUT i FORWARD. Sav odlazni saobracaj prolazi kroz FORWARD lanac i sav dolazeci saobracaj prolazi kroz FORWARD lanac. Tri ugradjena lanca imaju pocetne mete koje se koriste ako ni jedno pravilo nije pogodjeno. Lanci definisani od strane korisnika se mogu dodati da bi se skup pravila ucinio efikasnijim.
mete
"meta" je rezultat koji se desava kada paket pogodi pravilo. Mete se zadaju upotrebom "skoka" (-j). Najcesce mete su ACCEPT, DROP, REJECT i LOG.
moduli
Postoje mnogi moduli koji se mogu koristiti za prosirivanje ip tabela poput connlimit, conntrack, limit i recent. Ovi moduli dodaju dodatnu funkcionalnost koja omogucava kompleksna pravila filterovanja.
Konfigurisanje
Sa komandne linije
Mozete da proverite trenutni skup pravila i broj pogodaka po pravilu upotrebom komande:
# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0K packets, 0 bytes) pkts bytes target prot opt in out source destination
Ako izlaz izgleda kao gore, onda nema pravila.
Mozete da flush-ujete i resetujete ip tabele na difolt upotrebom ovih komandi:
# iptables -P INPUT ACCEPT # iptables -P FORWARD ACCEPT # iptables -P OUTPUT ACCEPT # iptables -F # iptables -X
Konfiguracioni fajl
Konfiguracioni fajl na /etc/conf.d/iptables pokazuje na lokaciju konfiguracionog fajla. Skup pravila je ucitan kada se daemon startuje.
IPTABLES=/usr/sbin/iptables IP6TABLES=/usr/sbin/ip6tables
IPTABLES_CONF=/etc/iptables/iptables.rules IP6TABLES_CONF=/etc/iptables/ip6tables.rules IPTABLES_FORWARD=0 # enable IP forwarding?
Da sacuvate trenutni skup pravila, upotrebite komandu:
# /etc/rc.d/iptables save
Da ucitate skup pravila, upotrebite ovu komandu:
# /etc/rc.d/iptables restart
Cuvanje brojaca
Mozete takodje, opciono, da sacuvate bajt i paket brojace. Da to uradite, editujte /etc/rc.d/iptables
U save) sekciji, izmenite liniju:
/usr/sbin/iptables-save > $IPTABLES_CONF
na
/usr/sbin/iptables-save -c > $IPTABLES_CONF
U stop) sekciji, dodajte sledece da sacuvate pre stopiranja:
stop) $0 save sleep 2
U start) sekciji, promenite liniju:
/usr/sbin/iptables-restore < $IPTABLES_CONF
na
/usr/sbin/iptables-restore -c < $IPTABLES_CONF
i sacuvajte fajl
Uputstva
Logovanje
LOG meta se moze koristiti za logovanje paketa koji pogadjaju pravilo. Nasuprot drugim metama poput ACCEPT ili DROP, paket ce nastaviti da se krece kroz lanac nakon sto pogodi LOG metu. Ovo znaci da ako hocete da omogucite logovanje svih ispustenih paketa, morate da dodate duplo LOG pravilo pre svakog DROP pravila. Posto ovo umanjuje efikasnost i cini stvari manje jednostavnim, LOGDROP lanac se moze napraviti umesto toga.
## /etc/iptables/iptables.rules *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] ... lanci definisani od strane drugih korisnika .. ## LOGDROP chain :LOGDROP - [0:0] -A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG -A LOGDROP -j DROP ... pravila ... ## log i drop paketi koji pogadjaju ovo pravilo: -A INPUT -m state --state INVALID -j LOGDROP ... jos pravila ...
Ogranicavanje ucestalosti logovanja
Modul za ogranicavanje se koristi za sprecavanje preteranog narastanja vaseg log fajla za ip tabele ili uzrokovanja bespotrebnog pisanja na hard disk. Bez ogranicavanja, napadac bi mogao da ispuni vas hard disk (ili bar vasu /var particiju) tako sto bi izazvao pisanje u log za ip tabele.
-m limit se koristi za poziv na modul za ogranicavanje. Mozete da upotrebite --limit da podesite prosecnu stopu i --limit-burst da podesite pocetnu burst stopu. Primer:
-A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG
Ovo zadaje pravilo u LOGDROP lanac koji ce logovati sve pakete koji prolaze kroz njega. Prvih 10 paketa ce biti logovano, a zatim ce samo 5 paketa po minutu biti logovano. "limit burst" je obnovljen za jedan svaki put kada "limit rate" nije narusen.
syslog-ng
Pretpostavljajuci da koristite syslog-ng koji je difolt u Arch Linux-u, mozete da kontrolisete gde ip tabele loguju izlaz na sledeci nacin:
filter f_everything { level(debug..emerg) and not facility(auth, authpriv); };
na
filter f_everything { level(debug..emerg) and not facility(auth, authpriv) and not filter(f_iptables); };
Ovo ce zaustaviti logovanje izlaza ip tabela u /var/log/everything.log.
Ako isto zelite da ip tabele loguju u neki drugi fajl a ne u /var/log/iptables.log, mozete jednostavno da izmenite vrednost fajla destinacije d_iptables ovde (jos uvek u syslog-ng.conf)
destination d_iptables { file("/var/log/iptables.log"); };
ulogd
ulogd je specijalizovan daemon za logovanje paketa u korisnickom prostoru za netfilter koji moze da zameni difolt LOG metu.