Serba-serbi VPN

VPN itu apa sih? Virtual Private Network adalah teknologi untuk membuat serangkaian perangkat terhubung ke jaringan virtual yang sama. Jadi seolah-olah berbagai device tergabung di satu jaringan. Di posting ini saya akan membahas VPN dari sudut pandang user, sampai kalau ingin membuat VPN sendiri.

VPN banyak digunakan di dunia corporate atau enterprise. Penggunaan yang umum adalah untuk menghubungkan berbagai kantor regional dengan kantor lain atau dengan kantor pusat. VPN juga dipakai oleh remote worker untuk mengakses resource kantor (server, printer, dsb) yang tidak bisa diakses dari umum. Dengan koneksi VPN, komputer rumah atau laptop masuk ke jaringan perusahaan. Jika browsing via VPN maka , seolah-olah kita mengakses internet dari perusahaan tersebut.

Sumber: wikipedia

Beberapa bank juga menggunakan koneksi VPN untuk partnernya, jadi berbagai perusahaan yang ingin mengakses sistem bank harus lewat VPN. Ini hanya layer keamanan tambahan, selain itu masih digunakan password dan juga token.

Continue reading “Serba-serbi VPN”

Server rumah dengan IP publik

Sebagian orang ingin menghosting sendiri berbagai hal di rumah (atau kantor kecil), baik itu web, email, maupun layanan lain. Biasanya koneksi ISP tidak akan memberikan IP publik yang statik tanpa membayar ekstra (biasanya mahal), jadi biasanya banyak trik digunakan supaya server rumah bisa diakses dari luar.

Sebagai catatan sebelum menggunakan trik yang ada di sini: pertimbangkan memakai VPS atau dedicated server. Membuat server di rumah punya banyak kelemahan jika ANda tidak mengerti apa yang Anda lakukan:

  • Koneksi internet dan pasokan listirk di rumah biasanya kurang reliable dibanding data center
  • Jika salah konfigurasi, hacker bisa lebih mudah masuk ke jaringan rumah
  • Mengkonfigurasi semuanya sendiri cukup melelahkan/membuang banyak waktu

Dynamic DNS

Beberapa layanan tertentu seperti web cukup memakai dynamic DNS dan tidak perlu server eksternal tambahan. Artinya sebuah nama domain selalu diupdate IP-nya dengan IP terbaru saat ini. Untuk mengupdate ini bisa digunakan berbagai layanan Dynamic DNS dan server di rumah perlu diinstall software untuk mengupdate pemetaan nama ke IP.

Gambarannya kira-kira seperti ini:

Masalah dengan pendekatan ini adalah: akan ada jeda ketika ada update nama ke IP. Jeda ini karena DNS server akan mengcache informasi IP. TTL terkecil yang bisa diset biasanya 30 detik dan berbagai layanan DNS biasanya mengeset waktu minimumnya 1 menit. Jadi ketika ada pergantian IP, sekitar 1 menit kemudian kita baru bisa mengakses nama tersebut dengan IP baru.

Continue reading “Server rumah dengan IP publik”

VPN dengan Tinc

Saat ini ada banyak sekali solusi VPN yang tersedia dengan segala kelebihan dan keterbatasannya. Beberapa contoh solusi yang populer dan gratis adalah OpenVPN, strongSwan, WireGuard, berbagai implementasi PPTP, tinc, dan VPN via SSH. Posting ini akan membahas mengenai tinc yang memiliki fitur mesh networking.

Beberapa perbedaan dari berbagai solusi VPN ini adalah:

  • Support platformnya. Contoh: saat ini wireguard tidak memiliki client di Windows, jadi kalau Anda memakai Windows, ini jelas tidak akan dipertimbangkan.
  • Kemudahan instalasinya (contoh: VPN melalui SSH cukup rumit setupnya, terutama di Windows)
  • Kecepatannya (ini biasanya hanya jika Anda memakai link dengan kecepatan tinggi) dan CPU usagenya (jika memiliki komputer dengan spesifikasi rendah)
  • Keamanannya, walau secara praktis serangan terhadap berbagai protokol VPN ini jarang/sulit dilakukan kecuali pada protokol kuno seperti PPTP.

Selain berbagai perbedaan teknis, pertimbangan lain memilih VPN adalah: apakah protokol VPN tertentu atau port tertentu diblok oleh ISP. Contohnya di ISP saya saat ini VPN dengan PPTP diblok, jadi harus menggunakan yang lain.

Continue reading “VPN dengan Tinc”

Apache Guacamole

Apache Guacamole adalah clientless remote desktop gateway. Atau mudahnya: jika kita menginstall ini di sebuah gateway (atau di server remote), kita bisa mengakses Windows (via RDP), Linux (via VNC), atau SSH ke manapun dengan menggunakan browser saja.

Saat ini saya masih memakai Mini PC Router yang dibeli sekitar 2 tahun lalu. Mini PC ini cukup powerful untuk menjalankan berbagai aplikasi (memorinya 4 GB, dengan SSD 120 GB) termasuk juga Apache Guacamole yang memakai Java. Meskipun dalam 99% kasus saya lebih suka memakai aplikasi SSH langsung, tapi Guacamole ini sangat berguna ketika butuh akses GUI.

Dengan chrome melakukan koneksi ke rumah, lalu menjalankan Firefox

Sebelum memakai Guacamole saya memakai Team Viewer, tapi dulu sempat ada kecurigaan bug di team viewer yang memungkinkan orang masuk ke komputer kita. Selain masalah bug itu, TeamViewer juga kadang error ketika melakukan remote connection ke Linux. Solusi berikutnya yang saya coba adalah SSH + Port forwarding plus remote desktop dan VNC viewer. Hal ini cukup merepotkan, jadi jarang saya lakukan.

Sekarang dengan browser saja saya bisa melakukan koneksi ke rumah via Guacamole ke server Windows dan juga Linux. Untuk Linux saya menggunakan beberapa VNCServer (di satu server) untuk tujuan tertentu. Misalnya ada satu VNCServer untuk pentesting (yang memakai OWASP ZAProxy dengan GUI).

Saya juga memasang guacamole di server dedicated di Eropa. Kadang download sesuatu lebih cepat dilakukan dari server di Eropa. Dalam 90% kasus biasanya download bisa dilakukan di command line, tapi ada website yang melakukan banyak proteksi sehingga sulit dilakukan.

Contoh proteksi downloadnya:

  • Hanya boleh ada 1 koneksi setiap waktu
  • Harus memakai Cookie dan Cookienya terikat pada IP tertentu (jadi ketika dicopy paste ke server, jadi tidak valid)
  • Harus memakai user agent tertentu (jadi jika memakai command line, user agent harus dicopy persis)
  • Download menggunakan Javascript dan file didekrip di level Javascript

Daripada menghabiskan waktu mengakali, yang saya lakukan adalah:

  • membuka guacamole
  • memilih koneksi VNC ke server di Eropa
  • menjalankan browser di dalam koneksi VNC
  • mendownload file via browser yang berjalan di cloud
  • mentransfer file dari server ke rumah

Sepertinya langkah tersebut merepotkan, tapi dalam kasus tertentu bisa menghemat waktu sangat banyak. Kadang download yang butuh 3 jam bisa dilakukan dalam 10 atau 15 menit.

Penjelasan DNS Flag Day

Tanggal 1 Februari nanti akan ada perubahan bersangkutan dengan DNS (Domain Name System). Secara singkat: berbagai domain yang terdaftar di berbagai DNS server yang tidak compliant dengan standar EDNS akan bermasalah sejak tanggal itu. Sebagai user: kemungkinan beberapa domain menjadi tidak bisa diakses sejak tanggal tersebut (atau beberapa hari/minggu setelahnya).

Sayangnya penjelasan singkat tersebuttidak cukup dan bikin penasaran banyak orang: sebenarnya apa sih yang akan terjadi? Saya coba cari sekilas belum ada penjelasan dalam bahasa Indonesia yang mudah dimengerti, jadi saya akan mencoba menjelaskannya di sini. Sebelum masuk ke penjelasan flag day ini, saya akan mulai dulu dengan penjelasan singkat tentang DNS dan sedikit sejarahnya karena ini ada hubungannya dengan masalah saat ini.

Apa itu DNS?

Pada Internet Protocol (IP) ketika sebuah program melakukan koneksi ke sebuah server berdasarkan nama, maka diperlukan proses translasi dari nama menjadi alamat IP. Proses translasi ini dulunya hanya memakai file teks (hosts.txt) ketika internet belum besar. Sampai sekarang pun ini masih didukung berbagai sistem operasi dengan file hosts.

Continue reading “Penjelasan DNS Flag Day”

Kisah sebuah bug kecil

Saya mau cerita tentang sebuah bug yang saya perbaiki dan dapat bounty 200 USD plus kerjaan ekstra yang menyusul dari ini. Meski secara nilai ini kecil dibandingkan banyak proyek lain, tapi ada banyak hal yang membuat gembira dari satu bug kecil ini sehingga ingin saya ceritakan.

Maaf, ini bukan cerita tentang serangga, tapi bug software

Cerita singkatnya: teman saya┬ámemakai software open source QZ, sebuah library untuk printing via web browser. Jadi jika client menginstall software ini di PC-nya maka web app yang memakai library QZ bisa mengakses langsung printer lokal. Langsung di sini artinya bisa mengirimkan kode mentah, sehingga printing bisa cepat dan mendukung berbagai fitur spesifik printer. Fitur semacam ini dibutuhkan untuk software Point Of Sales, aplikasi bank atau sejenisnya yang butuh langsung mencetak ke printer yang tidak standar (misalnya printer thermal, printer buku tabungan, dsb). Continue reading “Kisah sebuah bug kecil”

SSH Tunneling dan Internet Gratis

Saat ini sepertinya semua developer sudah memakai SSH sehari-hari. Sebagian mungkin sudah mengenal beberapa fitur ekstra SSH, tapi kebanyakan tidak tahu fitur lengkapnya. Wajar saja sih, meski RFC untuk SSH ini singkat (terbagi dalam beberapa RFC), ada banyak fitur di luar RFC yang diimplementasikan oleh berbagai software SSH. Sampai-sampai ada beberapa buku yang khusus hanya membahas SSH saja.

Di tulisan ini, saya tidak akan membahas semua fitur SSH, hanya beberapa fitur yang menarik yang berhubungan dengan port forwarding, serta pembahasan bagaimana SSH ini bisa menjadi jalan untuk internet gratis atau tanpa restriksi.

Fitur paling dasar yang dikenal orang adalah login ke server lain, dan berikutnya mungkin melakukan scp atau sftp ke server lain untuk mentransfer file. Fitur menarik berikutnya adalah X11 forwarding yang untuk mengakses aplikasi GUI di server (unix) lain.
client-server

SSH mendukung multi channel dalam satu koneksi, dan ini bisa dimanfaatkan untuk TCP/IP forwarding (mengenai ini bisa dibaca di RFC 4254). Saya akan jelaskan beberapa kegunaan forwarding ini. Channel yang dibentuk oleh mekanisme forwarding ini disebut juga sebagai tunnel.

Continue reading “SSH Tunneling dan Internet Gratis”