Σήμερα, η τεχνολογία 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" - θα το χρειαστείτε στο επόμενο βήμα. Το όνομά μας είναι “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. Ως αποτέλεσμα, το αρχείο "κεφάλαιο-μυστικά" θα πρέπει να μοιάζει με αυτό:
Για να εφαρμόσετε τις ρυθμίσεις επαναφέρετε το 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/" για να μπορέσει να τα διανείμει στον πελάτη. Ας φτιάξουμε “Μιχαήλ” ο ιδιοκτήτης στην περίπτωσή μας.
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 του διακομιστή.