Halaman

Rabu, 20 Mei 2015

HTTPS IPFire

Pada tulisan-tulisan saya yang sebelumnya, saya mengangkat beberapa topik mengenai IPFire

terutama enhancement untuk web proxy misalnya implementasi lusca / squid-2.7-STABLE9 di

IPFire, caching dynamic content, dan sebagainya. Nah, kali ini saya coba mengangkat kembali

topic web proxy IPFire terutama untuk implementasi fitur SSL bump dan caching HTTPS pada

web proxy IPFire.


Latar belakang caching HTTPS di IPFire

Sebagaimana yang kita ketahui, bahwa bandwidth yang di tawarkan oleh ISP di Indonesia pada

prinsipnya memiliki kecepatan akses yang rendah dan secara ekonomis, biaya untuk memiliki

bandwidth pita lebar yang cepat sangat mahal.

Hal seperti ini, terkadang membuat kelimpungan bagi admin jaringan internet – baik yang

berskala kecil seperti warnet / gamecenter sampai dengan yang berskala besar –  mengupayakan

penghematan dan optimasi penggunaan bandwidth. Parahnya, belakangan ini penggunaan

HTTPS terus berkembang dan menjadi populer. Situs-situs yang sering diakses seperti Facebook,

Twitter dan sebagainya secara masif menggunakan HTTPS/SSL di laman web milik mereka.

Dengan kondisi yang demikian, maka caching “konten web biasa” seperti yang dapat dilakukan

squid biasa menjadi tidak efektif, karena kemampuannya yang hanya dapat melakukan caching

konten non-HTTPS.


Squidward Tentacles

Diskusi dimulai!

Dengan mempertimbangkan alasan tersebut, saya mencoba memberanikan diri menanyakan

kepada developer IPFire untuk mengimplementasikan SSL bump / caching HTTPS dengan

sempurna di IPFire, namun di tolak karena secara prinsip menjadi man-in-the-middle HTTPS

adalah sebuah pelanggaran privasi dan terlarang di beberapa negara (baca diskusinya disini).

Para sahabat terus mendukung upaya ini, namun developer tetap menolaknya. Well, apa boleh

buat.. untuk mengakomodasi keinginan dari kawan-kawan yang membutuhkan, akhirnya saya

memutuskan untuk mem-build IPFire sendiri yang full support untuk cache HTTPS.


HTTPS Caching Dengan IPFire

Disclaimer dan warning!

Tutorial ini dibuat apa adanya (AS-IS), dan penulis nggak bertanggung jawab kalo ada error atau

segala bentuk kerusakan. Penulis juga tidak bisa memastikan kinerja IPFire bisa seperti yang

masbro harapkan, karena pada prinsipnya untuk mendapatkan kinerja terbaik sebuah sistem

adalah membuat konfigurasinya sesuai dengan keperluan ditempat masbro masing-masing.

Jangan cuman copas, tapi copas-lah sambil mempelajari yang masbro copas. :)

Sebelum di implementasikan di mesin produksi, cobalah jalankan di mesin virtual dulu!

FYI,

- Non-official BUILD. Gunakan dengan resiko masbro sendiri.

- ISO ini menggunakan web proxy squid-3.4.7 (core update 81-dirty).

- Update core compatibility : update up to core 82

- Man-in-the-middle HTTPS secara teknis MELANGGAR PRIVASI pengguna internet!*

* karena HTTPS dirancang untuk mengamankan akses ke laman internet yang

dianggap riskan terhadap pencurian data,

misalnya situs internet banking, email, dan sebagainya.

Dengan mengikuti tutorial ini, ANDA setuju bahwa segala pelanggaran privasi

tersebut adalah tanggung jawab ANDA pribadi.

Pada build ini saya menggunakan branch core update 81 dari git IPFire, diracik untuk

menggunakan squid-3.4.7 (termasuk di dalamnya patch bug 3937 dan patch memory leak SSL).

Build ini dapat di unduh pada alamat URL dibawah ini :

http://bahaya.kebiasaan.ml/ipfire-2.15.i586-full-core81.iso

Setelah fresh install dan IPFire telah terhubung dengan internet, JANGAN mengaktifkan web

proxy! Ikuti langkah-langkah di bawah ini :

Pertama, download dan jalankan script autoconfig yang saya buat lewat SSH

wget http://bahaya.kebiasaan.ml/autocfg.sh ; bash autocfg.sh

Ikutilah petunjuk yang muncul di layar. Isi semua field yang diperlukan dengan baik dan benar.


Autoconfig SSL Bump

Selanjutnya, lakukan sedikit modifikasi pada init script web proxy (sebelumnya jangan lupa buat

backup nya dulu).

# cp /etc/init.d/squid /etc/init.d/squid.backup

Di dalam file etc/init.d/squid, temukan baris seperti ini :

iptables -t nat -A SQUID -i $1 -p tcp -d $LOCALIP --dport 80 -j RETURN

iptables -t nat -A SQUID -i $1 -p tcp --dport 80 -j REDIRECT --to-port

"${TRANSPARENT_PORT}"

Kemudian tambahkan rule iptables yang baru, menjadi seperti ini :

iptables -t nat -A SQUID -i $1 -p tcp -d $LOCALIP --dport 80 -j RETURN

iptables -t nat -A SQUID -i $1 -p tcp -d $LOCALIP --dport 443 -j RETURN

iptables -t nat -A SQUID -i $1 -p tcp --dport 80 -j REDIRECT --to-port

"${TRANSPARENT_PORT}"

iptables -t nat -A SQUID -i $1 -p tcp --dport 443 -j REDIRECT --to-port 3129

Setelah editing selesai, lakukan “SAVE” konfigurasi web proxy lewat web interface, periksa

konfigurasi proxy dengan menggunakan “squid -k parse” dan pastikan tidak ada ERROR pada

konfigurasi.

Jika tidak ada error, silakan lanjutkan dengan mengakses halaman web interface > Web proxy,

klik “SAVE and RESTART”. Cek kembali di halaman web interface > IPTables, dibagian

“iptable network address translation”, klik “SQUID” > Update, jika NAT sudah benar akan

terlihat “tcp dpt:443 redir ports 3129″, seperti pada gambar berikut ini:


IPTables > Squid NAT

Langkah selanjutnya adalah, pengaturan disisi klien.

Perlu dicatat, bahwa sobat WAJIB mengimport sertifikat SSL secara manual ke browser klien.

Kalo tidak, maka dapat dipastikan klien akan error saat browsing ke situs-situs HTTPS. :)

Silakan download sertifikat untuk selanjutnya di import ke browser klien. URL download adalah

http://<ip-green-ipfire>:81/client.crt

Saya menggunakan Firefox versi paling anyar, dan langsung di tanyakan apakah akan

mengimpor sertifikat tersebut. Jika di tempat masbro juga demikian, silakan klik semua “Trust”

kemudian klik “OK”.


Import sertifikat SSL

Semua selesai… silakan isi cache web proxy / browsing-browsing santai, dan perhatikan log-nya

dengan menggunakan tail. Hasilnya akan nampak seperti ini :


HTTPS cache HIT

1 komentar:

  1. link autocfg.sh nya udah gabisa di pakai gan, boleh minta kirim ke email pribadi ane gan di agg.agung2408@gmail.com,ane bahagia kali kalau agan bisa kirim filenya thanks

    BalasHapus