Belajar Remote Desktop - Keamanan Dasar VNC (Password & View-only)
Episode 12 of 23

Belajar Remote Desktop - Keamanan Dasar VNC (Password & View-only)

Episode ini membangun pertahanan pertama VNC: memahami vncpasswd dan keterbatasan password 8 karakter, password view-only, pembatasan akses dengan -localhost dan bind ke interface tertentu, serta aturan firewall yang hanya mengizinkan IP client tertentu.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Sejauh ini kalian fokus membuat VNC bekerja. Mulai episode 12, kita berbalik arah: bagaimana membuat VNC tidak mudah disusupi. Jujur saja — autentikasi bawaan VNC lemah. Password-nya pendek, transfer layarnya tidak terenkripsi, dan banyak implementasi membuka diri ke seluruh jaringan secara default.

Episode ini membangun pertahanan lapis pertama: memahami keterbatasan vncpasswd, menggunakan password view-only, membatasi akses dengan -localhost dan bind ke interface tertentu, serta mengonfigurasi firewall agar hanya IP client yang diizinkan bisa masuk. Enkripsi penuh akan menyusul di episode 13 dan 14.

vncpasswd dan Keterbatasannya

Membuat dan Menyimpan Password

Alat utama autentikasi VNC adalah vncpasswd. Dia membuat file password yang dibaca server untuk memvalidasi client:

Membuat password VNC
vncpasswd
vncpasswd -f > ~/.vnc/passwd

Perintah vncpasswd berjalan interaktif dan menulis ke ~/.vnc/passwd. Opsi -f memungkinkan password dibaca dari input terpisah — berguna saat membuat password untuk beberapa user dalam skrip.

Batas 8 Karakter yang Lemah

Ini kelemahan mendasar yang wajib kalian pahami: autentikasi VNC klasik hanya memakai 8 karakter pertama dari password. Karakter sisanya diabaikan, dan verifikasinya memakai DES dengan kunci derivasi yang sudah dikenal publik. Konsekuensinya:

  • Password lebih dari 8 karakter tidak menambah keamanan pada autentikasi VNC klasik.
  • Kunci DES bisa di-brute-force secara offline jika penyerang menangkap handshake.
  • Ganti "password panjang" dengan kombinasi yang benar-benar acak pada 8 karakter pertama.
Cek panjang password tersimpan
x11vnc -storepasswd

Karena keterbatasan ini, jangan pernah mengandalkan password VNC sendirian. Password hanya lapis pertama; enkripsi transport (TLS/SSH) adalah lapis yang menutup celah sesungguhnya, dan akan dibahas di episode 13-14.

Warning

Jangan pernah memakai kata atau tanggal yang bisa ditebak sebagai password VNC. Dengan batas 8 karakter, setiap kemudahan mengingat adalah kelemahan yang bisa dieksploitasi lebih cepat.

Password View-Only

Memisahkan Hak Akses

Beberapa implementasi VNC memungkinkan dua kelas password: satu untuk kontrol penuh, satu lagi hanya untuk melihat layar. Di x11vnc, gunakan -viewpasswd:

Server dengan dua kelas password
x11vnc -display :0 -rfbauth /etc/x11vnc.pass -viewpasswd /etc/x11vnc-view.pass

Perintah x11vnc -display :0 -rfbauth /etc/x11vnc.pass -viewpasswd /etc/x11vnc-view.pass membuat koneksi dengan password utama bisa mengendalikan layar, sementara koneksi dengan password kedua hanya bisa melihat — tanpa bisa mengetik atau menggerakkan mouse.

Fitur ini ideal untuk skenario presentasi: peserta bisa mengikuti layar, hanya satu presenter yang mengendalikan. Kombinasikan dengan pembatasan clipboard yang dibahas di episode 11 untuk sesi yang benar-benar terkunci.

Access Control di Sisi Server

-localhost: Batasi ke Loopback

Cara paling tegas membatasi akses adalah -localhost, yang membuat server hanya mendengarkan di 127.0.0.1. Tidak ada mesin lain di jaringan yang bisa terhubung langsung:

VNC hanya untuk localhost
x11vnc -display :0 -rfbauth /etc/x11vnc.pass -localhost
vncserver :1 -localhost -geometry 1920x1080

Perintah vncserver :1 -localhost -geometry 1920x1080 memulai virtual display yang hanya bisa diakses dari mesin itu sendiri. Ini pola paling aman: VNC tetap mati bagi jaringan, dan akses dibuka hanya lewat SSH tunnel (episode 14).

Bind ke Interface Tertentu

Jika server punya beberapa interface jaringan, kalian bisa mengikat VNC hanya ke satu interface internal dengan opsi -listen di x11vnc:

Bind x11vnc ke interface internal
x11vnc -display :0 -rfbauth /etc/x11vnc.pass -listen 192.168.1.20

x11vnc -listen 192.168.1.20 membuat server mendengarkan hanya di alamat internal, sehingga VNC tidak terlihat dari interface publik. Verifikasi dengan ss:

Verifikasi interface listen
ss -tulpn | grep 5900

Firewall: Hanya Izinkan IP Client

ufw di Debian dan Ubuntu

Firewall adalah lapis pertahanan yang mengatur siapa yang bisa mencapai port. Di Debian/Ubuntu dengan ufw, izinkan hanya satu IP client ke port VNC:

Allow IP client di ufw
sudo ufw allow from 192.168.1.100 to any port 5900 proto tcp
sudo ufw status verbose

Perintah sudo ufw allow from 192.168.1.100 to any port 5900 proto tcp membuat aturan yang hanya membuka port 5900 untuk IP tersebut — semua IP lain ditolak.

firewalld di RHEL dan Rocky

Di keluarga RHEL, aturan yang sama ditulis dengan rich rule:

Allow IP client di firewalld
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.100 port port=5900 protocol=tcp accept'
sudo firewall-cmd --reload

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.100 port port=5900 protocol=tcp accept' menyimpan aturan permanen yang hanya menerima koneksi dari 192.168.1.100. Ubah alamat sesuai IP client kalian, bukan menyebar akses ke seluruh subnet.

Pola Lapisan yang Ideal

Secara keseluruhan, pertahanan dasar VNC idealnya disusun berlapis:

  • Layer 1: password acak yang kuat pada 8 karakter pertama.
  • Layer 2: password view-only untuk sesi yang hanya menampilkan layar.
  • Layer 3: bind ke interface internal atau -localhost.
  • Layer 4: firewall yang hanya mengizinkan IP client tertentu.
Lapisan keamanan dasar
password  +  view-only  +  bind/interface  +  firewall  ->  server VNC aman

Penutup

Episode 12 membangun pertahanan pertama: memahami kelemahan password VNC 8 karakter, memisahkan hak kontrol dengan password view-only, membatasi akses via -localhost dan bind interface, serta menutup port dengan firewall yang hanya mengizinkan IP client.

Inti yang harus dibawa pulang:

  • Autentikasi VNC klasik hanya memakai 8 karakter pertama password.
  • Password VNC lemah secara desain — jangan pernah jadi satu-satunya pertahanan.
  • -viewpasswd membuat koneksi yang hanya bisa melihat layar.
  • -localhost dan -listen membatasi akses di sisi server.
  • ufw dan firewalld bisa mengizinkan hanya satu IP client.
  • Lapiskan semuanya: password, view-only, bind, dan firewall.

Di episode 13 selanjutnya kita menutup kelemahan terbesar VNC: enkripsi — masalah VNC plaintext yang bisa disadap, aktivasi TLS/SSL di x11vnc dan TigerVNC, serta mengapa SSH tunnel adalah lapis enkripsi yang wajib. Sampai jumpa!

Belajar Remote Desktop - Keamanan Dasar VNC (Password & View-only) | Belajar Remote Desktop