Δημιουργήστε το δικό σας εικονικό ιδιωτικό δίκτυο Linux με το OpenVPN
Τα εικονικά ιδιωτικά δίκτυα (VPN) σας επιτρέπουν να αποκρύψετε τις ηλεκτρονικές μεταδόσεις δεδομένων σας και να βελτιώσετε την ασφάλεια κατά την περιήγηση στο Internet από δημόσιους χώρους. Πολλοί πάροχοι υπηρεσιών σε απευθείας σύνδεση προσφέρουν δωρεάν και πληρωμένες επιλογές VPN που μπορείτε να χρησιμοποιήσετε. Ωστόσο, ακόμη και τα καλύτερα καταβληθέντα σχέδια μπορεί να είναι αναξιόπιστα ή αργά κατά περιόδους.
Εάν μόνο εσείς θα μπορούσατε να δημιουργήσετε το δικό σας VPN μεταξύ του κινητού σας υπολογιστή και του οικιακού σας υπολογιστή.
Στην πραγματικότητα, η διαδικασία αυτή είναι ευκολότερη από ό, τι νομίζετε. Σήμερα θα συζητήσουμε πώς μπορείτε να χρησιμοποιήσετε το OpenVPN για τη δημιουργία ασφαλούς σύνδεσης μεταξύ πελάτη και διακομιστή σε μια μηχανή Linux.
Λάβετε υπόψη ότι θα δημιουργήσουμε μια διαμόρφωση δρομολόγησης και όχι μια γεφύρωση, η οποία θα πρέπει να είναι καλή για τις περισσότερες περιπτώσεις χρήσης. Οι χρήστες των Windows μπορούν να ακολουθήσουν την ανάγνωση από την τεκμηρίωση OpenVPN, ξεκινώντας από την ενότητα σχετικά με τη δημιουργία μιας Αρχής Πιστοποίησης. Οι εντολές που χρησιμοποιούνται στα Windows θα είναι παρόμοιες με αυτές που παρουσιάζονται παρακάτω.
Ο, τι χρειάζεσαι
Θα χρειαστείτε δύο υπολογιστές - ο ένας είναι ο μηχανισμός διακομιστή ενώ ο άλλος είναι ο πελάτης. Το μηχάνημα διακομιστή μπορεί να είναι η επιφάνεια εργασίας του σπιτιού σας ή ένα παράδειγμα Linux από το DigitalOcean ή το Linode. Το μηχάνημα-πελάτης είναι ο υπολογιστής που χρησιμοποιείτε τακτικά. Καθώς αυτό το σεμινάριο γίνεται στο Linux, και οι δύο υπολογιστές πρέπει να τρέχουν και το Linux.
Σημείωση : Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε το Ubuntu ως διανομέα μας τόσο για το διακομιστή όσο και για τον υπολογιστή-πελάτη.
Εγκατάσταση του OpenVPN
Για να ξεκινήσετε, πρέπει να εγκαταστήσετε το OpenVPN και το Easy-RSA στο διακομιστή σας. Στη συνέχεια, εγκαταστήστε το OpenVPN στο μηχάνημα πελάτη σας.
Στο Ubuntu θα πρέπει να εγκαταστήσετε το Easy-RSA από αυτή τη σελίδα Github. Το Ubuntu περιλαμβάνει την έκδοση 2 Easy-RSA στις αποθήκες του. Ο σύνδεσμος Github προσφέρει την έκδοση Easy-RSA 3, η οποία ακολουθεί τις εντολές που θα χρησιμοποιήσω σε αυτό το άρθρο.
sudo apt-get εγκαταστήστε το openvpn git clone https://github.com/OpenVPN/easy-rsa.git
Στον κατάλογο στον οποίο έχετε κλωνοποιήσει το αποθετήριο Github, αντιγράψτε τον κατάλογο "easyrsa3" που περιέχει στο "/ etc / easy-rsa /".
sudo mkdir / etc / easy-rsa sudo cp -r ./easyrsa3/* / etc / easy-rsa /
Υποδομή δημόσιου κλειδιού (PKI)
Το OpenVPN χρησιμοποιεί μια υποδομή δημόσιου κλειδιού (PKI) για να προσδιορίσει την ταυτότητα των εξυπηρετητών και των πελατών, ώστε αυτές οι ξεχωριστές οντότητες να μπορούν να μιλούν μεταξύ τους. Το PKI χρησιμοποιεί μια κύρια Αρχή Πιστοποίησης (CA) μαζί με μεμονωμένα πιστοποιητικά και ιδιωτικά κλειδιά για κάθε διακομιστή και πελάτη.
Η ΑΠ πρέπει να υπογράψει τα πιστοποιητικά διακομιστή και πελάτη. Το OpenVPN στη συνέχεια ελέγχει για να διαπιστώσει ότι ο διακομιστής επαληθεύει την ταυτότητα του κάθε πελάτη και, ταυτόχρονα, κάθε πελάτης ελέγχει την ταυτότητα του διακομιστή.
Η ρύθμιση εδώ είναι πιο περίπλοκη από ό, τι μπορεί να βρείτε για συνδέσεις τύπου PPTP, αλλά παρέχει μεγαλύτερη ασφάλεια στους χρήστες και δίνει στον διακομιστή περισσότερη ελευθερία να αποδεχτεί ή να αρνηθεί τις αιτούμενες εισερχόμενες συνδέσεις πελάτη.
Δημιουργία πιστοποιητικού CA
Για αυστηρότερη ασφάλεια, συνιστάται η συσκευή σας CA να διαφέρει από τον διακομιστή σας. Για συντομία, αυτό το άρθρο θα χρησιμοποιήσει το ίδιο μηχάνημα και για τις δύο εργασίες. Θα πρέπει να αλλάξετε τις διαδικασίες αντιγραφής αρχείων σας για να προσαρμόσετε την κατάστασή σας - είτε χρησιμοποιεί το scp
για μεταφορές δικτύου είτε χρησιμοποιεί ένα κλειδί USB για να μετακινήσετε αρχεία με μη αυτόματο τρόπο.
Σημείωση : εάν χρησιμοποιείτε ξεχωριστό υπολογιστή ως CA, θα χρειαστεί να εγκαταστήσετε το Easy-RSA σε αυτό το μηχάνημα.
1. Αλλαγή καταλόγων στο "/ etc / easy-rsa /:"
cd / etc / easy-rsa /
2. Εάν χρειάζεται, αντιγράψτε το αρχείο "/etc/easy-rsa/vars.example" στο "/ etc / easy-rsa / vars". Στη συνέχεια, ανοίξτε vars για να επεξεργαστείτε τα περιεχόμενά του:
sudo cp ./vars.example ./vars sudo nano ./vars
3. Πληκτρολογήστε τις λεπτομέρειες όπως τη χώρα, την επαρχία, την πόλη, την οργάνωση και το ηλεκτρονικό ταχυδρομείο. Αποσυνδέστε τις γραμμές που εμφανίζονται εδώ αφαιρώντας το "#" στην αρχή καθενός.
Αφού τελειώσετε με την επεξεργασία, αποθηκεύστε (Ctrl + o) και έξοδο (Ctrl + x).
4. Αρχικοποιήστε το νέο σας PKI και δημιουργήστε το κλειδί για την Αρχή Πιστοποίησης που θα χρησιμοποιήσετε για να υπογράψετε μεμονωμένα πιστοποιητικά διακομιστή και πελάτη:
εξαγωγή EASYRSA = $ (pwd) sudo ./easyrsa init-pki sudo ./easyrsa build-ca
Αντιγράψτε το αρχείο ca.crt που μόλις δημιουργήσατε στον κατάλογο του διακομιστή OpenVPN. Θα πρέπει επίσης να αλλάξετε τον ιδιοκτήτη και την ομάδα σας με το Chown:
sudo cp /etc/easy-rsa/pki/ca.crt / etc / openvpn / server / root sudo chown: root /etc/openvpn/server/ca.crt
Δημιουργία του πιστοποιητικού διακομιστή και του ιδιωτικού κλειδιού
Αλλάξτε πάλι στον κατάλογό σας Easy-RSA και δημιουργήστε το πιστοποιητικό διακομιστή και το ιδιωτικό του κλειδί:
cd / etc / easy-rsa sudo ./easyrsa init-pki sudo ./easyrsa gen-req ServerName nopass
Μπορείτε να αλλάξετε το "ServerName" στην παραπάνω εντολή σε ό, τι όνομα επιθυμείτε. Βεβαιωθείτε ότι αντικατοπτρίζετε αυτήν την αλλαγή όταν αντιγράφετε το νέο κλειδί στον κατάλογο του διακομιστή OpenVPN:
sudo cp /etc/easy-rsa/pki/private/ServerName.key / etc / openvpn / server /
Αρχείο παραμέτρων Diffie-Hellman
Το OpenVPN χρησιμοποιεί τη μέθοδο ανταλλαγής κλειδιού Diffie-Hellman (DH) για την ασφαλή ανταλλαγή κρυπτογραφικών κλειδιών σε ένα δίκτυο. Θα δημιουργήσετε ένα αρχείο παραμέτρων DH με την ακόλουθη εντολή:
sudo openssl dhparam -out /etc/openvpn/server/dh.pem 2048
Ο τελικός αριθμός, 2048, σε αυτήν την εντολή δείχνει τον αριθμό των bits που χρησιμοποιήθηκαν για τη δημιουργία του αρχείου. Για παράδειγμα, θα μπορούσατε να χρησιμοποιήσετε το 4096, αλλά θα χρειαζόταν πολύ περισσότερο χρόνο για να δημιουργήσετε το αρχείο και δεν θα βελτίωνε σημαντικά την ασφάλεια. Η προεπιλογή είναι 2048 και αυτή η τιμή είναι επαρκής για τις περισσότερες περιπτώσεις χρήσης.
Έλεγχος ταυτότητας με βάση το Hash
Το OpenVPN χρησιμοποιεί επίσης υπογραφή Hash-Based Authentication Message (HMAC) για την προστασία από τις ευπάθειες στις χειραψίες SSL / TLS. Δημιουργήστε το αρχείο με αυτήν την εντολή:
sudo openvpn --genkey --secret /etc/openvpn/server/ta.key
Αρχεία Πελατών
Σε αυτό το σημείο θα έχετε δημιουργήσει μια σειρά αρχείων για το διακομιστή σας. Τώρα είναι καιρός να δημιουργήσετε αρχεία για τους πελάτες σας. Μπορείτε να επαναλάβετε αυτή τη διαδικασία πολλές φορές για όσους πελάτες επιθυμείτε. Μπορείτε να δημιουργήσετε αρχεία πελάτη με ασφάλεια σε οποιονδήποτε υπολογιστή με εγκατεστημένο το Easy-RSA.
Εισάγετε τον κατάλογο Easy-RSA και αρχικοποιήστε ξανά το PKI αν δεν το έχετε κάνει ήδη:
cd / etc / easy-rsa sudo. / easyrsa init-pki
Δημιουργήστε ένα κλειδί πελάτη και ένα πιστοποιητικό. Αλλαγή καταλόγων αν παραλείψετε το προηγούμενο βήμα.
cd / etc / easy-rsa sudo ./easyrsa gen-req Όνομα πελάτη nopass
Εάν επαναλάβετε τη διαδικασία, δεν χρειάζεται να αρχικοποιήσετε το PKI για κάθε νέο πελάτη. Απλά φροντίστε να αλλάξετε το "ClientName" για να είναι μοναδικό κάθε φορά.
Υπογραφή Server και Πιστοποιητικά πελάτη
Η ΑΠ πρέπει τώρα να υπογράψει τα πιστοποιητικά διακομιστή και πελάτη.
Αν κοιτάξετε στο αρχείο "/ etc / easy-rsa / pki / reqs /", θα πρέπει να δείτε όλα τα αρχεία (.req) που ζητήσατε (.req) Easy-RSA που δημιουργήθηκαν στις προηγούμενες easyrsa gen-req
.
Σε αυτό το στιγμιότυπο οθόνης υπάρχουν μόνο δύο αρχεία .req. Ο αριθμός σας θα διαφέρει εάν έχετε κάνει περισσότερους από έναν πελάτες στο προηγούμενο βήμα.
Εάν χρησιμοποιήσατε μια ξεχωριστή μηχανή CA, πρέπει τώρα να μεταφέρετε τα αρχεία .req στην CA για υπογραφή. Μόλις ολοκληρωθεί, αλλάξτε τον κατάλογο Easy-RSA και υπογράψτε τα αρχεία σας με τις ακόλουθες εντολές, φροντίζοντας να αντικατοπτρίσετε τη σωστή θέση κάθε .req και το όνομα κάθε διακομιστή και πελάτη.
cd / etc / easy-rsa sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ServerName.req Server1 sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ClientName.req Client1 sudo ./easyrsa υπογραφή-req διακομιστή Server1 sudo ./easyrsa sign-req πελάτης Client1
Σημειώστε ότι θα χρειαστεί να δώσετε στο Easy-RSA διαφορετικό όνομα για τα πιστοποιητικά διακομιστή και πελάτη σας. Ο ServerName.req θα χρησιμοποιηθεί εδώ, για παράδειγμα, για να δημιουργήσει Server1.crt.
Θα βρείτε τώρα δύο νέα αρχεία - "/etc/easy-rsa/pki/issued/Server1.crt" και "/etc/easy-rsa/pki/issued/Client1.crt" - τα οποία θα μεταφέρετε στις αντίστοιχες (βλέπε στην επόμενη ενότητα αυτού του άρθρου). Μπορείτε να διαγράψετε τα αρχεία .req που παραμένουν.
Περνώντας κατά μήκος των αρχείων .CRT
Τώρα τα υπογεγραμμένα πιστοποιητικά (κάθε .crt) είναι έτοιμα να εργαστούν για τους ιδιοκτήτες τους. Μετακινήστε το αρχείο διακομιστή στην τοποθεσία του OpenVPN και δημιουργήστε έναν νέο κατάλογο για τα πιστοποιητικά πελατών:
sudo mv /etc/easy-rsa/pki/issued/Server1.crt / etc / openvpn / server / root sudo chown: root /etc/openvpn/server/Server1.crt sudo mkdir / etc / easy-rsa / pki / υπογραφή sudo mv /etc/easy-rsa/pki/issued/Client1.crt / etc / easy-rsa / pki / υπογραφή /
Η δημιουργία του φακέλου "... pki / signed /" εδώ σας δίνει μια ετικέτα για να τοποθετήσετε πολλά πιστοποιητικά πελάτη.
Κοινόχρηστο διακομιστή και αρχεία πελάτη
Τώρα θα πρέπει να έχετε πέντε αρχεία στον κατάλογο "/ etc / openvpn / server /": ca.crt, dh.pem, Server1.crt, ServerName.key και ta.key.
Θα χρειαστείτε δύο από αυτά τα ίδια αρχεία στον φάκελο του client OpenVPN στο μηχάνημα του πελάτη. Αντιγράψτε τα χρησιμοποιώντας το scp
ή το δίσκο flash ανάλογα με την περίπτωση. Αντιγράψτε τόσο το "/etc/openvpn/server/ca.crt" όσο και το "/etc/openvpn/server/ta.key" στον "/ etc / openvpn / client / client" του πελάτη σας.
Βεβαιωθείτε ότι έχετε αντιγράψει το πιστοποιητικό πελάτη και το κλειδί σας στην ίδια τοποθεσία. Αντιγράψτε "/etc/easy-rsa/pki/signed/Client1.crt" και "/etc/easy-rsa/pki/private/ClientName.key" στο "/ etc / openvpn / client /" του πελάτη σας. "Επανάληψη αυτής της διαδικασίας για τυχόν επιπλέον πελάτες που ενδεχομένως έχετε δημιουργήσει.
Για κάθε πελάτη, θα πρέπει τώρα να έχετε τέσσερα αρχεία στο "/ etc / openvpn / client:" Client1.crt, ClientName.key, ca.crt και ta.key.
Αρχεία διαμόρφωσης διακομιστή και προγράμματος-πελάτη
Το τελευταίο σας βήμα προτού ξεκινήσετε το VPN είναι να επεξεργαστείτε αρχεία ρυθμίσεων για το διακομιστή και τον υπολογιστή-πελάτη. Αρχικά, εντοπίστε τα αρχεία "προεπιλεγμένο server.conf" και "client.conf". Θα βρίσκονται πιθανώς σε μία από αυτές τις τοποθεσίες:
- "/ Usr / share / openvpn / παραδείγματα"
- "/ Usr / share / doc / openvpn / examples / sample-config-files /" (Τα config ubuntu βρίσκονται εδώ)
Σημείωση : Στο Ubuntu θα χρειαστεί να αποσυσκευάσετε το αρχείο "server.conf.gz". Χρησιμοποιήστε το gunzip -d ./server.conf.gz
για να πάρετε το αρχείο server.conf από το συμπιεσμένο πακέτο.
Αντιγράψτε κάθε αρχείο ρυθμίσεων στον αντίστοιχο κατάλογο "/ etc / openvpn / server /" και "/ etc / openvpn / client /".
Στο server.conf πραγματοποιήστε τις ακόλουθες αλλαγές. Βεβαιωθείτε ότι τα ονόματα και οι τοποθεσίες του ca.crt, Server1.crt, ServerName.key και dh.pem παρατίθενται στο αρχείο ρυθμίσεων. Ίσως χρειαστεί να χρησιμοποιήσετε πλήρεις διαδρομές - όπως μια γραμμή που διαβάζει "cert /etc/openvpn/server/Server1.crt".
Αλλάξτε τη γραμμή tls-crypt ta.key
tls-auth...
για να διαβάσετε tls-crypt ta.key
. Και πάλι, μπορεί να χρειαστεί μια πλήρης διαδρομή.
Αποσύνδεση (καταργήστε το ";") από τις γραμμές "δεν υπάρχει χρήστης" και "καμία ομάδα".
Για τον πελάτη σας θα κάνετε παρόμοιες αλλαγές. Αφού δημιουργήσετε το αρχείο ρυθμίσεων, αντικατοπτρίστε τα ονόματα και τις τοποθεσίες του ca.crt, Client1.crt, ClientName.key και ta.key (με την ίδια κίνηση από tls-auth...
to tls-crypt...
) εισαγάγετε το όνομα ή τη διεύθυνση IP και τη θύρα του διακομιστή σας.
Ώρα να συνδεθεί
Τώρα μπορείτε να ξεκινήσετε το διακομιστή και τον πελάτη σας. Αυτό είναι ένα απλό ζήτημα, αν όλα τα παραπάνω πήγαν όπως είχε προγραμματιστεί.
Ξεκινήστε τον διακομιστή με:
openvpn /etc/openvpn/server/server.conf
και τον πελάτη με:
openvpn /etc/openvpn/client/client.conf
Η επιτυχημένη δημιουργία ενός VPN θα δείξει την έξοδο του πελάτη από την "Initialization Sequence Completed" στο τέλος της παραγωγής του. Θα βρείτε επίσης έναν νέο τύπο σύνδεσης στις διαθέσιμες διεπαφές δικτύου.
Αυτό το στιγμιότυπο οθόνης εμφανίζει τη διασύνδεση "tun0". Αυτό έκανε ο διακομιστής OpenVPN. Μπορείτε να δείτε τη διεύθυνσή του ως 10.8.0.1 και να αντιγράψετε την διεύθυνση από τον πελάτη για να επιβεβαιώσετε την επιτυχή σύνδεση.
Δρομολόγηση της διαδικτυακής κίνησης μέσω του διακομιστή
Σε αυτό το σημείο πιθανότατα θα θέλετε να έχετε πρόσβαση στο Διαδίκτυο μέσω του διακομιστή σας από τον απομακρυσμένο πελάτη σας. Για να το κάνετε αυτό, θα πρέπει πρώτα να αλλάξετε το αρχείο διαμόρφωσης του διακομιστή σας. Προσθέστε την push 'redirect-gateway def1
προς το αρχείο διαμόρφωσης του διακομιστή.
echo "ώθηση \" ανακατεύθυνση-πύλη def1 \ "" | sudo tee -a /etc/openvpn/server/server.conf
Θα πρέπει επίσης να ενημερώσετε τον διακομιστή σας για τη σωστή δρομολόγηση των αιτημάτων επισκεψιμότητας του πελάτη στο διαδίκτυο. Αυτή η εντολή θα αλλάξει τους κανόνες φιλτραρίσματος πακέτων Iptables:
iptables -t nat -A ΜΕΤΑΦΟΡΑ -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Εάν δεν έχετε αλλάξει τη γραμμή "server 10.8.0.0 255.255.255.0" στο αρχείο server.conf, η διεύθυνση IP στην εντολή αυτή θα πρέπει να λειτουργήσει. Θα χρειαστεί να αλλάξετε το "eth0" ώστε να ταιριάζει με τη διεπαφή Ethernet του διακομιστή σας. Μπορείτε να δείτε από προηγούμενες εικόνες οθόνης ότι η μηχανή μου χρησιμοποιεί "enp19s0".
Στη συνέχεια, μπορείτε να μεταφέρετε τις ρυθμίσεις DNS στον πελάτη. Οποιαδήποτε διεύθυνση μπορεί να φτάσει ένας πελάτης μπορεί να ωθηθεί. Μπορείτε να χρησιμοποιήσετε αυτήν την εντολή ως σημείο εκκίνησης:
echo "ώθηση \" dhcp - επιλογή DNS 10.8.0.1 \ "" | sudo tee -a /etc/openvpn/server/server.conf
Τέλος, μπορείτε να ενεργοποιήσετε την προώθηση πακέτων στο διακομιστή ως εξής:
echo 1 | sudo tee / proc / sys / net / ipv4 / ip_forward
Θα πρέπει τώρα να είστε σε θέση να χρησιμοποιήσετε τον πελάτη σας για πρόσβαση στο Internet μέσω του VPN.
συμπέρασμα
Ξέρω ότι αυτό ήταν ένας μακρύς δρόμος. Ας ελπίσουμε ότι έχετε βρει επιτυχία στη δημιουργία ενός VPN και στη σύνδεση με το Διαδίκτυο με ασφαλή τρόπο.
Εάν δεν υπάρχει τίποτα άλλο, αυτό θα είναι μια καλή εμπειρία μάθησης για το τι χρειάζεται για να δημιουργηθεί ένα ασφαλές ψηφιακό σήραγγα. Ευχαριστώ για τη συμμετοχή μου στο τέλος.