Internet adalah tempat yang berbahaya, terutama jika Anda membiarkan data Anda tidak terenkripsi atau tanpa keamanan yang memadai. Ada beberapa cara untuk mengamankan data Anda; semua pada tingkat yang berbeda. Anda harus selalu memiliki kebijakan firewall yang kuat, enkripsi data, dan kebijakan sandi yang kuat. Cara lain untuk mengamankan data Anda adalah dengan mengaksesnya menggunakan koneksi VPN.
Virtual Private Network (atau VPN) adalah metode koneksi yang digunakan untuk menambahkan keamanan dan privasi ke jaringan pribadi dan publik, melindungi data Anda.
OpenVPN adalah solusi SSL VPN open source berfitur lengkap untuk mengamankan komunikasi. Ini dapat digunakan untuk akses jarak jauh atau komunikasi antara server atau pusat data yang berbeda. Itu dapat diinstal di tempat atau di cloud, di sistem operasi yang berbeda, dan dapat dikonfigurasi dengan banyak opsi keamanan.
Di blog ini, kita akan membuat koneksi VPN untuk mengakses database di cloud. Ada berbagai cara untuk mencapai tujuan ini, bergantung pada infrastruktur Anda dan seberapa banyak sumber daya perangkat keras yang ingin Anda gunakan untuk tugas ini.
Misalnya, Anda dapat membuat dua VM, satu on-prem dan satu lagi di cloud, dan keduanya bisa menjadi jembatan untuk menghubungkan jaringan lokal Anda ke jaringan cloud database melalui Peer-to- Koneksi VPN rekan.
Opsi lain yang lebih sederhana dapat menghubungkan ke server VPN yang dipasang di node database menggunakan koneksi klien VPN yang dikonfigurasi di mesin lokal Anda. Dalam hal ini, kami akan menggunakan opsi kedua ini. Anda akan melihat cara mengonfigurasi server OpenVPN di node database yang berjalan di cloud, dan Anda akan dapat mengaksesnya menggunakan klien VPN.
Untuk node database, kami akan menggunakan instans Amazon EC2 dengan konfigurasi berikut:
- OS:Server Ubuntu 18.04
- Alamat IP Publik:18.224.138.210
- Alamat IP Pribadi:172.31.30.248/20
- Port TCP yang dibuka:22, 3306, 1194
Cara Menginstal OpenVPN di Server Ubuntu 18.04
Tugas pertama adalah menginstal server OpenVPN di node database Anda. Sebenarnya, teknologi database yang digunakan tidak masalah karena kita sedang mengerjakan lapisan jaringan, tetapi untuk tujuan pengujian setelah mengkonfigurasi koneksi VPN, misalkan kita menjalankan Percona Server 8.0.
Jadi, mari kita mulai dengan menginstal paket OpenVPN.
$ apt install openvpn easy-rsa
Karena OpenVPN menggunakan sertifikat untuk mengenkripsi lalu lintas Anda, Anda memerlukan EasyRSA untuk tugas ini. Ini adalah utilitas CLI untuk membuat otoritas sertifikat root, serta meminta dan menandatangani sertifikat, termasuk sub-CA dan daftar pencabutan sertifikat.
Catatan:Ada versi EasyRSA baru yang tersedia, tetapi untuk tetap fokus pada instalasi OpenVPN, mari gunakan versi EasyRSA yang tersedia di atm repositori Ubuntu 18.04 (EasyRSA versi 2.2.2- 2).
Perintah sebelumnya akan membuat direktori /etc/openvpn/ untuk konfigurasi OpenVPN, dan direktori /usr/share/easy-rsa/ dengan skrip dan konfigurasi EasyRSA.
Untuk mempermudah tugas ini, mari buat tautan simbolis ke jalur EasyRSA di direktori OpenVPN (atau Anda bisa menyalinnya):
$ ln -s /usr/share/easy-rsa /etc/openvpn/
Sekarang, Anda perlu mengonfigurasi EasyRSA dan membuat sertifikat Anda. Buka lokasi EasyRSA dan buat cadangan untuk file “vars”:
$ cd /etc/openvpn/easy-rsa
$ cp vars vars.bak
Edit file ini, dan ubah baris berikut sesuai dengan informasi Anda:
$ vi vars
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"
Kemudian, buat tautan simbolis baru ke file openssl:
$ cd /etc/openvpn/easy-rsa
$ ln -s openssl-1.0.0.cnf openssl.cnf
Sekarang, terapkan file vars:
$ cd /etc/openvpn/easy-rsa
$ . vars
CATATAN:Jika Anda menjalankan ./clean-all, saya akan melakukan rm -rf pada /etc/openvpn/easy-rsa/keys
Jalankan skrip clean-all:
$ ./clean-all
Dan buat kunci Diffie-Hellman (DH):
$ ./build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.....................................................................................................................................................................+
Tindakan terakhir ini bisa memakan waktu beberapa detik, dan setelah selesai, Anda akan memiliki file DH baru di dalam direktori “keys” di direktori EasyRSA.
$ ls /etc/openvpn/easy-rsa/keys
dh2048.pem
Sekarang, mari kita buat sertifikat CA.
$ ./build-ca
Generating a RSA private key
..+++++
...+++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
...
Ini akan membuat ca.crt (sertifikat publik) dan ca.key (kunci pribadi). Sertifikat publik akan diperlukan di semua server untuk terhubung ke VPN.
$ ls /etc/openvpn/easy-rsa/keys
ca.crt ca.key
Sekarang CA Anda telah dibuat, mari buat sertifikat server. Dalam hal ini, kami akan menyebutnya "openvpn-server":
$ ./build-key-server openvpn-server
Generating a RSA private key
.......................+++++
........................+++++
writing new private key to 'openvpn-server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
...
Certificate is to be certified until Dec 23 22:44:02 2029 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Ini akan membuat file CRT, CSR, dan Kunci untuk server OpenVPN:
$ ls /etc/openvpn/easy-rsa/keys
openvpn-server.crt openvpn-server.csr openvpn-server.key
Sekarang, Anda perlu membuat sertifikat klien, dan prosesnya sangat mirip:
$ ./build-key openvpn-client-1
Generating a RSA private key
.........................................................................................+++++
.....................+++++
writing new private key to 'openvpn-client-1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
...
Certificate is to be certified until Dec 24 01:45:39 2029 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Ini akan membuat file CRT, CSR, dan Kunci untuk klien OpenVPN:
$ ls /etc/openvpn/easy-rsa/keys
openvpn-client-1.csr openvpn-client-1.crt openvpn-client-1.key
Pada titik ini, Anda telah menyiapkan semua sertifikat. Langkah selanjutnya adalah membuat konfigurasi OpenVPN server dan klien.
Mengonfigurasi Server OpenVPN
Seperti yang kami sebutkan, instalasi OpenVPN akan membuat direktori /etc/openvpn, di mana Anda akan menambahkan file konfigurasi untuk peran server dan klien, dan memiliki file konfigurasi sampel untuk masing-masing di / usr/share/doc/openvpn/examples/sample-config-files/, sehingga Anda dapat menyalin file di lokasi yang disebutkan dan memodifikasinya sesuai keinginan.
Dalam hal ini, kami hanya akan menggunakan file konfigurasi server, karena ini adalah server OpenVPN:
$ cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
$ gunzip /etc/openvpn/server.conf.gz
Sekarang, mari kita lihat file konfigurasi server dasar:
$ cat /etc/openvpn/server.conf
port 1194
# Which TCP/UDP port should OpenVPN listen on?
proto tcp
# TCP or UDP server?
dev tun
# "dev tun" will create a routed IP tunnel,"dev tap" will create an ethernet tunnel.
ca /etc/openvpn/easy-rsa/keys/ca.crt
# SSL/TLS root certificate (ca).
cert /etc/openvpn/easy-rsa/keys/openvpn-server.crt
# Certificate (cert).
key /etc/openvpn/easy-rsa/keys/openvpn-server.key
# Private key (key). This file should be kept secret.
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
# Diffie hellman parameters.
server 10.8.0.0 255.255.255.0
# Configure server mode and supply a VPN subnet.
push "route 172.31.16.0 255.255.240.0"
# Push routes to the client to allow it to reach other private subnets behind the server.
keepalive 20 120
# The keepalive directive causes ping-like messages to be sent back and forth over the link so that each side knows when the other side has gone down.
cipher AES-256-CBC
# Select a cryptographic cipher.
persist-key
persist-tun
# The persist options will try to avoid accessing certain resources on restart that may no longer be accessible because of the privilege downgrade.
status /var/log/openvpn/openvpn-status.log
# Output a short status file.
log /var/log/openvpn/openvpn.log
# Use log or log-append to override the default log location.
verb 3
# Set the appropriate level of log file verbosity.
Catatan:Ubah jalur sertifikat sesuai dengan lingkungan Anda.
Dan kemudian, mulai layanan OpenVPN menggunakan file konfigurasi yang dibuat:
$ systemctl start [email protected]
Periksa apakah layanan mendengarkan di port yang benar:
$ netstat -pltn |grep openvpn
tcp 0 0 0.0.0.0:1194 0.0.0.0:* LISTEN 20002/openvpn
Terakhir, di server OpenVPN, Anda perlu menambahkan baris penerusan IP di file sysctl.conf untuk mengizinkan lalu lintas VPN:
$ echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
Dan jalankan:
$ sysctl -p
net.ipv4.ip_forward = 1
Sekarang, mari kita lihat cara mengonfigurasi klien OpenVPN untuk terhubung ke VPN baru ini.
Mengonfigurasi Klien OpenVPN
Pada poin sebelumnya, kami menyebutkan contoh file konfigurasi OpenVPN, dan kami menggunakan yang server, jadi sekarang mari kita lakukan hal yang sama tetapi menggunakan file konfigurasi klien.
Salin file client.conf dari /usr/share/doc/openvpn/examples/sample-config-files/ di lokasi yang sesuai dan ubah sesuai keinginan.
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
Anda juga memerlukan sertifikat berikut yang dibuat sebelumnya untuk mengonfigurasi klien VPN:
ca.crt
openvpn-client-1.crt
openvpn-client-1.key
Jadi, salin file-file ini ke mesin atau VM lokal Anda. Anda harus menambahkan lokasi file ini di file konfigurasi klien VPN.
Sekarang, mari kita lihat file konfigurasi klien dasar:
$ cat /etc/openvpn/client.conf
client
# Specify that we are a client
dev tun
# Use the same setting as you are using on the server.
proto tcp
# Use the same setting as you are using on the server.
remote 18.224.138.210 1194
# The hostname/IP and port of the server.
resolv-retry infinite
# Keep trying indefinitely to resolve the hostname of the OpenVPN server.
nobind
# Most clients don't need to bind to a specific local port number.
persist-key
persist-tun
# Try to preserve some state across restarts.
ca /Users/sinsausti/ca.crt
cert /Users/sinsausti/openvpn-client-1.crt
key /Users/sinsausti/openvpn-client-1.key
# SSL/TLS parms.
remote-cert-tls server
# Verify server certificate.
cipher AES-256-CBC
# Select a cryptographic cipher.
verb 3
# Set log file verbosity.
Catatan:Ubah jalur sertifikat sesuai dengan lingkungan Anda.
Anda dapat menggunakan file ini untuk terhubung ke server OpenVPN dari Sistem Operasi yang berbeda seperti Linux, macOS, atau Windows.
Dalam contoh ini, kami akan menggunakan aplikasi Tunnelblick untuk terhubung dari klien macOS. Tunnelblick adalah antarmuka pengguna grafis open source gratis untuk OpenVPN di macOS. Ini memberikan kontrol yang mudah dari klien OpenVPN. Muncul dengan semua paket yang diperlukan seperti OpenVPN, EasyRSA, dan driver tun/tap.
Karena file konfigurasi OpenVPN memiliki ekstensi .tblk, .ovpn, atau .conf, Tunnelblick dapat membaca semuanya.
Untuk menginstal file konfigurasi, seret dan lepas pada ikon Tunnelblick di bilah menu atau pada daftar konfigurasi di tab 'Konfigurasi' di jendela 'Detail VPN'.
Lalu, tekan “Hubungkan”.
Sekarang, Anda harus memiliki beberapa rute baru di mesin klien Anda:
$ netstat -rn # or route -n on Linux OS
Destination Gateway Flags Netif Expire
10.8.0.1/32 10.8.0.5 UGSc utun5
10.8.0.5 10.8.0.6 UH utun5
172.31.16/20 10.8.0.5 UGSc utun5
Seperti yang Anda lihat, ada rute ke jaringan database lokal melalui antarmuka VPN, jadi Anda seharusnya dapat mengakses layanan database menggunakan Alamat IP Database Pribadi.
$ mysql -p -h172.31.30.248
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.18-9 Percona Server (GPL), Release '9', Revision '53e606f'
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Berhasil. Sekarang Anda telah mengamankan lalu lintas Anda menggunakan VPN untuk terhubung ke node database Anda.
Kesimpulan
Melindungi data Anda adalah suatu keharusan jika Anda mengaksesnya melalui internet, lokal, atau lingkungan campuran. Anda harus tahu cara mengenkripsi dan mengamankan akses jarak jauh Anda.
Seperti yang Anda lihat, dengan OpenVPN Anda dapat mencapai basis data jarak jauh menggunakan jaringan lokal melalui koneksi terenkripsi menggunakan sertifikat yang ditandatangani sendiri. Jadi, OpenVPN terlihat seperti opsi yang bagus untuk tugas ini. Ini adalah solusi open source, dan instalasi/konfigurasinya cukup mudah. Kami menggunakan konfigurasi server OpenVPN dasar, sehingga Anda dapat mencari konfigurasi yang lebih kompleks dalam dokumentasi resmi OpenVPN untuk meningkatkan server OpenVPN Anda.