Episode ini merangkum praktik hardening untuk akses remote: password kuat dan port non-default, eksposur SSH-only, fail2ban untuk port VNC/RDP, TCP wrappers sebagai pertahanan legacy, serta monitoring log koneksi dan auditing akses dengan journalctl.

Kalian sudah punya server VNC dan RDP yang berjalan, lengkap dengan autentikasi, enkripsi, dan tunnel. Episode 16 menyatukan semuanya menjadi postur pertahanan yang utuh. Hardening bukan satu perintah ajaib — ini serangkaian keputusan kecil yang, jika digabungkan, membuat server kalian jauh lebih sulit disusupi.
Episode ini membahas lima area: password kuat dan port non-default, eksposur SSH-only, fail2ban untuk port VNC/RDP, TCP wrappers, serta monitoring dan auditing akses. Di akhir episode, kalian punya checklist yang bisa langsung diterapkan ke server produksi.
Port default memudahkan penyerang melakukan port scanning dengan cepat. Mengganti port tidak menghentikan penyerang yang tekun, tapi menghilangkan ribuan percobaan otomatis. Untuk xrdp, ubah di /etc/xrdp/xrdp.ini:
[Globals]
port=3390Untuk x11vnc, gunakan -autoport dengan rentang port, atau tentukan port eksplisit:
x11vnc -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5907Perintah x11vnc -rfbport 5907 memindahkan server ke port 5907. Ingat: mengganti port bukanlah keamanan itu sendiri, melainkan obscurity — tetap wajib dikombinasikan dengan lapisan lainnya.
Ganti password secara berkala, jangan pernah memakai ulang password untuk service lain, dan pastikan user server tidak memakai password lemah. Ingat batas 8 karakter VNC dari episode 12: untuk VNC, enkripsi transport adalah yang sesungguhnya melindungi.
Pola paling aman yang sudah dibangun sejak episode 14: jangan pernah mengekspos port VNC/RDP ke internet. Tutup port tersebut di firewall, biarkan hanya SSH yang terbuka, dan akses service remote melalui tunnel.
sudo ufw deny 5900/tcp
sudo ufw deny 3389/tcp
sudo ufw allow OpenSSH
sudo ufw status verbosePerintah ufw deny 5900/tcp dan ufw deny 3389/tcp menutup port VNC dan RDP dari jaringan luar, sementara ufw allow OpenSSH menjaga jalur tunnel tetap terbuka. Dari sisi pengguna, akses dilakukan dengan ssh -L lalu viewer ke port lokal — pola yang sama sekali tidak mengubah cara kerja server.
Tip
Uji kebenaran firewall dari mesin lain, bukan dari server itu sendiri. nc -zv <ip-server> 5900 harus gagal, sementara nc -zv <ip-server> 22 berhasil. Jika keduanya terbuka, ada aturan firewall yang salah.
fail2ban memantau log, menghitung percobaan login gagal, dan memblokir IP penyerang. Untuk service yang memakai logfile sendiri, buat filter dan jail. Buat /etc/fail2ban/filter.d/x11vnc.conf:
[Definition]
failregex = ^.*Client connection from <HOST>.*failed.*$
ignoreregex =Lalu aktifkan jail di /etc/fail2ban/jail.local:
[x11vnc]
enabled = true
filter = x11vnc
logpath = /var/log/x11vnc.log
maxretry = 3
bantime = 3600Pastikan x11vnc menulis log ke file tersebut dengan -logfile:
x11vnc -display :0 -rfbauth /etc/x11vnc.pass -logfile /var/log/x11vnc.log -foreverPerintah x11vnc -logfile /var/log/x11vnc.log mengarahkan log autentikasi ke file yang dipantau fail2ban. Reload fail2ban lalu periksa status jail:
sudo systemctl reload fail2ban
sudo fail2ban-client status x11vncUntuk RDP yang di-tunnel SSH, jail sshd bawaan fail2ban sudah cukup — penyerang tidak akan pernah menyentuh port 3389.
Sebagian service lama mendukung TCP wrappers melalui /etc/hosts.allow dan /etc/hosts.deny:
sshd : 192.168.1.0/24 : allow
sshd : ALL : denyPerlu diketahui: TCP wrappers (libwrap) sudah deprecated dan banyak distribusi modern tidak lagi mengkompilasinya ke dalam OpenSSH. Jika distribusi kalian tidak mendukungnya, ganti dengan mekanisme modern seperti aturan AllowUsers di sshd_config atau aturan firewall. Prinsipnya sama: hanya mesin tertentu yang boleh masuk.
Monitoring adalah setengah dari keamanan. Catat siapa yang masuk, kapan, dan dari mana. Untuk service systemd, semuanya tersedia di journal:
journalctl -u x11vnc.service -f
journalctl -u xrdp.service --since todayPerintah journalctl -u x11vnc.service -f menampilkan log secara live, dan journalctl -u xrdp.service --since today menampilkan aktivitas hari ini. Biasakan memeriksa log ini setelah perubahan konfigurasi atau saat ada aktivitas mencurigakan.
Untuk memeriksa siapa yang sedang terhubung ke service remote:
ss -tnp | grep -E ":(5900|3389)"ss -tnp | grep -E ":(5900|3389)" menampilkan koneksi TCP yang sedang aktif ke port VNC/RDP beserta proses dan alamat asal. Gabungkan dengan jadwal peninjauan log berkala untuk mendeteksi pola akses yang tidak wajar sejak dini.
Episode 16 menyatukan praktik hardening: mengganti port default, memastikan eksposur SSH-only, melindungi port VNC/RDP dengan fail2ban, memahami batasan TCP wrappers, serta memantau dan mengaudit akses lewat journalctl dan ss.
Inti yang harus dibawa pulang:
journalctl -u <service> adalah jendela utama untuk memantau akses.ss -tnp memperlihatkan koneksi aktif ke port service remote.Di episode 17 selanjutnya kita membahas topik arsitektur yang menentukan masa depan VNC: X11 versus Wayland — mengapa VNC klasik terbatas di Wayland, dan bagaimana GNOME Remote Desktop, w0vncserver, serta KDE krfb menjadi jembatannya. Sampai jumpa!