Internet là một nơi nguy hiểm, đặc biệt nếu bạn để dữ liệu của mình không được mã hóa hoặc không có bảo mật thích hợp. Có một số cách để bảo mật dữ liệu của bạn; tất cả ở các cấp độ khác nhau. Bạn phải luôn có chính sách tường lửa mạnh, mã hóa dữ liệu và chính sách mật khẩu mạnh. Một cách khác để bảo mật dữ liệu của bạn là truy cập dữ liệu đó bằng kết nối VPN.
Mạng Riêng Ảo (hoặc VPN) là một phương thức kết nối được sử dụng để thêm bảo mật và quyền riêng tư cho các mạng riêng và công cộng, bảo vệ dữ liệu của bạn.
OpenVPN là giải pháp SSL VPN mã nguồn mở, đầy đủ tính năng để bảo mật thông tin liên lạc. Nó có thể được sử dụng để truy cập từ xa hoặc giao tiếp giữa các máy chủ hoặc trung tâm dữ liệu khác nhau. Nó có thể được cài đặt tại chỗ hoặc trên đám mây, trong các hệ điều hành khác nhau và có thể được định cấu hình với nhiều tùy chọn bảo mật.
Trong blog này, chúng tôi sẽ tạo kết nối VPN để truy cập cơ sở dữ liệu trên đám mây. Có nhiều cách khác nhau để đạt được mục tiêu này, tùy thuộc vào cơ sở hạ tầng của bạn và lượng tài nguyên phần cứng bạn muốn sử dụng cho tác vụ này.
Ví dụ:bạn có thể tạo hai máy ảo, một máy ảo tại chỗ và một máy ảo khác trên đám mây và chúng có thể là cầu nối để kết nối mạng cục bộ của bạn với mạng đám mây cơ sở dữ liệu thông qua Peer-to- Kết nối VPN ngang hàng.
Một tùy chọn khác đơn giản hơn có thể là kết nối với máy chủ VPN được cài đặt trong nút cơ sở dữ liệu bằng cách sử dụng kết nối máy khách VPN được định cấu hình trong máy cục bộ của bạn. Trong trường hợp này, chúng tôi sẽ sử dụng tùy chọn thứ hai này. Bạn sẽ thấy cách định cấu hình máy chủ OpenVPN trong nút cơ sở dữ liệu chạy trên đám mây và bạn sẽ có thể truy cập nó bằng ứng dụng khách VPN.
Đối với nút cơ sở dữ liệu, chúng tôi sẽ sử dụng phiên bản Amazon EC2 với cấu hình sau:
- Hệ điều hành:Ubuntu Server 18.04
- Địa chỉ IP Công cộng:18.224.138.210
- Địa chỉ IP riêng:172.31.30.248/20
- Các cổng TCP đã mở:22, 3306, 1194
Cách cài đặt OpenVPN trên Ubuntu Server 18.04
Nhiệm vụ đầu tiên là cài đặt máy chủ OpenVPN trong nút cơ sở dữ liệu của bạn. Trên thực tế, công nghệ cơ sở dữ liệu được sử dụng không quan trọng khi chúng tôi đang làm việc trên một lớp mạng, nhưng đối với mục đích kiểm tra sau khi định cấu hình kết nối VPN, giả sử chúng tôi đang chạy Percona Server 8.0.
Vì vậy, hãy bắt đầu bằng cách cài đặt các gói OpenVPN.
$ apt install openvpn easy-rsa
Vì OpenVPN sử dụng chứng chỉ để mã hóa lưu lượng truy cập của bạn, bạn sẽ cần EasyRSA cho tác vụ này. Đây là một tiện ích CLI để tạo một tổ chức phát hành chứng chỉ gốc, đồng thời yêu cầu và ký các chứng chỉ, bao gồm các CA con và danh sách thu hồi chứng chỉ.
Lưu ý:Đã có phiên bản EasyRSA mới, nhưng để tập trung vào cài đặt OpenVPN, hãy sử dụng phiên bản EasyRSA có sẵn trong kho lưu trữ Ubuntu 18.04 atm (Phiên bản EasyRSA 2.2.2- 2).
Lệnh trước sẽ tạo thư mục / etc / openvpn / cho cấu hình OpenVPN và thư mục / usr / share / easy-rsa / với cấu hình và tập lệnh EasyRSA.
Để thực hiện tác vụ này dễ dàng hơn, hãy tạo một liên kết tượng trưng đến đường dẫn EasyRSA trong thư mục OpenVPN (hoặc bạn có thể chỉ cần sao chép nó):
$ ln -s /usr/share/easy-rsa /etc/openvpn/
Bây giờ, bạn cần định cấu hình EasyRSA và tạo chứng chỉ của mình. Đi tới vị trí EasyRSA và tạo bản sao lưu cho tệp “vars”:
$ cd /etc/openvpn/easy-rsa
$ cp vars vars.bak
Chỉnh sửa tệp này và thay đổi các dòng sau theo thông tin của bạn:
$ 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"
Sau đó, tạo một liên kết tượng trưng mới đến tệp openssl:
$ cd /etc/openvpn/easy-rsa
$ ln -s openssl-1.0.0.cnf openssl.cnf
Bây giờ, hãy áp dụng tệp vars:
$ cd /etc/openvpn/easy-rsa
$ . vars
LƯU Ý:Nếu bạn chạy ./clean-all, tôi sẽ thực hiện lệnh rm -rf trên / etc / openvpn / easy-rsa / keys
Chạy tập lệnh clean-all:
$ ./clean-all
Và tạo khóa Diffie-Hellman (DH):
$ ./build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.....................................................................................................................................................................+
Hành động cuối cùng này có thể mất vài giây và khi hoàn tất, bạn sẽ có một tệp DH mới bên trong thư mục "key" trong thư mục EasyRSA.
$ ls /etc/openvpn/easy-rsa/keys
dh2048.pem
Bây giờ, hãy tạo chứng chỉ 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.
...
Thao tác này sẽ tạo ca.crt (chứng chỉ công khai) và ca.key (khóa riêng tư). Chứng chỉ công khai sẽ được yêu cầu trong tất cả các máy chủ để kết nối với VPN.
$ ls /etc/openvpn/easy-rsa/keys
ca.crt ca.key
Bây giờ bạn đã tạo CA của mình, hãy tạo chứng chỉ máy chủ. Trong trường hợp này, chúng tôi sẽ gọi nó là “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
Thao tác này sẽ tạo tệp CRT, CSR và Khóa cho máy chủ OpenVPN:
$ ls /etc/openvpn/easy-rsa/keys
openvpn-server.crt openvpn-server.csr openvpn-server.key
Bây giờ, bạn cần tạo chứng chỉ ứng dụng khách và quá trình này khá tương tự:
$ ./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
Thao tác này sẽ tạo tệp CRT, CSR và Khóa cho ứng dụng khách OpenVPN:
$ ls /etc/openvpn/easy-rsa/keys
openvpn-client-1.csr openvpn-client-1.crt openvpn-client-1.key
Tại thời điểm này, bạn đã có tất cả các chứng chỉ đã sẵn sàng. Bước tiếp theo sẽ là tạo cấu hình OpenVPN cả máy chủ và máy khách.
Định cấu hình Máy chủ OpenVPN
Như chúng tôi đã đề cập, cài đặt OpenVPN sẽ tạo thư mục / etc / openvpn, nơi bạn sẽ thêm tệp cấu hình cho cả vai trò máy chủ và máy khách, và nó có tệp cấu hình mẫu cho mỗi vai trò trong / usr / share / doc / openvpn /amples / sample-config-files /, do đó bạn có thể sao chép các tệp ở vị trí đã đề cập và sửa đổi chúng theo ý muốn.
Trong trường hợp này, chúng tôi sẽ chỉ sử dụng tệp cấu hình máy chủ vì nó là máy chủ OpenVPN:
$ cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
$ gunzip /etc/openvpn/server.conf.gz
Bây giờ, hãy xem tệp cấu hình máy chủ cơ bản:
$ 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.
Lưu ý:Thay đổi đường dẫn chứng chỉ tùy theo môi trường của bạn.
Và sau đó, khởi động dịch vụ OpenVPN bằng tệp cấu hình đã tạo:
$ systemctl start [email protected]
Kiểm tra xem dịch vụ có đang nghe đúng cổng hay không:
$ netstat -pltn |grep openvpn
tcp 0 0 0.0.0.0:1194 0.0.0.0:* LISTEN 20002/openvpn
Cuối cùng, trong máy chủ OpenVPN, bạn cần thêm dòng chuyển tiếp IP trong tệp sysctl.conf để cho phép lưu lượng VPN:
$ echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
Và chạy:
$ sysctl -p
net.ipv4.ip_forward = 1
Bây giờ, hãy xem cách định cấu hình ứng dụng khách OpenVPN để kết nối với VPN mới này.
Định cấu hình Máy khách OpenVPN
Ở điểm trước, chúng tôi đã đề cập đến các tệp cấu hình mẫu OpenVPN và chúng tôi đã sử dụng một máy chủ, vì vậy bây giờ chúng ta hãy làm tương tự nhưng sử dụng tệp cấu hình máy khách.
Sao chép tệp client.conf từ / usr / share / doc / openvpn /amples / sample-config-files / vào vị trí tương ứng và thay đổi nó theo ý bạn.
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
Bạn cũng sẽ cần các chứng chỉ sau đã được tạo trước đó để định cấu hình ứng dụng khách VPN:
ca.crt
openvpn-client-1.crt
openvpn-client-1.key
Vì vậy, hãy sao chép các tệp này vào máy cục bộ hoặc máy ảo của bạn. Bạn cần thêm vị trí tệp này vào tệp cấu hình ứng dụng khách VPN.
Bây giờ, chúng ta hãy xem tệp cấu hình ứng dụng khách cơ bản:
$ 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.
Lưu ý:Thay đổi đường dẫn chứng chỉ tùy theo môi trường của bạn.
Bạn có thể sử dụng tệp này để kết nối với máy chủ OpenVPN từ các Hệ điều hành khác nhau như Linux, macOS hoặc Windows.
Trong ví dụ này, chúng tôi sẽ sử dụng ứng dụng Tunnelblick để kết nối từ ứng dụng macOS. Tunnelblick là giao diện người dùng đồ họa mã nguồn mở miễn phí dành cho OpenVPN trên macOS. Nó cung cấp khả năng kiểm soát dễ dàng các máy khách OpenVPN. Nó đi kèm với tất cả các gói cần thiết như OpenVPN, EasyRSA và trình điều khiển tun / tap.
Vì tệp cấu hình OpenVPN có phần mở rộng là .tblk, .ovpn hoặc .conf, Tunnelblick có thể đọc tất cả chúng.
Để cài đặt tệp cấu hình, hãy kéo và thả tệp đó vào biểu tượng Tunnelblick trong thanh trình đơn hoặc trên danh sách cấu hình trong tab 'Cấu hình' của cửa sổ 'Chi tiết VPN'.
Và sau đó, nhấn vào “Kết nối”.
Bây giờ, bạn sẽ có một số tuyến mới trong máy khách của mình:
$ 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
Như bạn thấy, có một đường dẫn đến mạng cơ sở dữ liệu cục bộ thông qua giao diện VPN, vì vậy bạn có thể truy cập dịch vụ cơ sở dữ liệu bằng Địa chỉ IP Cơ sở dữ liệu riêng.
$ 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>
Nó đang hoạt động. Giờ đây, bạn đã đảm bảo lưu lượng truy cập của mình bằng cách sử dụng VPN để kết nối với nút cơ sở dữ liệu của mình.
Kết luận
Bảo vệ dữ liệu của bạn là điều bắt buộc nếu bạn đang truy cập dữ liệu đó qua internet, tại chỗ hoặc trên một môi trường hỗn hợp. Bạn phải biết cách mã hóa và bảo mật quyền truy cập từ xa của mình.
Như bạn có thể thấy, với OpenVPN, bạn có thể truy cập cơ sở dữ liệu từ xa bằng mạng cục bộ thông qua kết nối được mã hóa bằng chứng chỉ tự ký. Vì vậy, OpenVPN có vẻ như là một lựa chọn tuyệt vời cho tác vụ này. Đây là một giải pháp mã nguồn mở và việc cài đặt / cấu hình khá dễ dàng. Chúng tôi đã sử dụng cấu hình máy chủ OpenVPN cơ bản, vì vậy bạn có thể tìm kiếm cấu hình phức tạp hơn trong tài liệu chính thức của OpenVPN để cải thiện máy chủ OpenVPN của mình.