Το βιβλίο Linux σε δράση

Το βιβλίο Linux σε δράση Γεια σας, κάτοικοι του Khabro! Στο βιβλίο, ο Ντέιβιντ Κλίντον περιγράφει 12 έργα της πραγματικής ζωής, όπως η αυτοματοποίηση του συστήματος δημιουργίας αντιγράφων ασφαλείας και ανάκτησης, η δημιουργία ενός νέφους προσωπικών αρχείων τύπου Dropbox και η δημιουργία του δικού σας διακομιστή MediaWiki. Θα εξερευνήσετε την εικονικοποίηση, την ανάκτηση καταστροφών, την ασφάλεια, τη δημιουργία αντιγράφων ασφαλείας, τα DevOps και την αντιμετώπιση προβλημάτων συστήματος μέσα από ενδιαφέρουσες μελέτες περιπτώσεων. Κάθε κεφάλαιο τελειώνει με μια ανασκόπηση των βέλτιστων πρακτικών, ένα γλωσσάρι νέων όρων και ασκήσεις.

Απόσπασμα «10.1. Δημιουργία μιας σήραγγας OpenVPN"

Έχω ήδη μιλήσει πολύ για την κρυπτογράφηση σε αυτό το βιβλίο. Το SSH και το SCP μπορούν να προστατεύσουν δεδομένα που μεταφέρονται μέσω απομακρυσμένων συνδέσεων (Κεφάλαιο 3), η κρυπτογράφηση αρχείων μπορεί να προστατεύσει δεδομένα ενώ είναι αποθηκευμένα στον διακομιστή (Κεφάλαιο 8) και τα πιστοποιητικά TLS/SSL μπορούν να προστατεύσουν δεδομένα που μεταφέρονται μεταξύ τοποθεσιών και προγραμμάτων περιήγησης πελατών (Κεφάλαιο 9) . Ωστόσο, μερικές φορές τα δεδομένα σας πρέπει να προστατεύονται σε ένα ευρύτερο φάσμα συνδέσεων. Για παράδειγμα, ίσως κάποια από τα μέλη της ομάδας σας να εργάζονται στο δρόμο ενώ συνδέονται σε Wi-Fi μέσω δημόσιων hotspot. Σίγουρα δεν θα πρέπει να υποθέσετε ότι όλα αυτά τα σημεία πρόσβασης είναι ασφαλή, αλλά οι άνθρωποι σας χρειάζονται έναν τρόπο σύνδεσης με τους πόρους της εταιρείας—και σε αυτό μπορεί να βοηθήσει ένα VPN.

Μια σωστά σχεδιασμένη σήραγγα VPN παρέχει μια άμεση σύνδεση μεταξύ των απομακρυσμένων πελατών και του διακομιστή με τρόπο που κρύβει δεδομένα καθώς ταξιδεύει σε ένα μη ασφαλές δίκτυο. Και λοιπόν? Έχετε ήδη δει πολλά εργαλεία που μπορούν να το κάνουν αυτό με κρυπτογράφηση. Η πραγματική αξία ενός VPN είναι ότι ανοίγοντας ένα τούνελ, μπορείτε να συνδέσετε απομακρυσμένα δίκτυα σαν να ήταν όλα τοπικά. Κατά μία έννοια, χρησιμοποιείτε παράκαμψη.

Χρησιμοποιώντας αυτό το εκτεταμένο δίκτυο, οι διαχειριστές μπορούν να εκτελέσουν την εργασία τους στους διακομιστές τους από οπουδήποτε. Αλλά το πιο σημαντικό, μια εταιρεία με πόρους κατανεμημένους σε πολλές τοποθεσίες μπορεί να τους κάνει όλους ορατές και προσβάσιμες σε όλες τις ομάδες που τους χρειάζονται, όπου κι αν βρίσκονται (Εικόνα 10.1).

Η ίδια η σήραγγα δεν εγγυάται ασφάλεια. Αλλά ένα από τα πρότυπα κρυπτογράφησης μπορεί να συμπεριληφθεί στη δομή του δικτύου, γεγονός που αυξάνει σημαντικά το επίπεδο ασφάλειας. Οι σήραγγες που δημιουργήθηκαν με χρήση του πακέτου OpenVPN ανοιχτού κώδικα χρησιμοποιούν την ίδια κρυπτογράφηση TLS/SSL για την οποία έχετε ήδη διαβάσει. Το OpenVPN δεν είναι η μόνη διαθέσιμη επιλογή σήραγγας, αλλά είναι μια από τις πιο γνωστές. Θεωρείται ότι είναι ελαφρώς ταχύτερο και πιο ασφαλές από το εναλλακτικό πρωτόκολλο σήραγγας επιπέδου 2 που χρησιμοποιεί κρυπτογράφηση IPsec.

Θέλετε όλοι στην ομάδα σας να επικοινωνούν με ασφάλεια μεταξύ τους ενώ βρίσκεστε στο δρόμο ή εργάζεστε σε διαφορετικά κτίρια; Για να το κάνετε αυτό, πρέπει να δημιουργήσετε έναν διακομιστή OpenVPN για να επιτρέπεται η κοινή χρήση εφαρμογών και η πρόσβαση στο περιβάλλον τοπικού δικτύου του διακομιστή. Για να λειτουργήσει αυτό, το μόνο που χρειάζεται να κάνετε είναι να εκτελέσετε δύο εικονικές μηχανές ή δύο κοντέινερ: ένα για να λειτουργεί ως διακομιστής/κεντρικός υπολογιστής και ένα ως πελάτης. Η δημιουργία ενός VPN δεν είναι μια απλή διαδικασία, επομένως αξίζει πιθανώς να αφιερώσετε λίγα λεπτά για να έχετε στο μυαλό σας τη μεγάλη εικόνα.

Το βιβλίο Linux σε δράση

10.1.1. Διαμόρφωση διακομιστή OpenVPN

Πριν ξεκινήσετε, θα σας δώσω μερικές χρήσιμες συμβουλές. Εάν πρόκειται να το κάνετε μόνοι σας (και σας συνιστώ ανεπιφύλακτα), πιθανότατα θα βρείτε τον εαυτό σας να εργάζεται με πολλά παράθυρα τερματικού ανοιχτά στην επιφάνεια εργασίας σας, το καθένα συνδεδεμένο σε διαφορετικό μηχάνημα. Υπάρχει κίνδυνος κάποια στιγμή να εισάγετε λάθος εντολή στο παράθυρο. Για να αποφύγετε αυτό, μπορείτε να χρησιμοποιήσετε την εντολή hostname για να αλλάξετε το όνομα του μηχανήματος που εμφανίζεται στη γραμμή εντολών σε κάτι που σας λέει ξεκάθαρα πού βρίσκεστε. Μόλις το κάνετε αυτό, θα χρειαστεί να αποσυνδεθείτε από τον διακομιστή και να συνδεθείτε ξανά για να τεθούν σε ισχύ οι νέες ρυθμίσεις. Έτσι φαίνεται:

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

Αφού χρησιμοποιήσετε το όνομα κεντρικού υπολογιστή, ενδέχεται να αντιμετωπίσετε ενοχλητικά μηνύματα Unable to Resolve Host OpenVPN-Server κατά την εκτέλεση επόμενων εντολών. Η ενημέρωση του αρχείου /etc/hosts με το κατάλληλο νέο όνομα κεντρικού υπολογιστή θα πρέπει να επιλύσει το πρόβλημα.

Προετοιμασία του διακομιστή σας για το OpenVPN

Για να εγκαταστήσετε το OpenVPN στον διακομιστή σας, χρειάζεστε δύο πακέτα: openvpn και easy-rsa (για τη διαχείριση της διαδικασίας δημιουργίας κλειδιού κρυπτογράφησης). Οι χρήστες του CentOS θα πρέπει πρώτα να εγκαταστήσουν το αποθετήριο epel-release εάν είναι απαραίτητο, όπως κάνατε στο Κεφάλαιο 2. Για να μπορείτε να δοκιμάσετε την πρόσβαση στην εφαρμογή διακομιστή, μπορείτε επίσης να εγκαταστήσετε τον διακομιστή ιστού Apache (apache2 στο Ubuntu και httpd στο CentOS).

Ενώ ρυθμίζετε τον διακομιστή σας, προτείνω να ενεργοποιήσετε ένα τείχος προστασίας που αποκλείει όλες τις θύρες εκτός από τις 22 (SSH) και 1194 (προεπιλεγμένη θύρα του OpenVPN). Αυτό το παράδειγμα δείχνει πώς θα λειτουργούσε το ufw στο Ubuntu, αλλά είμαι βέβαιος ότι εξακολουθείτε να θυμάστε το πρόγραμμα τείχους προστασίας CentOS από το Κεφάλαιο 9:

# ufw enable
# ufw allow 22
# ufw allow 1194

Για να ενεργοποιήσετε την εσωτερική δρομολόγηση μεταξύ διεπαφών δικτύου στον διακομιστή, πρέπει να αφαιρέσετε το σχόλιο μιας γραμμής (net.ipv4.ip_forward = 1) στο αρχείο /etc/sysctl.conf. Αυτό θα επιτρέψει στους απομακρυσμένους πελάτες να ανακατευθύνονται όπως απαιτείται μόλις συνδεθούν. Για να λειτουργήσει η νέα επιλογή, εκτελέστε το sysctl -p:

# nano /etc/sysctl.conf
# sysctl -p

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

  1. Δημιουργήστε ένα σύνολο κλειδιών κρυπτογράφησης υποδομής δημόσιου κλειδιού (PKI) στον διακομιστή χρησιμοποιώντας τα σενάρια που παρέχονται με το πακέτο easy-rsa. Ουσιαστικά, ο διακομιστής OpenVPN λειτουργεί επίσης ως η δική του αρχή έκδοσης πιστοποιητικών (CA).
  2. Προετοιμάστε τα κατάλληλα κλειδιά για τον πελάτη
  3. Διαμορφώστε το αρχείο server.conf για το διακομιστή
  4. Ρυθμίστε το πρόγραμμα-πελάτη OpenVPN
  5. Ελέγξτε το VPN σας

Δημιουργία κλειδιών κρυπτογράφησης

Για να είναι απλά τα πράγματα, μπορείτε να ρυθμίσετε την βασική υποδομή σας στον ίδιο υπολογιστή όπου εκτελείται ο διακομιστής OpenVPN. Ωστόσο, οι βέλτιστες πρακτικές ασφαλείας συνήθως προτείνουν τη χρήση ξεχωριστού διακομιστή CA για την ανάπτυξη παραγωγής. Η διαδικασία δημιουργίας και διανομής πόρων κλειδιού κρυπτογράφησης για χρήση στο OpenVPN απεικονίζεται στην Εικ. 10.2.

Το βιβλίο Linux σε δράση
Όταν εγκαταστήσατε το OpenVPN, ο κατάλογος /etc/openvpn/ δημιουργήθηκε αυτόματα, αλλά δεν υπάρχει τίποτα ακόμα σε αυτόν. Τα πακέτα openvpn και easy-rsa συνοδεύονται από παραδείγματα αρχείων προτύπων που μπορείτε να χρησιμοποιήσετε ως βάση για τη διαμόρφωσή σας. Για να ξεκινήσετε τη διαδικασία πιστοποίησης, αντιγράψτε τον κατάλογο προτύπων easy-rsa από /usr/share/ στο /etc/openvpn και αλλάξτε στον κατάλογο easy-rsa/:

# cp -r /usr/share/easy-rsa/ /etc/openvpn
$ cd /etc/openvpn/easy-rsa

Ο κατάλογος easy-rsa θα περιέχει τώρα αρκετά σενάρια. Στον πίνακα Το 10.1 παραθέτει τα εργαλεία που θα χρησιμοποιήσετε για τη δημιουργία κλειδιών.

Το βιβλίο Linux σε δράση

Οι παραπάνω λειτουργίες απαιτούν δικαιώματα root, επομένως πρέπει να γίνετε root μέσω sudo su.

Το πρώτο αρχείο με το οποίο θα εργαστείτε ονομάζεται vars και περιέχει τις μεταβλητές περιβάλλοντος που χρησιμοποιεί το easy-rsa κατά τη δημιουργία κλειδιών. Πρέπει να επεξεργαστείτε το αρχείο για να χρησιμοποιήσετε τις δικές σας τιμές αντί για τις προεπιλεγμένες τιμές που υπάρχουν ήδη. Έτσι θα μοιάζει το αρχείο μου (Λίστα 10.1).

Λίστα 10.1. Κύρια τμήματα του αρχείου /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY="CA"
export KEY_PROVINCE="ON"
export KEY_CITY="Toronto"
export KEY_ORG="Bootstrap IT"
export KEY_EMAIL="[email protected]"
export KEY_OU="IT"

Η εκτέλεση του αρχείου vars θα μεταβιβάσει τις τιμές του στο περιβάλλον του κελύφους, όπου θα συμπεριληφθούν στα περιεχόμενα των νέων κλειδιών σας. Γιατί η εντολή sudo δεν λειτουργεί από μόνη της; Γιατί στο πρώτο βήμα επεξεργαζόμαστε το σενάριο με το όνομα vars και μετά το εφαρμόζουμε. Εφαρμογή και σημαίνει ότι το αρχείο vars μεταβιβάζει τις τιμές του στο περιβάλλον του κελύφους, όπου θα συμπεριληφθούν στα περιεχόμενα των νέων κλειδιών σας.

Φροντίστε να εκτελέσετε ξανά το αρχείο χρησιμοποιώντας ένα νέο κέλυφος για να ολοκληρώσετε την ημιτελή διαδικασία. Όταν γίνει αυτό, το σενάριο θα σας ζητήσει να εκτελέσετε ένα άλλο σενάριο, clean-all, για να αφαιρέσετε οποιοδήποτε περιεχόμενο στον κατάλογο /etc/openvpn/easy-rsa/keys/:

Το βιβλίο Linux σε δράση
Φυσικά, το επόμενο βήμα είναι να εκτελέσετε το σενάριο καθαρισμού όλων, ακολουθούμενο από το build-ca, το οποίο χρησιμοποιεί το σενάριο pkitool για να δημιουργήσει το πιστοποιητικό ρίζας. Θα σας ζητηθεί να επιβεβαιώσετε τις ρυθμίσεις ταυτότητας που παρέχονται από το vars:

# ./clean-all
# ./build-ca
Generating a 2048 bit RSA private key

Ακολουθεί το σενάριο build-key-server. Εφόσον χρησιμοποιεί το ίδιο σενάριο pkitool μαζί με ένα νέο πιστοποιητικό ρίζας, θα δείτε τις ίδιες ερωτήσεις για να επιβεβαιώσετε τη δημιουργία του ζεύγους κλειδιών. Τα κλειδιά θα ονομαστούν με βάση τα ορίσματα που μεταβιβάζετε, τα οποία, εκτός εάν εκτελείτε πολλά VPN σε αυτό το μηχάνημα, θα είναι συνήθως διακομιστής, όπως στο παράδειγμα:

# ./build-key-server server
[...]
Certificate is to be certified until Aug 15 23:52:34 2027 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 χρησιμοποιεί παραμέτρους που δημιουργούνται από τον αλγόριθμο Diffie-Hellman (χρησιμοποιώντας το build-dh) για να διαπραγματευτεί τον έλεγχο ταυτότητας για νέες συνδέσεις. Το αρχείο που δημιουργήθηκε εδώ δεν χρειάζεται να είναι μυστικό, αλλά πρέπει να δημιουργηθεί χρησιμοποιώντας τη δέσμη ενεργειών build-dh για τα κλειδιά RSA που είναι ενεργά αυτήν τη στιγμή. Εάν δημιουργήσετε νέα κλειδιά RSA στο μέλλον, θα χρειαστεί επίσης να ενημερώσετε το αρχείο Diffie-Hellman:

# ./build-dh

Τα κλειδιά του διακομιστή σας θα καταλήγουν πλέον στον κατάλογο /etc/openvpn/easy-rsa/keys/, αλλά το OpenVPN δεν το γνωρίζει αυτό. Από προεπιλογή, το OpenVPN θα αναζητήσει κλειδιά στο /etc/openvpn/, οπότε αντιγράψτε τα:

# cp /etc/openvpn/easy-rsa/keys/server* /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/dh2048.pem /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn

Προετοιμασία κλειδιών κρυπτογράφησης πελάτη

Όπως έχετε ήδη δει, η κρυπτογράφηση TLS χρησιμοποιεί ζεύγη κλειδιών που ταιριάζουν: ένα εγκατεστημένο στον διακομιστή και ένα εγκατεστημένο στον απομακρυσμένο πελάτη. Αυτό σημαίνει ότι θα χρειαστείτε κλειδιά πελάτη. Ο παλιός μας φίλος pkitool είναι ακριβώς αυτό που χρειάζεστε για αυτό. Σε αυτό το παράδειγμα, όταν εκτελούμε το πρόγραμμα στον κατάλογο /etc/openvpn/easy-rsa/, του μεταβιβάζουμε ένα όρισμα πελάτη για τη δημιουργία αρχείων που ονομάζονται client.crt και client.key:

# ./pkitool client

Τα δύο αρχεία πελάτη, μαζί με το αρχικό αρχείο ca.crt που βρίσκεται ακόμα στον κατάλογο κλειδιών/, θα πρέπει τώρα να μεταφερθούν με ασφάλεια στον πελάτη σας. Λόγω των δικαιωμάτων ιδιοκτησίας και πρόσβασης, αυτό μπορεί να μην είναι τόσο εύκολο. Η απλούστερη προσέγγιση είναι να αντιγράψετε με μη αυτόματο τρόπο τα περιεχόμενα του αρχείου προέλευσης (και τίποτα άλλο εκτός από αυτό το περιεχόμενο) σε ένα τερματικό που εκτελείται στην επιφάνεια εργασίας του υπολογιστή σας (επιλέξτε το κείμενο, κάντε δεξί κλικ πάνω του και επιλέξτε Αντιγραφή από το μενού). Στη συνέχεια, επικολλήστε το σε ένα νέο αρχείο με το ίδιο όνομα που δημιουργείτε σε ένα δεύτερο τερματικό συνδεδεμένο στον πελάτη σας.

Αλλά ο καθένας μπορεί να κόψει και να επικολλήσει. Αντίθετα, σκεφτείτε σαν διαχειριστής γιατί δεν θα έχετε πάντα πρόσβαση στο GUI όπου είναι δυνατές οι λειτουργίες αποκοπής/επικόλλησης. Αντιγράψτε τα αρχεία στον αρχικό κατάλογο του χρήστη σας (έτσι ώστε η λειτουργία απομακρυσμένου scp να μπορεί να έχει πρόσβαση σε αυτά) και, στη συνέχεια, χρησιμοποιήστε το chown για να αλλάξετε την ιδιοκτησία των αρχείων από root σε κανονικό χρήστη χωρίς root, ώστε να μπορεί να εκτελεστεί η ενέργεια απομακρυσμένου scp. Βεβαιωθείτε ότι όλα τα αρχεία σας είναι εγκατεστημένα και προσβάσιμα. Θα τα μετακινήσετε στον πελάτη λίγο αργότερα:

# cp /etc/openvpn/easy-rsa/keys/client.key /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/ca.crt /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/client.crt /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/client.key
# chown ubuntu:ubuntu /home/ubuntu/client.crt
# chown ubuntu:ubuntu /home/ubuntu/ca.crt

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

Μείωση του αριθμού των πλήκτρων

Υπάρχει υπερβολική πληκτρολόγηση; Η επέκταση με αγκύλες θα συμβάλει στη μείωση αυτών των έξι εντολών σε δύο. Είμαι σίγουρος ότι μπορείτε να μελετήσετε αυτά τα δύο παραδείγματα και να καταλάβετε τι συμβαίνει. Το πιο σημαντικό, θα είστε σε θέση να κατανοήσετε πώς να εφαρμόσετε αυτές τις αρχές σε λειτουργίες που περιλαμβάνουν δεκάδες ή και εκατοντάδες στοιχεία:

# cp /etc/openvpn/easy-rsa/keys/{ca.crt,client.{key,crt}} /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/{ca.crt,client.{key,crt}}

Ρύθμιση του αρχείου server.conf

Πώς μπορείτε να μάθετε πώς πρέπει να μοιάζει το αρχείο server.conf; Θυμάστε το πρότυπο καταλόγου easy-rsa που αντιγράψατε από το /usr/share/; Όταν εγκαταστήσατε το OpenVPN, σας έμεινε ένα συμπιεσμένο αρχείο προτύπου διαμόρφωσης που μπορείτε να αντιγράψετε στο /etc/openvpn/. Θα βασιστώ στο γεγονός ότι το πρότυπο είναι αρχειοθετημένο και θα σας παρουσιάσω ένα χρήσιμο εργαλείο: το zcat.

Γνωρίζετε ήδη για την εκτύπωση του περιεχομένου κειμένου ενός αρχείου στην οθόνη χρησιμοποιώντας την εντολή cat, αλλά τι γίνεται αν το αρχείο συμπιέζεται χρησιμοποιώντας gzip; Μπορείτε πάντα να αποσυμπιέσετε το αρχείο και στη συνέχεια η cat θα το βγάλει ευχαρίστως, αλλά αυτό είναι ένα ή δύο περισσότερα βήματα από ό,τι χρειάζεται. Αντίθετα, όπως ίσως έχετε μαντέψει, μπορείτε να εκδώσετε την εντολή zcat για να φορτώσετε το μη συσκευασμένο κείμενο στη μνήμη με ένα βήμα. Στο παρακάτω παράδειγμα, αντί να εκτυπώσετε κείμενο στην οθόνη, θα το ανακατευθύνετε σε ένα νέο αρχείο που ονομάζεται server.conf:

# zcat 
  /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz 
  > /etc/openvpn/server.conf
$ cd /etc/openvpn

Ας αφήσουμε στην άκρη την εκτενή και χρήσιμη τεκμηρίωση που συνοδεύει το αρχείο και ας δούμε πώς μπορεί να μοιάζει όταν ολοκληρώσετε την επεξεργασία. Σημειώστε ότι το ερωτηματικό (;) λέει στο OpenVPN να μην διαβάσει ή εκτελέσει την επόμενη γραμμή (Λίστα 10.2).

Το βιβλίο Linux σε δράση
Ας δούμε μερικές από αυτές τις ρυθμίσεις.

  • Από προεπιλογή, το OpenVPN εκτελείται στη θύρα 1194. Μπορείτε να το αλλάξετε, για παράδειγμα, για να αποκρύψετε περαιτέρω τις δραστηριότητές σας ή να αποφύγετε διενέξεις με άλλα ενεργά τούνελ. Δεδομένου ότι το 1194 απαιτεί ελάχιστο συντονισμό με τους πελάτες, είναι καλύτερο να το κάνετε με αυτόν τον τρόπο.
  • Το OpenVPN χρησιμοποιεί είτε Πρωτόκολλο Ελέγχου Μεταφοράς (TCP) είτε Πρωτόκολλο Δεδομένων Χρήστη (UDP) για τη μετάδοση δεδομένων. Το TCP μπορεί να είναι λίγο πιο αργό, αλλά είναι πιο αξιόπιστο και πιο πιθανό να γίνει κατανοητό από εφαρμογές που εκτελούνται και στα δύο άκρα του τούνελ.
  • Μπορείτε να καθορίσετε το dev tun όταν θέλετε να δημιουργήσετε μια απλούστερη, πιο αποτελεσματική σήραγγα IP που μεταφέρει περιεχόμενο δεδομένων και τίποτα άλλο. Εάν, από την άλλη πλευρά, πρέπει να συνδέσετε πολλαπλές διεπαφές δικτύου (και τα δίκτυα που αντιπροσωπεύουν), δημιουργώντας μια γέφυρα Ethernet, θα πρέπει να επιλέξετε το dev tap. Εάν δεν καταλαβαίνετε τι σημαίνει όλο αυτό, χρησιμοποιήστε το όρισμα tun.
  • Οι επόμενες τέσσερις γραμμές δίνουν στο OpenVPN τα ονόματα των τριών αρχείων ελέγχου ταυτότητας στον διακομιστή και του αρχείου επιλογών dh2048 που δημιουργήσατε νωρίτερα.
  • Η γραμμή διακομιστή ορίζει το εύρος και τη μάσκα υποδικτύου που θα χρησιμοποιηθούν για την εκχώρηση διευθύνσεων IP σε πελάτες κατά τη σύνδεση.
  • Η προαιρετική παράμετρος push "route 10.0.3.0 255.255.255.0" επιτρέπει στους απομακρυσμένους πελάτες να έχουν πρόσβαση σε ιδιωτικά υποδίκτυα πίσω από τον διακομιστή. Για να λειτουργήσει αυτό, απαιτείται επίσης η εγκατάσταση του δικτύου στον ίδιο τον διακομιστή, έτσι ώστε το ιδιωτικό υποδίκτυο να γνωρίζει για το υποδίκτυο OpenVPN (10.8.0.0).
  • Η γραμμή port-share localhost 80 σάς επιτρέπει να ανακατευθύνετε την κίνηση πελατών που έρχεται στη θύρα 1194 σε έναν τοπικό διακομιστή web που ακούει στη θύρα 80. (Αυτό θα είναι χρήσιμο εάν πρόκειται να χρησιμοποιήσετε τον διακομιστή web για να δοκιμάσετε το VPN σας.) Αυτό λειτουργεί μόνο τότε όταν επιλεγεί το πρωτόκολλο tcp.
  • Οι γραμμές χρήστη nobody και group nogroup πρέπει να ενεργοποιηθούν αφαιρώντας τα ερωτηματικά (;). Ο εξαναγκασμός των απομακρυσμένων πελατών να εκτελούνται ως κανένας και χωρίς ομάδα διασφαλίζει ότι οι περίοδοι λειτουργίας στον διακομιστή δεν είναι προνομιούχες.
  • Το αρχείο καταγραφής καθορίζει ότι οι τρέχουσες εγγραφές καταγραφής θα αντικαθιστούν τις παλιές εγγραφές κάθε φορά που ξεκινά το OpenVPN, ενώ το log-append προσθέτει νέες εγγραφές στο υπάρχον αρχείο καταγραφής. Το ίδιο το αρχείο openvpn.log είναι γραμμένο στον κατάλογο /etc/openvpn/.

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

# systemctl start openvpn

Λόγω της μεταβαλλόμενης φύσης της σχέσης μεταξύ OpenVPN και systemd, μερικές φορές μπορεί να απαιτείται η ακόλουθη σύνταξη για την εκκίνηση μιας υπηρεσίας: systemctl start openvpn@server.

Η εκτέλεση του ip addr για τη λίστα των διεπαφών δικτύου του διακομιστή σας θα πρέπει τώρα να παράγει έναν σύνδεσμο προς μια νέα διεπαφή που ονομάζεται tun0. Το OpenVPN θα το δημιουργήσει για να εξυπηρετεί τους εισερχόμενους πελάτες:

$ ip addr
[...]
4: tun0: mtu 1500 qdisc [...]
      link/none
      inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
          valid_lft forever preferred_lft forever

Ίσως χρειαστεί να κάνετε επανεκκίνηση του διακομιστή προτού όλα αρχίσουν να λειτουργούν πλήρως. Επόμενη στάση είναι ο υπολογιστής-πελάτης.

10.1.2. Διαμόρφωση του προγράμματος-πελάτη OpenVPN

Παραδοσιακά, οι σήραγγες κατασκευάζονται με τουλάχιστον δύο εξόδους (αλλιώς θα τις λέγαμε σπηλιές). Ένα σωστά διαμορφωμένο OpenVPN στον διακομιστή κατευθύνει την κυκλοφορία μέσα και έξω από τη σήραγγα στη μία πλευρά. Αλλά θα χρειαστείτε επίσης κάποιο λογισμικό που τρέχει στην πλευρά του πελάτη, δηλαδή στην άλλη άκρη του τούνελ.

Σε αυτήν την ενότητα, θα εστιάσω στη μη αυτόματη ρύθμιση κάποιου τύπου υπολογιστή Linux για να λειτουργεί ως πελάτης OpenVPN. Αλλά αυτός δεν είναι ο μόνος τρόπος με τον οποίο είναι διαθέσιμη αυτή η ευκαιρία. Το OpenVPN υποστηρίζει εφαρμογές-πελάτες που μπορούν να εγκατασταθούν και να χρησιμοποιηθούν σε επιτραπέζιους και φορητούς υπολογιστές με Windows ή macOS, καθώς και σε smartphone και tablet Android και iOS. Δείτε το openvpn.net για λεπτομέρειες.

Το πακέτο OpenVPN θα πρέπει να εγκατασταθεί στο μηχάνημα-πελάτη όπως εγκαταστάθηκε στον διακομιστή, αν και δεν υπάρχει ανάγκη για easy-rsa εδώ, καθώς τα κλειδιά που χρησιμοποιείτε υπάρχουν ήδη. Πρέπει να αντιγράψετε το αρχείο προτύπου client.conf στον κατάλογο /etc/openvpn/ που μόλις δημιουργήσατε. Αυτή τη φορά το αρχείο δεν θα είναι συμπιεσμένο, οπότε η κανονική εντολή cp θα κάνει τη δουλειά μια χαρά:

# apt install openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf 
  /etc/openvpn/

Οι περισσότερες ρυθμίσεις στο αρχείο client.conf θα είναι αρκετά αυτονόητες: θα πρέπει να ταιριάζουν με τις τιμές του διακομιστή. Όπως μπορείτε να δείτε από το ακόλουθο παράδειγμα αρχείου, η μοναδική παράμετρος είναι το remote 192.168.1.23 1194, το οποίο λέει στον πελάτη τη διεύθυνση IP του διακομιστή. Και πάλι, βεβαιωθείτε ότι αυτή είναι η διεύθυνση του διακομιστή σας. Θα πρέπει επίσης να αναγκάσετε τον υπολογιστή-πελάτη να επαληθεύσει την αυθεντικότητα του πιστοποιητικού διακομιστή για να αποτρέψετε μια πιθανή επίθεση man-in-the-middle. Ένας τρόπος για να γίνει αυτό είναι να προσθέσετε τη γραμμή διακομιστή remote-cert-tls (Λίστα 10.3).

Το βιβλίο Linux σε δράση
Τώρα μπορείτε να μεταβείτε στον κατάλογο /etc/openvpn/ και να εξαγάγετε τα κλειδιά πιστοποίησης από τον διακομιστή. Αντικαταστήστε τη διεύθυνση IP του διακομιστή ή το όνομα τομέα στο παράδειγμα με τις τιμές σας:

Το βιβλίο Linux σε δράση
Τίποτα συναρπαστικό δεν θα συμβεί πιθανότατα μέχρι να εκτελέσετε το OpenVPN στον πελάτη. Εφόσον πρέπει να περάσετε μερικά ορίσματα, θα το κάνετε από τη γραμμή εντολών. Το όρισμα --tls-client λέει στο OpenVPN ότι θα ενεργήσετε ως πελάτης και θα συνδεθείτε μέσω κρυπτογράφησης TLS και το --config δείχνει στο αρχείο διαμόρφωσής σας:

# openvpn --tls-client --config /etc/openvpn/client.conf

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

  • Διαβάστε προσεκτικά την έξοδο της λειτουργίας OpenVPN στον πελάτη. Συχνά περιέχει πολύτιμες συμβουλές για το τι ακριβώς δεν μπορεί να γίνει και γιατί.
  • Ελέγξτε τα μηνύματα σφάλματος στα αρχεία openvpn.log και openvpn-status.log στον κατάλογο /etc/openvpn/ του διακομιστή.
  • Ελέγξτε τα αρχεία καταγραφής συστήματος στον διακομιστή και στον πελάτη για μηνύματα που σχετίζονται με το OpenVPN και χρονικά. (το journalctl -ce θα εμφανίσει τις πιο πρόσφατες καταχωρήσεις.)
  • Βεβαιωθείτε ότι έχετε ενεργή σύνδεση δικτύου μεταξύ του διακομιστή και του πελάτη (περισσότερα για αυτό στο Κεφάλαιο 14).

Σχετικά με τον συγγραφέα

Ντέιβιντ Κλίντον - διαχειριστής συστήματος, δάσκαλος και συγγραφέας. Έχει διαχειριστεί, γράψει και δημιουργήσει εκπαιδευτικό υλικό για πολλούς σημαντικούς τεχνικούς κλάδους, συμπεριλαμβανομένων συστημάτων Linux, υπολογιστικού νέφους (ιδιαίτερα AWS) και τεχνολογιών κοντέινερ όπως το Docker. Έγραψε το βιβλίο Learn Amazon Web Services in a Month of Lnches (Manning, 2017). Πολλά από τα μαθήματα κατάρτισης βίντεο του βρίσκονται στο Pluralsight.com και σύνδεσμοι προς άλλα βιβλία του (σχετικά με τη διαχείριση Linux και την εικονικοποίηση διακομιστή) είναι διαθέσιμοι στη διεύθυνση bootstrap-it.com.

» Περισσότερες λεπτομέρειες για το βιβλίο μπορείτε να βρείτε στη διεύθυνση ιστοσελίδα του εκδότη
» πίνακας περιεχομένων
» Απόσπασμα

Για Khabrozhiteley 25% έκπτωση με χρήση κουπονιού - Linux
Με την πληρωμή της έντυπης έκδοσης του βιβλίου, θα αποσταλεί ηλεκτρονικό βιβλίο με e-mail.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο