Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan OpenVPN untuk Mengamankan Akses ke Cluster Basis Data Anda di Cloud

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih 10 Catatan Teratas untuk Setiap Kategori di MySQL

  2. Bagaimana cara mencari banyak kolom di MySQL?

  3. Pilih kueri mysql di antara tanggal?

  4. Cara membuat database MySQL dan mengatur hak istimewa

  5. MySQL, lebih baik memasukkan NULL atau string kosong?