Σήμερα, η τεχνολογία VPN γίνεται πιο δημοφιλής. Οι απλοί χρήστες χρησιμοποιούν VPN για ασφαλή πρόσβαση στο Διαδίκτυο. Βοηθά επίσης να περιηγηθείτε σε τοπικά αποκλεισμένους ιστότοπους και υπηρεσίες και προστατεύει από πιθανή εξωτερική κακόβουλη συμπεριφορά. Όταν συνδέεστε σε διακομιστή VPN, υπάρχει μια ασφαλής σήραγγα μεταξύ του υπολογιστή σας και του διακομιστή στην οποία δεν είναι δυνατή η πρόσβαση από έξω, οπότε ο διακομιστής VPN γίνεται το σημείο πρόσβασής σας στο Διαδίκτυο. Υπάρχουν πολλές υπηρεσίες VPN εκεί έξω, τόσο δωρεάν όσο και επί πληρωμή, αλλά εάν δεν λειτουργούν για εσάς για κάποιο λόγο, μπορείτε πάντα να διαμορφώσετε τον δικό σας διακομιστή VPN.
Για να εκτελέσετε το VPN σας, θα πρέπει να νοικιάσετε έναν διακομιστή VPS . Υπάρχουν διαφορετικά λογισμικά που σας επιτρέπουν να δημιουργήσετε μια σύνδεση VPN. Διαφέρουν μεταξύ τους ως προς τα λειτουργικά συστήματα που υποστηρίζονται και τους αλγόριθμους που χρησιμοποιούνται. Θα εξετάσουμε δύο ανεξάρτητες προσεγγίσεις για τη ρύθμιση ενός διακομιστή VPN. Η πρώτη βασίζεται στο πρωτόκολλο PPTP, το οποίο θεωρείται ήδη ξεπερασμένο και μη ασφαλές, αλλά είναι πραγματικά εύκολο στη ρύθμιση παραμέτρων. Η άλλη χρησιμοποιεί σύγχρονο και ασφαλές λογισμικό OpenVPN, αλλά απαιτεί την εγκατάσταση μιας εφαρμογής-πελάτη τρίτου κατασκευαστή και μια πιο διεξοδική διαδικασία ρύθμισης.
Στο περιβάλλον δοκιμής μας, πρόκειται να χρησιμοποιήσουμε έναν εικονικό διακομιστή που υποστηρίζεται από το Ubuntu Server 18.04. Ένα τείχος προστασίας πρόκειται να απενεργοποιηθεί στον διακομιστή επειδή η διαμόρφωσή του αξίζει ένα ξεχωριστό άρθρο. Θα περιγράψουμε τη διαδικασία εγκατάστασης στα Windows 10.
Προετοιμασία
Ανεξάρτητα από τον διακομιστή VPN που θα επιλέξετε, η πρόσβαση στο Διαδίκτυο θα ρυθμιστεί με ενσωματωμένα μέσα του λειτουργικού συστήματος. Για να ανοίξετε την πρόσβαση στο Διαδίκτυο μέσω μιας διεπαφής εξωτερικής υπηρεσίας, πρέπει να επιτρέψετε την προώθηση πακέτων μεταξύ των διεπαφών και να διαμορφώσετε τη μετάφραση διευθύνσεων δικτύου.
Για να ενεργοποιήσετε την προώθηση πακέτων, ανοίξτε το αρχείο "/etc/sysctl.conf" και αλλάξτε την τιμή της παραμέτρου "net.ipv4.ip_forward" σε 1.
Για να εφαρμόσετε αλλαγές χωρίς να κάνετε επανεκκίνηση του υπολογιστή, εκτελέστε την εντολή
sudo sysctl -p /etc/sysctl.conf
Η μετάφραση διευθύνσεων δικτύου ρυθμίζεται μέσω του iptables . Αρχικά, ελέγξτε το όνομα της εξωτερικής διεπαφής δικτύου σας εκτελώντας την εντολή "ip link show" - θα το χρειαστείτε στο επόμενο βήμα. Το όνομά μας είναι "ens3".
Ενεργοποιήστε τη μετάφραση διευθύνσεων δικτύου στην εξωτερική σας διεπαφή για όλους τους τοπικούς κόμβους δικτύου.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Σημειώστε ότι πρέπει να καθορίσετε το πραγματικό όνομα της διεπαφής του διακομιστή σας, μπορεί να είναι διαφορετικό από το δικό μας.
Από προεπιλογή, όλοι οι κανόνες που δημιουργούνται από το iptables επαναφέρονται μετά την επανεκκίνηση του διακομιστή. Για να το αποτρέψετε αυτό, χρησιμοποιήστε το βοηθητικό πρόγραμμα "iptables-persistent" . Εγκαταστήστε το ακόλουθο πακέτο:
sudo apt install iptables-persistent
Κάποια στιγμή κατά τη διάρκεια της διαδικασίας εγκατάστασης, θα δείτε ένα παράθυρο διαμόρφωσης που θα σας προτείνει να αποθηκεύσετε τους τρέχοντες κανόνες του iptables. Εφόσον οι κανόνες έχουν ήδη οριστεί, απλώς επιβεβαιώστε και κάντε κλικ στο "Ναι" δύο φορές. Από τώρα και στο εξής, οι κανόνες θα εφαρμοστούν αυτόματα μετά την επανεκκίνηση του διακομιστή.
Διακομιστής PPTP
Διαμόρφωση διακομιστή
Εγκαταστήστε το πακέτο:
sudo apt install pptpd
Αφού ολοκληρωθεί η εγκατάσταση, ανοίξτε το αρχείο "/etc/pptpd.conf" σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου και επεξεργαστείτε το ως εξής:
option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses
Στη συνέχεια, επεξεργαστείτε το αρχείο "/etc/ppp/pptpd-options" . Οι περισσότερες παράμετροι έχουν οριστεί από προεπιλογή.
#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
Στο επόμενο στάδιο, θα χρειαστεί να δημιουργήσετε μια εγγραφή για τις συνδέσεις πελατών. Ας υποθέσουμε ότι θέλετε να προσθέσετε έναν χρήστη "vpnuser" με κωδικό πρόσβασης "1" και να επιτρέψετε τη δυναμική διευθυνσιοδότηση για αυτόν. Ανοίξτε το αρχείο "/etc/ppp/chap-secrets" και προσθέστε την ακόλουθη γραμμή με τις παραμέτρους του χρήστη στο τέλος του αρχείου:
vpnuser pptpd 1 *
Η τιμή «pptpd» είναι το όνομα της υπηρεσίας που καθορίσαμε στο αρχείο «pptpd-options» . Αντί για «*» μπορείτε να καθορίσετε μια σταθερή διεύθυνση IP. Στο αποτέλεσμα, το αρχείο «chap-secrets» θα πρέπει να μοιάζει με αυτό:
Για να εφαρμόσετε τις ρυθμίσεις, επαναφέρετε την υπηρεσία pptpd και προσθέστε την στην αυτόματη φόρτωση.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Η διαμόρφωση του διακομιστή έχει ολοκληρωθεί.
Διαμόρφωση πελάτη
Ανοίξτε την επιλογή "Έναρξη" - "Ρυθμίσεις" - "Δίκτυο & Διαδίκτυο" - "VPN" και κάντε κλικ στην επιλογή "Προσθήκη σύνδεσης VPN".
Εισαγάγετε τις παραμέτρους σύνδεσης στο παράθυρο που ανοίγει και κάντε κλικ στην επιλογή "Αποθήκευση".
- Πάροχος VPN: "Windows (ενσωματωμένο)"
- Όνομα σύνδεσης: "vpn_connect" (μπορείτε να επιλέξετε οποιοδήποτε όνομα)
- Όνομα διακομιστή ή διεύθυνση: (καθορίστε την εξωτερική διεύθυνση IP του διακομιστή)
- Τύπος VPN: "Auto"
- Τύπος πληροφοριών σύνδεσης: "Όνομα χρήστη και κωδικός πρόσβασης"
- Όνομα χρήστη: vpnuser (το όνομα καθορίζεται στο αρχείο "chap-secrets" του διακομιστή)
- Σύνθημα: 1 (όπως στο αρχείο "chap-secrets")
Αφού αποθηκεύσετε τις παραμέτρους, θα δείτε τη νέα σύνδεση VPN στο παράθυρο. Κάντε αριστερό κλικ στη σύνδεση και επιλέξτε «Σύνδεση» . Σε περίπτωση επιτυχούς σύνδεσης, θα δείτε την κατάσταση «Συνδεδεμένο».
Στις Επιλογές, θα βρείτε τις εσωτερικές διευθύνσεις του πελάτη και του διακομιστή. Το πεδίο «Διεύθυνση προορισμού» εμφανίζει τη διεύθυνση του εξωτερικού διακομιστή.
Όταν συνδεθεί, η εσωτερική διεύθυνση IP του διακομιστή, 172.16.0.1 στην περίπτωσή μας, γίνεται η προεπιλεγμένη πύλη για όλα τα εξερχόμενα πακέτα.
Χρησιμοποιώντας οποιαδήποτε ηλεκτρονική υπηρεσία, μπορείτε να βεβαιωθείτε ότι η εξωτερική διεύθυνση IP του υπολογιστή είναι πλέον ίδια με τη διεύθυνση IP του διακομιστή σας VPN.
OpenVPN server
Διαμόρφωση διακομιστή
Ας προωθήσουμε το επίπεδο δικαιωμάτων του τρέχοντος χρήστη γιατί για την περαιτέρω παραμετροποίησή μας θα χρειαστούμε πρόσβαση root.
sudo -s
Εγκαταστήστε όλα τα απαραίτητα πακέτα. Θα χρειαστούμε το πακέτο "Easy-RSA" για τη διαχείριση των κλειδιών κρυπτογράφησης.
apt install openvpn easy-rsa iptables-persistent
Επιτρέψτε εισερχόμενες συνδέσεις στη θύρα 1194 μέσω πρωτοκόλλου UDP και εφαρμόστε κανόνες iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Δημιουργήστε έναν κατάλογο με αντιγραμμένα αρχεία από το πακέτο "Easy-RSA" και πλοηγηθείτε σε αυτόν.
make-cadir ~/openvpn
cd ~/openvpn
Δημιουργία Υποδομής Δημόσιου Κλειδιού (PKI)
./easyrsa init-pki
Δημιουργήστε το πιστοποιητικό ρίζας της Αρχής έκδοσης πιστοποιητικών (CA).
./easyrsa build-ca
Κατά τη διάρκεια της διαδικασίας δημιουργίας, θα σας ζητηθεί να ορίσετε και να θυμηθείτε έναν κωδικό πρόσβασης. Θα πρέπει επίσης να απαντήσετε σε ερωτήσεις και να εισαγάγετε πληροφορίες σχετικά με τον κάτοχο του κλειδιού. Μπορείτε να αφήσετε τις προεπιλεγμένες τιμές που παρέχονται σε αγκύλες. Πατήστε "Enter" για να ολοκληρώσετε την εισαγωγή.
Δημιουργήστε ένα ιδιωτικό κλειδί και ένα αίτημα πιστοποιητικού. Ως όρισμα, καθορίστε ένα αυθαίρετο όνομα. Στην περίπτωσή μας, είναι "vpn-server".
./easyrsa gen-req vpn-server nopass
Αφήστε την τιμή Common Name ως προεπιλογή.
Υπογράψτε το αίτημα πιστοποιητικού διακομιστή που δημιουργήθηκε.
./easyrsa sign-req server vpn-server
Σε αυτό το βήμα, απαντήστε "ναι" για να επιβεβαιώσετε την υπογραφή και, στη συνέχεια, εισαγάγετε τον κωδικό πρόσβασης που δημιουργήθηκε κατά τη δημιουργία του πιστοποιητικού ρίζας.
Δημιουργήστε παραμέτρους Diffie-Hellman. Αυτές οι παράμετροι χρησιμοποιούνται για ασφαλή ανταλλαγή κλειδιών μεταξύ του διακομιστή και του προγράμματος-πελάτη.
./easyrsa gen-dh
Όλα τα απαραίτητα αρχεία έχουν δημιουργηθεί. Ας δημιουργήσουμε έναν φάκελο "keys" στον κατάλογο εργασίας του OpenVPN για να αποθηκεύσουμε τα κλειδιά και να αντιγράψουμε εκεί τα αρχεία που δημιουργήθηκαν.
mkdir /etc/openvpn/keys
sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys
Ρύθμιση παραμέτρων NAT χρησιμοποιώντας iptables κανόνες. Δημιουργήστε ένα αρχείο με το όνομα nat και ανοίξτε το για επεξεργασία στο /etc/openvpn/ Κατάλογο.
#!/bin/sh
# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP
# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP
sudo netfilter-persistent save
Αποθηκεύστε το αρχείο και κάντε το εκτελέσιμο.
sudo chmod 755 /etc/openvpn/nat
Αντιγράψτε το πρότυπο διαμόρφωσης διακομιστή.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Ανοίξτε το αρχείο "/etc/openvpn/server.conf" για επεξεργασία, βεβαιωθείτε ότι περιέχει τις ακόλουθες γραμμές και επεξεργαστείτε τις εάν χρειάζεται:
#Port, protocol, and interface
port 1194
proto udp
dev tun
#Path to the encryption keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
dh /etc/openvpn/keys/dh.pem
#SHA256 Hashing Algorithm
auth SHA256
#Switching off additional encryption
#tls-auth ta.key 0
#Network parameters
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.
keepalive 10 120
#Set up AES-256 encryption for the tunnel.
cipher AES-256-GCM
#Demoting the service OpenVPN after launch
user nobody
group nogroup
#Switching on parameters saving after reboot
persist-key
persist-tun
#Set log verbosity
verb 3
#Redirecting logs
log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.
up /etc/openvpn/nat
Ενεργοποίηση προώθησης κυκλοφορίας στον διακομιστή.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Ξεκινήστε το OpenVPN για να εφαρμόσετε τη διαμόρφωση.
systemctl restart openvpn@server
Η διαμόρφωση του διακομιστή ολοκληρώθηκε!
Διαμόρφωση πελάτη
Μεταβείτε στην επίσημη ιστοσελίδα του OpenVPN " https://openvpn.net ", μεταβείτε στην ενότητα "ΚΟΙΝΟΤΗΤΑ".
Κάντε κύλιση προς τα κάτω και κατεβάστε το πρόγραμμα εγκατάστασης για την έκδοση του λειτουργικού σας συστήματος. Στην περίπτωσή μας, είναι τα Windows 11 ARM64.
Εγκαταστήστε την εφαρμογή αφήνοντας όλες τις παραμέτρους από προεπιλογή.
Στο επόμενο στάδιο θα χρειαστεί να προετοιμάσετε το ακόλουθο αρχείο στον διακομιστή και να το μεταφέρετε στον υπολογιστή-πελάτη:
- δημόσια και ιδιωτικά κλειδιά·
- αντίγραφο του κλειδιού του κέντρου πιστοποίησης·
- πρότυπο αρχείου config.
Συνδεθείτε στον διακομιστή, αναβαθμίστε τα δικαιώματα και μεταβείτε στον κατάλογο που δημιουργήσαμε "~/openvpn".
sudo -s
cd ~/openvpn
Δημιουργήστε ένα ιδιωτικό κλειδί και ένα αίτημα πιστοποιητικού για τον πελάτη. Ως όρισμα, καθορίστε ένα αυθαίρετο όνομα. Στην περίπτωσή μας, είναι "client1".
./easyrsa gen-req client1 nopass
Εισαγάγετε τον κωδικό πρόσβασης που ορίσαμε κατά τη δημιουργία του πιστοποιητικού ρίζας και αφήστε την τιμή Κοινό όνομα ως προεπιλεγμένη.
Υπογράψτε το αίτημα πιστοποιητικού πελάτη που δημιουργήθηκε.
./easyrsa sign-req client client1
Σε αυτό το βήμα, απαντήστε "ναι" για να επιβεβαιώσετε την υπογραφή και, στη συνέχεια, εισαγάγετε τον κωδικό πρόσβασης που δημιουργήθηκε κατά τη δημιουργία του πιστοποιητικού ρίζας.
Για ευκολία, ας δημιουργήσουμε έναν φάκελο με το όνομα 'client1' στον αρχικό κατάλογο και ας αντιγράψουμε σε αυτόν όλα τα αρχεία που προορίζονται για μεταφορά στον υπολογιστή-πελάτη.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Αντιγράψτε το πρότυπο αρχείου διαμόρφωσης προγράμματος-πελάτη στον ίδιο κατάλογο. Αλλάξτε την επέκταση αρχείου σε ".ovpn" κατά την αντιγραφή.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Αλλάξτε τον κάτοχο του καταλόγου και όλων των αρχείων "~/client1/" για να μπορείτε να τα διανείμετε στον πελάτη. Ας ορίσουμε τον "mihail" ως κάτοχο στην περίπτωσή μας.
chown -R mihail:mihail ~/client1
Μεταβείτε στον υπολογιστή-πελάτη και αντιγράψτε το περιεχόμενο του φακέλου "~/client1/" . Μπορείτε να το κάνετε αυτό με τη βοήθεια του βοηθητικού προγράμματος "PSCP" , το οποίο συνοδεύει το Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Μπορείτε να αποθηκεύσετε τα αρχεία κλειδιών "ca.crt" , "client1.crt" , "client1.key" όπου θέλετε. Στην περίπτωσή μας, βρίσκονται σε αυτόν τον φάκελο "c:\Program Files\OpenVPN\keys" και τροποποιούμε το αρχείο ρυθμίσεων "client.ovpn" στον κατάλογο "c:\Program Files\OpenVPN\config".
Ας προχωρήσουμε τώρα στη διαμόρφωση του προγράμματος-πελάτη. Ανοίξτε το αρχείο "c:\Program Files\OpenVPN\config\client.ovpn" σε ένα πρόγραμμα επεξεργασίας κειμένου και επεξεργαστείτε τις ακόλουθες γραμμές:
#announce that this is the client
client
#interface and protocol just like on the server
dev tun
proto udp
#IP address of the server and port
remote ip_address 1194
#saving parameters after reload
persist-key
persist-tun
#key paths
ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”
cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”
key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification
remote-cert-tls server
#disable extra encryption
#tls-auth ta.key 1
cipher AES-256-CBC
auth-nocache
verb 3
Αφήστε τα υπόλοιπα ανέγγιχτα.
Αποθηκεύστε το αρχείο και εκκινήστε την εφαρμογή-πελάτης "OpenVPN GUI".
Κάντε δεξί κλικ στο εικονίδιο της εφαρμογής στη γραμμή εργασιών και επιλέξτε «Σύνδεση» . Εάν η σύνδεση είναι επιτυχής, το εικονίδιο θα γίνει πράσινο.
Χρησιμοποιήστε οποιαδήποτε ηλεκτρονική υπηρεσία για να βεβαιωθείτε ότι η δημόσια διεύθυνση IP σας έχει αλλάξει και είναι πλέον η ίδια με τη διεύθυνση IP του διακομιστή.