इंटरनेट एक खतरनाक जगह है, खासकर यदि आप अपने डेटा को बिना एन्क्रिप्ट या उचित सुरक्षा के छोड़ रहे हैं। आपके डेटा को सुरक्षित करने के कई तरीके हैं; सभी अलग-अलग स्तरों पर। आपके पास हमेशा एक मजबूत फ़ायरवॉल नीति, डेटा एन्क्रिप्शन और एक मजबूत पासवर्ड नीति होनी चाहिए। अपने डेटा को सुरक्षित करने का दूसरा तरीका वीपीएन कनेक्शन का उपयोग करके इसे एक्सेस करना है।
वर्चुअल प्राइवेट नेटवर्क (या वीपीएन) एक कनेक्शन विधि है जिसका उपयोग आपके डेटा की सुरक्षा करते हुए निजी और सार्वजनिक नेटवर्क में सुरक्षा और गोपनीयता जोड़ने के लिए किया जाता है।
OpenVPN संचार को सुरक्षित करने के लिए एक पूर्ण विशेषताओं वाला, खुला स्रोत, SSL VPN समाधान है। इसका उपयोग विभिन्न सर्वरों या डेटा केंद्रों के बीच रिमोट एक्सेस या संचार के लिए किया जा सकता है। इसे समय-समय पर या क्लाउड में, विभिन्न ऑपरेटिंग सिस्टम में स्थापित किया जा सकता है, और कई सुरक्षा विकल्पों के साथ कॉन्फ़िगर किया जा सकता है।
इस ब्लॉग में, हम क्लाउड में डेटाबेस तक पहुंचने के लिए एक वीपीएन कनेक्शन बनाएंगे। इस लक्ष्य को प्राप्त करने के विभिन्न तरीके हैं, जो आपके बुनियादी ढांचे और इस कार्य के लिए आप कितने हार्डवेयर संसाधनों का उपयोग करना चाहते हैं, पर निर्भर करता है।
उदाहरण के लिए, आप दो VM बना सकते हैं, एक ऑन-प्रिमाइसेस और दूसरा क्लाउड में, और वे आपके स्थानीय नेटवर्क को डेटाबेस क्लाउड नेटवर्क से पीयर-टू- पीयर वीपीएन कनेक्शन।
डेटाबेस नोड में स्थापित एक वीपीएन सर्वर से कनेक्ट करना एक और आसान विकल्प हो सकता है अपने स्थानीय मशीन में कॉन्फ़िगर किए गए वीपीएन क्लाइंट कनेक्शन का उपयोग करना। इस मामले में, हम इस दूसरे विकल्प का उपयोग करेंगे। आप क्लाउड में चल रहे डेटाबेस नोड में OpenVPN सर्वर को कॉन्फ़िगर करने का तरीका देखेंगे, और आप VPN क्लाइंट का उपयोग करके इसे एक्सेस करने में सक्षम होंगे।
डेटाबेस नोड के लिए, हम Amazon EC2 इंस्टेंस का उपयोग करेंगे निम्नलिखित विन्यास:
- ओएस:उबंटू सर्वर 18.04
- सार्वजनिक आईपी पता:18.224.138.210
- निजी आईपी पता:172.31.30.248/20
- खुले TCP पोर्ट:22, 3306, 1194
उबंटू सर्वर 18.04 पर OpenVPN कैसे स्थापित करें
पहला कार्य अपने डेटाबेस नोड में OpenVPN सर्वर को स्थापित करना है। वास्तव में, उपयोग की जाने वाली डेटाबेस तकनीक कोई मायने नहीं रखती क्योंकि हम नेटवर्किंग परत पर काम कर रहे हैं, लेकिन वीपीएन कनेक्शन को कॉन्फ़िगर करने के बाद परीक्षण उद्देश्यों के लिए, मान लें कि हम पेरकोना सर्वर 8.0 चला रहे हैं।
तो चलिए OpenVPN पैकेज इंस्टॉल करके शुरू करते हैं।
$ apt install openvpn easy-rsa
चूंकि OpenVPN आपके ट्रैफ़िक को एन्क्रिप्ट करने के लिए प्रमाणपत्रों का उपयोग करता है, इसलिए आपको इस कार्य के लिए EasyRSA की आवश्यकता होगी। यह रूट प्रमाणपत्र प्राधिकरण बनाने और उप-सीए और प्रमाणपत्र निरस्तीकरण सूचियों सहित प्रमाणपत्रों का अनुरोध और हस्ताक्षर करने के लिए एक सीएलआई उपयोगिता है।
नोट:एक नया EasyRSA संस्करण उपलब्ध है, लेकिन OpenVPN स्थापना पर ध्यान केंद्रित करने के लिए, आइए Ubuntu 18.04 रिपॉजिटरी एटीएम (EasyRSA संस्करण 2.2.2-) में उपलब्ध EasyRSA संस्करण का उपयोग करें। 2).
पिछली कमांड OpenVPN कॉन्फ़िगरेशन के लिए निर्देशिका /etc/openvpn/ बनाएगी, और निर्देशिका /usr/share/easy-rsa/ EasyRSA स्क्रिप्ट और कॉन्फ़िगरेशन के साथ बनाएगी।
इस कार्य को आसान बनाने के लिए, आइए OpenVPN निर्देशिका में EasyRSA पथ के लिए एक प्रतीकात्मक लिंक बनाएं (या आप इसे केवल कॉपी कर सकते हैं):
$ ln -s /usr/share/easy-rsa /etc/openvpn/
अब, आपको EasyRSA को कॉन्फ़िगर करने और अपने प्रमाणपत्र बनाने की आवश्यकता है। EasyRSA स्थान पर जाएँ और "vars" फ़ाइल के लिए एक बैकअप बनाएँ:
$ cd /etc/openvpn/easy-rsa
$ cp vars vars.bak
इस फ़ाइल को संपादित करें, और अपनी जानकारी के अनुसार निम्न पंक्तियों को बदलें:
$ 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"
फिर, opensl फ़ाइल के लिए एक नया प्रतीकात्मक लिंक बनाएं:
$ cd /etc/openvpn/easy-rsa
$ ln -s openssl-1.0.0.cnf openssl.cnf
अब, वर्र्स फ़ाइल लागू करें:
$ cd /etc/openvpn/easy-rsa
$ . vars
नोट:यदि आप ./clean-all चलाते हैं, तो मैं /etc/openvpn/easy-rsa/keys पर rm -rf करूंगा।
सभी साफ़-सुथरी स्क्रिप्ट चलाएँ:
$ ./clean-all
और Diffie-Hellman key (DH) बनाएं:
$ ./build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.....................................................................................................................................................................+
इस अंतिम क्रिया में कुछ सेकंड लग सकते हैं, और जब यह समाप्त हो जाएगा, तो आपके पास EasyRSA निर्देशिका में "कुंजी" निर्देशिका के अंदर एक नई DH फ़ाइल होगी।
$ ls /etc/openvpn/easy-rsa/keys
dh2048.pem
अब, 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.
...
यह ca.crt (सार्वजनिक प्रमाणपत्र) और ca.key (निजी कुंजी) बनाएगा। VPN से कनेक्ट होने के लिए सभी सर्वरों में सार्वजनिक प्रमाणपत्र की आवश्यकता होगी।
$ ls /etc/openvpn/easy-rsa/keys
ca.crt ca.key
अब आपने अपना CA बना लिया है, चलिए सर्वर प्रमाणपत्र बनाते हैं। इस मामले में, हम इसे "ओपनवीपीएन-सर्वर" कहेंगे:
$ ./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
यह OpenVPN सर्वर के लिए CRT, CSR और कुंजी फ़ाइलें बनाएगा:
$ ls /etc/openvpn/easy-rsa/keys
openvpn-server.crt openvpn-server.csr openvpn-server.key
अब, आपको क्लाइंट प्रमाणपत्र बनाने की आवश्यकता है, और प्रक्रिया काफी समान है:
$ ./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
यह OpenVPN क्लाइंट के लिए CRT, CSR, और Key फ़ाइलें बनाएगा:
$ ls /etc/openvpn/easy-rsa/keys
openvpn-client-1.csr openvpn-client-1.crt openvpn-client-1.key
इस समय, आपके पास सभी प्रमाणपत्र तैयार हैं। अगला चरण सर्वर और क्लाइंट OpenVPN कॉन्फ़िगरेशन दोनों बनाना होगा।
OpenVPN सर्वर को कॉन्फ़िगर करना
जैसा कि हमने उल्लेख किया है, OpenVPN इंस्टॉलेशन /etc/openvpn निर्देशिका बनाएगा, जहां आप सर्वर और क्लाइंट दोनों भूमिकाओं के लिए कॉन्फ़िगरेशन फ़ाइलें जोड़ेंगे, और इसमें / में प्रत्येक के लिए एक नमूना कॉन्फ़िगरेशन फ़ाइल है। usr/share/doc/openvpn/examples/sample-config-files/, ताकि आप उल्लिखित स्थान पर फाइलों को कॉपी कर सकें और अपनी इच्छानुसार उन्हें संशोधित कर सकें।
इस मामले में, हम केवल सर्वर कॉन्फ़िगरेशन फ़ाइल का उपयोग करेंगे, क्योंकि यह एक OpenVPN सर्वर है:
$ cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
$ gunzip /etc/openvpn/server.conf.gz
अब, आइए एक बुनियादी सर्वर कॉन्फ़िगरेशन फ़ाइल देखें:
$ 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.
नोट:अपने परिवेश के अनुसार प्रमाणपत्र पथ बदलें।
और फिर, बनाई गई कॉन्फ़िगरेशन फ़ाइल का उपयोग करके OpenVPN सेवा प्रारंभ करें:
$ systemctl start [email protected]
जांचें कि सेवा सही पोर्ट में सुन रही है या नहीं:
$ netstat -pltn |grep openvpn
tcp 0 0 0.0.0.0:1194 0.0.0.0:* LISTEN 20002/openvpn
आखिरकार, OpenVPN सर्वर में, आपको VPN ट्रैफ़िक की अनुमति देने के लिए sysctl.conf फ़ाइल में IP फ़ॉरवर्डिंग लाइन जोड़ने की आवश्यकता है:
$ echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
और दौड़ें:
$ sysctl -p
net.ipv4.ip_forward = 1
अब, आइए देखें कि इस नए वीपीएन से कनेक्ट करने के लिए ओपनवीपीएन क्लाइंट को कैसे कॉन्फ़िगर करें।
OpenVPN क्लाइंट को कॉन्फ़िगर करना
पिछले बिंदु में, हमने OpenVPN नमूना कॉन्फ़िगरेशन फ़ाइलों का उल्लेख किया था, और हमने सर्वर एक का उपयोग किया था, इसलिए अब क्लाइंट कॉन्फ़िगरेशन फ़ाइल का उपयोग करके ऐसा ही करते हैं।
क्लाइंट.conf फ़ाइल को /usr/share/doc/openvpn/examples/sample-config-files/ से कॉपी करें और अपनी इच्छानुसार इसे बदलें।
$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
वीपीएन क्लाइंट को कॉन्फ़िगर करने के लिए आपको पहले बनाए गए निम्नलिखित प्रमाणपत्रों की भी आवश्यकता होगी:
ca.crt
openvpn-client-1.crt
openvpn-client-1.key
इसलिए, इन फ़ाइलों को अपने स्थानीय मशीन या VM में कॉपी करें। आपको इस फ़ाइल के स्थान को VPN क्लाइंट कॉन्फ़िगरेशन फ़ाइल में जोड़ना होगा।
अब, आइए एक बुनियादी क्लाइंट कॉन्फ़िगरेशन फ़ाइल देखें:
$ 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.
नोट:अपने परिवेश के अनुसार प्रमाणपत्र पथ बदलें।
आप इस फ़ाइल का उपयोग Linux, macOS, या Windows जैसे विभिन्न ऑपरेटिंग सिस्टम से OpenVPN सर्वर से कनेक्ट करने के लिए कर सकते हैं।
इस उदाहरण में, हम macOS क्लाइंट से कनेक्ट करने के लिए टनलब्लिक एप्लिकेशन का उपयोग करेंगे। टनलब्लिक मैकओएस पर ओपनवीपीएन के लिए एक स्वतंत्र, ओपन सोर्स ग्राफिक यूजर इंटरफेस है। यह OpenVPN क्लाइंट का आसान नियंत्रण प्रदान करता है। यह OpenVPN, EasyRSA, और ट्यून/टैप ड्राइवर्स जैसे सभी आवश्यक पैकेजों के साथ आता है।
चूंकि OpenVPN कॉन्फ़िगरेशन फ़ाइलों में .tblk, .ovpn, या .conf एक्सटेंशन होते हैं, इसलिए टनलब्लिक उन सभी को पढ़ सकता है।
कॉन्फ़िगरेशन फ़ाइल स्थापित करने के लिए, इसे मेनू बार में टनलब्लिक आइकन पर या 'वीपीएन विवरण' विंडो के 'कॉन्फ़िगरेशन' टैब में कॉन्फ़िगरेशन की सूची पर खींचें और छोड़ें।
और फिर, "कनेक्ट" दबाएं।
अब, आपके क्लाइंट मशीन में कुछ नए मार्ग होने चाहिए:
$ 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
जैसा कि आप देख सकते हैं, वीपीएन इंटरफेस के माध्यम से स्थानीय डेटाबेस नेटवर्क के लिए एक मार्ग है, इसलिए आपको निजी डेटाबेस आईपी पते का उपयोग करके डेटाबेस सेवा तक पहुंचने में सक्षम होना चाहिए।
$ 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>
यह काम कर रहा है। अब आपके पास अपने डेटाबेस नोड से कनेक्ट करने के लिए वीपीएन का उपयोग करके आपका ट्रैफ़िक सुरक्षित है।
निष्कर्ष
यदि आप इसे इंटरनेट, ऑन-प्रिमाइसेस या मिश्रित वातावरण में एक्सेस कर रहे हैं तो अपने डेटा की सुरक्षा करना आवश्यक है। आपको अपने रिमोट एक्सेस को एन्क्रिप्ट और सुरक्षित करने का तरीका पता होना चाहिए।
जैसा कि आप देख सकते हैं, ओपनवीपीएन के साथ आप स्व-हस्ताक्षरित प्रमाणपत्रों का उपयोग करके एन्क्रिप्टेड कनेक्शन के माध्यम से स्थानीय नेटवर्क का उपयोग करके दूरस्थ डेटाबेस तक पहुंच सकते हैं। तो, OpenVPN इस कार्य के लिए एक बढ़िया विकल्प की तरह दिखता है। यह एक खुला स्रोत समाधान है, और स्थापना/कॉन्फ़िगरेशन बहुत आसान है। हमने एक बुनियादी OpenVPN सर्वर कॉन्फ़िगरेशन का उपयोग किया है, ताकि आप अपने OpenVPN सर्वर को बेहतर बनाने के लिए OpenVPN के आधिकारिक दस्तावेज़ में अधिक जटिल कॉन्फ़िगरेशन देख सकें।