Linux Inside
65
Τώρα ήρθε ή ώρα να δημιουργήσουμε στο configuration
αρχείο του server, δημιουργώντας το αρχείο
/etc/openvpn/server.conf με τα παρακάτω περιεχόμενα.
1 port 52000
2 dev tun
3 ca easy-rsa/keys/ca.crt
4 cert easy-rsa/keys/server.crt
5 key easy-rsa/keys/server.key
6 dh easy-rsa/keys/dh1024.pem
7 server 10.8.0.0 255.255.255.0
8 ifconfig-pool-persist ipp.txt
9 push “route 192.168.10.0 255.255.255.0”
10 client-to-client
11 keepalive 10 120
12 comp-lzo
13 verb 3
Στη γραμμή 1 ορίζουμε την πόρτα στην οποία θα ακούει το
OpenVPN. Η ορισμένη από τον iANA πόρτα είναι η 1194.
Εμείς όμως καλό είναι να βάλουμε μία άλλη, καθώς πλην των
clients, δεν είναι ανάγκη να μάθει εύκολα καθένας ότι χρησι-
μοποιούμε VPN στο δίκτυό μας.
Στη γραμμή 2 επιλέγουμε τον τρόπο με τον οποίο θα προ-
ωθούνται τα πακέτα των άκρων του tunnel, όπως αναφέραμε
παραπάνω.
Στις γραμμές 3-6 δίνουμε στο πρόγραμμα να καταλάβει
που είναι τα κλειδιά που δημιουργήσαμε πριν.
Στη γραμμή 7 ορίζουμε αυθαίρετα το εικονικό δίκτυο ανά-
μεσα στον server και στους clients, το οποίο πρέπει να είναι
«σπάνιο», δηλαδή να μην το χρησιμοποιούμε ήδη ως κανονικό
δίκτυο. Ο server θα πάρει την πρώτη iP αυτού του δικτύου,
δηλαδή την 10.8.0.1.
Στη γραμμή 8 δίνουμε οδηγία στο πρόγραμμα να αποθη-
κεύει στο αρχείο ipp.txt τις iP των clients, ώστε όταν ξανασυν-
δέονται να αποκτούν τις ίδιες, καθώς ο server είναι αυτός που
τις κανονίζει.
Στη γραμμή 9, με την εντολή push εισάγουμε στο routing
table όλων των clients μία εγγραφή, με την οποία όποια διαδι-
κτυακή κίνηση απευθύνεται στο δίκτυο της εταιρείας μας, θα
οδηγείται στο εικονικό interface. Εδώ δεν πρέπει να ξεχάσου-
με να αντικαταστήσουμε τις τιμές μέσα στα εισαγωγικά με το
δικό μας δίκτυο.
Στη γραμμή 10 ενεργοποιούμε τη δυνατότητα να επικοινω-
νούν μεταξύ τους οι συνδεδεμένοι clients. Αν δεν το επιθυ-
μούμε αυτό, μπορούμε απλά να σβήσουμε τη γραμμή.
Στη γραμμή 11 δίνουμε κάποιες ενδεικτικές οδηγίες για το
πότε ένα tunnel θα θεωρείται ενεργό ή όχι. Καλό είναι να το
αφήσουμε έτσι.
Στη γραμμή 12 ενεργοποιούμε τη συμπίεση των πακέτων
που διακινούνται στο tunnel, κάνοντας την επικοινωνία πιο
γρήγορη, φορτώνοντας όμως λίγο παραπάνω τον επεξεργα-
στή μας. Πάλι μπορούμε να σβήσουμε αυτή τη γραμμή αν δεν
επιθυμούμε αυτό το χαρακτηριστικό.
Στη γραμμή 13 ορίζουμε το βαθμό ανάλυσης των log μηνυ-
μάτων. Το εύρος είναι 0–9 και όσο πιο μεγάλος είναι ο αριθ-
μός, τόσο περισσότερες πληροφορίες λαμβάνουμε. Το 3 για
συνηθισμένη χρήση είναι καλή τιμή.
Η περισσότερη δουλειά της ρύθμισης του server έχει τελει-
ώσει, όμως εκκρεμούν ακόμη κάποια πράγματα. Ένα από αυ-
τά είναι ότι πρέπει να ενεργοποιήσουμε στον server τη δυνα-
τότητα iP forwarding (εάν δεν υπάρχει ήδη). Αυτό μπορούμε
να το κάνουμε πανεύκολα αλλάζοντας την τιμή “0” σε “1”,
στην επιλογή net.ipv4.ip_forward του αρχείου /etc/sysctl.conf,
και μετά εκτελώντας την εντολή sysctl -p. Ένα άλλο θέμα εί-
ναι ότι πρέπει στο gateway του δικτύου της εταιρείας μας να
προσθέσουμε στο routing table το εικονικό δίκτυο μας
(10.8.0.0 255.255.255.0) με gateway την iP του server μας. Αν
δεν τα κάνουμε αυτά, τα πακέτα των clients θα φτάνουν μέχρι
τους υπολογιστές του δικτύου, οι τελευταίοι όμως δεν θα ξέ-
ρουν πού να στείλουν την απάντηση, με αποτέλεσμα να μπο-
ρούμε να έχουμε επικοινωνία μόνο με τον server. Επίσης, το
θέμα του firewall είναι πολύ μεγάλο, καθώς αν το έχουμε
ενεργοποιημένο θα πρέπει να το προσαρμόσουμε έτσι, ώστε
να μην εμποδίζει την επικοινωνία μας.
Ρύθμιση του Client
Το επόμενο βήμα είναι να αντιγράψουμε τα αρχεία ca.crt
client1.crt και client1.key στον κατάλογο /etc/openvpn του
client, με οποιονδήποτε ΑΣΦΑΛΗ τρόπο επιθυμούμε. Για τη
ρύθμιση του client δημιουργούμε το αρχείο
/etc/openvpn/client.conf με τα παρακάτω περιεχόμενα.
1 client
2 dev tun
3 remote www.company.com 52000
4 resolv-retry infinite
5 nobind
6 ca ca.crt
7 cert client1.crt
8 key client1.key
9 comp-lzo
10 verb 3
Τώρα πλέον, αφού με παρόμοιο τρόπο έχουμε ρυθμίσει
τον server, οι περισσότερες επιλογές είναι προφανείς και δεν
χρειάζονται επεξήγηση. Το σημαντικό εδώ είναι η οδηγία
remote, καθώς πρέπει να την προσαρμόσετε στα μέτρα σας.
Η επόμενη λέξη μετά την οδηγία είναι το όνομα ή η ip του
server και μετά ακολουθεί η πόρτα στην οποία πρέπει να στο-
χεύσουμε. Επίσης, εάν δεν έχουμε ενεργοποιήσει τη συμπίε-
ση στο configuration αρχείο του server, ομοίως θα πρέπει να
μην την ενεργοποιήσουμε ούτε εδώ, αλλιώς δεν θα πραγμα-
τοποιηθεί η σύνδεση.
Οι πρώτες δοκιμές
Ήρθε η ώρα να δούμε αν οι προσπάθειές μας απέδωσαν
καρπούς! Εκτελούμε λοιπόν:
Στον server: openvpn /etc/openvpn/server.conf
Στον client: openvpn /etc/openvpn/client.conf
Αν και στα δύο τερματικά εμφανιστεί το μήνυμα “initialization
Sequence Completed”, τότε είμαστε σε καλό δρόμο. Αν όχι,
τότε μπορούμε, εάν δεν πληροφορηθούμε κάτι χρήσιμο από
τα μηνύματα του τερματικού, να αυξήσουμε το verbosity level
(οδηγία verb) και να ξαναπροσπαθήσουμε μέχρι να βρούμε τι
φταίει. Μετά δεν έχουμε παρά να pingάρουμε από τον client
την εικονική ip του server (10.8.0.1). Εφόσον το κάνουμε με
επιτυχία, μπορούμε να πάρουμε θάρρος και να δοκιμάσουμε
να pingάρουμε ή να χρησιμοποιήσουμε μία διαδικτυακή υπη-
ρεσία ενός άλλου υπολογιστή της εταιρείας μας. Εάν και αυτό
το βήμα γίνει με επιτυχία, τότε, εκτός από το να πετάξουμε
από τη χαρά μας εκείνη τη στιγμή, καλό είναι να προστατεύ-
σουμε και το αρχείο ca.key, όπως είπαμε και στην αρχή. Η
ασφάλεια του VPN μας στηρίζεται σε αυτό το αρχείο, διότι
έχοντάς το ένας κακόβουλος χρήστης στα χέρια του, μπορεί
να υπογράφει αυθαίρετα δημόσια κλειδιά και έτσι να γίνει εύ-
κολα μέλος του δικτύου μας με πολλαπλές συνέπειες...
•
Linux Labs - VPN Tunneling