11 Desember 2008

Membangun Firewall dengan IPFW

IPFW atau IP Firewall adalah salah satu service yang dimiliki oleh Operating System FreeBSD untuk membangun sebuah firewall. firewall ini bekerja pada layer 3 lapisan OSI (Open System Interconnection).
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
  1. CMD = /sbin/ipfw
  2. RULE_NUMBER = 0001, 0002, 0003, 0004 dst
  3. ACTION = pass, permit, allow, accept, deny atau drop
  4. LOGGING = optional
  5. SELECTION= tcp, udp atau icmp (daftar protokol ada di /etc/protocols). from src to dst, port number, in out, via IF.
  6. 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