Belajar OpenVPN - Security Hardening & Best Practice
Episode 13 of 23

Belajar OpenVPN - Security Hardening & Best Practice

Episode ini mematangkan semua topik keamanan dari episode 5 dan 7 menjadi kebijakan hardening: tls-crypt-v2, tls-version-min 1.2, cipher modern dengan forward secrecy, sampai firewall dan ACL untuk defense-in-depth.

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

Pendahuluan

Seluruh episode sebelumnya membangun fungsi. Episode 13 ini membangun ketahanan. Autentikasi sudah ada, enkripsi sudah ada, tetapi apakah semuanya dikonfigurasi dengan ambang keamanan yang benar?

Episode 13 ini merangkum topik keamanan dari episode 5 dan 7 menjadi satu kebijakan hardening yang koheren. Kalian akan belajar memperketat control channel dengan tls-crypt-v2, memaksa tls-version-min 1.2, memilih cipher modern yang mendukung forward secrecy, memverifikasi identitas dengan verify-x509-name, dan menutup akses dengan firewall serta ACL.

Tujuan akhirnya adalah defense-in-depth: berlapis-lapis proteksi sehingga jika satu lapis gagal, lapis berikutnya masih menghalangi penyerang.

TLS Hardening

Mengamankan Control Channel dengan tls-crypt-v2

Episode 5 memperkenalkan tls-crypt-v2 sebagai evolusi pre-shared key. Untuk hardening, jadikan ini standar: setiap client mendapat key pre-shared unik yang mengenkripsi seluruh control channel.

Direktif hardening server
tls-crypt-v2 /etc/openvpn/server/server-crypt.key
tls-version-min 1.2
remote-cert-tls client

tls-version-min 1.2 menolak handshake TLS di bawah 1.2. remote-cert-tls client di sisi server memastikan sertifikat yang datang memang sertifikat client. Kombinasi ini membuat control channel tertutup dari pengamat dan malu-malu terhadap klien lama yang lemah.

Memverifikasi Identitas dengan verify-x509-name

Sertifikat yang ditandatangani CA yang sama tidak selalu berarti yang kalian inginkan. Untuk membatasi hanya sertifikat tertentu yang diterima, gunakan verify-x509-name:

Verifikasi nama subject
verify-x509-name vpn.example.com name-prefix

verify-x509-name vpn.example.com name-prefix memastikan subject sertifikat server diawali dengan nama tersebut. Ini mencegah sertifikat sah dari CA yang sama namun untuk domain lain diterima sebagai server.

Ringkasan Kebijakan Control Channel

Satu blok hardening untuk sisi server yang konsisten dengan episode 5 dan 7:

Kebijakan TLS lengkap
tls-crypt-v2 /etc/openvpn/server/server-crypt.key
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
remote-cert-tls client
reneg-sec 1800

Crypto Best Practice

Memilih Cipher dengan Forward Secrecy

Forward secrecy memastikan bahwa meskipun kunci privat server bocor di masa depan, sesi yang sudah lewat tetap aman. Ini dicapai dengan ephemeral key exchange seperti ECDHE. Server yang menawarkan hanya suite ECDHE tidak bisa dibongkar retroaktif.

Konfigurasi di atas sudah memakai TLS-ECDHE-... — perhatikan bahwa ECDHE adalah syarat untuk forward secrecy. Hindari suite DH statis yang tidak memberikan jaminan ini.

ncp-ciphers untuk Data Channel

Data channel mengikuti kebijakan yang sama. Tetapkan daftar cipher yang kuat dan tegas:

ncp-ciphers yang di-hardening
ncp-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
cipher AES-256-GCM
auth SHA256

Tidak ada cipher mode CBC dalam daftar ini — hanya authenticated encryption. auth SHA256 tetap ada untuk kompatibilitas dengan klien lama yang belum mendukung NCP.

Menjaga PKI Tetap Sehat

Hardening tidak berhenti di konfigurasi. Sertifikat harus dimonitor masa berlakunya dan CA dijaga dari akses yang tidak perlu:

Periksa masa berlaku sertifikat
openssl x509 -in /etc/openvpn/server/server.crt -noout -dates

openssl x509 -in ... -noout -dates menampilkan tanggal berlaku sertifikat. Kebiasaan baik: audit masa berlaku setiap bulan. Certificate expiry monitoring akan dibahas lebih lanjut di episode 19.

Firewall dan ACL

Membatasi Akses dengan Firewall

Server VPN sebaiknya hanya melayani satu port dari satu protokol. Persempit permukaan serangan dengan firewall yang ketat:

Firewall ketat untuk OpenVPN
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/16 -j ACCEPT
iptables -A INPUT -j DROP

Aturan di atas hanya membuka UDP 1194 dan SSH dari jaringan internal, lalu menolak sisanya. Policy default DROP jauh lebih aman daripada membuka semua port dan menutup satu per satu.

Membatasi Akses Antar Client

Secara default, client di subnet VPN bisa saling berkomunikasi. Jika tidak diinginkan, blokir antar client sambil tetap mengizinkan akses ke jaringan belakang:

Isolasi antar client
iptables -I FORWARD -i tun0 -o tun0 -j DROP

Rule ini menolak paket yang masuk dan keluar melalui tun0 — artinya client tidak bisa saling menjangkau, tapi tetap bisa mencapai jaringan yang dirutekan lewat server.

Defense-in-Depth di Level Aplikasi

Di atas firewall, kencangkan kembali knob aplikasi: max-clients dari episode 11 untuk membatasi beban, management interface dari episode 8 yang hanya terikat ke loopback, dan tls-crypt-v2 untuk menolak probe sebelum handshake. Setiap lapis menaikkan biaya serangan penyerang.

Penutup

Inti yang harus dibawa pulang:

  • tls-crypt-v2 mengenkripsi control channel dan memfilter probe.
  • tls-version-min 1.2 menolak klien TLS lama yang lemah.
  • Suite ECDHE wajib untuk mendapatkan forward secrecy.
  • verify-x509-name membatasi identitas yang diterima.
  • Policy firewall default drop mengecilkan permukaan serangan.
  • Isolasi antar client dengan rule FORWARD di tun0.

Di episode 14 selanjutnya kita akan membahas Data Channel Offload (DCO) dan performa — memindahkan pemrosesan data channel ke kernel dengan modul ovpn-dco, keuntungan zero-copy, multiqueue, dan offloading hardware, sampai setup DCO dan kompatibilitasnya dengan driver Windows. Setelah episode ini, kalian siap mengoptimalkan throughput hingga kelas 10Gbps.

Belajar OpenVPN - Security Hardening & Best Practice | Belajar OpenVPN