Tekstovi Projekti Autor


iptables - učitavanje pravila i osnovna konfiguracija


[datum] 2011-05-12

iptables je program koji služi za definisanje pravila zaštitnog zida (eng. firewall). Ovo će biti još jedan kratak tekst koji će se osvrnuti na gotova rešenja za iptables program. Ukoliko vam nije jasno kako itables radi, napomenuću da je sistem rada isti kao kod Look'n'Stop zaštitnog zida za Windows®. To je školjka u koju mogu da se ubacuju razna pravila. Ako se vodimo ovom logikom onda dolazimo do zaključka da iptables nije upotrebljiv ukoliko nemate pravila. Na mreži postoji mali milion tekstova o tome ali sam počeo malo da kopam i da se raspitujem. Zahvaljujem Daliboru koji mi je skrenuo pažnju na sledeće 2 veze:


Ako malo bolje pogledamo, prva veza je izuzetno neobična i generiše čudan niz pravila koja su, kako deluje, kvalitetna. Sa druge strane, imamo pravila #2 koja su kraća ali daju jednostavniji pregled onoga što koristimo. Pošto trenutno nisam upoznat sa pravilima dovoljno, skrećem vam pažnju da ova pravila umeju da zaglupe internet konekciju i prekinu vam protok (da sam se toga setio kada sam testirao... :> ).

Evo kako se primenjuju pravila pomoću iptables programa:



Elem, skripta koja je meni zagolicala maštu je na vezi #2 i ispod se nalazi moja adaptacija skripte (dodao sam opcije, par pravila i standardne portove):
#!/bin/bash
# sitr.sh
# modifikovano: 12.05.2011 16:53:33
#
# port app
#------------------------
# 21 = FTP
# 22 = SSH (može da se menja)
# 25 = MAIL SERVER
# 53 = DNS
# 80 = HTTP
# 110 = POP3
# 143 = IMAP
# 443 = HTTPS
# 587 = GMail Smtp
# 6667/8 = IRC
# 7000 = IRC (SSL)


iptables_rules () {
# flaš starih pravila ("flush the toilet" analogija :>)
iptables -F
# definisanje polisa koje ćemo kasnije da koristimo
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
# rutiranje ukoliko vaša linuks mašina služi kao ruter?
iptables -P FORWARD DROP

# dozvole za ostvarivanje veze koje iniciraju paketi sa mog računara
# nisam siguran ali ovo mi ne deluje kao pametna opcija
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# blokiranje ICMP pinga
# !Note: Kažu da ovo nije dobra stvar pa nije loše koristiti neko drugo pravilo
iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
# blokiranje svega ostalog
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -i eth+ -p udp -j DROP
iptables -A INPUT -i eth+ -p tcp -m tcp --syn -j DROP

# dozvole za sve što se odvija na "localhost"-u (apache, ftp etc.)
iptables -A INPUT -i lo -j ACCEPT

}


flush_rules () {
iptables -F
}


help () {
echo "$0 - manage iptables rules
usage: $0 action

Actions:
start - use defined iptables rules
stop - flush iptables rules
* - displays this help"

}


case $@ in
start ) iptables_rules ;;
stop ) flush_rules ;;
* ) help ;;
esac

exit 0

Kao što vidite, skripta ima opcije da se pokreće i gasi (sitr.sh start pokreće dok sitr.sh stop gasi skriptu. sitr.sh je ime skripte kod mene). Zašto? Da bi je mogli ubaciti u /usr/bin ili /etc/init.d. Takođe, možda bude poboljšanja u samoj skripti pa mi je zato i lakše.

Skripta koju sam naveo ima komentare u sebi i objašnjeno je sve stoga neću da trošim reči na nju. Ukoliko bude dopuna, dodaću vezu do github/lokalne riznice kako bi mogli da preuzmete najnoviju verziju. Da bi skripta radila posle restarta računara, neophodno je da pogledate bilo koji od sledećih metoda:



Skriptu treba da pokrenete kao super korisnik (su, root ili kako već volite) i voila. Proverite pravila koja su aktivna sa sledećom komandom (kao super korisnik takođe):
iptables -L -v


Više o ovome će biti tema bloga kada malo više izučim celu tematiku.


vrh strane ↑


Ukoliko nije drugačije naglašeno, sav sadržaj na ovom sajtu je pod WTFPL (v2) licencom
2008-danas djura-san