Gambar 1.1 Ilustrasi Perbedaan Saat Menggunakan dan Tidak Menggunakan VPN
OpenVPN merupakam implementasi dari VPN yang menggunakan dasar SSL/TSL untuk
mengamankan jalur komunikasinya. OpenVPN juga menggunakan virtual network adapater
yang berupa tune device (layer-3) atau tap device (layer-2). Tap device dipakai ketika pengguna
bekerja pada protocol selain IP. Secara default, OpenVPN dalam bekerja menggunakan protokol
UDP di port 1194 dan juga dapar bekerja pada port/jalur TCP, meskipun tidak dianjurkan.
Karena pada kondisi jaringan yang buruk, jalur TCP dapat menyebabkan penalty kinerja ganda.
OpenVPN menggunakan dua jalur komuikasi, yaitu control channel dan data channel, di mana
kedua jalur ini memiliki enkripsi yang berbeda.
A. Konfigurasi OpenVPN
Client/Server Mode merupakan model OpenVPN yang seringkali digunakan. Di mana pada
model ini, terdapat satu server (single server) dengan banyak client yang bisa saling terhubung
satu sama lain. Alamat IP para client berasal dari kumpulan alamat IP yang bisa digunakan oleh
OpenVPN. Antara satu client dengan client lainnya tidak bisa terhubungan secara langsung.
Semua pertukaran data atau informasi yang tejadi akan melalui server.
proto udp
port 1194
dev tun
server 10.2000.0.0 255.255.255.0
topology subnet
persist-key
persist-tun
keepalive 10 60
dh /etc/openvpn/movpn/dh2048.pem
ca /etc/openvpn/movpn/movpn-ca.crt
cert /etc/openvpn/movpn/server.crt
key /etc/openvpn/movpn/server.key
user nobody
group nobody # use ‘group nogroup’ on Debian/Ubuntu
verb 3
daemon
log-append /var/log/openvpn/log
Catatan : umumnya atau normalnya setiap log file diawali dengan adanya timestamp.
Namun, untuk kejelasan, timestamp telah dihilangkan.
client
proto udp
remote openvpnserver.example.com
port 1194
dev tun
nobind
ca /etc/openvpn/movpn/movpn-ca.crt
cert /etc/openvpn/movpn/client1.crt
key /etc/openvpn/movpn/client1.key
Simpan dalam bentuk ‘movpn-04-01-clinet.conf.
6. Pindahkan dokumen PKI ke client dengan menggunakan saluran (channel) yang aman,
contohnya dengan menggunakan perintah scp:
8. Timestamp tetap tidak ada, tetapi kali ini timestamp hilang dengan OpenVPN option
suppress-timestamp, seperti yang ada pada command line.
10. Koneksi bisa diperiksa atau untuk memastikan ada atau tidaknya koneksi dapat dilakukan
dengan ping alamat VPN atau server
[client] $ ping -c 4 10.200.0.1
PING 10.200.0.1 (10.200.0.1) 56(84) bytes of data.
64 bytes from 10.200.0.1: icmp_seq=1 ttl=64 time=7.95 ms
64 bytes from 10.200.0.1: icmp_seq=2 ttl=64 time=7.74 ms
64 bytes from 10.200.0.1: icmp_seq=3 ttl=64 time=7.25 ms
64 bytes from 10.200.0.1: icmp_seq=4 ttl=64 time=7.19 ms
Konfigurasi Server:
mode server
tls-server
push “topology subnet”
topology subnet : merupak spesifikasi topology yang digunakan oleh VPN. Jenis topology
yang digunakan saat ini adalah topology net30.
persist-tun dan persist-key : merupakan instruksi yang digunakan untuk membuka atau
tidak tun device atau juga intruksi yang menentukan apa perlu men-generate new keying
material ketika tunnel dimulai.
keepalive 10 60 : merupakan pernyataan yang digunakan untuk menjaga agar koneksi dari
OpenVPN tetap terjaga. Dalam konfigurasi pernyataan ini dapat diperluas sebagai berikut:
ping 10
ping-restart 120
push “pong10”
push “ping-restart 60”
dh <path to Diffie Hellman file> : merupakan spesifikasi dari DH file yang dibutuhkan oleh
OpenVPN server. Tanpa adanya dokumen atau file ini maka server akan sulit atau bahkan
tidak bisa membangun koneksi TLS yang aman dengan clients.
ca <path to CA file> : merupakan spesifikasi path untuk CA file. CA file yang mengandung
sertifikat CA digunakan untuk sign client certificates.
cert <path to X.509 certificate file> : merupakan spesifikasi dari path untuk X.509 public
certificate file. Sertifikasi dibutuhkan oleh OpenVPN server.
key <path to private key file> : merupakan spesifikasi path untuk server private key file.
Private key file dibutuhkan oleh OpenVPN dan file ini harus bisa dibaca oleh pengguna atau
administrator.
user nobody dan group nobody : merupakan instruksi yang digunakan oleh OpenVPN
untuk mengeluarkan Unix user nobody dan group nobody setelah terjadi koneksi. Instruksi
juga digunakan untuk mempertinggi atau meningkatkan keamanan dalam jaringan.
verb 3 : merupakan jumlah yang menunjukkan jumlah atau level penggunaan kata atau
verbosity, yaitu secara default adalah 3. Untuk melihat lebih detail hasil keluaran dari
proses OpenVPN dapat dilakukan dengan peningkatan jumlah atau level ini. Apabila
verbosity diatur menjadi 0 maka akan sulit untuk melihat output dari proses OpenVPN.
Daemon : memberitahukan OpenVPN untuk men-daemonize dirinya sendiri yang artinya
proses OpenVPN akan tetap berjalan meskipun OpenVPN mulai dimatikan atau ditutup.
log-append <path to log file> : merupakan spesifikasi path yang biasanya digunakan untuk
server log file. Penggunaan path ini bisa mencegah OpenVPN untuk memotong log file
setiap kali akan dimulai.
Konfigurasi Client:
client : merupakan perintah yang akan membawa OpenVPN ke dalam mode client. Perintah
ini juga memberikan instruksi kepada OpenVPN untuk melakukan koneksi dengan server
dan menarik perintah untuk meproses parameter konfigurasi dari server setelah koneksi
telah berhasil terlebih dahulu. Pernyataan atau client statement ini dapat diperluas dalam
konfigurasi sebagai berikut:
tls-client
pull
proto udp : merupakan protocol default yang biasa digunakan dalam OpenVPN.
remote openvpnserver.example.com : merupakan spesifikasi dari nama VPN servet to
connect to. Nama lain yang biasanya juga digunakan adalah Fully qualified domain name
(FQDN) atau IPv4 address.
port 1194 : merupakan jenis port yang biasanya digunakan oleh client OpenVPN untuk
melakukan koneksi dengan server.
dev tun : merupakan nama spesifikasi dari tun device yang digunakan oleh server.
Nobind : merupakan instruksi yang digunakan oleh OpenVPN client untuk tidak mengikat
dan juga tidak mendengarkan spesifikasi port yang digunakan oleh client. OpenVPN client
biasanya akan menggunakan anonymous port, yang mana adalah tipe 1024-65335.
ca <path to CA file> : merupakan spesifikasi CA file yang digunakan. Di mana di dalamnya
terdapat sertifikasi CA yang digunakan untuk sign di sertifikasi server.
cert <path to X.509 certificate file> : merupakan spesifikasi X.509 public certificate milik
client. Hal ini memungkinkan OpenVPN untuk menggunakan username/password daripada
menggunakan sertifikasi tetapi tentu saja hal ini sedikit lebih tidak aman.
key <path to private key file> : merupakan spesifikasi path untuk server private key file.
Private key file dibutuhkan oleh OpenVPN dan file ini harus bisa dibaca oleh pengguna atau
administrator.
Penambahan Pengamanan
Penambahan pengamanan pada model OpenVPN client/server dapat dilakukan dengan dua
cara.
[root@client]# cd /etc/openvpn/movpn
[root@client]# scp root@openvpnserver:/etc/openvpn/movpn/ta.key
Berikut merupakan konfigurasi dari client/server mode OpenVPN yang telah ditambah atau
ditingkatkan keamanannya dengan menggunakan tls-auth key.
Server Configuration File
proto udp
port 1194
dev tun
server 10.2000.0.0 255.255.255.0
topology subnet
persist-key
persist-tun
keepalive 10 60
remote-cert-tls client
tls-auth /etc/openvpn/movpn/ta.key 0
dh /etc/openvpn/movpn/dh2048.pem
ca /etc/openvpn/movpn/movpn-ca.crt
cert /etc/openvpn/movpn/server.crt
key /etc/openvpn/movpn/server.key
user nobody
group nobody
verb 3
daemon
log-append /var/log/openvpn/log
remote-cert-tls server
tls-auth /etc/openvpn/movpn/ta.key 1
ca /etc/openvpn/movpn/movpn-ca.crt
cert /etc/openvpn/movpn/client1.crt
key /etc/openvpn/movpn/client1.key
Setelah penambahan atau peningkatan keamanan di atas, ketika ketika memulai OpenVPN
server, maka dapat dilihat jika saluran pengendalian TLS mulai melindungi dengan static key.
Hal yang sama juga terlihat ketika OpenVPN client mulai dijalankan setelah penambahan atau
peningkatan keamanan
Seperti telah ditulis sebelumnya, Client/Server Mode OpenVPN dapat bekerja dengan dua jenis
protokol port, yaitu protokol UDP dengan port 1194 dan protocol TCP. Jika sebelumnya
dituliskan konfigurasi Client/Server Mode OpenVPN dengan protokol UDP, maka berikut ini
merupakan konfigurasi dengan protokol TCP.
Server Configuration File
proto tcp
port 1194
dev tun
server 10.2000.0.0 255.255.255.0
topology subnet
persist-key
persist-tun
keepalive 10 60
remote-cert-tls client
tls-auth /etc/openvpn/movpn/ta.key 0
dh /etc/openvpn/movpn/dh2048.pem
ca /etc/openvpn/movpn/movpn-ca.crt
cert /etc/openvpn/movpn/server.crt
key /etc/openvpn/movpn/server.key
user nobody
group nobody
verb 3
daemon
log-append /var/log/openvpn/log
remote-cert-tls server
tls-auth /etc/openvpn/movpn/ta.key 1
ca /etc/openvpn/movpn/movpn-ca.crt
cert /etc/openvpn/movpn/client1.crt
key /etc/openvpn/movpn/client1.key
B. Penggunaan OpenVPN di Mobile Devices dan Home Routers
Penggunaan OpenVPN saat ini tidak hanya di PC-style platforms, tetapi juga telah merambah di
smartphones dan tablets baik Android dan juga Apple iOS. Selain itu penggunaan OpenVPN juga
bisa ditemukan di home routers. Berikut merupakan sedikit penjelasan dari penggunaan aplikasi
OpenVPN baik di mobile devices maupun di Home Routers.
OpenVPN for Android merupakan fully open source yang didasarkan versi terakhir OpenVPN
(Git-master) code branch. Artinya, ada beberapa fitur yang ada di versi OpenVPN yang belum
ada di versi produk reguler OpenVPN.
client
proto udp
remote openvpnserver.example.com
port 1194
dev tun
nobind
remote-cert-tls server
tls-auth [inline] 1
ca [inline]
cert [inline]
key [inline]
<ca>
-----BEGIN CERTIFICATE-----
MIIEwTCCA^mgAwIBAgIJANKTMvCOv. . .
. . .
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIDeTCCAmECAQQwDQYJKoZIhvcNAQE. . .
. . .
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN CERTIFICATE-----
MIIEowIBAAKCAQEA3vzLCSqR3fQF. . .
. . .
-----END CERTIFICATE-----
</key>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
5f5b2bfff373961654089871b40a39eb
. . .
-----END OpenVPN Static key V1-----
</tls-auth>
11. Setelah itu, kembali ke halaman utama OpenVPN. Pada halaman utama tersebut akan
muncul beberapa pilihan profil yang telah tersedia seperti contoh pada gambar di bawah:
12. Pada perangkat Android tersebut, pilih atau klik dokumen movpn-android-udp untuk
memulai koneksi OpenVPN yang kemudian OpenVPN untuk Androis tersebut akan memulai
untuk membangun koneksi. Apabila logging terlalu lama, maka pada layar OpenVPN akan
menampilkan hal yang sama dengan OpenVPN client seperti yang ada di desktop ketika
menggunakan PC tanpa adanya timestamps seperti gambar di bawah:
13. OpenVPN akan terkoneksi atau terhubung. Ketika koneksi telah berhasil terbentuk, makan
status VPN pada bagian bawah kiri layar akan memunculkan tulisan Connected.
14. Selanjutnya dilakuan verifikasi pada koneksi VPN apakah sudah benar terkoneksi atau
berfungsi secara baik.
15. Gunakan aplikasi Android Ping untuk melakukan ping terhadap alamat IP server.
16. Selain itu juga bisa digunakan ICMP untuk melakukan ping dari server ke alamat IP VPN
client untuk menyakinkan jika koneksi VPN telah terhubung dan berfungsi secara baik.
Aplikasi OpenVPN Connect merupakan aplikasi yang berasal dari OpenVPN Technologies, Inc.
Aplikasi ini hanya bisa digunakan pada profil yang menggunakan [inline].
1. Pada OpenVPN server, launch aplikasi dengan menggunakan standar dokumen konfigurasi
ipv6-udp-server.conf.
2. Setelah mengundah dan memasang (install) aplikasi, buka aplikasi dan import profil.
3. Kemudian pilih dan klik profil yang diinginkan dan klik Connect
4. Setelah koneksi OpenVPN berhasil terbentuk atau terhubung makan client akan mendapat
laporan OpenVPN: Connect.
5. Kemudian lakukan verifikasi jika VPN client bisa diraih atau terhubung dari server dan
begitupula sebaliknya.
Pada contoh penggunaan aplikasi OpenVPN Connect di iOS dilakukan pada Apple iPad
dengan iOS 8.1.2 yang juga sama dengan iPhone iOS 8. Versi OpenVPN pada perangkat iOS
bukan merupakan open source. Terdapat perjanjian dengan Apple iOS networking stack. Tidak
berbeda dengan versi Android, aplikasi OpenVPN Connect untuk iOS ini juga hanya bisa atau
memberika hasil yang baik ketika menggunakan profil sertifikasi [inline] dan key pairs. Dari sisi
VPN server, OpenVPN yang digunakan adalah OpenVPN standar dengan dokumen konfigurasi
ipv6-udp-server.conf.
Sebelum menggunakan OpenVPN di iOS, terlebih dahulu harus dilakukan pemindahan profil
OpenVPN ke perangkat atau device yang digunakan. Hal ini bisa dilakukan melalui e-mail atau
mengunakan iTunes. Tentunya sebelum melakukan pemindahan, harus dipastikan jika cara
yang dilakukan adalah cara yang aman. Misalnya pemindahan melalui iTunes. Pemindahan
atau transfer melalui iTunes memang aman tetapi TLS melakukuan encrypted e-mail yang
digunakan.
2. Kemudian klik Add untuk melakukan penambahan profil baru. Selain dengan klik, bisa juga
dilakukan dengan drag dan drop konfigurasi OpenVPN yang berasal dari folder atau
desktop.
3. Pilih imported file dan klik kembali Add
4. Dokumen client.ovpn tersedian sebagai salah satu profil OpenVPN Connect,
5. Ketika aplikasi OpenVPN Connect dimulai pada clean iPhone atau iPad, maka akan muncul
kotak dialog seperti di bawah:
6. Setelah profil telah berhasil di-import maka pada bagian daftar profil akan available.
Pengguna pertama aplikasi OpenVPN Connect biasanya akan mudah mengalami tricky dan
ketikan konfigurasi yang salah berhasil di-import maka akan muncul kotak dialog sebagai
berikut:
7. Aplikasi melakukan report jika terdapat profil yang bisa di-import tetapi terdapat pesan
peringatan jika ada masalah dalam loading profil tersebut. Saat itu, pilihan yang tersedia
hanyalah remove profil dengan memilih tanda merah X. Dan ketika dokumen konfigurasi
yang di-import sesuai, makan pilihan tanda hijau + akan tersedia.
1. Pada DD-WRT web interface, klik tab Services kemudian klik pada pilihan VPN.
2. Pada pilihan Start OpenVPN Client, pilih atau klik pada pilihan Enable.
3. Isi dalam keterangan konek dan enable Advanced Options.
Pada pilihan di kotak dialog gambar di atas, biasanya akan dibiarkan atau disesuai dengan
kondisi default-nya, tetapi untuk Firewall Protection pastikan dalam keadaan disable. Hal
ini dilakukan agar server VPN dapat tersambung dengan client dan begitu pula sebaliknya.
Untuk memastikan Firewall Protection dalam kondisi disable bisa dilakukan dengan cara
sebagai berikut:
a. Ini adalah web form yang cukup panjang, jadi scroll down dan isi pada kotak
parameter berikut:
o TLS auth key
o CA certificate
o Client public certificate
o Client private key
b. Isi dari kotak masing-masing parameter tersebut sama dengan isi atau tulisan yang
digunakan pada profil konfigurasi untuk Android client:
Setelah mengisi masing-masing kotak parameter, klik tombol Save untuk menyimpan
konfigurasi OpenVPN client. Biasanya secara normal, saat valid profile sudah
tersimpan atau masuk dalam list, maka DD-WRT OpenVPN client akan mencoba
untuk membuat koneksi dengan server. *Catatan: bisanya pada perangkat DD-WRT
hanya bisa memiliki satu profil (single profile) akibat dari keterbatasan penyimpanan
NVRAM milik perangkat.
4. Setelah koneksi telah berhasil terhubung, lakukan verifikasi jika VPN client bisa diraih oleh
server dengan cara ping alamat IP VPN:
$ ping -c 2 10.200.0.2
PING 10.200.0.2 ( 10.200.0.2) 56(84) bytes of data.
64 bytes from 10.200.0.2: icmp_seq=1 ttl=64 time=0.591 ms
64 bytes from 10.200.0.2: icmp_seq=2 ttl=64 time-0.659 ms
--- 10.200.0.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
Rtt min/avg/max/mdev = 0.591/0.625/0.659/0.034 ms
Penggunaan OpenVPN pada jaringan wireless yang kecil bisa saja dilakukan, tetapi hal ini
ditentukan dengan jenis wireless router yang digunakan. Jenis-jenis wireless router yang
mendukung tersebut bisa dilihat pada DD-WRT dan website OpenWRT. Jumlah minimum
ukuran flash yang dibutuhkan adalah 8 MB dan kecukupan NVRAM space juga diperlukan.
Namun, meskipun telah memilih dan menggunakan perangkat keras yang tepat, performansi
OpenVPN pada wireless router belum tentu akan bagus akibat dari keterbatasan kemampuan
computing pada perangkat. Untuk mereka yang ingin men-setting VPN di rumah mereka,
biasanya performansi masih akan tetap bagus selama koneksi yang dilakukan di rumah tersebut
tidak melebihi 100 Mbps upstream.
1. Pada DD-WRT web interface, klik Services dan kemudian klik VPN.
2. Setelah itu lakukan disable pada OpenVPN client, dengan cara scrolling down hingga
menemukan pilihan disable pada bagian OpenVPN Client.
3. Pada bagian OpenVPN Server/Daemon, pastikan untuk enable OpenVPN.
4. Isi kotak keterangan koneksi dan bandingkan isi keterangan dengan dokumen konfigurasi
basic-udp-server.conf:
a. Pilih System sebagai Start Type sehingga OpenVPN daemon bisa muncul kapan saja
ketika DD-WRT router melakukan boots.
b. Secara keseluruhan ini tidak memperjelas perbedaan antara Configure as server
dengan Configure as daemon.
c. Pilih Router (TUN) sebagai Server Mode bersamaan dengan keinginan untuk tun-style
OpenVPN set up.
d. Isi pada 10.200.0.0 dan 255.255.255.0 sebagai Network dan Netmask.
e. Port, Tunnel Protocol, Encryption Cipher, dan Has Algorithm bisa dibiarkan secara
default atau tanpa adanya perubahan apa pun.
f. Pilih Enable pada pilihan Advanced Options sehingga akan memunculkan pilihan
konfigurasi OpenVPN. Tidak ada yang perlu dirubah pada kotak dialog ini hanya saja
hal ini akan memperlihatkan pilihan-pilihan apa saja yang available.
5. Selanjutnya, isi bagian keterangan certificate dan public/private key. Untuk ini, maka dipilih
dari dokumen standar konfigurasi basic-udp-server.conf.
6. Scroll down pada web form dan paste dokumen server.crt, ca.crt, server.key dan dh2048
secara berturut-turut:
o Public Server Cert: berhubungan pada kalimat “cert” (server.crt)
o CA Cert: berhubungan dengan kalimat “ca” (movpn-ca.crt)
o Private Server Key: berhubungan dengan kalimat “key” (server.key)
o DH PEM: berhubungan dengan kalimat “dh” (dh2048.pem)
7. Pada tahapan di atas, bisa disadari jikan di bagian TLS Auth Key dibiarkan kosong atau
dilewati. Hal ini dilakukan karena apabila bagian tersebut diisi, maka NVRAM pada
perangkat DD-WRT akan cepat lelah sehingga router akan dibutuhkan untuk melakukan
reset. Kondisi ini akan menyebabkan tidak bisa digunakannya dokumen konfigurasi basic-
udp-client.conf untuk melakukan koneksi terhadap server.
8. Lakukan scroll pada bagian layar dan klik tombol Save. Bersamaan dengan disimpannya
konfigurasi pada NVRAM, maka proses OpenVPN server akan langsung dimulai.
Apabila konfigurasi tidak cocok dengan NVRAM, maka kemungkinan terjadi crash di
perangkat DD-WRT dan yang harus dilakukan adalah reset secara manual.
9. Langkah terakhir, lakukan koneksi dengan menggunakan dokumen konfigurasi movpn-04-
01-client.conf dan kemudian verifikasi apakah koneksi VPN bekerja dengan baik atau tidak:
Crist, Eric F dan Jan Just Keijser. 2015. Mastering OpenVPN: Master building and
integrating secure private networks using OpenVPN. Birmingham B3 2PB, UK:
Packt Publishing Ltd.