Tuesday, February 20, 2007

GATEWAY FREEBSD USING IPFW + NATD

Bismillahirrahmanirahim...

Gateway adalah jembatan atau gerbang lalulintas traffic baik dari local area network kita
keluar network kita maupun sebagai gerbang lalulintas traffic yang berasal dari luar network
kita menuju netwok kita.
Ada beberapa cara untuk membuat gateway ini. selain yang akan dibahas oleh saya sekarang ini
yaitu menggunakan ipfw dan natd , bisa juga dengan ipf + ipnat serta menggunakan pf.
keuntungan menggunakan ipfw ini adalah, kita bisa memfilter packet menggunakan layer2 dan
layer3 atau gabungan keduanya.
Berikut ini langkah-langkahnya:
login : ehud
pass :*****
FreeBSD 5.4-STABLE (aduhBSD) #3: Thu Oct 24 18:59:56 UTC 2006
$sudo su
# cd /usr/src/sys/i386/conf
#cp GENERIC aduhBSD
#pico aduhBSD
ketika anda melakukan editing terhadap file konfigurasi kernel tersebut silahkan edit di
sesuaikan dengan keinginan anda dan dukungan mesin anda. atau jika anda tidak mengerti dan
tidak mau repot anda cukup mengedit atau menambahkan apa yang kita perlukan untuk membuat
sebuah gateway saja.
misal nya
1. ident aduhBSD
2. options IPFIREWALL # mengenablekan ipfw sebagai bagian dari kernel
3. options IPFIREWALL_VERBOSE # log the net
4. options IPFIREWALL_DEFAULT_TO_ACCEPT # just what it say
5. options IPFIREWALL_VERBOSE_LIMIT=5 # untuk mencegah syslog flooding
6. options IPFIREWALL_FORWARD
7. options IPDIVERT
urutan 1 adalah ident yang biasanya option ini sudah ada secara default pada kernel anda
dengan nama GENERIC , silahkan ubah sesuai keinginan anda. dalam hal ini saya ubah menjadi
aduhBSD.urutan 2,3,4,5,6 adalah option yang perlu kita tambahkan pada konfigurasi kernel kita.Setelah anda selesai mengedit nya, lalu simpan.
kenapa kernel kita harus di kompile, bukan nya secara default ipfw sudah terpasang ?baik akan saya coba jawab, pertama tama anda silahkan buka
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-ipfw.htmldi situ sangat jelas bahwa " IPFW is included in the basic FreeBSD install as a separate run
time loadable module. The system will dynamically load the kernel module when the rc.conf
statement firewall_enable="YES" is used. You do not need to compile IPFW into the FreeBSD
kernel unless you want NAT function enabled." jadi untuk kepentingan ini kita sangat perlu mengkompile kernel agar fungsi nat berjalan
dengan baik dan firewall default accept, sangat di sarankan kepada pemula yang masih remang
remang terhadap pembuatan rule ipfw.
mari kita lanjutkan.
pindah ke /usr/src directory.
# cd /usr/src
Compile kernel.
# make buildkernel KERNCONF=aduhBSD
Install kernel baru.
# make installkernel KERNCONF=aduhBSD
sampe tahap ini anda telah berhasil mengkompile kernel.
tahap selanjutnya adalah mengenablekan firewall melalui rc.conf
#pico /etc/rc.conf
router_enable="YES"
router="/sbin/routed"
router_flags="-q"
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfw.rules"
natd_enable="YES" # Enable NATD function
natd_interface="rl0" # interface name of public Internet NIC
natd_flags="-dynamic -m" # -m = preserve port numbers if possible
lalu save...

tahap selanjut nya editlah sysctl
#pico /etc/sysctl.conf
net.link.ether.ipfw=1
net.inet.ip.fw.verbose=1
net.inet.ip.fw.verbose_limit=5
lalu save ....
tahap selanjut nya adalah membuat firewall rules
#pico /etc/ipfw.rules
#!/bin/sh
cmd="ipfw -q add"
skip="skipto 500"
pif=rl0
ks="keep-state"
good_tcpo="22,25,37,43,53,80,443,110,119,5050,5051,5100"
ipfw -q -f flush
$cmd 002 allow all from any to any via xl0 # exclude LAN traffic
$cmd 003 allow all from any to any via lo0 # exclude loopback traffic
$cmd 100 divert natd ip from any to any in via $pif
$cmd 101 check-state
# Authorized outbound packets
$cmd 120 $skip udp from any to xx.168.240.2 53 out via $pif $ks
$cmd 121 $skip udp from any to xx.168.240.5 53 out via $pif $ks
$cmd 125 $skip tcp from any to any $good_tcpo out via $pif setup $ks
$cmd 130 $skip icmp from any to any out via $pif $ks
$cmd 135 $skip udp from any to any 123 out via $pif $ks
# Deny all inbound traffic from non-routable reserved address spaces
$cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 private IP
$cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 private IP
$cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 private IP
$cmd 303 deny all from 127.0.0.0/8 to any in via $pif #loopback
$cmd 304 deny all from 0.0.0.0/8 to any in via $pif #loopback
$cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config
$cmd 306 deny all from 192.0.2.0/24 to any in via $pif #reserved for docs
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster
$cmd 308 deny all from 224.0.0.0/3 to any in via $pif #Class D & E multicast
# Authorized inbound packets
$cmd 420 allow tcp from any to me 80 in via $pif setup limit src-addr 1
$cmd 450 deny log ip from any to any
# This is skipto location for outbound stateful rules
$cmd 500 divert natd ip from any to any out via $pif
$cmd 510 allow ip from any to any
######################## end of rules ##################
lalu save........
tahap selanjutnya adalah mereboot dan mencoba gateway anda.
#reboot
---------------selesai----------------
Alhamdulillahirabbilalamin....
Thx to : ogeb, masdani, setrum, slax , masterpop3, k-159.

No comments: