Mrežno filtriranje - PFSense, iptables

Izvor: SIS Wiki
Skoči na: orijentacija, traži

PFSense -> Dario Šagud
iptables -> Bojan Jungić

Sadržaj


PFSense

PFSense - općenito

PFSense je open source [3]distribucija FreeBSD-a koja je prilagođena za uporabu kao firewall/router. Kako sadrži mnoge mogućnosti i osobine, spada među vrlo moćne i fleksibilne firewall i rout platforme. [4]PFSense ima mogućnost daljnjih proširenja bez potrebe dodavanja potencijalnih sigurnosnih propusta kod glavne distribucije. Također, vrlo je popularan jer je prešao jedan milijun download-a od nastavka, a može se koristiti od malih kućnih mreža za zaštitu računala i Xboxa do velikih korporacija kako bi zaštitio tisuće mrežnih uređaja.

Ovaj projekt je vrlo sličan m0n0wallu, [6]koji je također usmjeren na stvaranje firewall softver paketa. Razlika između m0n0walla i PFSensea je sljedeća:

PFSense također nudi ugrađenu sliku tj. može biti usmjeren na ugrađeni hardver, a oboje omogućavaju postavljanje site-to-site i VPN veze, staticki najam DHCP-a, jednostavno spremanje i obnovu konfiguracija itd.

PFSense je baziran na prilagođenoj verziji FreeBSD-a, zajedno sa web serverom LightTPD, PHP-om i nekoliko drugih usluga. Važno je reći da je cijela sistemska konfiguracija spremljena u jedinstvenu XML tekstualnu datoteku da bi se radnje odvijale transparentno. PFSense je drugi UNIX sistem koji ima konfiguraciju vremena boot-anja u PHP-u i koji ima cijelu konfiguraciju spremljenu u XML formatu.

PFSense se konfigurira i nadograđuje preko web baziranog sučelja i ne zahtjeva neko veliko predznanje prijašnjih FreeBSD sistema da bi se njime upravljalo.

Mogućnosti koje pruža PFSense su:

PFSense Verzija 1.0 je izdana 04. listopada 2006.

PFSense mogućnosti

[8]PFSense ima podršku za većinu dodataka koje koriste skupi komercijalni firewalli. U nastavku su navedene mogućnosti koje verzija 2.0 podržava. Važno je napomenuti kako je sve te mogućnosti moguće kontrolirati uz pomoć web sučelja i nije potrebno koristiti komandnu liniju. Osim što sadrži dadatke PFSensea, ovo poglavlje također sadrži ograničenja sustava. Kako svaki sustav ima ograničenja, neke radnje su moguće, dok druge nisu.

Firewall

Tablica stanja

[8]Firewallova tablica stanja održava informacije na otvorenim mrežnim konekcijama. Kako većina firewalla nema sposobnost dobrog kontroliranja tablice stanja, PFSense ima brojne mogućnosti za tu kontrolu zahvaljujući OpenBSD-ovom pf-u (firewallu).

Mogućnosti tablice stanja su sljedeće:

NAT

[8]Network Address Translation

NAT ograničenja

[8]PPTP / GRE ograničenja - kod za pračenje stanja u pf-u za GRE protokol može pratiti samo jednu sezonu po javnoj IP adresi po vanjskom serveru. To znači da ako koristite PPTP VPN veze, samo se jedna unutarnja mašina može spojiti istodobno na PPTP server na internetu. Tisuće drugih mašina može se spojiti istodobno na tisuće različitih PPTP servera, ali jedna samo na jedan server. Jedino što je korisno je korištenje više IP-jeva na firewallu, jedan po klijentu, ili koristiti javne IP-jeve na vanjskom PPTP serveru. Ovo nije problem sa VPN-ovima druge vrste, a rješenje se trenutno razvija.

Redundancija

[8]CARP iz OpenBSD-a dozvoljava hardversko prebacivanje u slučaju propusta (failover). Dva ili više firewalla mogu se konfigurirati kao failover grupa. Ako jedno primarno sučelje "padne", sekundarno ga automatski zamjenjuje. U slučaju zamjene sučelja, postavke koje ste namjestili na primarnom, automatski se sinkroniziraju na sekundarni firewall.

[8]pfsync osigurava da je tablica stanja replicirana na sve zamjenske konfigurirane firewallove. Tako se postojeće veze samo održavaju u slučaju nekog propusta, a to je vrlo važno kod velikih mreža.

Ograničenja

[8]Redundancija radi samo sa statičkim javnim IP-evima. Također je nedostatak to što ne radi sa failover-ima koji koriste DHCP, PPPoE, i PPTP WAN.

VPN

[8] PFSense nudi tri opcije za Virtualne privatne mreže koje će biti opisane u nastavku. To su:

  1. IPsec
  2. OpenVPN
  3. PPTP

IPsec

[8]IPsec dozvoljava konekciju sa bilo kojim uređajem koji podržava IPsec. Ovakva vrsta konekcije se pretežno koristi za različite PFSense instalacije, open source firewallove, a može se koristiti i za mobilna povezivanja.

OpenVPN

[8]OpenVPN je izuzetno dobro i fleksibilno SSL VPN rješenje koje podržava široki raspon operacijskih sustava. [10]OpenVPN omogućuje sudionicima da potvrde jedan drugoga koristeći zajednički tajni ključ, certifikat ili korisničko ime i lozinku. Kada se koristi u konfiguraciji kod servera sa više klijenata, omogućuje serveru da oslobodi certifikat za svakog klijenta, koristeći digitalni potpis i certifikat. OpenVPN koristi OpenSSL enkripciju biblioteku i sadrži sigurnosnih i upravljačkih dodataka.

PPTP

[8]PPTP ili Point-to-Point Tunneling Protocol je popularana VPN metoda zato što skoro svaki operacijski sustav ima ugrađen PPTP (npr. svaka Windows verzija od Windows 95 na dalje). [11]PPTP koristi kontrolnu ploču preko TCP i GRE tunela za operacije enkapsulacije PPP paketa.

PPPoE server

[8]PFSense nudi i PPPoE server. [12]PPPoE je mrežni protokol za enkapsulaciju PPP paketa unutar Ethernet okvira. Najviše se koristi sa DSL servisima gdje se pojedini korisnici spajaju na DSL modem preko Ethernet-a. Lokalna korisnička baza podataka može se koristiti za autentikaciju i RADIUS atentikaciju.

Dinamički DNS

[8]Dinamički DNS klijent omogućava registraciju javne IP adrese sa brojnim DNS uslugama:

Portal zatočeništva (Captive Portal)

[8]Portal zatočeništva omogućuje prisilnu ovjeru autentičnosti ili preusmjeravanja preko stranice za mrežni pristup. [13]Ovaj portal prisiljava korisnika na mreži da vidi neku specijalnu web stranicu prije nego što koristi internet. Obično koristi za ovjeru autentičnosti kod Hot spot mreža i korporacijskih mreža kao dodatan sloj sigurnosti za wireless i internet pristup. Najjednostavnije, portal zatočeništva pretvara web browser u "aparat" za provjeru autentičnosti. Slijedi lista dodataka portala zatočeništva:

PFSense omogućuje i mnoge druge mogućnosti koje ovdje nisu spomenute.

PFSense verzije

[14]Trenutna stablina verzija koja se može preuzeti je 2.0.1. Ova se verzija preporuća za sve instalacije, te je sigurnija i sadrži manje bug-ova od prošle verzije (2.0).

[14]PFSense se može preuzeti kao Nove instalacijske datoteke (New Install Files) ili kao Nadograđene datoteke (Upgrade Files). U nastavku slijedi prikaz:

Nove instalacijske datoteke

[14]Oblici:

Nadograđene datoteke

[14]Oblici:

[14]PFSense ima verzije posebno za i386 (32-bit-a) i amd64 (64-bit-a), koje su se počele razvijati sa PFSense 2.0 verzijom. Ako se ne možete odlučiti koju verziju preuzeti, uzmite i386 (32-bit-a) jer ona radi na 32-bit-nim ii 64-bit-nim sustavima.

[14]Kao što je gore navedeno, postoji tri dostupne platforme. To su:

  1. Live CD ili USB stick instalacija
  2. Hard disk instalacija
  3. Ugrađena (NanoBSD) instalacija

[14]Za razliku od Live CD i Hard disk instalacija koje se izvode preko Live CD-a USB stick-a i hard disk-a, Ugrađena instalacija se koristi pomoću CF kartica (Compact Flash). Postoje dvije varijante NanoBSD platforma:

  1. Verzija koja koristi Serijsku konzolu
  2. Verzija koja koristi VGA konzolu

Minimalni hardverski zahtjevi

[15]Ovdje su navedeni zahtjevi koji se odnose na početnu PFSense verziju (1.2.x), tako da treba imati na umu da ovi zahtjevi nisu za sve verzije i sve platforme. Zahtjevi su sljedeći:


[15]Zahtjevi za pojedine platforme:
Za Live CD / USB stick:

Za Hard disk:

Za ugrađeni pristup:

Tim developera

[16]Utemeljitelji:

[16]Aktivni developeri:

Tutorial

Raspored

Za ovaj tutorial koristi se VMware Workstation 8.0 i VirutalBox sa Windows XP, Linux Ubuntu 11.10 i FreeBSD virtualnim mašinama. Uz pomoć FreeBSD-a koristiti ćemo PFSense kao što se vidi na slici ispod (Raspored komponenata). Za početak da bi uspostavili vezu sa PFSense GUI-em i da bi mogli provesti određene sigurnosne i zaštitne mjere, moramo postaviti korektan raspored mrežnih komponenata. Raspored mrežnih komponenata za ovaj tutorial će biti sljedeći:

Raspored komponenata
Raspored komponenata

Konfiguacija LAN mreže

Nakon što obavimo instalacije Windows XP-a i Linux Ubuntu 11.10, slijedi konfiguracija mreže. Prvo smo postavili "Network adapter" na Custom: Sprecific virtual network i odabrali VMnet0 (i na Windows XP-u i na Ubuntu 11.10). VMnet0 je inače mreža VMware-a za Bridged connection.

Network adapter
Network adapter

Slijedi konfiguracija IP adresa. Na Windows XP-u koristili smo:

Konfiguracija (XP)
Konfiguracija (XP)

Na isti način smo konfigurirali i u Linux Ubuntu 11.10. Jedino smo koristili drugu IP adresu. Koristili smo:

Konfiguacija (Ubuntu)
Konfiguacija (Ubuntu)

Nakon što upisemo IP adrese na oba OS-a, bilo bi dobro testirati mrežu pomocu "ping"-a. Test se može vidjeti na slici ispod.

Ping test
Ping test

Sa slike se može vidjeti da je ping "prošao" tj. da se OS-ovi međusobno vide na mreži.

PFSense instalacija i konfiguracija

Sada trebamo instalirati i podesiti PFSense. Kreiramo novu virutalnu mašinu i odaberemo operacijski sustav FreeBSD. Moramo paziti na odabir FreeBSD-a. Postoji FreeBSD i FreeBSD 64-bit. Ako smo preuzeli PFSense amd64 tada koristimo FreeBSD 64-bit, u drugom slučaju koristimo samo FreeBSD.

Odabir OS-a
Odabir OS-a

Uzeli smo 4GB prostora diska i označili da koristimo "Single file".

Kapacitet diska
Kapacitet diska

Preporučena memorija nam je 256 MB, pa ćemo tako i ostaviti. Sjetimo se da smo u gornjem dijelu pričali kako PFSense minimalno zahtjeva 128 MB, ali ne za sve verzije. U ovom slučaju koristimo PFSense 2.0.1, pa smatramo da će biti dovoljno.

Odabir memorije
Odabir memorije

Sada dolazimo do najvažnijeg dijela. Odabir network adaptera je izuzeto bitan zato što definiramo jednu i drugu stranu PFSense routera. Kako nam je potrebno da jedna strana (WAN) bude mreža interneta našeg računala/laptopa tada na prvom network adapteru koristimo Bridge Adapter kako bi FreeBSD-u omogućili pristup internetu, a na drugom network adapteru koristimo također Bridge Adapter, samo biramo mrežu koju smo prethodno sami kreirali (VMnet0). Slike ispod prikazuju odabir na VMWare-u i VirtualBox-u.

Network adapter 1 (VMWare)
Network adapter 1 (VMWare)
Network adapter 2 (VMWare)
Network adapter 2 (VMWare)
Network adapter 1 (VirtualBox)
Network adapter 1 (VirtualBox)
Network adapter 2 (VirtualBox)
Network adapter 2 (VirtualBox)

Sada možemo startati virtualnu mašinu. Prvo što nam se prikaže je "Welcome screen" od PFSensa. Možemo ga vidjeti na slici ispod.

PFSense start screen
PFSense start screen

Kada nam se prikaže screen kao na slici ispod, pritisnemo "I" za ulazak u instalacijski proces.

"I" za početak instalacije
"I" za početak instalacije

Za konfiguraciju konzole pritisnemo "Accept these Settings".

Konfiguracija konzole
Konfiguracija konzole

Nadalje, "Quick/Easy Install".

"Quick/Easy Install"
"Quick/Easy Install"

Pritisnemo OK i pričekamo da instalacija završi. Instalacija nas pita za Karnel konfiguraciju, gdje biramo "Symetric mutiprocessing karnel"

Karnel konfiguracija
Karnel konfiguracija

Za kraj restartamo virtualnu mašinu.

Restart
Restart

Prije ponovnog pokretanja virtualne mašine, potrebno je disconnect-at PFSense image u virtualnom CD uređaju. Sada nam se pojavljuje ekran gdje biramo WAN i LAN mrežu. Ovo je doista važno, jer u slučaju da odaberemo krivu mrežu PFSense neće raditi "svoj posao". Prvo nas pita: "Želimo li namjestiti VLAN-ove?", na što odgovaramo sa "no" jer se to može i kasnije namjestiti.

VLANs
VLANs


Ako nismo sigurni koja mreža bi trebala biti WAN i koja LAN možemo pogledati MAC adresu u postavkama virtualne mašine. Slika ispod prikazuje da su zadnja dva znaka željene WAN mreže "dc".

MAC adresa WAN mreže
MAC adresa WAN mreže

Sada znamo da moramo staviti "em0" za WAN, a "em1" za LAN mrežu. Kada nas pita za opcionalno sučelje, pritisnemo ENTER.

Odabir sučelja
Odabir sučelja

Nakon odabira, dobivamo prikaz WAN i LAN sučelja. Ovdje pritisnemo "yes" ili "y" za prihvaćanje.

Odabir sučelja
Odabir sučelja

Zadnja slika PFSensa u FreeBSD-u je prikaz glavnog izbornika. Ovdje možemo vidjeti sa koje adrese možemo pristupiti PFSense GUI-u. U ovom slučaju je to 192.168.1.1. kako smo i podesili Default Getaway-e na virtualnim mašinama. PFSense automatski uvijek postavlja 192.168.1.1 adresu, pa ju je potrebno promijeniti ako nam ne odgovara.

Glavni izbornik
Glavni izbornik

GUI pristup i Proxy server

Nakon prijašnjih koraka imamo mogućnost pristupa PFSense GUI-u na svim virtualnim mašinama (XP i Ubuntu 11.10). Slika ispod prikazuje početni ekran PFSense GUI-a.

PFSense GUI - početni zaslon
PFSense GUI - početni zaslon

Kako prvo želimo svim virtualnim mašinama na mreži 192.168.1.x omogućiti pristup internetu, koristit ćemo Proxy server. Nadalje, moramo provjeriti ima li pfSense FreeBSD virtualna mašina uopće pristup internetu. To možemo provjeriti pomoću Shell-a (slika ispod).

Shell - ping Google
Shell - ping Google

Sa slike je očito da FreeBSD mašina ima pristup internetu. Sada ulazimo ponovo u GUI i promijenimo određene postavke. Prvo, na System -> General setup upišemo Hostname, Domain i DNS servers (u našem slučaju je samo jedan). Ovdje možemo promijeniti i Time zone.

General setup
General setup

Na Interfaces -> LAN postavili smo Type: Static, te na slici ispod vidimo da je statična IP adresa 192.168.1.1. Kod Interfaces -> WAN smo postavili Type: DHCP.

LAN interface
LAN interface
WAN interface
WAN interface

Sada možemo instalirati squid za pristup internetu preko Proxy servera. Idemo na System -> Packages -> Available packages i odabremo squid. Nakon što instalacija završi na Services -> Proxy Server možemo omogućiti proxy. Odaberemo Proxy interface (u našem slučaju LAN), označimo "Allow users on interface", upišemo log store directory i Proxy port. Ako ne odaberemo samo Proxy port, po default-u će mu pfSense dodijeliti 3128.

Proxy server: General settings
Proxy server: General settings
Proxy server: General settings
Proxy server: General settings

Sljedeće što je važno je na Services -> Proxy Server -> Access Control -> Allowed subnets upisati subnet-e kojima će biti dopušteno korištenje Proxy servera (slika ispod). Ako scroll-amo malo dolje, vidjet ćemo da ovdje možemo upisati ban-ane host adrese (Banned host addresses) i adrese na white i black listi.

Proxy server: Access Control
Proxy server: Access Control

To bi trebalo biti to. Sada ako na bilo kojem browser-u omogućimo Proxy server (Address: 192.168.1.1/24 i port koji smo gore odabrali), trebali bi imati pristup internetu sa te virtualne mašine.

Proxy server (Google Chrome)
Proxy server (Google Chrome)
Internet pristup sa virtualne mašine (Google Chrome)
Internet pristup sa virtualne mašine (Google Chrome)

Firewall pravila

Kod firewall pravila moguće je obaviti gotovo sve vrste filtriranja prometa. Mi ćemo u ovom tutorialu pokazati kako blokirati kompletan promet jednog računala. Odlučili smo se za blokiranje prometa Ubuntu računala (IP: 192.168.1.6). Za početak potrebno je otići na Firewall -> Rules -> LAN i odabrati Add new rule. Pod Action odaberemo Block, Interface: LAN (u ovom slučaju nam treba za LAN mrežu), Protocol: any (zato što blokiramo sav promet), Source: Single host or alias i adresu 192.168.1.6 (Ubuntu VM).

Firewall rule
Firewall rule

U nastavku još možemo uključiti Log i upisati opis block-a po želji.

Firewall rule
Firewall rule

Za kaj je potrebno pritisnuti "Apply changes". Ako sada odemo na Ubuntu računalo vidjeti ćemo da nemamo pristup web-u, dok kod XP računala nemamo ograničenja.

Ubuntu VM
Ubuntu VM
XP VM
XP VM

Sada naravno, ako želimo možemo disable-ati taj firewall rule i ponovo vratiti na staro stanje.

SquidGuard

Pomoću squidGuarda možemo blokirati ili dozvoliti pristup određenim stranicama. Kako bi ga omogućiti, idemo na Services -> Proxy filter i odaberemo opcije kao na slikama ispod. Najvažnije je da označimo enabled i Apply svaki puta kada nešto promijenimo.

Proxy filter
Proxy filter
Proxy filter
Proxy filter

Označimo blacklist jer ćemo ju dodati u nastavku.

Blacklist
Backlist

Mi smo blacklist-u preuzeli sa sljedeće adrese: http://www.shallalist.de/Downloads/shallalist.tar.gz jer smatramo da je napisana za uobičajene potrebe. Blacklist-u možemo vidjeti na Common ACL tabu kao na slici ispod.

Common ACL
Common ACL

Ako scroll-amo dolje vidimo da možemo upisati i proxy denied error.

proxy denied error
proxy denied error

Pod Target categories dodamo korisnika kojem ćemo dozvoliti pristup na sljedeće web stranice:

Target categories
Target categories
Target categories
Target categories

Za kraj je potrebno kod Target categories allow-at Korisniku pristup i ponovo Apply-at squidGuard servis.

Target categories - Allow
Target categories - Allow

Na slika ispod vidimo da je pristup net.hr-u moguć, dok pristup npr. facebook.com nije moguć. Za facebook-ov slučaj, ispisuje se error poruka.

net.hr - allowed
net.hr - allowed
facebook.com - denied
facebook.com - denied


VPN - PPTP

Za kraj bi htjeli pokazati i VPN PPTP metodu. Postavljanje VPN-a u pfSensu je iznimno jednostavno. Upišemo potrebne IP-eve i dodamo usere koje želimo da imaju pristup. Za početak odemo u VPN -> PPTP i označimo Enable PPTP server, te upišemo IP adrese koje ne spadaju u našu postojeću mrežu.

VPN PPTP
VPN PPTP

Sada odemo na tab Users i dodamo usera po želji.

VPN PPTP User
VPN PPTP User

Nakon dodavanja usera, moramo još otići na Firewall -> Rules -> PPTP - Edit. Odaberemo Destination port range from any to any, upišemo Description po želi i kliknemo Save.

Firewall PPTP
Firewall PPTP

Ako se pokušamo spojiti na VPN mrežu unutar npr. XP-a, tada vidimo da nam je omogućen pristup (slike ispod).

Connect to VPN
Connect to VPN
Connect to VPN (success)
Connect to VPN (success)


Zaključak

Na temelju svega pročitanog i istestiranog mogu zaključiti da je pfSense iznimno moćan alat koji zamjenjuje router/firewall. Takav router/firewall daje napredne mogućnosti za različite vrste mreža na koje se "postavlja". Kako ja nisam mogao testirati u takvom okruženju, koristio sam VMware Workstation 8.0 i VirutalBox. U tutorialu sam pokazao instalaciju, konfiguraciju, podešavanje mreža sa GUI-em, Firewall rules, squid, squidGuard i VPN PPTP.

Kao što sam i spomenuo prije, pfSense ima brojne mogućnosti i mislim da se za ovaj projekt od mene ne traži da to sve testiram, nego da se bolje uvedem u ovaj projekt, te da se bolje snalazim u slučaju ako će mi nešto slično zatrebati.

Dsagud 19:34, 28. prosinca 2011. (CET)


IPTables

IPTables su nastale kao dio NetFilter projekta, projekta koji je usmjeren na razvoj programske podrške za filtriranje i nadziranje mrežnih susutava. IPTables je besplatna implementacija vatrozida. Namijenjena je Linux operacijskim sustavima. Prvenstveno orijentirana ka drugom sloju (mrežni sloj) TCP/IP modela, ali može koristiti i elemente trećeg sloja (transportni sloj) kao i većina današnjih IP filtara.

Postoji mnogo različitih opcija, od prevođenja adresa, preko dinamičkog praćenja veza pa sve do modifikacija mrežnih paketa. Jedna od prednosti je i mogućnost zaštite na više slojeva TCP, od dohvaćanja MAC adresa do analize aplikacijskog sloja. Čitav mehanizam filtriranja zasniva se na tablicama i lancima (chains).

Alat je namijenjen prvenstveno administratorima sustava, ne postoji grafičko sučelje već se isključivo koristi putem komandne linije. IPTables omogućuje ispis pravila, dodavanje, brisanje i uređivanje postojećih pravila i ispis i pojedinog pravila.

Razvojni tim

Temeljni razvojni tim čine:

a kako se IPTables razvija kao rješenje otvorenog koda u njegovu stvaranju i usavršavanju su pomogli i mnogi drugi diljem svijeta.

Dinamičko filtriranje

Funkcionalnost koja razlikuje IPTables od prvih vartozidova. Za razliku od statičkog filtriranja koje se provodi samo na pojedinačnom paketu kod dinamičkog filtriranja se uzima u obzir i pripadnost paketa određenoj konekciji. Statičkim filtriranjem se ispituju izvorna i ciljana adresa paketa dok se kod dinamičkog filtriranja koriste odgovarajuće tablice da bi se zapisali podaci o uspostavljenim konekcijama i to od početka uspostave veze do njezinog kraja. Tijekom dinamičkog filtriranja se pored tablica sa pravilima statičkog filtriranja koriste i podaci iz opisnih tablica.Najviše resursa se troši na analizu paketa za uspostavljanje veza.

Dinamičko uspoređivanje paketa odvija se u tri koraka:

  1. Klijent najprije šalje paket sa postavljenom SYN zastavicom u zaglavlju paketa. Kod IPTables svi takvi paketi dobijaju atribut NEW.
  2. Druga strana, kojoj je namijenjen paket, odgovara povratnim paketom koji ima postavljene SYN i ACK zastavice.
  3. Na kraju slijedi odgovor klijenta slanjem paketa sa postavljenom ACK zastavicom.

IPTables tada paketima te veze dodjeljuje atribut ESTABLISHED i propušta sve izlazne pakete, a prihvaćaju se samo oni ulazni koji su dio te veze. Zatvaranje veze odvija se na sličan način samo što se na kraju dodjeljuje atribut CLOSED.


Tablice i lanci

Lanci (eng. chains)

Lanac je određena točka kroz koju u određenom trenutku prođe svaki paket i gdje se uspoređuje sa nizom pravila koja dalje usmjeravaju taj paket.


Pregleda lanaca i tablica od kojih se sastoje


Postoji pet vrsta lanaca:

Kroz INPUT lanac prolaze svi paketi kojima je odredište neki lokalni proces na računalu na kojemu se nalazi IPTables vatozid. Ako je odredište paketa neko drugo računalo iza vatrozida tada se paket prosljeđuje FORWARD lancu. Ukoliko je paket kreiran od strane neke lokalne aplikacije usmjerava se na OUTPUT lanac. PREROUTING i POSTROUTING lanci se najčešće ne koriste u izradi kućnog vatrozida. Nakon što se paket nađe u lancu nad njem je primjenljivo nekoliko akcija, a najznačajnije su

DROP akcija se koristi kada paket želimo jednostavno zanemariti tj. odbaciti ga i ne poslati nikakvu povratnu poruku. ACCEPT znači da se paket propušta dalje. REJECT slično kao i DROP odbacuje paket, ali i šalje povratnu poruku pošiljaocu. LOG se koristi za zapisivanje podataka o paketima i drugih potencijalno važnih informacija.

Sva pravila su zapisana u odgovarajućoj tablici i sva imaju isti oblik tipa „ako zaglavlje_paketa odgovara PRAVILU onda AKCIJA“. Pravila unutar tablice se provjeravaju linearno, ako prvo pravilo na odgovara paketu kojeg se provjerava prelazi se na drugi itd. Ako se ne pronađe niti jedno pravilo koje bi se odnosilo na dani paket, primjenjuje se opće pravilo. Opće pravilo može uključivati ili prihvaćanje ili odbijanje svih paketa za koje se ne pronađe specifično pravilo.

Princip crne i bijele liste

Crna lista

Crna lista ja princip u kojem dizajner pravila za opće pravilo stavlja prihvaćanje svih paketa, a specifičnim pravilima određuje koje pakete je potrebno odbaciti, tj. ne dopustiti im prolaz. Prednosti ovakvog sustava su te što se ne mora brinuti o tome da se je zaboravio propustiti određeni paket, a to mu je i najveća mana, jer ako zaboravimo zabraniti odeređenom paketu da prođe narušili smo sigurnost sustava kojega čuvamo vatrozidom.

Bijela lista

Bijela lista je princip suprotan Crnoj listi. Za opće pravilo se stavi da se svi paketi odbacuju, a određenim paketima se pomoću specifičnih pravila dopušta prolaz. Prednost ovog sustava je veći nivo sigurnosti jer ne može doći do prolaza nepredviđenih paketa, a obrnuto principu Crne liste mana mu je to što možemo na propustiti određene pakete koji bi trebali biti propušteni. Za veću sigurnost računalne mreže se predlaže korištenja principa Bijele liste.


Tablice (eng. tables)

Svaki lanac se sastoji od nekoliko podelemenata, tablica. INPUT sadrži dvije tablice (mangle, filter), OUTPUT četiri tablice (raw, mangle, nat, filter), a FORWARD također dvije tablice (mangle, nat). U tablicama su zapravo sadržana pravila kojima upravljamo filtriranjem mrežnih paketa.

Postoje četiri vrste tablica:

Tablica filter

Najčešće se koristi za filtriranje paketa. U tablicu se upisuju pravili i akcije koje se događaju ukoliko se ta pravila zadovolje. Nakon analize sadržaja paketa isti se ili propuštaju ili odbijaju. U tablicu se mogu upisivati sva pravila vezana za pakete, ali se preporuča da se upisuju samo pravila vezana za filtriranje.

Tablica nat

Tablica nat se koristi za podešavanje pravila vezanih za prevođenje adresa (Network Address Translation), tj. tablicu bi trebalo koristiti samo za pravila koja se tiču izmjene izvorne i ciljane IP adrese paketa.

Akcije koje se mogu provoditi korištenjem nat tablice:

Tablica mangle

Koristi se sa aktivnostima koje mijenjaju sadržaj paketa.

Akcije koje je moguće koristiti samo u mangle tablici:

Tablica raw

Tablica se nalazi isključivo u PREROUTING i OUTPUT lancima. Namjena joj je koristeći akcije onemogućiti rad sustava za praćenje veze.

Akcija:


IPTables na mobilnim uređajima

IPTables je moguće primjeniti i na mobilnim uređajima. Za sada je to moguće samo na uređajuma koji koriste Android OS i imaju root prava. Kao primjer korištenja IPTables ima aplikacija DroidWall koja pomoću IPTables akcija spriječava određene aplikacije da pristupaju Internetu.


Primjer

Neke naredbe:

  iptables -L                                              ispisuje sva pravila u svim lancima
  iptables -A LANAC [PRAVILO]                              dodaje PRAVILO u LANAC
  iptables -F                                              brisanje svih pravila
  iptables -P LANAC AKCIJA                                 mijenja opću politiku lanca
  iptables -A LANAC -p PROTOKOL --sport PORT -j AKCIJA     odabir politike za pojedini port  


Podešavanje postavki mreže na virtualnom računalu

Kako je IPtables aplikacija koja se pokreće samo na Linux OS, odlučili smo koristiti VirtualBox za instalaciju Linux sustava na virtualno računalo. Prije same instalacije bilo je potrebno konfigurirati postavke. Jedna od najbitnijih stavki je bila konfiguracija mreže. Smatramo da je najbolji izbor bio napraviti Bridget Adapter način spajanja virtualnog računala sa stvarnim jer tako je simulirana prava mreža i virtualno račualo ima pristup Internetu.

Instalacija Ubuntu-a

Kako nam je bila potrebna neka Linux distribucija odlučili smo se za Ubuntu 11.10 jer je to trenutno najpopularnija Linux distribucija.

Postoje samo opća pravila

Kao što vidimo na slici postavljena su samo opća pravila i to na sva tri lanca ACCEPT.

Dodano je prvo pravilo u INPUT lanac

Dodali smo pravilo koje ne dopušta dolazni promet sa IP adrese 213.202.98.138 (www.net.hr) kako bi provjerili radi li aplikacija ono što bi trebala raditi u teoriji, tj. blokira li nam pristup IP adresi 213.202.98.138.

Pristup stranici je onemogućen

Nakon toga smo dodali još neke stranice kojima je bio zabranjen pristup.


Pristup stranici je onemogućen


Na kraju smo složili konfiguraciju koja bi bila pogodna za neki poslovno uredski prostor. Tako postavljena pravila dozvoljavaju samo surfanje web prostorom odbacujući sve ostale pakete. To je zapravo konfiguracija na principu Bijele liste, svi paketi su zabranjeni osim onih kojima smo eksplicitno dozvolili da prođu. Da se doda još koje pravilo koje ne dozvoljava prolaz paketima specifičnih stranica vjerojatno bi dobili bazu najčešće korištene konfiguracije IPTables-a.

  iptables -P INPUT DROP
  iptables -A INPUT -p -tcp --sport html -j ACCEPT
  iptables -A INPUT -p -udp --sport html -j ACCEPT
  iptables -A INPUT -p -tcp --sport htmls -j ACCEPT
  iptables -A INPUT -p -udp --sport htmls -j ACCEPT
  iptables -A INPUT -p -tcp --sport 53 -j ACCEPT
  iptables -A INPUT -p -udp --sport 53 -j ACCEPT
Konfiguracija pravila koja dozvoljava samo surfanje web-om


Zaključak

IPTables je vrlo koristan alat za filtriranje nepoželjnog mrežnog prometa. Jedan je od najboljih alata za upotrebu na osobnim računalima ponajprije zbog opsega svojih mogućnosti, a i zbog činjenice da je u potpunosti besplatan. Uz malo truda i dosta znanja moguće je složiti vatrozid koji će uspješno braniti i naše računalo i našu kućnu mrežu.


Bojan Jungić 20:02, 6. siječnja 2012. (CET)




Literatura

  1. http://doc.pfsense.org/index.php/InstallationGuide (Preuzeto 27.12.2011.)
  2. http://www.iceflatline.com/2010/08/install-and-configure-pfsense-in-your-home-network/ (Preuzeto 27.12.2011.)
  3. http://bs.wikipedia.org/wiki/PfSense (Preuzeto 28.12.2011.)
  4. http://en.wikipedia.org/wiki/PfSense (Preuzeto 28.12. 2011.)
  5. http://timita.org/wordpress/2011/08/01/protect-windows-with-pfsense-and-virtualbox-part-4-installing-and-configuring-pfsense-on-virtualbox/ (Preuzeto 28.12.2011.)
  6. http://bs.wikipedia.org/wiki/M0n0wall (Preuzeto 28.12.2011.)
  7. http://www.pfsense.org/index.php?option=com_content&task=view&id=71&Itemid=81 (Preuzeto 28.12.2011.)
  8. http://www.pfsense.org/index.php?option=com_content&task=view&id=40&Itemid=43 (Preuzeto 28.12.2011.)
  9. http://doc.pfsense.org/index.php/Features_List (Preuzeto 28.12.2011.)
  10. http://en.wikipedia.org/wiki/Openvpn (Preuzeto 30.12.2011.)
  11. http://en.wikipedia.org/wiki/PPTP (Preuzeto 30.12.2011.)
  12. http://en.wikipedia.org/wiki/Pppoe (Preuzeto 30.12.2011.)
  13. http://en.wikipedia.org/wiki/Captive_portal (Preuzeto 30.12.2011.)
  14. http://www.pfsense.org/index.php?option=com_content&task=view&id=43&Itemid=44 (Preuzeto 30.12.2011.)
  15. http://www.pfsense.org/index.php?option=com_content&task=view&id=45&Itemid=48 (Preuzeto 30.12.2011.)
  16. http://www.pfsense.org/index.php?option=com_content&task=view&id=59&Itemid=58 (Preuzeto 30.12.2011.)
  17. http://www.youtube.com/watch?v=5vnnBl-5K9k&feature=related
  18. http://www.youtube.com/watch?v=4HAhaLE8xJo&feature=related
  19. http://www.youtube.com/watch?v=yAl2fOciKz4


  1. http://barok.foi.hr/~tkisason/dl/iptables-quick-reference.pdf (Preuzeto 05.01.2012.)
  2. http://www.dd-wrt.com/wiki/index.php/Iptables_command#Tables.2C_Chains.2C_and_Targets (Preuzeto 05.01.2012.)
  3. http://en.wikipedia.org/wiki/Iptables (Preuzeto 03.01.2012.)
  4. http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables (Preuzeto 05.01.2012.)
  5. http://sistemac.carnet.hr/system/files/Netfilter.pdf (Preuzeto 05.01.2012.)
  6. http://www.cert.hr/sites/default/files/CCERT-PUBDOC-2007-07-198.pdf (Preuzeto 05.01.2012.)
  7. http://www.justlinux.com/nhf/Security/IPtables_Basics.html (Preuzeto 05.01.2012.)
  8. http://www.netfilter.org/projects/iptables/index.html (Preuzeto 03.01.2012.)
Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima