Otentikasi OpenVPN Menggunakan Username & Password (All hail OpenVPN!)



Sebelumnya telah saya post banyak artikel yang berkaitan dengan OpenVPN. Nah kali ini saya akan membagikan cara bagaimana menggunakan OpenVPN tanpa harus menggunakan client certificate melainkan menggunakan username & password.


Pada beberapa kasus, OpenVPN client diharuskan untuk menggunakan client certificate. Selain sebagai alasan keamanan, client certificate juga dimaksudkan sebagai common name (semacam identitas host). Namun kebanyakan implementasi, client certificate jarang digunakan dikarenakan sangat merepotkan (harus generate setiap client cerfitiface kemudian meng-embed-nya pada file konfigurasi). Beberapa service provider yang menawarkan konektifitas OpenVPN memilih untuk menggunakan username & password sebagai metode otentikasinya. Selain keamanannya tetap terjaga, distribusi file konfigurasi tidak terlalu rumit. So, bagaimana caranya?


Prerequisite
Dapat membangun jaringan OpenVPN (OpenVPN server dan OpenVPN client sudah terhubung). Silahkan lihat di SINI.


Let's configure (Server)
Pada dasarnya yang harus dikonfigurasi cukup sederhana. Jika anda mengikuti tutorial sebelumnya, pasti anda tidak asing dengan konfigurasi berikut. Silahkan buka dahulu konfigurasi OpenVPN server (/etc/openvpn/<nama_konfig>.conf).

topology subnet
server 10.20.30.0 255.255.255.0
proto tcp-server
dev tun
port 700
client-config-dir ccd
client-to-client

keepalive 3 10

ca ca.crt
key server.key
cert server.crt
dh dh1024.pem

auth SHA1
cipher AES-128-CBC

user nobody
group nogroup
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so login
client-cert-not-required
username-as-common-name

persist-key
persist-tun

verb 1


Keterangan
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so login: Digunakan untuk memanggil plugin yang berisi library OpenVPN. Library tersebut berfungsi untuk menghubungkan metode autentikasi pada PAM (Pluggable Authentication Modules) dengan OpenVPN. Sehingga OpenVPN client dapat melakukan autentikasi menggunakan username & password server (Linux).
client-cert-not-required: Adalah sebuah perintah yang menyatakan bahwa untuk terhubung dengan server, server tidak perlu menanyakan client certificate.
username-as-common-name: Masih ingat common name? Username yang digunakan untuk autentikasi akan digunakan sebagai common name juga.


Let's connect (client)
Untuk file konfigurasi OpenVPN (*.ovpn), silahkan gunakan script berikut:

client
dev tun
proto tcp
remote <alamat> <port>
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ns-cert-type server
cipher AES-128-CBC
auth SHA1
verb 1
auth-user-pass


Keterangan
auth-user-pass: Menyatakan jika autentikasi yang akan digunakan client adalah metode username & password. Jika perintah ini tidak tuliskan, maka OpenVPN server tidak akan pernah menanyakan password

RouterOS client
Jika anda perhatikan pada saat membuat interface OpenVPN ada kolom certificate. Certificate itu digunakan memanggil client certificate yang sudah dibuat oleh server. Bagaimana jika kita tidak menggunakan client certificate? Ya Cukup dikosongin saja.


Image source:
https://www.vpngate.net/en/howto_openvpn.aspx

Tidak ada komentar:

Posting Komentar

Terima kasih telah berkunjung.

Mencari Selisih Jumlah Hari Antara Dua Tanggal pada Bash Scripting

Beberapa waktu lalu lagi bikin projek yang melibatkan protokol HTTPS. Seperti yang kita tahu bahwa HTTPS merupakan protokol yang melindungi ...