Hot!

Panduan Lengkap: Konfigurasi OpenVPN di OPNsense


 



Panduan Lengkap: Konfigurasi OpenVPN di OPNsense 25.7



Versi: OPNsense 25.7.x — OpenVPN Instances


Mozunote.com Panduan ini menjelaskan langkah demi langkah—dengan bahasa yang mudah dimengerti—cara menyiapkan OpenVPN pada OPNsense 25.7 sehingga kamu bisa mengakses jaringan lokal dari luar (remote lewat Internet). Termasuk pembuatan CA, server certificate, konfigurasi server OpenVPN (Instances), export profil client (inline), firewall rules, NAT, client-specific overrides (CSO), skenario akses berbeda per user, troubleshooting umum, dan best-practice keamanan.

OpenVPN adalah solusi VPN yang fleksibel dan aman. OPNsense adalah firewall berbasis FreeBSD yang sudah populer di kalangan sysadmin. Kombinasi keduanya memberi kendali granular atas akses jaringan, logging yang baik, dan integrasi mudah dengan sistem otentikasi lokal.

Di OPNsense 25.7 kamu akan menemukan fitur OpenVPN Instances, yang lebih modern, tapi GUI-nya menyederhanakan beberapa opsi advanced (mis. daftar data-ciphers). Untuk kompatibilitas terbaik dengan klien modern (OpenVPN Connect di Windows/Android/iOS), kita akan pakai inline client profile.


Persiapan & Terminologi singkat

  • CA (Certificate Authority): Otoritas yang menerbitkan sertifikat.

  • Server Certificate: Sertifikat yang dipakai oleh OpenVPN server.

  • User/Client Certificate: Sertifikat per-user (client authentication).

  • Inline config: File .ovpn yang menyisipkan <ca>, <cert>, <key> di dalam satu file.

  • Client Export: Fitur OPNsense untuk men-generate profil client.

Sebelum mulai, siapkan:

  • OPNsense (sudah terpasang & reachable lewat LAN)

  • Akses admin Web GUI OPNsense

  • IP publik (atau DynDNS) & port untuk OpenVPN

  • Informasi subnet LAN (mis. 192.168.1.0/24)


Langkah 1 — Buat Certificate Authority (CA)

  1. Login ke OPNsense Web GUI.

  2. Menu: System → Trust → Authorities

  3. Klik + Add.

  4. Pilih Method: Create internal Certificate Authority.

  5. Isi field penting: Descriptive name (mis. Authopenvpnca), Common Name (mis. AuthOpenVPNCA), Country, Organization, dsb.

  6. Save.

Catatan: 1 CA dapat menerbitkan banyak sertifikat (server + user). Simpan informasi CA dengan aman.


Langkah 2 — Buat Server Certificate

  1. Menu: System → Trust → Certificates

  2. Klik + AddCreate internal Certificate.

  3. Pilih Certificate Type = Server Certificate.

  4. Common Name misal: CertOpenvpnserver.

  5. Pilih CA yang kamu buat di langkah sebelumnya (Authopenvpnca).

  6. Save.

Server certificate harus memiliki Key Usage serverAuth. Pastikan issuer-nya adalah CA yang sama.



Langkah 3 — Buat User Certificate (per user)

  1. Menu: System → Access → Users+ Add

  2. Isi Username dan Password.

  3. Setelah user dibuat, buat certificate: System → Trust → Certificates → + AddCertificate Type = User Certificate; Common Name samakan dengan username (ini memudahkan mapping otomatis pada versi terbaru OPNsense).

  4. Alternatif: Beberapa versi OPNsense mengizinkan membuat certificate langsung saat menambahkan user; jika tidak tersedia, buat manual lalu pastikan CN sesuai.

Tip: Gunakan satu CA yang sama untuk semua user dan server.



Langkah 4 — Konfigurasi OpenVPN Server (Instances)

Catatan penting: OPNsense 25.7 memakai implementasi Instances—tampilan bisa berbeda dengan tutorial lama.

  1. Menu: VPN → OpenVPN → Instances (atau Servers jika versi menampilkan kata berbeda)

  2. Klik + Add untuk membuat Instance baru.

  3. Pengaturan penting:

    • Server Mode: Remote Access (SSL/TLS + User Auth) — ini menggabungkan sertifikat dan username/password.

    • Protocol: UDP (lebih cepat) atau TCP sesuai kebutuhan.
    • Interface: WAN
    • Local port: 1194 (default) atau port lain jika mau.
    • Device Mode: tun (layer 3)
    • Peer Certificate Authority: Pilih CA (Authopenvpnca)
    • Server Certificate: Pilih server cert (CertOpenvpnserver)
    • TLS Authentication: Enable (recommended) → buat atau masukkan TLS key (ta.key)
    • Tunnel Network (IPv4 Tunnel Network): contoh 10.8.0.0/24 — jaringan virtual VPN
    • Local Network: isi 192.168.1.0/24 (subnet LAN kamu) supaya OpenVPN dapat push route ke client
    • Provide DNS server: isi IP DNS lokal jika perlu (mis. 192.168.1.1)
    • Cryptography: jika tersedia, pilih AES-256-GCM or AES-256-CBC (AES-GCM lebih modern). Jika GUI tidak menampilkan pilihan data-ciphers, kita akan atur client side inline untuk aman.
  4. Save & Apply.



Langkah 5 — TLS Key (ta.key) (Disarankan)

TLS Auth (ta.key) melindungi fase TLS handshake dari serangan DoS dan spoofing.

  1. Di halaman Server OpenVPN, aktifkan TLS authentication.

  2. Klik buat TLS key baru (Generate) jika OPNsense menyediakan.

  3. Save.

Kamu akan memakai ta.key ini ketika meng-export profil client atau menyisipkannya inline.


Langkah 6 — Firewall Rules (WAN dan OpenVPN)

Agar server menerima koneksi dan client bisa akses LAN.

WAN Rule (untuk menerima koneksi OpenVPN)

  1. Firewall → Rules → WAN+ Add

  2. Action: Pass

  3. Protocol: UDP (atau TCP sesuai server)

  4. Destination Port Range: 1194

  5. Save & Apply

OpenVPN Interface Rules (akses dari VPN ke LAN)

  1. Firewall → Rules → OpenVPN

  2. Jika masih kosong, tambahkan rule: Allow All (sumber: OpenVPN net, dest: LAN net) untuk testing awal.

  3. Setelah testing, ganti dengan aturan lebih ketat (lihat contoh granular di bawah untuk user berbeda).


Langkah 7 — NAT (Outbound) — agar client dapat akses Internet (opsional)

Jika client ingin akses Internet lewat VPN (redirect gateway) atau membutuhkan NAT:

  1. Firewall → NAT → Outbound

  2. Jika modus Automatic, ubah ke Hybrid atau Manual untuk menambahkan rule.

  3. Tambahkan rule: Source = 10.8.0.0/24 (OpenVPN tunnel network), Interface = WAN, Translation: Interface Address.

  4. Save & Apply.


Langkah 8 — Client Export (Inline recommended)

  1. VPN → OpenVPN → Client Export

  2. Pilih server instance yang sudah dibuat

  3. Pilih user yang ingin diexport

  4. Export Type: Inline Configuration (Most Clients / OpenVPN Connect) — ini akan menyertakan <ca>, <cert>, <key>, dan <tls-auth> di satu file .ovpn.

  5. Download .ovpn dan berikan ke user.

Mengapa inline? OpenVPN Connect (client resmi modern) tidak mendukung opsi pkcs12 eksternal dan mengabaikan beberapa opsi lama. Inline membuat kompatibilitas maksimal.


Langkah 9 — Client: Import & Connect

Windows (OpenVPN Connect)

  1. Install OpenVPN Connect (bukan GUI community) dari OpenVPN Inc.

  2. Import file .ovpn (Profile → Add Profile → Load from file)

  3. Masukkan username & password jika diminta

  4. Connect

Android / iOS: pakai aplikasi OpenVPN Connect → import profile → connect.


Langkah 10 — Client Specific Overrides (CSO) & IP statis per user

CSO berguna untuk menetapkan IP statis ke user (mis. 10.8.0.20) sehingga firewall rule bisa berbasis IP unik user.

  1. VPN → OpenVPN → Client Specific Overrides

  2. Click + Add

    • Common name: isi Common Name dari client certificate (biasanya sama dengan username)

    • IPv4 Tunnel Network (ifconfig-push): 10.8.0.20 255.255.255.0

  3. Save

Gunakan IP statis untuk membuat firewall rule yang lebih presisi.


Langkah 11 — Membatasi akses per user (contoh: USER1 full, USER2 hanya VLAN20 + DNS)

Gunakan Groups + Firewall aliases + OpenVPN rules.

1) Buat Groups & Assign User

System → Access → Groups → buat VPN-FULL dan VPN-VLAN20. Assign user ke group masing-masing.

2) Buat Firewall Alias untuk VLAN20 dan DNS

Firewall → Aliases → +Add

  • VLAN20 → Network → 192.168.20.0/24

  • LOCAL-DNS → Host(s) → 192.168.1.10 (atau IP OPNsense)

3) Firewall → Rules → OpenVPN

Buat rule berdasarkan source IP (jika pakai CSO) atau berdasarkan source group (beberapa OPNsense memungkinkan source group di rule):

  • Rule A (USER1 full):

    • Action: Pass

    • Source: 10.8.0.10 (atau network yang ditentukan user1)

    • Destination: Any

  • Rule B (USER2 allow VLAN20):

    • Action: Pass

    • Source: 10.8.0.20 (user2 ip)

    • Destination: VLAN20

  • Rule C (USER2 allow DNS):

    • Action: Pass

    • Source: 10.8.0.20

    • Destination: LOCAL-DNS Port 53 TCP/UDP

  • Rule D (deny rest for USER2):

    • Action: Block

    • Source: 10.8.0.20

    • Destination: Any

Urutan rule penting — OPNsense memeriksa rule dari atas ke bawah.


Langkah 12 — Testing & Troubleshooting

Tes dasar:

  • Dari client: ping 10.8.0.1 (tunnel gateway jika disediakan)

  • ping 192.168.1.1 (LAN gateway) — jika firewall membuka akses

  • Akses resource: RDP, SMB share, web UI internal

Jika error: perhatikan pesan log client & server.

Pesan error umum & solusi

  • OpenSSLContext : CA not defined → CA tidak disertakan di client config. Pastikan inline atau ada ca <file> yang benar.

  • Cipher BF-CBC not supported → client OpenVPN 2.6 menolak BF-CBC; solusinya embed data-ciphers AES-256-GCM di server config atau pakai client yang lebih toleran. Namun idealnya upgrade server cipher ke AES-GCM.

  • unsupported options (pkcs12, lport...) → OpenVPN Connect tidak mendukung pkcs12 dan beberapa opsi lama; gunakan inline config.

Log Server: VPN → OpenVPN → Connection Status → cek logs untuk error handshake, tls, certificate, dsb.


Langkah 13 — Security Best Practices

  • Gunakan CA tunggal yang aman dan simpan private key CA offline.

  • Pilih cipher modern: AES-256-GCM atau CHACHA20-POLY1305 (jika didukung) dan hindari BF-CBC.

  • Enable TLS auth (ta.key) untuk proteksi handshake.

  • Gunakan RSA/ECC key length cukup: 2048 atau 3072 untuk RSA; ECC (prime256v1/secp384r1) bisa dipertimbangkan.

  • Expire sertifikat: set masa berlaku sesuai kebijakan (mis. 1 tahun) lalu lakukan rotasi berkala.

  • Audit logs dan aktifkan notifikasi jika login abnormal.

  • Backup: backup CA, server certificate, dan konfigurasi OPNsense secara berkala.


Langkah 14 — Maintenance & Renewals

  • Periksa masa berlaku sertifikat: System → Trust → Certificates.

  • Jika akan renew: buat certificate baru, update OpenVPN Server dengan server cert baru, re-export client profiles.

  • Saat mengganti server certificate: beri tahu user untuk re-import profile jika inline cert termasuk server cert (biasanya tidak perlu untuk client cert).


Contoh file .ovpn (inline) — minimal dan cocok untuk OpenVPN Connect

client
dev tun
proto udp
remote your.public.ip.or.dyndns 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name "C=ID, CN=CertOpenvpnserver" subject
auth-user-pass
cipher AES-256-GCM
data-ciphers AES-256-GCM:AES-128-GCM
auth SHA256
<ca>
-----BEGIN CERTIFICATE-----
...CA PEM HERE...
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
...CLIENT CERT HERE...
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
...CLIENT KEY HERE...
-----END PRIVATE KEY-----
</key>
<tls-auth>
# optional: ta.key content if used
</tls-auth>


FAQ singkat

Q: Perlu membuat server baru tiap kali ada user baru?
A: Tidak. Server cukup 1. Tambah user + user certificate cukup. Gunakan CSO untuk IP tetap.

Q: Apakah CA bisa dipakai banyak user?
A: Ya, 1 CA dapat terbitkan banyak sertifikat.

Q: OpenVPN Connect atau OpenVPN GUI?
A: Untuk inline dan modern: OpenVPN Connect lebih cocok (terutama jika kamu export inline). Jika kamu masih pakai p12 terpisah, gunakan OpenVPN GUI Community.


OpenVPN di OPNsense adalah kombinasi yang kuat: mudah dikelola lewat web UI, tapi tetap memberi kita kontrol mendalam terhadap akses jaringan. Mulai dari membuat CA, menyiapkan server certificate, sampai mengontrol akses per-user lewat firewall rule—semua bisa diatur rapi. Dalam era di mana kebanyakan pekerjaan dilakukan dari jarak jauh, kemampuan untuk mengakses resource internal dengan aman jadi sangat krusial.

Di tutorial ini saya berusaha memadukan pendekatan praktis (langkah demi langkah) dengan best-practice keamanan. Buat kamu yang baru pertama kali mengatur VPN, ikuti langkah dari awal sampai akhir. Untuk yang sudah familiar, fokus pada bagian CSO dan aturan firewall untuk membatasi akses sesuai kebutuhan — ini biasanya yang membuat perbedaan besar antara jaringan yang aman dan jaringan yang 'terbuka lebar'.


Selamat mencoba — semoga lancar!

Banner IDwebhost
Comments
0 Comments

0 comments:

Post a Comment