Mrežno filtriranje - PFSense, iptables
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 je zapravo “odvojen” od m0n0wall projekta 2004. godine
- PFSense je namijenjen za više naprednih mogućnosti poslovne klase nego m0n0wall
- m0n0wall je puno jednostavniji
- PFSense je puno popularniji
- m0n0wall je baziran na starom BSD karnelu
- PFSense je update-iraniji i sadrži više dodataka
- PFSense ima podršku UPnP-a, balansiranje više WAN-a, ITMPs-a itd.
- PFSense je više usmjeren full PC instalacijama, dok je m0n0wall na građen hardver
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:
- [9]Firewall
- Jednostavno grafičko sučelje (nije potrebno znati kako kreirati pravila firewalla)
- Čarobnjak za instalaciju
- Wireless Access Point (potrebno WiFi sučelje)
- Mogućnost postavljanja više subneta
- Traffic Shaping (ITMPs)
- NAT
- Redundancija
- CARP
- pfsync
- nmap, ping
- VPN – IPsec, OpenVPN, PPTP
- PPPoE Server
- RPD
- Koristi AJAX za pravovremene informacije
- Dinamički DNS
- Captive Portal
- DHCP Server
- Shell pristup
- WOL
- Proxy Server
- Mogućnost backup-a i povrata firewall konfiguracije preko GUI-a
- Uređivanje datoteka preko web GUI-a
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
- [8]omogućava filtriranje prema izvornoj i destinacijskoj IP adressi, IP protokolu, izvornom i destinacijskom portu za TCP i UDP promet
- omogućava ograničenje istovremenih veza prema definiranom pravilu
- PFSense koristi p0f, napredni i pasivni OS uzimatelj otisaka koji omogućava filtriranje preko operacijskog sustava inicijalizirajući vezu. PFSense može također blokirati računala sa određenim operacijskim sustavom i onemogućiti im pristup internetu. Npr. može blokirati sve Linux OS-ove. PFSense jednostavno detektira OS i blokira mu pristup.
- omogućava opciju zapisa prometa koji odgovara određenom pravilu
- sadrži iznimno fleksibilnu politiku usmjeravanja tako da odabire prolaz (gateway) na osnovu pravila (za failover, više WAN-a i sl.)
- zadana imena omogućuju grupiranje i imenovanje IP-eva, mreža i portova. To pomaže da Vaša firewall pravila ostanu jasna i jednostavna za shavatiti, posebno u okolinama sa više javnih IP-eva i brojnim serverima.
- Prozirni sloj 2 (Transparent layer 2) osposobljen firewall-om može spojiti sučelja i filtere prometa između njih. Čak omogućuje i IP-less firewall (ako trebate IP za upravljačke svrhe)
- paket normalizacije - opis iz pf scrub dokumentacije - "ribanje" (scrubbing) je normalizacija paketa na način da ne postoji nejasnoća u saznanju krajnje destinacije paketa. Scrub direktiva ponovno sastavlja fragmentirane pakete, zaštičujući pojedine operacijske sustave od napada i ispušta TCP pakete koji imaju nevažeću kombinaciju. To je uključeno prema defaultu, a može se isključiti ako je potrebno. Ova opcija donosi probleme nekim NFS implementacijama, ali je sigurna i bilo bi poželjno kad bi ostala uključena.
- Isključen filter (možete isključiti firewall filter potpuno ako želite prebaciti PFSense na čisti router)
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:
- [8]Podesiva veličina tablice stanja - PFSense ima više produkcijskih instalacija koristeći stotine tisuća različitih stanja. Zadana veličina tablice stanja ovisi o RAM-ima u Vašem računalu i može se podesiti prema želji. Svako stanje zauzima oko 1 KB RAM-a, pa je potrebna prilagodba tablice stanja prema Vašem računalu.
- Temelje se na nekoliko pravila:
- istodobno limitiranje konekcije klijenata
- limitiranje novih konekcija po sekundi
- definiranje timeouta stanja
- definiranje vrste stanja
- Postoje više vrsta stanja, a PFSense nudi opcije za njihovo rukovanje. To su:
- Zadrži stanje - "Keep state" (radi sa svim protokolima i default-no je za sva pravila)
- Podesi stanje - "Modulate state" (radi samo sa TCP-om)
- Synproxy stanje (Proxiji dolaze TCP vezama da bi pomogli zaštititi servere od SYN poplava. Ova opcija uključuje funkcionalnost kombiniranja "Zadrži" stanja i "Podasi" stanja.)
- Nijedno - "None" (Nije poželjno zadržavati stanje unosa za ovaj promet. Ovo se vrlo rijetko koristi, ali je dostupno jer se može upotrijebiti kod ograničenih okolnosti.
- Opcije optimizacije tablice stanja (pf nudi četiri opcije optimizacije:
- Normlano - "Normal" (defaultn-i algoritam)
- Visoka latencija - "High latency" (Korisno za poveznice sa visokom latencijom, npr. Statelitske veze. Na taj način veze koje miruju kasnije ističu.)
- Agresivno - "Aggressive" (Kod ove opcije veze koje miriju puno brže ističu i puno efektivnije se koriste hardverski resursi, ali može odbacti potrebne (zakonite) veze.)
- Konzervativno - "Conservative" (Pokušava izbjeći odbacivanje potrebne (zakonite) veze tako da poveća memoriju i korištenje CPU-a.)
NAT
[8]Network Address Translation
- omogućuje korištenje više javnih IP adresa
- 1:1 NAT za pojedine IP-jeve ili čitave subnet-e (podmreže).
- odlazni NAT
- NAT refleksija - kod nekih konfiguracija, NAT refleksija je moguća, tako da se servisi mogu pristupati preko javnih IP-jeva od internih mreža.
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:
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:
- Najveći broj istovremenih veza - limitira broj veza koje je moguće uspostaviti.
- Idle timeout (vrijeme za klijente koji miruju) - isključuje klijente koji miruju na mreži određeno vrijeme.
- Hard timeout (teški (strogi) timeout) - disconnect-a sve klijente na mreži u određeno vrijeme.
- Login prozor - prozor koji iskoči sa potrebe logout-a.
- URL preusmjeravanje - nakon logiranja klijent može biti ponovo preusmjeren na drugu adresu.
- MAC filtriranje - PFSense filteri koriste MAC adrese i ako imate subnet iza router-a na portalu zatočeništva, svaki uređaj iza routera će se autorizirati kada se korisnik prijavi. MAC filtriranje se isto tako može i iskljčiti.
- Mogućnosti provjere - postoji tri opcije:
- nema autentikacije
- lokalni voditelj (Local user manager) - korisnik prođe kroz portal bez logiranja.
- RADIUS autentikacija - koristi se u korporacijama.
- RADIUS sposobnosti su:
- HTTP ili HTTPS - portal može koristiti i HTTP i HTTPS.
- Upravitelj datoteka - dozvoljava upload-anje slika koje će se koristiti na portalu.
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:
- pfSense-2.0.1-RELEASE-arch.iso.gz (za live CD)
- pfSense-memstick-2.0.1-RELEASE-arch.img.gz (za USB stick)
- pfSense-2.0.1-RELEASE-size-arch-nanobsd.img.gz (NanoBSD/ugrađeni pristup - Serijska konzola)
- pfSense-2.0.1-RELEASE-size-arch-nanobsd_vga.img.gz (NanoBSD/ugrađeni pristup VGA konzola)
- *.md5 (MD5 hash datoteke za provjeru preuzimanja)
- *.sha256 (SHA256 hash datoteke za provjeru preuzimanja)
Nadograđene datoteke
[14]Oblici:
- pfSense-Full-Update-2.0.1-RELEASE-arch.tgz (cijela upadate instalacija)
- pfSense-2.0.1-RELEASE-size-arch-nanobsd-upgrade.img.gz (NanoBSD/ugrađeni pristup - Serijska konzola)
- pfSense-2.0.1-RELEASE-size-arch-nanobsd_vga-upgrade.img.gz (NanoBSD/ugrađeni pristup - VGA konzola)
- *.md5 (MD5 hash datoteke za provjeru preuzimanja
- *.sha256 (SHA256 hash datoteke za provjeru preuzimanja)
[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:
- Live CD ili USB stick instalacija
- Hard disk instalacija
- 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:
- Verzija koja koristi Serijsku konzolu
- 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:
- CPU - 100 MHz Pentium
- RAM - 128 MB
[15]Zahtjevi za pojedine platforme:
Za Live CD / USB stick:
- CD-ROM uređaj
- USB flash uređaj ili uređaj za diskete (Floppy drive)
Za Hard disk:
- CD-ROM uređaj za početne instalacije
- Hard disk od 1GB
Za ugrađeni pristup:
- CF kartica od 512 MB
- Serijski port za konzolu
Tim developera
[16]Utemeljitelji:
- Chris Buechler
- Scott Ullrich
[16]Aktivni developeri:
- Bill Marquette
- Holger Bauer
- Erik Kristensen
- Seth Mos
- Scott Dale
- Martin Fuchs
- Ermal Luçi
- Matthew Grooms
- Mark Crane
- Jim Pingle
- Rob Zelaya
- Renato Botelho
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:
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.
Slijedi konfiguracija IP adresa. Na Windows XP-u koristili smo:
- IP address: 192.168.1.5
- Subnet mask: 255.255.255.0
- Default gateway: 192.168.1.1 (za PFSense)
Na isti način smo konfigurirali i u Linux Ubuntu 11.10. Jedino smo koristili drugu IP adresu. Koristili smo:
- IP address: 192.168.1.6
- Subnet mask: 255.255.255.0
- Default gateway: 192.168.1.1 (za PFSense)
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.
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.
Uzeli smo 4GB prostora diska i označili da koristimo "Single file".
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.
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.
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.
Kada nam se prikaže screen kao na slici ispod, pritisnemo "I" za ulazak u instalacijski proces.
Za konfiguraciju konzole pritisnemo "Accept these Settings".
Nadalje, "Quick/Easy Install".
Pritisnemo OK i pričekamo da instalacija završi. Instalacija nas pita za Karnel konfiguraciju, gdje biramo "Symetric mutiprocessing karnel"
Za kraj restartamo virtualnu mašinu.
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.
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".
Sada znamo da moramo staviti "em0" za WAN, a "em1" za LAN mrežu. Kada nas pita za opcionalno sučelje, pritisnemo ENTER.
Nakon odabira, dobivamo prikaz WAN i LAN sučelja. Ovdje pritisnemo "yes" ili "y" za prihvaćanje.
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.
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.
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).
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.
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.
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.
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.
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.
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).
U nastavku još možemo uključiti Log i upisati opis block-a po želji.
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.
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.
Označimo blacklist jer ćemo ju dodati u nastavku.
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.
Ako scroll-amo dolje vidimo da možemo upisati i proxy denied error.
Pod Target categories dodamo korisnika kojem ćemo dozvoliti pristup na sljedeće web stranice:
- Google.com
- Google.hr
- Net.hr
Za kraj je potrebno kod Target categories allow-at Korisniku pristup i ponovo Apply-at squidGuard servis.
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.
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.
Sada odemo na tab Users i dodamo usera po želji.
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.
Ako se pokušamo spojiti na VPN mrežu unutar npr. XP-a, tada vidimo da nam je omogućen pristup (slike ispod).
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:
- Marc Boucher,
- Martin Josefsson,
- Jozsef Kadlecsik,
- Patrick McHardy,
- James Morris,
- Harald Welte i
- Rusty Russell,
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:
- Klijent najprije šalje paket sa postavljenom SYN zastavicom u zaglavlju paketa. Kod IPTables svi takvi paketi dobijaju atribut NEW.
- Druga strana, kojoj je namijenjen paket, odgovara povratnim paketom koji ima postavljene SYN i ACK zastavice.
- 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.
Postoji pet vrsta lanaca:
- PREROUTING
- FORWARD
- INPUT
- OUTPUT
- POSTROUTING
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
- ACCEPT
- REJECT
- LOG
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:
- filter- određuje da li se paketi prihvaćaju ili odbijaju
- mangle – izmjena pojedinih polja paketa ukoliko je potrebno
- nat – prevođenje IP adresa i portova
- raw – ispitivanje paketa prije nago li ga obuhvati mehanizam praćenja veza
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:
- DNAT – koristi se kod prevođenja ciljnih adresa, npr. kada se web poslužitelj nalazi u okviru privatne mreže, prevođenjem ciljne adrese omogućena je komunikacija sa Internetom
- SNAT – koristi se kod prevođenja izvornih adresa, npr. kada iz privatne mreže želimo komunicirati sa Internetom
- REDIRECT – moguće koristiti samo u PREROUTING i OUTPUT lancima, sa namjenom preusmjeravanja paketa na lokalno računalo, npr. primjenjuje se kod posredničkih poslužitelja (eng. proxy).
Tablica mangle
Koristi se sa aktivnostima koje mijenjaju sadržaj paketa.
Akcije koje je moguće koristiti samo u mangle tablici:
- TOS – izmjena polja Type Of Service, određuje načine prosljeđivanja paketa
- TTL – Time To Live, broj ponovnog odašiljanja paketa nakon zanemarivanja
- MARK – dodavanje posebnih oznaka paketima
- SECMARK – dodavanje oznaka vezanih za sigurnost
- CONNSECMARK – kopiranje sigurnosnih oznake jednog paketa na sve pakete u toj vezi
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:
- NOTRACK – onemogućuje praćenje veze pojedinog paketa
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
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.
Kako nam je bila potrebna neka Linux distribucija odlučili smo se za Ubuntu 11.10 jer je to trenutno najpopularnija Linux distribucija.
Kao što vidimo na slici postavljena su samo opća pravila i to na sva tri lanca ACCEPT.
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.
Nakon toga smo dodali još neke stranice kojima je bio zabranjen pristup.
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
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
- http://doc.pfsense.org/index.php/InstallationGuide (Preuzeto 27.12.2011.)
- http://www.iceflatline.com/2010/08/install-and-configure-pfsense-in-your-home-network/ (Preuzeto 27.12.2011.)
- http://bs.wikipedia.org/wiki/PfSense (Preuzeto 28.12.2011.)
- http://en.wikipedia.org/wiki/PfSense (Preuzeto 28.12. 2011.)
- 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.)
- http://bs.wikipedia.org/wiki/M0n0wall (Preuzeto 28.12.2011.)
- http://www.pfsense.org/index.php?option=com_content&task=view&id=71&Itemid=81 (Preuzeto 28.12.2011.)
- http://www.pfsense.org/index.php?option=com_content&task=view&id=40&Itemid=43 (Preuzeto 28.12.2011.)
- http://doc.pfsense.org/index.php/Features_List (Preuzeto 28.12.2011.)
- http://en.wikipedia.org/wiki/Openvpn (Preuzeto 30.12.2011.)
- http://en.wikipedia.org/wiki/PPTP (Preuzeto 30.12.2011.)
- http://en.wikipedia.org/wiki/Pppoe (Preuzeto 30.12.2011.)
- http://en.wikipedia.org/wiki/Captive_portal (Preuzeto 30.12.2011.)
- http://www.pfsense.org/index.php?option=com_content&task=view&id=43&Itemid=44 (Preuzeto 30.12.2011.)
- http://www.pfsense.org/index.php?option=com_content&task=view&id=45&Itemid=48 (Preuzeto 30.12.2011.)
- http://www.pfsense.org/index.php?option=com_content&task=view&id=59&Itemid=58 (Preuzeto 30.12.2011.)
- http://www.youtube.com/watch?v=5vnnBl-5K9k&feature=related
- http://www.youtube.com/watch?v=4HAhaLE8xJo&feature=related
- http://www.youtube.com/watch?v=yAl2fOciKz4
- http://barok.foi.hr/~tkisason/dl/iptables-quick-reference.pdf (Preuzeto 05.01.2012.)
- http://www.dd-wrt.com/wiki/index.php/Iptables_command#Tables.2C_Chains.2C_and_Targets (Preuzeto 05.01.2012.)
- http://en.wikipedia.org/wiki/Iptables (Preuzeto 03.01.2012.)
- http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables (Preuzeto 05.01.2012.)
- http://sistemac.carnet.hr/system/files/Netfilter.pdf (Preuzeto 05.01.2012.)
- http://www.cert.hr/sites/default/files/CCERT-PUBDOC-2007-07-198.pdf (Preuzeto 05.01.2012.)
- http://www.justlinux.com/nhf/Security/IPtables_Basics.html (Preuzeto 05.01.2012.)
- http://www.netfilter.org/projects/iptables/index.html (Preuzeto 03.01.2012.)