VPN atau Virtual Private Network adalah teknik untuk bertransmisi data paket secara pribadi didalam jaringan baik menggunkan jaringan internet atau lainnya dengan aman. Dengan VPN kita dapat melakukan transmisi data secara aman meskipun kita terhubung melalui medium yang umum digunakan seperti internet, karna VPN membuat sebuah tunnel yang memungkinkan antara perangkat atau jaringan yang terhubung didalamnya berkomunikasi seperti seolah-olah memiliki jaringan fisik yang terhubung langsung.

Openvpn adalah salah satu protocol dari VPN yang paling umum digunakan karna merupakan Open Source Software dan dapat berjalan hampir diberbagai system, penggunaan resource yang rendah, tingkat keamanan yang kuat, serta memiliki komunitas yang luas.

Openvpn dapat dijalankan disemua distribusi linux dan tersedia di hampir semua official repositorinya.

INSTALL OPENVPN

Pada system linux Debian dan turunannya seperti Ubuntu, linux mint, dll untuk menginstall openvpn dapat dilakukan dengan apt package manager.

Untuk menginstall open vpn dan packet yang dibutuhkan

sudo apt install openvpn easy-rsa ufw

Perintah diatas akan menginstall openvpn dan library serta packet pendukung lain yang dibutuhkannya.

Setting CA, certificate dan key untuk server

Setelah OpenVPN terinstall selanjutnya kita akan membuat CA(Certificate Authority), server certificate dan keys.
Sebelum mengenerate kita akan mengcopy dulu easy-rsa script ke directory openvpn

cp -r /usr/share/easy-rsa/ /etc/openvpn

lalu buat direktori untung menyimpan sertifikat dan key server

mkdir -p /etc/openvpn/easy-rsa/keys

Setelah itu edit file variable pada easy-rsa untuk mengubah parameternya sesuai dengan yang kita inginkan:

sudo nano /etc/openvpn/easy-rsa/vars

lalu scroll kebawah dan lihat baris berikut, ganti yang berwarna merah sesuai dengan preferensi yang kita inginkan

export KEY_COUNTRY="US"
export KEY_PROVINCE="TX"
export KEY_CITY="Dallas"
export KEY_ORG="My Company Name"
export KEY_EMAIL="sammy@example.com"
export KEY_OU="MYOrganizationalUnit"

kemudian scroll lagi turun kebawah dan carilah baris berikut

# X509 Subject Field
export KEY_NAME="EasyRSA"

dan gantilah value pada bagian KEY_NAME dari EasyRSA sesuai nama sertifikat server yang akan digunakan, disini saya akan menggunakan nama jasait

# X509 Subject Field
export KEY_NAME="jasait"

Simpan dan keluar, selanjutnya kita akan menggenerate Diffie-Helman parameter, menggunakan dh param bawaan OpenSSL.
DH-param yang akan kita gunakan adalah 2048 agar lebih aman, untuk menggenerate param ini kita akan menggunakan perintah berikut:

openssl dhparam -out /etc/openvpn/dh2048.pem 2048

Kemudian pindah ke directory untuk membuat CA

cd /etc/openvpn/easy-rsa
sudo . ./vars

Akan muncul peringatan seperti berikut.
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/key

Selanjutnya jalankan perintah cleanall dan dilanjutkan dengan perintah untuk membuat sertifikat CA

sudo ./cleanall
sudo ./build-ca

Pada saat menjalankan perintah build-ca akan muncul dialog box, lewati saja dengan menekan enter, karna kita sudah menyettingnya pada file vars sebelumnya.

Setelah sertifikat CA selesai, masih didalam direktori easy-rsa kita akan membuat sertifikat dan key server.

sudo ./build-key-server jasait

Dialog box akan kembali muncul pada saat menjalankan perintah ini, bersama dengan 2 extra pertanyaan tambahan berikut:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

lewati dengan menekan enter seperti sebelumnya, untuk pertanyaan extra jika ingin agar openvpn menggunakan password saat terhubung silahkan isi password, jika tidak lewati dengan menekan enter, pada bagian company name lagi lakukan seperti diatas, silahkan isi jika dirasa perlu, atau lewati dengan menekan enter.
Diahir proses akan muncul kembali 2 pertanyaan tambahan seperti berikut, jawab dengan menekan Y.

Sign the certificate? [y/n]
1 out of 1 certificate requests certified, commit? [y/n]

dan akan diahiri dengan output berikut:


Write out database with 1 new entries
Data Base Updated

Konfigurasi Openvpn Server

Selanjutnya konfigurasi Openvpn server. Contoh file config openvpn server pada system Debian/Ubuntu berada di /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz kita akan mengcopynya ke direktori config openvpn yang berada /etc/openvpn dengan perintah

sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

Selanjutkan kita akan merubah file config OpenVPN server tersebut agar sesuai dengan konfigurasi dan settingan kita sebelumnya,

sudo nano /etc/openvpn/server.conf

Di dalam file ini yang akan kita ubah adalah
1. Mengubah settingan enkripsi dan lokasi file sesuai yang telah dibuat sebelumnya
2. Forwarding traffic
3. Menghindari terjadinya dns leaking
4. Setting Perimission

Koonfigurasi yang akan kita ubah pertama adalah pada bagian setting lokasi sertifikat, keys dan CA serta dh.

Ubah lokasi dan sesuaikan settingan berikut


# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret

menjadi seperti berikut, sesuai lokasi dan penamaan yang kita buat sebelumnya


# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/jasait.crt
key /etc/openvpn/easy-rsa/keys/jasait.key  # This file should be kept secret

Ubah dh1024.pem


# Diffie hellman parameters.
# Generate your own with:
#   openssl dhparam -out dh1024.pem 1024
# Substitute 2048 for 1024 if you are using
# 2048 bit keys.
dh dh1024.pem

menjadi seperti ini.


# Diffie hellman parameters.
# Generate your own with:
#   openssl dhparam -out dh1024.pem 1024
# Substitute 2048 for 1024 if you are using
# 2048 bit keys.
dh dh2048.pem

Selanjutnya forwarding traffic dengan menghilangkan comment pada bagian push redirect-gateway

hilangkan tanda ; (comment)


# and DNS lookups to go through the VPN
# (The OpenVPN server machine may need to NAT
# or bridge the TUN/TAP interface to the internet
# in order for this to work properly).
;push "redirect-gateway def1 bypass-dhcp"

menjadi seperti ini.


push "redirect-gateway def1 bypass-dhcp"

Kemudian setting DNS option dengan menghilangkan comment (commented out) pada baris berikut.


# The addresses below refer to the public
# DNS servers provided by opendns.com.
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"

# The addresses below refer to the public
# DNS servers provided by opendns.com.
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Untuk alamat DNS server yang digunakan, secara default yang digunakan adalah dns dari OpenDNS silahkan ganti dengan DNS server yang diinginkan.

Selanjutnya setting permission, secara default OpenVPN akan menjalankan servicenya menggunakan privileges root, kita akan membuat agar service OpenVPN diturunkan privilegesnya setelah service berjalan, untuk alasan keamanan.


# You can uncomment this out on
# non-Windows systems.
;user nobody
;group nogroup 

# You can uncomment this out on
# non-Windows systems.
user nobody
group nogroup
Komentar