Beberapa hari yang lalu seorang pelanggan di warnet menggunakan proxy eksternal dengan IP 125.160.17.33 port 8080 pada web browsernya sehingga pembatasan yang saya lakukan di proxy server warnet ter-bypass olehnya. Parahnya proxy eksternal tersebut memberikan bandwith yang lebih besar dari pada proxy warnet, sehingga pelanggan lain mengalami kelambatan koneksi.

Memang, proxy dapat dengan ampuh membatasi koneksi dari client, namun proxy jugalah yang dapat menghilangkan pembatasan tersebut.

Bagaimana saya mengetahuinya? Inilah yang akan saya jelaskan dalam artikel ini, berikut bagaimana mengatasinya (blocking koneksi ke proxy eksternal).

Masuklah ke IPCop via browser, kemudian masuk ke menu Status >> Connection

Gbr. 1: Rekaman tiap koneksi dari client di IPCOP ayng disajikan dalam warna

Menu connection IPCop menyajikan kepada kita setiap koneksi paket yang terjadi antara jaringan lokal dengan jaringan luar (internet) yang disajikan secara berurutan mulai dari original source IP:port – Original Dest. IP:Port – Expected Source IP:port – Expected Dest. IP:Port

Koneksi tersebut dilengkapi pula dengan warna yang berbeda yang menunjukkan node atau mesin yang dilalui koneksi tersebut. Warna hijau adalah LAN atau komputer client, Merah adalah internet atau server tujuan di internet, kuning merupakan mesin DMZ, Biru adalah komputer client yang konek via wifi, hitam adalah proxy IPCop sendiri, serta terakhir ungu yang mewakili koneksi VPN.

Sebuah koneksi http yang normal dari jaringan lokal (dari client via kabel biasa) ke internet, oleh IPCop pada kolom connection ditampilkan sbb:

  1. Pada kolom Original source IP:port akan ditampilkan sebagai LAN dengan warna HIJAU.
  2. Kolom Original Dest. IP:Port merupakan ip server tujuan yang asli di Internet beserta port, sehingga berwarna MERAH. Kolom ini sebenarnya hanyalah pernyataan tentang tujuan paket saja bukan mewakili mesin yang dilaluinya. Mesin yang dilalui koneksi tersebut ada pada kolom ketiga.
  3. Kolom Expected Source IP:port seharusnya adalah proxy IPCop sendiri, karena setiap request dari client (LAN) pada port 80 ke internet (koneksi http biasaya memakai port ini) akan melewati proxy IPCOP. Sehingga kolom ini seharusnya berwarna HITAM. Jika merah layak dicurigai.
  4. Kolom Expected Dest. IP:port merupakan IP client lokal tujuan (setelah dari internet), akan ditampilkan kembali sebagai LAN dengan warna HIJAU. Kenapa kok langsung ke LAN? Bukan IPCop atau hitam? warna hitam dalam hal ini menunjukkan proxy-nya IPCop bukan komputer IPCop, karena koneksi dari internet tersebut telah dianggap aman sehingga ia tidak melewati proxy IPCop. Kira-kira begitu (CMIIW).

Sehingga urutan warna yang benar pada koneksi http yang normal adalah HIJAU-MERAH-HITAM-HIJAU sebagaimana gambar berikut.

Gbr. 2: Urutan warna yang benar pada koneksi http yang normal

Nah, jika pelanggan menggunakan proxy eksternal seperti pada kasus yang saya alami di atas, koneksi http-nya akan berurutan (dalam warna: HIJAU-MERAH-MERAH-HITAM) seperti gambar berikut:

Gbr. 3: Urutan warna yang muncul, saat koneksi http menggunakan proxy eksternal

Dari Gbr. 3 diatas kita dapat melihat bahwa koneksi dari sebuah client LAN dengan IP 192.168.2.103 (berwarna HIAJU pada kolom pertama) menuju ke internet ber-IP 125.160.17.33 pada port 8080 (kolom kedua berwarna MERAH), dimana dilakukan secara langsung ke IP dan port tujuan (kolom ketiga berwarna merah). Mestinya koneksi tersebut harus melalui proxy IPCop kita (sehingga kolom ketiga mestinya berwarna HITAM). Kemudian ketika paket datang kembali ia malah menuju IPCop (kolom keempat HITAM), karena IPCop “merasa tidak mengenali” paket tersebut sehingga perlu ia tahu.

Saya juga dapat mengetahui bahwa koneksi seperti yang ditunjukkan pada gambar diatas adalah koneksi http yang mem-bypass proxy IPCop dari pemakaian port-nya yang 8080, dimana port 8080 adalah port yang jamak digunakan oleh proxy.

Nah jika kita menemui urutan koneksi HIJAU-MERAH-MERAH-HITAM seperti di atas, kita boleh curiga bahwa client tersebut mem-bypass proxy kita dengan memakai proxy lain.

Namun yang perlu juga dipahami, bukan berarti semua koneksi dengan urutan warna seperti di atas (HIJAU-MERAH-MERAH-HITAM) adalah koneksi http yang mencurangi proxy kita. Seperti koneksi yang ditunjukkan oleh Gbr. 4 dan Gbr. 5 berikut;

Gbr. 4: Urutan warna pada koneksi non-http (YM chatiing) yang memang tidak melalui proxy IPCOP

Bagaimana saya tahu bahwa koneksi tersebut tidak memakai proxy eksternal (Gbr. 4)?

Ada tiga penjelasan;

  1. IP LAN tersebut (192.168.2.100, pada kolom pertama) adalah IP komputer yang sedang saya gunakan, dan pastinya tidak sedang pake proxy eksternal, hehehe.
  2. Port tujuan 5050 (kolom 2 dan 3) adalah port yang digunakan oleh Yahoo messenger (ini artinya koneksi chatting, bukan http). Apakah koneksi chatting tidak menggunakan proxy?. Jawabannya dalam hal ini adalah TIDAK. Karena software proxy yang digunakan oleh IPCOP adalah ber-merk Squid. Dimana Squid merupakan proxy untuk koneksi http (http proxy) jadi selain koneksi http, tidak menggunakan/melalui proxy (squid).
  3. IP tujuan 69.147.84.126 setelah di cek di http://www.domainwhitepages.com memastikan bahwa IP tersebut benar-benar milik  yahoo, bukan ip sebuah komputer yang tidak jelas yang dapat dicurigai sebagai proxy eksternal.

Ketiga penjelasan di atas inilah yang kita gunakan untuk memutuskan apakah koneksi (client) tersebut sedang menggunakan proxy eksternal atau tidak. Jika iya, blok saja. Akur kan?

Terus bagaimana dengan koneksi berikut?

Gbr. 5: Urutan warna pada koneksi non-http (secure-http/https) yang memang tidak melalui proxy IPCOP

Koneksi yang ini (Gbr. 5) cukup kita lihat dari port tujuannya yaitu  443 (pada kolom ke-2 dan ke-3), dimana port 443 adalah port yang digunakan untuk koneksi https (secure http) bukan http. Sehingga memang seharusnya k0neksi tersebut tidak melewati proxy IPCOP kita. (selanjutnya untuk daftar port lain bisa dibaca disini).

Cara Mem-blok koneksi tersebut

Oke sekarang kita sudah dapat mengetahui client mana yang memakai proxy eksternal, terus bagaimana cara mem-bloknya?

Untuk itu kita setidaknya membutuhkan 2 data yaitu IP dari proxy eksternal dan port yang dipakai. Pada kasus saya diatas, saya sudah mendapatkan IP proxy yang dimaksud (125.160.17.33) dan juga port-nya (8080). Sekarang saatnya kita blok via iptables.

1. Masuk ke IPCOP pake putty

2. Ketikkan iptables -I FORWARD -p tcp -d 125.160.17.33 –dport 8080 -j REJECT

3. Selesai sudah, huft!

Rule ini tidak akan disimpan oleh Iptables . Artinya, pada saat IPCop reboot, perintah tersebut hilang, sehingga kita musti mengetikkannya kembali jika dibutuhkan. Agar tersimpan permanen, simpan rule tadi di file /etc/rc.d/rc.firewall.local. caranya;

1. Login ke IPCop via winscp

2. Buka file rc.firewall.local di /etc/rc.d

3. Tepat di bawah baris ## add your ‘start’ rules here tambahkan rule

iptables -I FORWARD -p tcp -d 125.160.17.33 –dport 8080 -j REJECT

4. Simpan dan tutup

5. Untuk proxy eksternal lain dan port lain yang ditemukan, silahkan tambahkan dibawah rule pertama, cukup ganti IP dan port-nya.

Dari pengalaman saya di warnet, tidak semua pelanggan suka iseng dengan menggunakan proxy eksternal. Biasanya pelanggan yang itu-itu saja. Kesulitannya adalah, jika si admin tidak merangkap jadi operator warnet (seperti saya). Sulit mengetahui kapan “si pelanggan” datang ke warnet kita buat online. Oleh karena itu, kita musti educate para operator kita untuk selalu memeriksa keadaan di menu connection pada IPCOP, terutama saat “si pelanggan” (dan pelanggan lain yang layak dicurigai) sedang online. Jika menemukan ciri-ciri warna seperti diatas, suruh si operator mencatat IP dan port dari proxy eksternal nya. Kalo mungkin sekalian ajarkan bagaiamana cara membloknya dengan iptables dan meng-config file /etc/rc.d/rc.firewall.local di IPCOP.

Semoga membantu