defeating spammers (networks admin’s view)

24 08 2008

wakakakkakakakakakak….. serem nikok judulnyaaaa…… gaya gayaan doang sih sebenernya. biar keliatan keren gituuuu…. hahahhahaha.. :D padahal gw ga bisa apa apa….. kkkkkk. yo wis lah, gpp, sedikit sharing sharing ilmu yg udah gw dapet dari pengalaman gw kmaren. gini, sekitar semingguan kmaren, gw dapet pengalaman menarik. ngurusin email server di kantor gw yg rada rese’. sebenernya, anti spamm buat mail server di kantor gw udah jalan, gw mikir aja, kalo di level aplikasi bisa di blok, knapa ga main di layer network ajah buat blocking spam nya…. ehueheueueheuehue, iseng iseng ajah sih sebenernyaa.

oke, dapet ide gitu, gw cobain aja di mail server kantor. wkwkwkwkwkwk, hasilnya ternyata mengecewakan Y_Y. oh iya, hampir lupa, gw disini pake spamd yaa jgn lupa SPAMD. percobaan pertama spamd di kantor gagal. huhuhuhuu…. penasaran jugak. gw baru inget, ternyata gw masi punya akses root di salah satu server di kampus….(maklomm, adminnya ngilang ga tau kmana, ga pernah diurusin tu server). ya udah, gw cobain aja tu spamd di server kampus gw yg kebetulan ada fasilitas mail servernya. sedikit informasi, mail server kantor make Openbsd-x.x dan di kampus make freebsd-x.x.

kalo di freebsd, kita harus install dulu itu yg namanya spamd.caranya :

cd /usr/ports/mail/spamd
make install clean
di openbsd, udah jadi bawaan system operasinya. udah selesai nginstall?? oks, configuring the spamd it self. gw bahasnya di freebsd aja yaahh (yg udah jalan). sebelum kita konfig spamdnya, mount terlebih dulu file sistem berikut :

fdescfs 1.0K 1.0K 0B 100% /dev/fd

kalo udah, kita setting aja spamd nya. file konfig di freebsd ada di /usr/local/etc/spamd/spamd.conf. konfigurasi nya adalah sbb :

all:\
:uatraps:nixspam:china:korea:

# University of Alberta greytrap hits
# Addresses stay in it for 24 hours from time they misbehave.
uatraps:\
:black:\
:msg=”Your address %A has sent mail to a ualberta.ca spamtrap\n\
within the last 24 hours”:\
:method=http:\
:file=www.openbsd.org/spamd/traplist.gz

# Nixspam recent sources list.
# Mirrored from http://www.heise.de/ix/nixspam
nixspam:\
:black:\
:msg=”Your address %A is in the nixspam list\n\
See http://www.heise.de/ix/nixspam/dnsbl_en/ for details”:\
:method=http:\
:file=www.openbsd.org/spamd/nixspam.gz

# Mirrored from http://www.okean.com/chinacidr.txt
china:\
:black:\
:msg=”SPAM. Your address %A appears to be from China\n\
See http://www.okean.com/asianspamblocks.html for more details”:\
:method=http:\
:file=www.openbsd.org/spamd/chinacidr.txt.gz:

# Mirrored from http://www.okean.com/koreacidr.txt
korea:\
:black:\
:msg=”SPAM. Your address %A appears to be from Korea\n\
See http://www.okean.com/asianspamblocks.html for more details”:\
:method=http:\
:file=www.openbsd.org/spamd/koreacidr.txt.gz:

bingung ama konfigurasinya??? silakan baca penjelasannya di sini : http://www.openbsd.org/cgi-bin/man.cgi?query=spamd.conf&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html

udah??? tinggal setting PF nya. kkkkkkkkkk, PF lagi PF lagi,hahahhaa bosen yah ama PF? buat rule sbb (defaut accept untuk contoh file /etc/pf.conf dibawah ini) :

table <spamd-white> persist

no rdr inet proto tcp from <spamd-white> to any port smtp

rdr pass inet proto tcp from any to any port 25 -> 127.0.0.1 port spamd

penjelasan rule :

table <spamd-white> persist : buat tabel spamd-white untuk menampung white-list address mail server. address yg tertampung di tabel spamd-white, akan langsung masuk ke port mail server (25).

no rdr inet proto tcp from <spamd-white> to any port smtp : ddress yg tertampung di tabel spamd-white, akan langsung masuk ke port mail server (25), tidak di redirect ke port spamd nya.

rdr pass inet proto tcp from any to any port 25 -> 127.0.0.1 port spamd : semua host yang ingin mengirim mail ke mail server gw, dia akan di redirect ke localhost port 8025 (portnya spamd).

udah selesai??? tinggal save, reload pf, + jalanin spamd nya. liat log nya nih (lebi asik ketimbang liat bokep, kkkkkkkkk) :

WHITE|69.147.83.53|||1219267326|1219269449|1222379850|4|0
WHITE|66.163.168.171|||1219278086|1219279746|1222390196|5|0
GREY|74.212.58.171|clsm-74-212-58-171-pppoe.dsl.clsm.epix.net|<hedley@atomic.com>|<fajar@xxxxxxxxxxx>|1219597616|1219612016|1219612016|1|0
GREY|82.10.176.183|cpc3-walt1-0-0-cust182.popl.cable.ntl.com|<Halina-iinifs@alloyd.com>|<phie@xxxxxxxxxxxx>|1219599136|1219613536|1219613536|1|0
GREY|74.65.70.142|cpe-74-65-70-142.stny.res.rr.com|<.reuef1986@3n1motorsports.com>|<bc6a4755@xxxxxxxxxxxxx>|1219600253|1219614653|1219614653|1|0
GREY|69.44.231.10|69-44-231-10.imsday.com|<htamansa@lort.com>|<johan@xxxxxxxxxxxxx>|1219600710|1219615110|1219615110|1|0
GREY|72.14.204.231|qb-out-0506.google.com|<frontiers.agency10@gmail.com>|<riezza@xxxxxxxxxxxxx>|1219604583|1219618983|1219618983|1|0
GREY|85.130.99.80|unknown.interbgc.com|<Harold-’sdeath@menoldinc.com>|<h_winarto.21s@xxxxxxxxxxxxx>|1219606565|1219620965|1219620965|1|0
GREY|201.89.241.206|201-89-241-206.ctame700.dsl.brasiltelecom.net.br|<nrobredn1967@ty.ca>|<xxx@xxxxxxxxxxxxx>|1219609635|1219624035|1219624035|1|0
GREY|80.195.224.12|80-195-224-12.cable.ubr01.shef.blueyonder.co.uk|<ignisses1988@countryhut.com>|<mill@xxxxxxxxxxxxxxxxxx>|1219610378|1219624778|1219624778|1|0
GREY|190.253.189.108|[190.253.189.108]|<mtedelen_1950@slantfin.com>|<tomrf@xxxxxxxxxxxxxx>|1219610934|1219625334|1219625334|1|0
WHITE|222.124.18.72|||1219434760|1219437269|1222547705|5|0
WHITE|66.163.168.172|||1219460851|1219462456|1222572907|5|0
GREY|78.161.122.18|[78.161.122.18]|<9mcclellan@exxell.com>|<novan@xxxxxxxxxxxxxxxx>|1219597572|1219611972|1219611972|1|0
GREY|99.232.64.249|CPE0014bfe9ea40-CM000a739a8c22.cpe.net.cable.rogers.com|<Ferencne-backfram@borroughs.com>|<rizal@xxxxxxxxxxxxxxxxx>|1219599510|1219613910|1219613910|1|0
GREY|79.120.196.196|[79.120.196.197]|<4richy5b5b@ms35.hinet.net>|<cakep@xxxxxxxxxxxx>|1219600151|1219614551|1219614551|1|0

penjelasan :

WHITE : host host yang boleh ngirim email (langsung masuk ke port 25) tanpa lewat spamd.

GREY : host host tersebut akan di lewatkan ke spamd. di spamd nya akan di proses apakah dia akan di mark sbg BlackList-mail server atooo White-list Mail server.

GREY|79.120.196.196|[79.120.196.197]|<4richy5b5b@ms35.hinet.net>|<ca

kep@xxxxxxxxxxxx>|1219600151|1219614551|1219614551|1|0 (sebenernya sih nyambung itu log, tapi di wordpressnya kepotong jadi cuman kek gini GREY|79.120.196.196|[79.120.196.197]|<4richy5b5b@ms35.hinet.net>|<ca)

nih dikit penjelasannya

79.120.196.196|[79.120.196.197] : host yg nyoba buat ngirim mail

<4richy5b5b@ms35.hinet.net> : email sender

<cakep@xxxxxxxxxxxx> : alamat email penerima

1219600151 : tupple (host yg di greylist disebut tuple) pertama kali konek

1219614551 : kapan tupple tersebut di whitelist

1219614551 : kapan tupple tersebut akan di remove dari database (spamdb)

1: berapa kali host mencoba mengirim email ketika di greylist

0 : berapa kali host tersebut di deliver ke real mailserver (not talk to spamd-nya)

kalo pengen liat output diatas, tinggal jalanin aja perintah spamdb

table spamd-white di pf akan terisi otomatis ama spamd + pf nya, ketika mail-mail yg di tag sbg GREY berubah ke WHITE list. nih outputnya kalo ga percaya :

[begok]# pfctl -t spamd-white -Ts | grep 69.147.83
No ALTQ support in kernel
ALTQ related functions disabled
69.147.83.53
dari pengalaman gw setelah jalanin spamd, spam mail di mail server gw bisa berkurang drastis……

asik kan gabungin application security + network security nya?? hehehhehe, monggo monggo di cobain. selamat mencoba yaaahh :) , kalo ada error, mohon di benerin yaahh, gw jg masih belajar

regards……… ^_^





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





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 :)





NAT in FreeBSD with PF

7 11 2007

sebenernya iseng iseng doang sih nyobain NAT di jaringan STT + bandwidth management di FreeBSD 6.1. Dari pada di leb ga ada kerjaan yang jelas, ya dari situlah dapet ide bikin mini tutorial ini. NAT dan bandwidth management disini menggunakan PF (packet filter). Sebelum menggunakan PF sebaiknya kompile kernel anda terlebih dahulu. Caranya dapet dilihat di tutorial sebelumnya. Lengkap kok. skema jaringan bisa di liat di gambar.

seperti yang terlihat di gambar, terdapat BSD nat Machine yang berfungsi sebagai gateway untuk jaringan 192.168.0.0/24. terdapat 2 buah interface di BSD nat Machine, yaitu rl0 dan xl0. rl0 adalah interface ke jaringan luar, sedang xl0 adalah untuk jaringan private. IP address untuk interface rl0 adalah 10.14.3.7, sedang interface untuk xl0 adalah 192.168.0.1. Nah yang menjadi masalah sekarang, bagaimana cara client di jaringan 192.168.0.0/24 bisa mengakses jaringan internal STT ???? salah satu caranya adalah dengan menggunakan mekanisme NAT (network address translation). Untuk mekanisme NAT, silakan baca dokumen-dokumen di internet.

konfigurasi BSD nat Machine adalah sebagai berikut :

  1. pastikan dahulu ip forwarding telah di set 1. Caranya, buka file /etc/sysctl.conf, kemudian tambahkan baris berikut net.inet.ip.forwarding=1

2. setting IP address untuk kedua interface tersebut, caranya bisa pake ifconfig ato edit file /etc/rc.conf, kemudian tambahkan baris berikut :
ifconfig_rl0=”inet 10.14.3.7 netmask 255.255.255.0″
ifconfig_xl0=”inet 192.168.0.1 netmask 255.255.255.0″
defaultrouter=”10.14.3.1″

3. saat yang paling mengasyikan, yaitu setting nat dengan pf.Ini adalah konfigurasi nat dan bandwidth managementnya ( file /etc/pf.conf):

ext_if=”rl0″ #variable external interface
ext_addr=”10.14.3.7/32″ #IP address untuk ext_if
priv_addr=”192.168.0.0/24″ #subnet untuk private address

#antispoof for $ext_addr

set loginterface $ext_if #digunakan untuk mengumpulkan informasi pada interface rl0
set optimization aggressive #firewall akan menggunakan memory dan CPU time yang lebih sedikit. (llengkapnya baca manual PF)
scrub in on $ext_if all fragment reassemble (packet normalization)

altq on $ext_if priq bandwidth 10Mb queue {dns,ssh,www,chatting,other} ()
queue dns priority 14 priq(red)
queue ssh priority 13 priq(red)
queue www priority 12 priq(red)
queue chatting priority 11 priq(red)
queue other priority 1 priq(default)
#queue test_b priority 10

nat on $ext_if proto {tcp, udp, icmp} from $priv_addr to any -> $ext_addr

#pass in on xl0 all
block drop all
pass in on xl0 proto {tcp, udp, icmp} all
pass out on xl0 proto {tcp, udp,icmp} all
pass in on $ext_if proto udp from any to any port 53 keep state queue dns

pass out on $ext_if proto {tcp,udp} from any to any port 53 keep state queue dns
pass out on $ext_if proto tcp from any to any port { 80, 443 } keep state queue www
pass out on $ext_if proto tcp from any to any port {6666, 6667, 6668} keep state queue chatting
pass in on $ext_if proto tcp from any to any port 22 keep state queue ssh

penjelasan :
altq on $ext_if priq bandwidth 10Mb queue {dns,ssh,www,chatting,other} ()
queue dns priority 14 priq(red)
queue ssh priority 13 priq(red)
queue www priority 12 priq(red)
queue chatting priority 11 priq(red)
queue other priority 1 priq(default)
#queue test_b priority 10

syntax diatas menjelaskan tentang bandwidth management dengan menggunakan priq. sebenarnya ada beberapa algoritma queue management di FreeBSD, diantaranya CBQ(class-Based Queue), priq(priority), HFSC (Hierarchial Fair Service Curve). disini saya hanya menjelaskan menggunakan algoritma priq(priority queuing). Priority Queuing merupakan algoritma yang paling sederhana ketimbang CBQ maupun HFSC. Mekanismenya adalah sebagai berikut, kita memiliki alokasi bandwidth sebesar X Mb, dengan bandwidth sebesar X tsb, kita ingin membagi-bagi bandwidth tsb menjadi beberapa alokasi, misalkan untuk koneksi ssh, www, mail, chatting, dll. Nah, cara kerja PRIQ adalah dengan prioritas. Contohnya gini, koneksi ssh lebih penting daripada koneksi www, dan koneksi www lebih penting ketimbang koneksi mail. Intinya disini adalah prioritas koneksi (dapat dilihat di skrip diatas). suatu koneksi dengan prioritas yang lebih besar memiliki prioritas koneksi yang lebih tinggi pula. nilai priority mulai dari 0-14. semakin tinggi nilai priority-nya, semakin tinggi pula kemungkinan alokasi bandwidth untuk koneksi tersebut. Dari syntax firewall diatas dapat dilihat bahwa koneksi DNS memiliki prioritas paling tinggi, sedang koneksi other memiliki prioritas bandwidth paling rendah. Nah setelah kita bikin bandwidth managementnya, tinggal kita panggil aja lewat script dibawah ini:
pass out on $ext_if proto {tcp,udp} from any to any port 53 keep state queue dns
pass out on $ext_if proto tcp from any to any port { 80, 443 } keep state queue www
pass out on $ext_if proto tcp from any to any port {6666, 6667, 6668} keep state queue chatting
pass in on $ext_if proto tcp from any to any port 22 keep state queue ssh

yang ditulis tebal diatas, digunakan untuk memanggil queue yang telah dibuat.

setelah membuat bandwidth management, maka tinggal kita bikin NAT nya. untuk penjelasan NAT, silakan baca manuual di internet. settingnya gini :

nat on $ext_if proto {tcp, udp, icmp} from $priv_addr to any -> $ext_addr

dari syntax diatas, dapat diartikan bahwa semua koneksi yang lewat interface $ext_if (rl0) yang berasal dari $priv_addr(192.168.0.0/24) yang menuju ke any (bisa ke semua tujuan), akan diubah menjadi 10.14.3.7 . Gampangnya, ketika suatu host A yg memiliki IP address 192.168.0.23 yang mengakses misalkan tele.stttelkom.ac.id, maka, di tele.stttelkom.ac.id akan mengenali host A memiliki IP address 10.14.3.7. begitu prinsip NAT.

Untuk skrip yang dibawahnya, saya rasa anda sudah mengerti maksudnya. nah untuk menjalankan firewall tsb jalankan perintah berikut (jangan lupa, setiap kali menjalankan script baru flush dulu firewall nya):

  • pfctl -F all (untuk nge flush firewall)
  • pfctl -f /etc/pf.conf

setelah firewall nya jalan, anda dapat melihat settingan yang sedang berjalan, caranya adalah :

  • pfctl -s all |more

output dari rule /etc/pf.conf adalah sebagai berikut :
TRANSLATION RULES:
nat on rl0 inet proto tcp from 192.168.0.0/24 to any -> 10.14.3.7
nat on rl0 inet proto udp from 192.168.0.0/24 to any -> 10.14.3.7
nat on rl0 inet proto icmp from 192.168.0.0/24 to any -> 10.14.3.7

FILTER RULES:
scrub in on rl0 all fragment reassemble
block drop all
pass in on xl0 proto tcp all
pass in on xl0 proto udp all
pass in on xl0 proto icmp all
pass out on xl0 proto tcp all
pass out on xl0 proto udp all
pass out on xl0 proto icmp all
pass in on rl0 proto udp from any to any port = domain keep state queue dns
pass out on rl0 proto tcp from any to any port = domain keep state queue dns
pass out on rl0 proto udp from any to any port = domain keep state queue dns
pass out on rl0 proto tcp from any to any port = http keep state queue www
pass out on rl0 proto tcp from any to any port = https keep state queue www
pass out on rl0 proto tcp from any to any port = 6666 keep state queue chatting
pass out on rl0 proto tcp from any to any port = ircd keep state queue chatting
pass out on rl0 proto tcp from any to any port = 6668 keep state queue chatting
pass in on rl0 proto tcp from any to any port = ssh keep state queue ssh

ALTQ:
queue dns priority 14 priq( red )
queue ssh priority 13 priq( red )
queue www priority 12 priq( red )
queue chatting priority 11 priq( red )
queue other priq( default )

STATES:
self tcp 10.14.3.7:22 <- 10.14.5.3:45374 ESTABLISHED:ESTABLISHED
self tcp 192.168.0.3:56849 -> 10.14.3.7:60543 -> 10.14.200.231:6667 ESTABLISHED:ESTABLISHED

sebenernya outputnya banyak banget sihh, tapi saya coba mengambil yang penting penting aja.

mungkin cukup sekian dulu sedikit informasi mengenai PF dan bandwidth dengan PF. thanks to temon yang udah banyak ngajarin saya……….

semoga bermanfaat buat temen temen semua

NB : skema jaringannya :

skema_awal_1.jpg