User Tools

Site Tools


pf_kao_desktop_firewall_na_netbsd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
pf_kao_desktop_firewall_na_netbsd [2009/04/30 15:00]
soxxx created
pf_kao_desktop_firewall_na_netbsd [2009/04/30 15:23]
soxxx
Line 3: Line 3:
 PF paket filter je zastitni zid koji je nastao na OpenBSD platformi, a kasnije je portovan na FreeBSD i NetBSD. Verzija koja dolazi sa NetBSD 4.0 izdanjem je iz OpenBSD 3.9, dok je CURRENT grana skoro dobila PF kod iz OpenBSD 4.2. PF paket filter je zastitni zid koji je nastao na OpenBSD platformi, a kasnije je portovan na FreeBSD i NetBSD. Verzija koja dolazi sa NetBSD 4.0 izdanjem je iz OpenBSD 3.9, dok je CURRENT grana skoro dobila PF kod iz OpenBSD 4.2.
  
-Postoji dosta tutorijala za PF tako da necemo dublje zalaziti u konfiguraciju,​ podesicemo PF za potrebe obicnog deskop korisnika. Da bi se PF startovao sa sistemom potrebno je da se omoguci u kernelu. Medjutim za one koji ne zele da cackaju kernel konfiguraciju postoji i drugo resenje: kernel modul, ili ti loadable kernel module tj LKM, i upravo cemo objasniti taj nacin.+Postoji dosta tutorijala za PF tako da necemo dublje zalaziti u konfiguraciju,​ podesicemo PF za potrebe obicnog deskop korisnika. Da bi se PF startovao sa sistemom potrebno je da se omoguci u kernelu. Medjutim za one koji ne zele da cackaju kernel konfiguraciju postoji i drugo resenje: kernel modul, ili ti **loadable kernel module** tj [[http://​netbsd.gw.com/​cgi-bin/​man-cgi?​lkm++NetBSD-current|LKM]], i upravo cemo objasniti taj nacin.
  
-Da bi omogucili LKM potrebno je uneti sledece u /​etc/​rc.conf(5):​+Da bi omogucili LKM potrebno je uneti sledece u **/​etc/​rc.conf(5)**:
  
-lkm=YES +  ​lkm=YES
-Moduli se nalaze u /usr/lkm/ direktorijumu (ili /lkm) a lkm.conf fajl odredjuje koji ce se moduli ucitati pri podizanju sistema. Alati koji omogucavaju dinamicko ucitavanje modula u kernel su: modload(8) i modunload(8),​ dok modstat(8) komanda izlistava ucitane module. Sad cemo videti kako se oni koriste. Probacemo da ucitamo pf modul:+
  
-Code: +Moduli se nalaze u **/usr/lkm/** direktorijumu (ili **/lkm**) a **lkm.conf** fajl odredjuje koji ce se moduli ucitati pri podizanju sistema. Alati koji omogucavaju dinamicko ucitavanje modula u kernel su: **modload(8)** i **modunload(8)**,​ dok **modstat(8)** komanda izlistava ucitane module. Sad cemo videti kako se oni koriste. Probacemo da ucitamo pf modul:
-# modload -v /usr/lkm/pf.o+
  
-modload: reserving 147456 bytes of memory +  # modload -v /​usr/​lkm/​pf.o 
-Module loaded as ID 0modstat(8) komanda izlistava module koji su ucitani u kernel, ako se pokrene bez opcija izlistace sve ucitane module:+   
 +  ​modload: reserving 147456 bytes of memory 
 +  Module loaded as ID 
 +**modstat(8)** komanda izlistava module koji su ucitani u kernel, ako se pokrene bez opcija izlistace sve ucitane module:
  
-Code: +  ​# modstat 
-# modstat+   
 +  Type    Id   ​Offset Loadaddr Size Info     Rev Module Name 
 +  DEV       ​0 ​ -1/161 cd8e0000 0090 cd9019c0 ​  2 pf
  
-Type    Id   ​Offset Loadaddr Size Info     Rev Module Name +Komande ​nam pokazuju da je modul uspesno ucitan, a da bi se modul ucitao prilikom ponovnog startovanja sistema potrebno je uneti sledece u **lkm.conf(5)**:
-DEV       ​0 ​ -1/161 cd8e0000 0090 cd9019c0 ​  2 pfKomande ​nam pokazuju da je modul uspesno ucitan, a da bi se modul ucitao prilikom ponovnog startovanja sistema potrebno je uneti sledece u lkm.conf(5):​+
  
-Code: +  ​# path          options ​        ​entry ​          ​postinstall ​    ​output ​         when 
-# path          options ​        ​entry ​          ​postinstall ​    ​output ​         when +  /​usr/​lkm/​pf.o ​  ​- ​              ​- ​              ​- ​              ​- ​              - 
-/​usr/​lkm/​pf.o ​  ​- ​              ​- ​              ​- ​              ​- ​              ​-Putanja do modula je obavezna, ostale opcije mogu biti prazne ("​-"​). Za vise informacija o opcijama pogledajte man stranicu. Sada nam ostaje da napisemo minimalni pf.conf(5) fajl:+ 
 +Putanja do modula je obavezna, ostale opcije mogu biti prazne ("​-"​). Za vise informacija o opcijama pogledajte man stranicu. Sada nam ostaje da napisemo minimalni ​**pf.conf(5)** fajl: 
 + 
 +  block in log all 
 +  pass out all keep state
  
-block in log all 
-pass out all keep state 
 Ovo je stvarno sve sto nam je potrebno od pravila. Znaci blokiramo sve dolazne konekcije i logiramo blokirane pakete. Posto verujemo sebi, sve odlazne konekcije su dozvoljene i cuvaju se informacije o konekciji kako bi pf propustio dolazne pakete koji pripadaju konekcijama koje smo mi zapoceli, iako na pocetku imamo definisano pravilo da blokiramo sav dolazni saobracaj. Ovo je stvarno sve sto nam je potrebno od pravila. Znaci blokiramo sve dolazne konekcije i logiramo blokirane pakete. Posto verujemo sebi, sve odlazne konekcije su dozvoljene i cuvaju se informacije o konekciji kako bi pf propustio dolazne pakete koji pripadaju konekcijama koje smo mi zapoceli, iako na pocetku imamo definisano pravilo da blokiramo sav dolazni saobracaj.
-Posto zelimo da se pf startuje sa sistemom ubacujemo sledece u /​etc/​rc.conf(5):​+Posto zelimo da se pf startuje sa sistemom ubacujemo sledece u **/​etc/​rc.conf(5)**: 
 + 
 +  pf=YES
  
-pf=YES 
 Ako se /usr nalazi na posebnoj particiji, bice vam neophodno i ovo: Ako se /usr nalazi na posebnoj particiji, bice vam neophodno i ovo:
  
-critical_filesystems_local="​${critical_filesystems_local} /usr"+  ​critical_filesystems_local="​${critical_filesystems_local} /usr" 
 Na kraju startujemo PF i probamo da ucitamo pravila: Na kraju startujemo PF i probamo da ucitamo pravila:
  
-Code: +  ​# pfctl -e -f /etc/pf.conf 
-# pfctl -e -f /etc/pf.confZa ​kraj, posto imamo opciju logovanja blokiranih paketa u pf.conf(5), potrebno je omoguciti i pflog(4) interfejs preko kojeg ce pflogd(8) daemon prihvatati informacije i beleziti ih u /​var/​log/​pflog u pcap formatu. Te informacije se kasnije mogu pregledati koriscenjem tcpdump(8) komande, ili u realnom vremenu "​slusajuci"​ na pflog0 interfejsu. Dodajemo sledece u rc.conf:+ 
 +Za kraj, posto imamo opciju logovanja blokiranih paketa u pf.conf(5), potrebno je omoguciti i **pflog(4)** interfejs preko kojeg ce **pflogd(8)** daemon prihvatati informacije i beleziti ih u **/​var/​log/​pflog** [[http://​en.wikipedia.org/​wiki/​Libpcap|pcap]] formatu. Te informacije se kasnije mogu pregledati koriscenjem ​**tcpdump(8)** komande, ili u realnom vremenu "​slusajuci"​ na **pflog0** interfejsu. Dodajemo sledece u rc.conf: 
 + 
 +  pflogd=YES
  
-pflogd=YES 
 I onda: I onda:
  
-Code: +  ​# ifconfig pflog0 up        # Ili /​etc/​rc.d/​pflog ​start
-# ifconfig pflog0 up        # Ili /​etc/​rc.d/​pflog ​startOnda mozemo koristiti tcpdump:+
  
 +Onda mozemo koristiti tcpdump:
  
-Code: +  ​tcpdump -n -e -ttt -i pflog0Ako zelite da citate podatke iz /​var/​log/​pflog fajla, onda koristite -r umesto -i opciju.
-tcpdump -n -e -ttt -i pflog0Ako zelite da citate podatke iz /​var/​log/​pflog fajla, onda koristite -r umesto -i opciju.+
  
 Reference: Reference:
  
-NetBSD pf(4) man page: http://​netbsd.gw.com/​cgi-bin/​man-cgi?​pf … SD-current +NetBSD pf(4) man page: http://​netbsd.gw.com/​cgi-bin/​man-cgi?​pf … SD-current\\ 
-NetBSD Packet Filter information:​ http://​www.netbsd.org/​docs/​network/​pf.html +NetBSD Packet Filter information:​ http://​www.netbsd.org/​docs/​network/​pf.html\\ 
-Introduction to NetBSD Lodable Kernel Modules: http://​www.home.unix-ag.org/​bmeurer/​Net … o-lkm.html +Introduction to NetBSD Lodable Kernel Modules: http://​www.home.unix-ag.org/​bmeurer/​Net … o-lkm.html\\
  
 +dalibor@soxxx 2009
pf_kao_desktop_firewall_na_netbsd.txt · Last modified: 2017/04/28 10:25 (external edit)