membangun firewall dengan PF (packet Filtering) di FREEBSD 6.0
February 3rd, 2007 by cipitunkakhirnya setelah lama berjuang melawan kemalasan menulis blog, akhirnya gw tulis aja ini sedikit tutorial mengenai bagaimana cara membangun firewall menggunakan PF. PF merupakan firewall bawaan dari openBSD, namun sudah di porting ke FreeBSD. sintaksnya gampang, mudah untuk dipahami. dari pengalaman saya, ternyata PF lebih gampang ketimbang ipfw, (walaupun pada awalnnya saya merasa agak sukar menggunakan PF untuk pertama kalinya). tanpa basa basi langsung aja ke tutorialnya.
langkah pertama kali yang saya lakukan adalah melakukan kompile kernel. sebenarnya tanpa kompile kernel freebsd pun bisa, namun saya prefer untuk melakuukan kompile kernel. berikut ini adalah langkah kompile kernel :
- cd /usr/src/sys/i364/conf
- cp GENERIC firewall
- ee firewall (di file tersebut terdapat banyak sekali modul modul kernel yang di load oleh mesin Freebsd. )
- tambahkan baris berikut ini :
- device pf
- device pflog
- device pfsync
- options ALTQ
- options ALTQ_RED
- options ALTQ_CBQ
- options ALTQ_RIO
- options ALTQ_HFSC
- options ALTQ_PRIQ
- options ALTQ_NOPCC
- abis itu save, dan kompile kernel kamu, caranya :
- config firewall
- cd ../compile/firewall
- make cleandepend; make depend
- make; make install
- kalo ga ada error waktu kompile kernel, berarti semuanya berjalan normal.
- trus tambahin baris berikut di file /etc/rc.conf :
- pf_enable="YES"
- pf_rules="/etc/pf.conf"
- pf_flags=""
- pflog_enable="YES"
- pflog_logfile="/var/log/pflog"
- reboot komputermuuuu
setelah selesai langkah diatas, lalu buat file konfigurasi firewalll nya di file /etc/pf.conf. konfigurasinya adalah sebagai berikut :
if = "xl0" ###(interface pada mesin freebsd. di linux dikenali sebagai eth0)
dns="10.14.203.7" ###(ip address untuk dns server)
no_route="{192.168.0.0/16, 127.0.0.0/8, 0.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, 204.152.64.0/23, 224.0.0.0/3}"
netbios_sharing="{137,138,139,445,81}"
ob_state="flags S/SA keep state" ###paket yang keluar dari mesin FreeBSD
ib_state="flags S/SA keep state" ###paket yang masuk ke mesin FreeBSD
set block-policy drop ## rule status awal dari rule firewall adalah di drop untuk semua paket yang masuk maupun yang keluar.
set state-policy if-bound
set loginterface $if #buat ngambil statistik pada interface xl0
set fingerprints "/etc/pf.os"
antispoof for $if
pass in quick on lo0 all
#ijinkan akses keluar untuk dns server
pass out quick on $if proto tcp from any to any port 53 $ob_state
pass out quick on $if proto udp from any to any port 53 keep state
#ijinkan akses keluar untuk http https dan ssh juga ftp
pass out quick on $if proto tcp from any to any port 22 $ob_state
pass out quick on $if proto tcp from any to any port 80 $ob_state
pass out quick on $if proto tcp from any to any port 443 $ob_state
pass out quick on $if proto tcp from any to any port 21 $ob_state
#ijinkan keluar ping
pass out quick on $if inet proto icmp from any to any icmp-type 8 keep state
block out log on $if #### selain rule yang diatas akan diblok oleh firewall
block in quick on $if from $no_route to any
##block inbound ping ke mesin freebsd
block in quick on $if inet proto icmp all icmp-type 8
block in quick on $If proto tcp from any to any port $netbios_sharing
block in log quick on $if inet proto all flags FUP/FUP
block in log quick on $if inet proto all flags SF/SFRA
block in log quick on $if inet proto all flags /SFRA
#ijinkan paket masuk ke web sever dan ssh server
pass in quick on $if proto tcp from any to any port 22 $in_state
pass in quick on $if proto tcp from any to any port 80 $in_state
pass in quick on $if proto tcp from any to any port 443 $in_state
block in log quick on $if all
cara menjalankan nya adalah sebagai berikut ini.
- pfctl -F all (menghapus rule pf )
- pfctl -f /etc/pf.conf (me load rule pf. biasanya kalo udah di tulis di /etc/rc.conf, maka akan otomatis di load saat booting)
- untuk melihat statistik dari rule, pake ‘pfctl -s info’
firewall diatas masih sangat sederhana.
mungkin cukup segitu dulu tutorialnya dari sayyaaa. edisi mendatang akan di bahas lebih dalam bagaimana cara bandwith management dengan PF.
semoga dapat bermanfaat bagi teman teman semua. terimakasih dah mo baca tutorial ga berguna ini.
salam………………….