Επιστροφή στο blog

Ρύθμιση του OpenVPN σε Ubuntu 18.04

Ρύθμιση του OpenVPN σε Ubuntu 18.04

Εισαγωγή

Θέλετε να έχετε ασφαλή πρόσβαση στο Διαδίκτυο από το smartphone ή το laptop σας όταν συνδέεστε σε ένα μη αξιόπιστο δίκτυο (π.χ. WiFi σε ξενοδοχείο ή καφετέρια); Ευτυχώς, υπάρχει τρόπος να πραγματοποιήσετε την επιθυμία σας. Μπορείτε να συνδεθείτε με ασφάλεια σε ένα μη αξιόπιστο δίκτυο σαν να βρίσκεστε σε ένα ιδιωτικό δίκτυο χρησιμοποιώντας ένα Εικονικό Ιδιωτικό Δίκτυο (VPN).

Τι είναι το VPN;

Το VPN σημαίνει Εικονικό Ιδιωτικό Δίκτυο (Virtual Private Network). Προσφέρει τη δυνατότητα να ανοίξετε μια ασφαλή σήραγγα προς έναν αξιόπιστο διακομιστή. Όλα τα αιτήματα στη συνέχεια στέλνονται και λαμβάνονται μέσω αυτού του διακομιστή. Το πλεονέκτημα είναι η διασφάλιση της πρόσβασης και των συναλλαγών σας κατά τη χρήση δημόσιων δικτύων, όπως το δωρεάν WiFi σε ένα ξενοδοχείο.

Μέσω του VPN, όλα τα δεδομένα κρυπτογραφούνται και υποβάλλονται σε επεξεργασία μέσω του διακομιστή. Οι ενδιάμεσες συσκευές, όπως δρομολογητές τρίτων και παρόμοια, δεν έχουν τρόπο να ανακατευθύνουν την κίνηση σε ανεπιθύμητους προορισμούς. Επίσης, μόλις η σύνδεση δημιουργηθεί με επιτυχία, είστε μέρος του δικτύου του διακομιστή. Άλλοι διακομιστές, υπολογιστές ή συσκευές όπως εκτυπωτές που κανονικά θα ήταν προσβάσιμοι μόνο στο τοπικό δίκτυο του διακομιστή, μπορούν τώρα να προσεγγιστούν και μέσω της σήραγγας VPN. Ωστόσο, επειδή δεν χρειάζεται να αποστέλλονται όλα τα δεδομένα μέσω μιας κρυπτογραφημένης σήραγγας, είναι δυνατό να ρυθμίσετε τον πελάτη VPN έτσι ώστε μόνο ένα καθορισμένο μέρος των αιτημάτων να αποστέλλεται μέσω της σήραγγας VPN. Η υπόλοιπη κίνηση υποβάλλεται σε κανονική επεξεργασία μέσω του Διαδικτύου.

Σε αυτόν τον οδηγό, θα σας καθοδηγήσουμε στα βήματα εγκατάστασης ενός διακομιστή OpenVPN σε Ubuntu 18.04.

Προϋποθέσεις

Πρέπει να έχετε πρόσβαση σε έναν διακομιστή Ubuntu 18.04 για να φιλοξενήσετε την υπηρεσία σας OpenVPN για να ολοκληρώσετε αυτόν τον οδηγό. Πριν ξεκινήσετε αυτόν τον οδηγό, πρέπει επίσης να ρυθμίσετε έναν χρήστη μη-root με δικαιώματα sudo. Μπορείτε εύκολα να εγκαταστήσετε τον διακομιστή σας ακολουθώντας τον οδηγό μας για τη ρύθμιση ενός διακομιστή Ubuntu.

Επιπλέον, θα χρειαστείτε έναν ξεχωριστό υπολογιστή που θα λειτουργεί ως αρχή έκδοσης πιστοποιητικών (CA). Τεχνικά, μπορείτε να χρησιμοποιήσετε τον διακομιστή OpenVPN ή τον τοπικό σας υπολογιστή ως αρχή έκδοσης πιστοποιητικών. Ωστόσο, δεν το συνιστούμε αυτό καθώς θα εκθέσει το VPN σας σε κενά ασφαλείας. Σύμφωνα με την επίσημη τεκμηρίωση του OpenVPN, θα πρέπει να τοποθετήσετε την αρχή έκδοσης πιστοποιητικών σε έναν ξεχωριστό υπολογιστή αποκλειστικά για την εισαγωγή και την υπογραφή αιτημάτων πιστοποιητικών. Έτσι, υποθέτουμε ότι η αρχή έκδοσης πιστοποιητικών σας βρίσκεται σε έναν ξεχωριστό διακομιστή Ubuntu 18.04 που διαθέτει επίσης έναν χρήστη μη-root με δικαιώματα sudo και ένα βασικό τείχος προστασίας (firewall). Σε όλο αυτόν τον οδηγό, όλα τα βήματα εγκατάστασης και ρύθμισης θα είναι όσο το δυνατόν πιο απλά για καθεμία από τις εγκαταστάσεις. Μπορείτε επίσης να ρίξετε μια ματιά στον οδηγό μας για το πώς να στήσετε έναν διακομιστή Open VPN στο Docker.

Βήμα 1 – Εγκατάσταση του OpenVPN και του EasyRSA

Αρχικά, ενημερώστε το ευρετήριο πακέτων του διακομιστή VPN σας και εγκαταστήστε το OpenVPN. Μπορείτε να εγκαταστήσετε το OpenVPN χρησιμοποιώντας το apt επειδή είναι διαθέσιμο στα προεπιλεγμένα αποθετήρια του Ubuntu:

Βήμα 2: Δημιουργία αρχής έκδοσης πιστοποιητικών

Δημιουργήστε μια απλή αρχή έκδοσης πιστοποιητικών (CA) για την έκδοση αξιόπιστων πιστοποιητικών για τον διακομιστή OpenVPN. Για να το κάνετε αυτό, κάντε λήψη της τελευταίας έκδοσης του EasyRSA τόσο στο μηχάνημα CA όσο και στον διακομιστή OpenVPN χρησιμοποιώντας το wget. Για να λάβετε την τελευταία έκδοση, μεταβείτε στη σελίδα Releases του επίσημου έργου EasyRSA στο GitHub, αντιγράψτε τον σύνδεσμο λήψης για το αρχείο που λήγει σε .tgz και επικολλήστε τον στην ακόλουθη εντολή:

Στη συνέχεια, εξαγάγετε το αρχείο tarball:

 OpenVPN EasyRSA software

Σε αυτό το σημείο, όλο το απαιτούμενο λογισμικό έχει εγκατασταθεί με επιτυχία στον υπολογιστή CA και στον διακομιστή σας.

Βήμα 3 – Διαμόρφωση των μεταβλητών EasyRSA και δημιουργία της CA

Το EasyRSA συνοδεύεται από ένα αρχείο ρυθμίσεων το οποίο μπορείτε να επεξεργαστείτε για να ορίσετε μια σειρά από μεταβλητές για την CA σας χρησιμοποιώντας αυτήν την εντολή:

Υπάρχει ένα αρχείο στον κατάλογο με το όνομα vars.example. Δημιουργήστε ένα αντίγραφο αυτού του αρχείου και ονομάστε το αντίγραφο vars χωρίς επέκταση αρχείου:

Χρησιμοποιήστε τον προτιμώμενο επεξεργαστή κειμένου σας για να ανοίξετε αυτό το νέο αρχείο:

Στη συνέχεια, βρείτε τις ρυθμίσεις που ορίζουν τις προεπιλογές πεδίων για τα νέα πιστοποιητικά. Θα είναι παρόμοιο με αυτό:

Ενημερώστε αυτές τις μεταβλητές σε ό,τι επιθυμείτε, όπως φαίνεται παρακάτω:

Αποθηκεύστε και κλείστε το αρχείο μόλις είστε έτοιμοι. Το επόμενο βήμα είναι να καλέσετε το σενάριο easyrsa και να το εκτελέσετε με την επιλογή init-pki για να ξεκινήσετε την υποδομή δημοσίου κλειδιού στον διακομιστή CA:

easyrsa init-pki

Στη συνέχεια, εκτελέστε την εντολή build-ca με την επιλογή nopass, ώστε να μην σας ζητείται κωδικός πρόσβασης κάθε φορά που αλληλεπιδράτε με την CA σας:

Στο αποτέλεσμα, θα σας ζητηθεί να επιβεβαιώσετε το κοινό όνομα για την CA σας:

 OpenVPN build-ca

Με αυτό, η CA σας είναι έτοιμη και μπορεί να ξεκινήσει την υπογραφή αιτημάτων πιστοποιητικών.

Βήμα 4 – Δημιουργία πιστοποιητικού διακομιστή, κλειδιού και αρχείων κρυπτογράφησης

Αφού η CA είναι έτοιμη, μπορείτε να δημιουργήσετε το ιδιωτικό κλειδί και το αίτημα πιστοποιητικού από τον διακομιστή και στη συνέχεια να το στείλετε στην CA για υπογραφή, δημιουργώντας το απαιτούμενο πιστοποιητικό. Αρχικά, μεταβείτε στον κατάλογο EasyRSA στον διακομιστή OpenVPN:

Από εκεί, εκτελέστε το σενάριο easyrsa με την επιλογή init-pki. Παρόλο που έχετε ήδη εκτελέσει αυτήν την εντολή στον υπολογιστή της CA, αυτή η εντολή πρέπει να εκτελεστεί και εδώ. Αυτό συμβαίνει επειδή οι κατάλογοι PKI του διακομιστή και της CA είναι διαφορετικοί:

Στη συνέχεια, καλέστε ξανά το σενάριο easyrsa, αυτή τη φορά με την επιλογή gen-req, ακολουθούμενη από το γενικό όνομα του υπολογιστή’s:

Αυτό θα δημιουργήσει ένα ιδιωτικό κλειδί για τον διακομιστή και ένα αρχείο αιτήματος πιστοποιητικού με το όνομα server.req. Αντιγράψτε το κλειδί του διακομιστή στον κατάλογο /etc/openvpn/:

Μεταφέρετε το αρχείο server.req στον υπολογιστή της CA σας χρησιμοποιώντας μια ασφαλή μέθοδο (όπως το SCP στο ακόλουθο παράδειγμα):

Στη συνέχεια, μεταβείτε στον κατάλογο EasyRSA στον υπολογιστή της CA σας:

Χρησιμοποιήστε ξανά το σενάριο easyrsa για να εισαγάγετε το αρχείο server.req και να προσθέσετε το κοινό του όνομα μετά τη διαδρομή του αρχείου:

Στη συνέχεια, υπογράψτε το αίτημα εκτελώντας το σενάριο easyrsa με την επιλογή sign-req, ακολουθούμενη από τον τύπο αιτήματος και το κοινό όνομα. Για το αίτημα πιστοποιητικού του διακομιστή OpenVPN, βεβαιωθείτε ότι χρησιμοποιείτε τον τύπο αιτήματος server:

Το αποτέλεσμα σας ζητά να επαληθεύσετε ότι το αίτημα προέρχεται από αξιόπιστη πηγή. Πληκτρολογήστε yes και πατήστε Enter για επιβεβαίωση. Ελέγξτε τις λεπτομέρειες που εμφανίζονται παρακάτω για να διασφαλίσετε την ακρίβεια. Λάβετε υπόψη ότι αυτό το αίτημα δεν έχει ακόμη επαληθευτεί με κωδικό πρόσβασης.

Ζητήστε το θέμα και υπογράψτε το ως πιστοποιητικό διακομιστή για 3650 ημέρες:

 OpenVPN sign certificate for server

Εάν έχετε κρυπτογραφήσει το κλειδί CA, θα σας ζητηθεί ο κωδικός πρόσβασης σε αυτό το σημείο. Στη συνέχεια, χρησιμοποιήστε μια ασφαλή μέθοδο για να μεταφέρετε το υπογεγραμμένο πιστοποιητικό πίσω στον διακομιστή VPN σας:

Μεταφέρετε το αρχείο ca.rt στον διακομιστή προτού αποσυνδεθείτε από τον υπολογιστή CA:

Στη συνέχεια, συνδεθείτε ξανά στον διακομιστή OpenVPN και αντιγράψτε τα αρχεία server.crt και ca.crt στον κατάλογό σας /etc/openvpn/:

Στη συνέχεια, μεταβείτε στον κατάλογο EasyRSA:

Εισαγάγετε τον ακόλουθο κώδικα για να δημιουργήσετε ένα ισχυρό κλειδί Diffie-Hellman που μπορείτε να χρησιμοποιήσετε κατά την ανταλλαγή κλειδιών:

Όταν τελειώσετε, δημιουργήστε μια υπογραφή HMAC για να βελτιώσετε τη λειτουργικότητα ελέγχου υγείας TLS του διακομιστή:

Όταν ολοκληρωθεί η εντολή, αντιγράψτε τα δύο νέα αρχεία στον κατάλογο / etc / openvpn /:

Με αυτόν τον τρόπο, δημιουργούνται όλα τα πιστοποιητικά και τα αρχεία κλειδιών που απαιτούνται από τον διακομιστή. Τώρα, μπορείτε να δημιουργήσετε το κατάλληλο πιστοποιητικό και κλειδί που θα χρησιμοποιήσει ο υπολογιστής-πελάτης για να αποκτήσει πρόσβαση στον διακομιστή OpenVPN.

Βήμα 4 – Δημιουργία πιστοποιητικού πελάτη και ζεύγους κλειδιών

Στη συνέχεια, θα δημιουργήσουμε ένα κλειδί πελάτη και αρκετά πιστοποιητικά. Εάν έχετε πολλούς πελάτες, μπορείτε να επαναλάβετε αυτή τη διαδικασία για κάθε πελάτη. Σημειώστε, ωστόσο, ότι πρέπει να περάσετε μια μοναδική τιμή ονόματος στο σενάριο για κάθε πελάτη. Σε αυτόν τον οδηγό, θα ονομάσουμε το πρώτο ζεύγος πιστοποιητικού/κλειδιού client1. Αρχικά, δημιουργήστε μια δομή καταλόγου στον αρχικό σας κατάλογο για να αποθηκεύσετε τα πιστοποιητικά πελάτη και τα αρχεία κλειδιών:

Επειδή αποθηκεύετε το ζεύγος πιστοποιητικού/κλειδιού και το αρχείο ρυθμίσεων του πελάτη σε αυτόν τον κατάλογο για λόγους ασφαλείας, θα πρέπει τώρα να ανακαλέσετε τα δικαιώματα:

Στη συνέχεια, επιστρέψτε στον κατάλογο EasyRSA και εκτελέστε το σενάριο easyrsa με τις επιλογές gen-req και nopass καθώς και το γενικό όνομα του πελάτη:

Πατήστε Enter για να επιβεβαιώσετε το κοινό όνομα. Μετά από αυτό, αντιγράψτε το αρχείο client1.key στον κατάλογο / client-configs / keys / που δημιουργήσατε προηγουμένως:

Στη συνέχεια, χρησιμοποιήστε μια ασφαλή μέθοδο για να μεταφέρετε το αρχείο client1.req στον υπολογιστή CA σας:

Συνδεθείτε στον υπολογιστή CA σας, μεταβείτε στον κατάλογο EasyRSA και εισαγάγετε το αίτημα πιστοποιητικού:

import client.req

Στη συνέχεια, όπως και στο προηγούμενο βήμα, υπογράψτε το αίτημα στον διακομιστή. Αλλά αυτή τη φορά πρέπει να καθορίσετε τον τύπο αιτήματος πελάτη:

Στο μήνυμα προτροπής, πληκτρολογήστε yes για να επιβεβαιώσετε ότι θέλετε να υπογράψετε το αίτημα πιστοποιητικού και ότι το αίτημα πιστοποιητικού προέρχεται από αξιόπιστη πηγή. Εισαγάγετε τη λέξη “yes” για να συνεχίσετε ή εισαγάγετε οτιδήποτε άλλο για απόρριψη:

sign certificate

Εάν έχετε κρυπτογραφήσει το κλειδί CA, θα σας ζητηθεί επίσης να εισαγάγετε τον κωδικό πρόσβασης εδώ. Αυτό θα δημιουργήσει ένα αρχείο πιστοποιητικού πελάτη με όνομα client1.crt. Μεταφέρετε αυτό το αρχείο πίσω στον διακομιστή:

Συνδεθείτε ξανά μέσω SSH στον OpenVPN διακομιστή σας και αντιγράψτε το πιστοποιητικό πελάτη στον κατάλογο / client-configs / keys /:

Στη συνέχεια, αντιγράψτε τα αρχεία ca.crt και ta.key στον κατάλογο / client-configs / keys /:

Παράλληλα, όλα τα πιστοποιητικά και τα κλειδιά του διακομιστή και του πελάτη δημιουργήθηκαν και αποθηκεύτηκαν στους αντίστοιχους καταλόγους στον διακομιστή. Τώρα μπορείτε να συνεχίσετε με τη ρύθμιση του OpenVPN στον διακομιστή.

 Βήμα 5 – Ρύθμιση της υπηρεσίας OpenVPN

Μετά τη δημιουργία των πιστοποιητικών πελάτη και διακομιστή, μπορείτε να ρυθμίσετε την υπηρεσία OpenVPN ώστε να χρησιμοποιεί αυτά τα διαπιστευτήρια. Αρχικά, αντιγράψτε το δείγμα αρχείου ρυθμίσεων του OpenVPN στον κατάλογο ρυθμίσεών σας και στη συνέχεια εξαγάγετέ το για να το χρησιμοποιήσετε ως βάση για τη ρύθμιση:

Ανοίξτε το αρχείο ρυθμίσεων του διακομιστή στον επεξεργαστή κειμένου της προτίμησής σας:

Στη συνέχεια, βρείτε το τμήμα HMAC αναζητώντας την εντολή tls-auth:

Βρείτε το τμήμα του κωδικού αναζητώντας τη γραμμή κωδικού που είναι σε σχόλιο. Η κρυπτογράφηση AES-256-CBC προσφέρει ένα καλό επίπεδο κρυπτογράφησης και υποστηρίζεται καλά. Η γραμμή δεν πρέπει να είναι σε σχόλιο, αλλά αν δεν είναι, διαγράψτε το “;” πριν:

Κάτω από αυτό, προσθέστε μια εντολή Auth για να επιλέξετε τον αλγόριθμο σύνοψης μηνύματος HMAC. Το SHA256 είναι μια καλή επιλογή για αυτό:

Στη συνέχεια, βρείτε τη γραμμή με τη δήλωση dh που ορίζει τις παραμέτρους Diffie-Hellman. Λόγω ορισμένων πρόσφατων αλλαγών στο EasyRSA, το όνομα αρχείου του κλειδιού Diffie-Hellman ενδέχεται να διαφέρει από το όνομα αρχείου που αναφέρεται στο δείγμα αρχείου ρυθμίσεων του διακομιστή. Εάν είναι απαραίτητο, αλλάξτε το όνομα αρχείου που αναφέρεται εδώ διαγράφοντας το 2048 για να το ευθυγραμμίσετε με το κλειδί του προηγούμενου βήματος:

Τέλος, βρείτε τις ρυθμίσεις χρήστη και ομάδας και διαγράψτε το “;” στην αρχή κάθε γραμμής:

Μέχρι στιγμής, οι αλλαγές που κάνατε στο δείγμα αρχείου server.conf θα πρέπει να επιτρέπουν τη λειτουργία του OpenVPN.

Step 6 – Server network configuration

Ρυθμίστε την προώθηση IP για τη σωστή δρομολόγηση της κίνησης μέσω του VPN. Αυτό είναι απαραίτητο για τη λειτουργικότητα VPN που παρέχει ο διακομιστής σας:

Αναζητήστε τη γραμμή σε σχόλιο που ορίζει το net.ipv4.ip_forward. Αφαιρέστε τον χαρακτήρα «#» από την αρχή της γραμμής για να ενεργοποιήσετε αυτήν τη ρύθμιση:

Αποθηκεύστε το αρχείο και κλείστε το μόλις τελειώσετε. Για να διαβάσετε το αρχείο και να προσαρμόσετε τις τιμές για την τρέχουσα συνεδρία, πληκτρολογήστε:

sysctl -p

Στη συνέχεια, προσθέστε τη δημόσια διεπαφή δικτύου του μηχανήματός σας:

Η δημόσια διεπαφή σας είναι η συμβολοσειρά στην έξοδο αυτής της εντολής που ακολουθεί τη λέξη «dev». Για παράδειγμα, αυτό το αποτέλεσμα δείχνει τη διεπαφή με το όνομα ens3.

default ip route

Ανοίξτε το αρχείο /etc/ufw/before.rules για να προσθέσετε τη σχετική ρύθμιση:

Προς το πάνω μέρος του αρχείου, προσθέστε τις επισημασμένες γραμμές παρακάτω για να ορίσετε την προεπιλεγμένη πολιτική για την αλυσίδα POSTROUTING στον πίνακα nat και να κάνετε masquerade οποιαδήποτε κίνηση προέρχεται από το VPN. Αντικαταστήστε το ens3 στη γραμμή -A POSTROUTING παρακάτω με τη διεπαφή που βρήκατε στην παραπάνω εντολή:

Αποθηκεύστε το αρχείο και κλείστε το μόλις τελειώσετε. Στη συνέχεια, πρέπει να πείτε στο UFW να επιτρέπει επίσης τα προωθούμενα πακέτα από προεπιλογή. Για να το κάνετε αυτό, ανοίξτε το αρχείο /etc/default/ufw:

Μέσα, βρείτε την οδηγία DEFAULT_FORWARD_POLICY και αλλάξτε την τιμή από DROP σε ACCEPT:

Αποθηκεύστε και κλείστε το αρχείο όταν τελειώσετε. Στη συνέχεια, προσαρμόστε το τείχος προστασίας για να επιτρέψετε την κίνηση προς το OpenVPN. Εάν δεν αλλάξατε τη θύρα και το πρωτόκολλο στο αρχείο /etc/openvpn/server.conf, θα πρέπει να ανοίξετε την κίνηση UDP στη θύρα 1194. Εάν τροποποιήσατε τη θύρα ή/και το πρωτόκολλο, αντικαταστήστε τις τιμές που επιλέξατε εδώ. Σε περίπτωση που ξεχάσατε να προσθέσετε τη θύρα SSH κατά την παρακολούθηση του προαπαιτούμενου οδηγού, προσθέστε την και εδώ:

Αφού προσθέσετε αυτούς τους κανόνες, απενεργοποιήστε και ενεργοποιήστε ξανά το UFW για να το επανεκκινήσετε και να φορτώσετε τις αλλαγές από όλα τα αρχεία που έχετε τροποποιήσει:

ufw commands

Συγχαρητήρια, ο διακομιστής σας είναι πλέον ρυθμισμένος ώστε να διαχειρίζεται σωστά την κίνηση OpenVPN!

Συμπέρασμα

Εάν ακολουθήσατε αυτόν τον οδηγό μέχρι το τέλος, είστε πλέον σε θέση να περιηγείστε στο Διαδίκτυο με ασφάλεια. Θα μπορείτε να κρατήσετε την ταυτότητά σας, την τοποθεσία σας και την κίνησή σας μακριά από αδιάκριτα βλέμματα.

Καλή συνέχεια!

 

 

author

Akshay Nagpal

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.