salah satu ciri dari firewall dengan IPFW adalah dalam pembacaan rule-nya akan di baca dari atas kebawah, bila ada traffick yang sudah sesuai dengan rule firewall dibagian atas, maka sistem akan mengeksekusi tanpa membaca atau membandingkan dengan rule di baris berikutnya. lalu bagaimana untuk membangun firewall ini ?
Untuk mengaktifkan IPFW tentunya kernel FreeBSD harus support IPFW dengan menambahkan options sebagai berikut:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options IPDIVERT
tambahkan pada /etc/rc.conf
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_logging="YES"
natd_enable="YES"
natd_interfaces=""
natd_program="/sbin/natd"
Berikut adalah format IPFW:
CMD RULE_NUMBER ACTION LOGGING SELECTION STATEFULL
- CMD = /sbin/ipfw
- RULE_NUMBER = 0001, 0002, 0003, 0004 dst
- ACTION = pass, permit, allow, accept, deny atau drop
- LOGGING = optional
- SELECTION= tcp, udp atau icmp (daftar protokol ada di /etc/protocols). from src to dst, port number, in out, via IF.
- STATEFULL = optional
Seperti sudah di jelaskan di posting sebelumnya, bahwa fungsi firewall adalah sebagai berikut.
contoh passing
/sbin/ipfw add 0001 pass all from any to any
/sbin/ipfw add 0002 pass icmp from any to any estabilished
/sbin/ipfw add 0003 pass tcp from 192.168.1.0/24 to any 21 keep-state
/sbin/ipfw add 0004 pass tcp from any to me 21 in via fxp0
contoh blocking
/sbin/ipfw add 0001 deny all from any to any
/sbin/ipfw add 0002 deny icmp from any to any estabilished
/sbin/ipfw add 0003 deny tcp from 192.168.1.0/24 to any 21 keep-state
/sbin/ipfw add 0004 deny tcp from any to me in via fxp0
contoh logging, default logging akan di simpan di /var/log/security
contoh translating
/sbin/ipfw add divert natd all from any to any
contoh shaping
/sbin/ipfw add pipe 10 ip from any to 192.168.1.1 via fxp0
/sbin/ipfw pipe 10 config bw 128Kbit/s
/sbin/ipfw add pipe 20 ip from 192.168.1.1 to any via fxp0
/sbin/ipfw pipe 20 config bw 64Kbit/s