simplify your firewall rules

31 07 2008

jika kamu seorang network administrator, pasti sudah sering banget dengerin yang namanya firewall, sering create firewall rules. sebenernya gampang gampang susah kalo kita bikin rule firewall, asal kita tau konsep nya, mana yang akan di blok, mana yang akan di allow, lewat interface mana aja paket tersebut lewat. nah kalo kita udah ngerti konsep nya, dijamin cepet bikin rule nya. sambil merem pun bisa, kkkkkkkk. oke, basa basi nya cukup. di sini, firewall yg gw gunain adalah CISCO PIX PF (Packet Filter) :p . cukup PF ajah :D , ga ada duit buat beli embeded firewall. contoh kasus kek gini. gw kasih rule PF kek gini

pass in on em0 from <clientA> to any keep state

pass out on em1 from <clientA> to any keep state

pass in on em1 from any to <clientA> keep state

contoh rule nya adalah kek gitu. gw nyimpen alamat client di table clientA. kalo ada yang belum tau tentang table di PF, silakan baca manual PF. oke, kalo rule nya cuman tiga buah, ga masalah. nah, skarang coba bayanin kalo jumlah table client hingga Z (<clientZ>). pasti bikin pusing kepala dong, kudu nulis lengkap rule nya dari mulai pass in/on ampe keep state nya. buang buang waktu. nah, gimana cara nyederhanainnya?? gampang, tinggal pake packet tagging.

packet tagging?? artinya adalah, proses penandaan paket dengan ID (identitas tertentu) dimana ID tersebut dapat digunakan kembali untuk rule lain. ilustrasi gampangnya adalah kek gini, kita jalan jalan ke ancol, waktu masuk, kita di kasi cap, or stempel. nah, dengan stempel itu, kita bisa bebas keluar masuk anjungan wahana wisata sesuka kita. nah, ilustrasi tersebut kurang lebih sama ama packet tagging di PF. paket yang udah di kasi TAG (di tandai), dapat di gunakan kembali tanpa kita harus membuat rule lengkapnya. jelas kan?? nah gimana caranya kita bikin TAG di PF dari contoh rule di atas?. liat rule di bawah ini :

pass in on em0 from <clientA> to any tag boleh keep state #1

pass out on em1 tagged boleh keep state #2

pass in on em1 tagged boleh keep state #3

coba liat baris rule yang di BOLD. penjelasannya adalah sebagai berikut :

  1. rule no satu gw kasi ID boleh. buat nambahin id, tinggal tambahin baris tag id_packet ke rule PF kamu. oke, kita udah berhasil bikin ID untuk menandai sebuah paket. gimana caranya buat manggil ID tadi? liat penjelasan nomor 2
  2. kita ngga perlu nulis lengkap kek yang di contoh pertama, kita tinggal memanggil id paket tersebut dengan cara nambahin tagged id_packet ke rule PF kamu. ga usah nulis rule lengkap from <clientA> to any cukup tulis tambahin tagged id_packet di rule no. 2
  3. penjelasan sama dengan no. 2

untuk menangani kasus jumlah client yang banyak, tinggal di bedain ajah tag (ID) name packet nya, trus panggil tag (ID) tadi pake tagged id_packet. contohnya kek gini:

pass in on em0 from <clientA> to any tag boleh keep state

pass out on em1 tagged boleh keep state

pass in on em1 tagged boleh keep state

pass in on em0 from <clientB> to any tag boleh_aja keep state

pass out on em1 tagged boleh_aja keep state

pass in on em1 tagged boleh_aja keep state

enak kan?? hehehehehhehhehehe. packet tagging enak banget waktu digunain buat bikin rule firewall yang kompleks. contohnya, router kamu punya 4 interface, trus client itu hanya di ijinkan keluar masuk lewat interface tertentu. hihhihihihi, ga kebayang kalo ga ada packet tagging. dijamin puyeng……..

sekian dulu tulisan sampah dari gw, hihihihi, tulisan ga ada gunanya :D . semoga bisa sedikit membantu temen temen buat belajar PF. saran dan cacian ditunggu yaaa

iptables??? sorry gw udah lupa :p





Simple BGP Routing Filter

26 07 2008

hihihihihihihi, akhirnya posting lagi blog ga mutu ini :p . BGP??? wahhhh……. apaan tu? silakan cari artikel tentang BGP, gw ga bakalan ngejelasin tentang cara kerjanya :p . nah, gimana implementasi nya??? 

itu gambar diatas adalah contoh dari network gw. ada 3 buah router: IIX Router, Int’l Router, dan Our Router. IIX ROuter merupakan BGP router yang tugasnya memberikan prefix IIX ke router kita. Int’l Router sama kaya’ IIX router tapi message yang dibawa adalah prefix internasional. Our Router tugasnya adalah meneruskan prefix prefix yang tadi untuk di teruskan ke client (bgp peering client). nah.. dalam gambar diatas ada kasus kek gini, gimana ya caranya buat filter prefix supaya prefix yg berasal dari IIX router tidak masuk ke Int’l router, dan juga sebaliknya. skarang ambil conto kasus kek gini, dari Int’l router, dia mengadvertise 250.000 prefix ke our router, IIX router juga mengadvertise 2000 prefix ke Our router. our router akan mengadvertise kembali prrefix-prefix yang diterima dari Int’l router ke IIX router, dan juga sebaliknya. waahhh, kebayang dong load yang terjadi di IIX router kalo dia nerima prefix prefix dari IIX router. kalo kamu udah pernah config bgp routing, pasti pada tau, betapa ngerinya prefix prefix yang bakal di advertise ke router kita. Pengalaman gw, router gw menerima 250.000 prefix lebih dari internet. nah, disini gw cuman bahas, gimana filter prefix biar prefix tadi ga salah masuk. oke, sekarang kita mulai konfig. gw disini make CISCO openbgpd :p, maklum ga punya duit buat beli cisco :D . IIX router dan Int’l router gw anggap sudah melakukan peering ke Our Router. IIX router AS-Numbernya 12345 dan Int’l Router AS-Numbernya 23456. oks, mulai konfigurasi. konfigurasinya adalah sebagai berikut (Our Router) :

IIX   =”10.20.30.40″
inter   =”50.60.70.4″

AS 2222 #AS Number router kita
router-id 50.60.70.5
listen on 127.0.0.1

fib-update yes
nexthop qualify via bgp
log updates
network 50.60.70.96/27  #ini network yang akan di advertise ke IIX router dan Int’l Router
# neighbors and peers

group “internasional” {
remote-as       23456
announce        all
announce        capabilities yes
softreconfig    in yes
multihop        2
neighbor $core1

{
descr   “INT”

}

}

group “IIX-Peering” {

remote-as      12345

announce       all

neighbor $iix { descr “IIX-only” }

}

deny from any
allow from any inet prefixlen 8 – 24
# do not accept a default route
deny from any prefix 0.0.0.0/0
deny to {group IIX-Peering} peer-as {38458, 17826} #Penting neeh
# filter bogus networks
deny from any prefix 10.0.0.0/8 prefixlen >= 8
deny from any prefix 172.16.0.0/12 prefixlen >= 12
deny from any prefix 192.168.0.0/16 prefixlen >= 16
deny from any prefix 169.254.0.0/16 prefixlen >= 16
deny from any prefix 192.0.2.0/24 prefixlen >= 24
deny from any prefix 224.0.0.0/4 prefixlen >= 4
deny from any prefix 240.0.0.0/4 prefixlen >= 4

oke. konfigurasinya cukup kek diatas.trus jalanin bgpd . deny to {group IIX-Peering} peer-as {38458, 17826} dapetnya dari mana?????? liat neh, gw kasi dikit output dari prefix yg di advertise ke Our Router dari Int’l Router :

flags destination         gateway               lpref   med aspath origin
I*    8.3.19.0/24         202.149.67.121     100     0    17826 4788 3356 26769 i
I*    8.3.26.0/23         202.149.67.121     100     0    17826 4788 3356 26769 i
I*    8.3.30.0/24         202.149.67.121     100     0    17826 4788 10026 15133 15133 i
I*    8.3.37.0/24         202.149.67.121     100     0    17826 4788 3356 21640 i
I*    8.3.38.0/23         202.149.67.121     100     0    17826 4788 5511 3549 16420 i
I*    8.3.46.0/24         202.149.67.121     100     0    17826 4788 3356 21640 i
I*    8.3.52.0/23         202.149.67.121     100     0    17826 4788 1239 26759 i
I*    8.3.160.0/24        202.149.67.121    100     0    17826 4788 3356 36524 i
I*    8.3.162.0/24        202.149.67.121    100     0    17826 4788 5511 3549 17058 i
I*    8.3.208.0/24        202.149.67.121    100     0    17826 4788 701 36431 i
I*    8.3.210.0/24        202.149.67.121    100     0    17826 4788 27524 i
I*    8.3.211.0/24        202.149.67.121    100     0    17826 4788 3356 40415 i
I*    8.3.213.0/24        202.149.67.121    100     0    17826 4788 4739 i
I*    8.3.214.0/23        202.149.67.121    100     0    17826 4788 3356 23286 i
I*    8.3.218.0/23        202.149.67.121    100     0    17826 4788 3356 26769 i

itu sebagian output dari prefix yang di advertise ke Our Router dari Int’l Router. kalo gw copiin semua outputnya semua…… hahhahaha muntah muntah ntar :D . oke……. gw filternya ngambil Leftmost AS (17826). liat deh output di atas. deny to {group IIX-Peering} peer-as {38458, 17826} artinya, router kita (Our Router) nggak bakalan meng-advertise prefix prefix yang memiliki LeftMost AS 17826 dan 38458 ke group IIX-Peering. kalo pengen ngeliat prefix yang di advertise ke router kita, pake perintah ini : bgpctl sh rib neigh INT in

gampang kan?? untuk filter yang lebih lanjut, sabar yaahhh, gw juga masih belajar. maklum masi newbie alias CUPU banget.

dedicated to iud ^_^





blocking ssh bruteforce attack with PF

19 07 2008

wahhhhh, keknya keren juga yah judulnya…… hueheuehuehueu, ngeblok ssh brute force pakek PF. kurang lebih begitulah judulnya kalo pake bahasa indonesah. hmmmmmm, coba deh kamu cek file auth.log kamu, banyak yang nyoba buat akses ssh ke server kamu…… authentication failed!!!! yaa, kurang lebih begitulah bunyinya. bosen kan dihadepin ama yg gituan??? dari pengalaman gw, banyak banget usaha ngakses ssh (lebi tepatnya brute force ssh password) ke server gw di kampus + router-router gw di kantor. cukup nyebelin emang, tapi ya mau gimana lagi, namanya juga internet, unsecured places :D . nah, gimana sih cara buat ngurangin usaha, lebi tepatnya nge-block usaha brute force ssh password tadi? caranya gampang, cukup pake PF, firewall bawaan dari OpenBSD + FreeBSD (lo kudu compile kernel dulu di FreeBSD). lha trus, gimana caranya??? ga usa basa basi, langsung aja di mulai

pertama buka file /etc/pf.conf, trus buat rule kek gini :


int_if = "bce0" #1
table <bruteforce> persist #2
block quick from <bruteforce> #3
pass in on $int_if proto tcp from any to $int_if:0 port ssh keep state (max-src-conn 10, max-src-conn-rate 5/3, overload <bruteforce> flush global) #4

Penjelasan :

#1. buat variable untuk interface bce0. bce0 di definisian sbg int_if

#2. buat tabel bruteforce di PF nya. knapa persist?? heheeheheehe, cari tau sendiri yaah artinyaa :p

#3. block semua paket yang berasal dari alamat-alamat yang terdefinisi di tabel bruteforce

#4. nah, ini yang penting. ijinkan paket TCP masuk ke interface bce0 dimana paket tersebut berasal dari mana aja, tujuan paket tersebut ke alamat IP address interface bce0, dengan aturan sebagai berikut :

  • max-src-conn 10 : jumlah maksimum koneksi dari satu host ke server ssh kita adalah 10.
  • max-src-conn-rate 5/3 : rasio jumlah koneksi dari satu host per satuan waktu, dalam hal ini, satu host hanya diperbolehkan melakukan 5 koneksi per 3 detik.
  • overload <bruteforce> flush global : jika tidak memenuhi kedua persyaratan di atas, maka IP address tersebut akan di catat di tabel bruteforce, dan kemudian akan di blok oleh rule no #3 (block quick from <bruteforce> )

nah, kalo udah, save rule-nya trus jalanin PF nya. tungguin deh, beberapa saat, tergantung seberapa banyak serangan. nah, kalo pengen liat ip-address mana aja yang di blok, jalanin perintah ini :

pfctl -t bruteforce -Tshow

gampang kan??? heheehehehhe, hampir lupa, parameter max-src-conn + max-src-conn-rate tadi tidak mengikat, tergantung pilihanmu, mo yg paranoid or biasa biasa aja. selamat mencoba yaaaaaaa :)





finally got it

16 07 2008

yaaa, akhirnya satu dari beberapa mimpi gw tercapai. Wah, apa tuu? hehehehehe, ni sebenernya impian gw sejak gw tertarik ke dunia IP networks. hehehehe, kerja di ISP, jadi network administrator ISP. wahhhh, thanks GOD!!! finally i got it!. Sebenernya sih ga nyangka juga gw bisa kerja kek gituan, dengan kesibukan di kampus (hiperbolik mode on :p ), hahahahahah, padahal kerjaan di kampus cuman bobok bobok, ngrokok ngrokok, + gitar gitaran :p . blom lulus pulak.waakakakakakakakakak, sumpah, ngiri gw ma temen temen gw yg udah lulus. wooooyyy tungguin gw woooiiiiii!!!! gw juga pengen lulus! haiiiiihhh, kok malah bahas lulus -__-’

gw masih inget waktu jaman-jaman awal gw kerja di sini. bermodal tulisan tak berguna di blog gw :D , ada seorang net-admin di bandung nanyain YM gw. gw kasih lah. nah mulai dari itu, dia ngajakin gw buat join di kantor dia, yaa kebetulan skarang gw satu tim ama dia. hehhheheheheheheh :p. hihihihihihi, awal-awal kerja disini, sumpah, desperate banget. keknya ilmu gw yg gw dapet dari belajar otodidak di kampus, ga ada apa apanya, sumpah deh, culun abis waktu gw awal masuk diisini. bengong doang :( . belajar lagi, belajar lagii……… hueheuheuehuheu, bgp routing, bandwidth management, unicast reverse path forwarding, asymetric routing, cisco,……….. banyak deh. wkwkwkwkwkwkkwkwkw, ampe muntah kalo gw sebutin satu satu T_T. 2 bulan jalan di ini kantor, alhamdulillah, dapet pangkat yg gw idam-idamin dari dulu, network administrator. hhihihihihi thanks god. ngurus router, maintain bandwidth, ngurusin complain pelanggan, di marahin bos (sering bolos :p), haahahh, dah dapet!!! tapi lebih banyak dapet marah dari bos nya, kakakakakaakkakakaka

but overall, satu impian gw udah tercapai, next target?? hmmmm looks like to be superadmin in here!!! SEMANGAT!!!!!