Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
 
You are here: Home / Uputstva / Opšte / IPTables za firewall, port forwarding i spajanje više mreža

IPTables za firewall, port forwarding i spajanje više mreža

by Goran Mekić last modified Jul 02, 2008 11:55 AM
Pojednostavljena konfiguracija za sve gore navedeno

Ono što vam treba od softvera je:

  • Linux iz 2.6 serije (mogu da se kladim da ste pogodili da vam ovo treba :))
  • IPTables (koristi se za firewall)


Instalacija kernela:
Prvi korak je da instalirate source kernela. Kako se to radi na vašoj distribuciji, raspitajte se na nekom od naših foruma. Ako vas baš mrzi da se raspitujete, postoji jedan način koji na svakoj distribuciji radi, a to je da sami skinete kernel, otpakujete ga u /usr/src čime ćete dobiti poddirektorijum linux i nastavite dalje sa podešavanjem. Ovu alternativu generalno treba izbegavati jer neke od distribucija intenzivno patch-uju kernel (recimo SuSE) za svoje potrebe, pa pri kompajliranju vanilla kernela stvari obično ne rade.


Podešavanje kernela:
Ne bi bilo loše ako biste našli konfiguraciju kernela koja vam trenutno radi. Recimo, na mom sistemu je to obično fajl /boot/config (doduše, on je link na config-*verzija kernela*, ali to ne treba da vas zbuni). Opet, raspitajte se u slučaju problema. Uđite u direktorijum /usr/src/linux-*verzija kernela*. Otkucajte make menucofnig. Pojaviće vam se meni po kome možete da šetate strelicama, oznaćavate sa razmaknicom i ulazite u podmenije sa tipkom Enter. Učitajte staru konfiguraciju kernela tako što ćete otići na Load an Alternate Configuration File i u polju za unos uneti putanju stare konfiguracije kernela. Na ovo ćemo dodati potrebne stvari za iptables. Ovo su opcije koje treba dodatno da uključite:

  • Networking
    • Networking options
      • Network packet filtering (replaces ipchains)
        • Core Netfilter Configuration
          • <M> Netfilter Xtables support (required for ip_tables)
            • <M> "state" match support
            • <M> Multiple port match support
      • IP: Netfilter Configuration
      • <M> Connection tracking (required for masq/NAT)
        • <M> IP tables support (required for filtering/masq/NAT)
          • <M> Packet filtering
            • <M> REJECT target support
          • <M> Full NAT
            • <M> MASQUERADE target support

Nakon ovoga, otkucajte make all modules_install install, što će iskompajlirati vaš kernel i module kao i instalirati iste. Da biste završili ovaj korak, konfigurišite i pokrenite lilo tako da u listi imate i stari kernel ako koristite ovaj boot manager (za grub nisu potrebne nikakve izmene). Ukucajte reboot i boot-ujte linux držeći palčeve :). Ako ovo prođe bez problema, sve ostalo će ići glatko.



Konfiguracija IPTables kao port forwarder-a i firewall-a
Ovaj put vas stvarno neću gnjaviti. Pretpostavka je da želite da forwardujete port 25 na mašinu sa IP-em 192.168.1.98, i da vam je izlaz na net preko ppp0 a interne mreže na eth0 i eth1. Promenite linije koje počinju sa export prema vašim željama i potrebama i pokrenite sledeće komande:

# Definisanje promenljivih kako bi nam kasnije eventualne promene bile lakše
export EXTIF=ppp0
export INTIF=eth
export PORTSFWD=22,25
export PORTSFWIP=192.168.0.99
export PORTSDROP=domain,distcc
export EXTIP=213.198.227.78 # Ovo se menja, tako da treba neki pametnijim načinom uraditi

# Omogući (u kernelu) prosleđivanje TCP/IP paketa
echo 1 >/proc/sys/net/ipv4/ip_forward

# Podrazumevajuća akcija za TCP/IP pakete
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# Omogući pristup Internetu preko $EXTIF interfejsa (u našem slučaju ppp0)
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

# Omogući da se mreže na eth0 i eth1 vide međusobno
# ovo nije potrebno ako eth ne koristite za pppoe
iptables -t nat -A POSTROUTING -o ${INTIF}1 -j MASQUERADE

# Zabrani ping koji nismo mi zatražili i zatvori portove navedene u $PORTSDROP
iptables -A INPUT -i $EXTIF -p icmp --icmp-type echo-request -j LOG --log-prefix "IPTables ping: "
iptables -A INPUT -i $EXTIF -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -i $EXTIF -p tcp -m multiport --dport $PORTSDROP -j LOG --log-prefix "IPTables ports: "
iptables -A INPUT -i $EXTIF -p tcp -m multiport --dport $PORTSDROP -j DROP

# Prosledi portove navedene u $PORTSFWD na mašinu sa adresom navedenom u $PORTSFWDIP
iptables -A FORWARD -i $EXTIF -o $INTIF0 -p tcp -m multiport --dport $PORTSFWD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -m multiport -d $EXTIP --dport $PORTSFWD -m state --state NEW,ESTABLISHED,RELATED -j DNAT --to $PORTSFWIP:$PORTSFWD

Posle ovoga je ostalo samo da se podesi sistemski log demon, ali to je već druga priča

Document Actions