Το προφίλ μας στο Google Plus
6

Ασφαλής δίοδος προς το Internet, για ολόκληρο το LAN

Η προστασία των συνδέσεών μας ακόμη κι όταν ξεκινούν από επισφαλή σημεία πρόσβασης, όπως, π.χ., είναι τα δημόσια WiFi hotspots, είναι ένα ζήτημα που μας απασχολεί συχνά. Μια καλή λύση είναι να βγαίνουμε στον έξω κόσμο μέσω ενός κρυπτογραφημένου καναλιού, το οποίο ξεκινά από τον υπολογιστή μας και καταλήγει σε έναν απομακρυσμένο VPN server. Τι γίνεται όμως αν θέλουμε να προστατεύσουμε όλες τις συνδέσεις, όλων των μηχανημάτων και συσκευών, ενός ολόκληρου τοπικού δικτύου;

Σε πρώτη φάση θα μπορούσαμε να σκεφτούμε ως εξής:

  • στήνουμε και ρυθμίζουμε VPN server, σε κάποιο VPS στο cloud
  • εγκαθιστούμε –και φυσικά ρυθμίζουμε– τον κατάλληλο VPN client σε κάθε υπολογιστή, laptop, smartphone, tablet που διαθέτουμε
  • φροντίζουμε ώστε ο client κάθε συσκευής να τρέχει αυτόματα κατά την εκκίνηση/ενεργοποίησή της.

Έτσι, οι συνδέσεις όλων των συσκευών είναι κρυπτογραφημένες και προστατευμένες κι εμείς απόλυτα ευχαριστημένοι.

Ή μπορεί και να μην είμαστε.

Η παραπάνω λύση, βλέπετε, είναι τουλάχιστον άκομψη, απαιτεί αρκετή δουλειά σε κάθε μία συσκευή, ενώ τελικά αυτό που κάνουμε είναι ναι μεν να τις προστατεύουμε ξεχωριστά, αλλά όχι *ολόκληρο* το τοπικό δίκτυο. Αν, δηλαδή, εισέλθει στο δίκτυο ένα νέο μέλος, τότε θα πρέπει να εγκαταστήσουμε και να ρυθμίσουμε και σ’ αυτό τον απαραίτητο VPN client.

Ιδανικά, αυτό που θα θέλαμε θα ήταν οι συνδέσεις κάθε συσκευής *εντός* του τοπικού μας δικτύου να προστατεύονται *αυτόματα* και χωρίς την εγκατάσταση client software. Θα επιθυμούσαμε επιπρόσθετα τη δυνατότητα για κεντρικό καθορισμό εξαιρέσεων, είτε για συσκευές που για οποιονδήποτε λόγο δεν έχει νόημα να βγαίνουν στο Internet μέσω VPN, είτε για προορισμούς στους οποίους προτιμάμε να φτάνουμε *πάντα* μέσω του ISP μας κι όχι μέσω του απομακρυσμένου VPN server.

Είναι προφανές ότι το επιθυμητό αυτό σενάριο καθίσταται δυνατό αρκεί ο router του τοπικού δικτύου να έχει την ικανότητα να λειτουργεί ως client του VPN server. Πριν παρουσιάσουμε, λεπτομερώς και βήμα προς βήμα, τη λύση που εμείς υλοποιήσαμε, ας συζητήσουμε λίγο αναλυτικότερα το γιατί θα θέλαμε μια τέτοια διευθέτηση για το τοπικό μας δίκτυο.

Προς τι όλο αυτό το κακό;
Ο καθένας θα ‘χει τους λόγους του για να κρυπτογραφεί τη δικτυακή του κίνηση, πιστεύουμε όμως ότι δύο είναι τα ισχυρότερα κίνητρα.

Ιδιωτικότητα. Ο ISP μας δεν πρέπει να έχει την παραμικρή ιδέα για το τι κάνουμε στο Internet. Μια αποτελεσματική λύση είναι η αναδρομολόγηση όλης της κίνησης του δικτύου μας μέσω ενός κρυπτογραφημένου τούνελ. Η κρυπτογράφηση των πακέτων γίνεται πριν αυτά εγκαταλείψουν τον router μας, ενώ η αποκρυπτογράφησή τους πραγματοποιείται αφού φτάσουν στον απομακρυσμένο VPN server. Ο ISP βρίσκεται κάπου ανάμεσα και δεν έχει καμία, μα καμία δυνατότητα για αποκρυπτογράφηση. Το ποια sites επισκεπτόμαστε, το ποιες δικτυακές υπηρεσίες χρησιμοποιούμε, τα DNS queries που αποστέλλουμε κ.ο.κ., ξαφνικά αποτελούν μέγιστα μυστήρια για τον ISP. Το ωραίο της υπόθεσης είναι πως δεν μπορεί να κάνει κάτι επ’ αυτού.

Πρόσβαση σε υπηρεσίες με γεωγραφικούς περιορισμούς. Αναλόγως της θέσης που βρίσκεται ο VPN server, καθίσταται δυνατό ν’ αποκτήσουμε πρόσβαση σε υπηρεσίες στις οποίες προηγουμένως η πρόσβαση απαγορευόταν. Παράδειγμα: Στο πλήρες περιεχόμενο του Hulu έχουν πρόσβαση μόνον Αμερικανοί. Αν όμως ο VPN server λειτουργεί σε VPS που βρίσκεται σε αμερικανικό data center, τότε για το Internet το δημόσιο IP μας είναι επίσης αμερικανικό κι επομένως αποκτάμε κι εμείς πλήρη πρόσβαση στο Hulu.

Κατά τη δική μας τουλάχιστον άποψη, τα δύο προαναφερθέντα κίνητρα αρκούν ώστε κάποιος να φροντίσει για VPN tunnelling σε επίπεδο τοπικού δικτύου. Υπάρχουν όμως και κάποια “αλλά”, τα οποία οφείλουμε να γνωρίζουμε ευθύς εξαρχής.

Ταχύτητα. Αναλόγως του πού βρίσκεται ο VPN server, είναι πιθανό να διαπιστώσουμε ότι η πρόσβαση σε συγκεκριμένες υπηρεσίες και sites γίνεται πιο αργά σε σύγκριση με την πρότερη κατάσταση, κατά την οποία βγαίναμε στο Internet απευθείας κι όχι μέσω VPN. Το ευτύχημα είναι ότι μπορούμε να ορίζουμε εξαιρέσεις, στο επίπεδο του router. Παράδειγμα: Αν η πρόσβαση σε ένα σύστημα e-banking ξαφνικά έγινε αργή, αφού τώρα δρομολογείται μέσω data center στη Νέα Υόρκη, τότε είναι εύκολο να ορίσουμε έναν κανόνα που θα λέει ότι η πρόσβαση στην τράπεζα *δεν* θα γίνεται μέσω VPN αλλά απευθείας, δηλαδή μέσω του ISP μας. Άλλο παράδειγμα: Αν υπάρχει ένα PC το οποίο χρησιμοποιούμε κυρίως για online gaming, κάλλιστα μπορούμε να ορίσουμε κανόνα στον router που θα λέει ότι το συγκεκριμένο PC θα βγαίνει απευθείας στο Internet, παρακάμπτοντας το VPN tunnel.

Blacklisting. Για υπηρεσίες που παρέχονται με γεωγραφικούς περιορισμούς είναι πιθανό να τηρούνται λίστες με διευθύνσεις IP παρόχων, μέσω των οποίων έχει διαπιστωθεί ότι επιχειρείται “πλάγια” πρόσβαση. Σε μια τέτοια περίπτωση, ακόμη κι αν βγαίνουμε στο Internet, π.χ., με αμερικανικό IP, δεν θα έχουμε πρόσβαση σε όλες τις επιθυμητές υπηρεσίες. Αν λοιπόν θέλετε VPN μόνο και μόνο για να έχετε πρόσβαση σε υπηρεσίες με γεωγραφικούς περιορισμούς, κάντε πρώτα μια σχετική έρευνα. Πιθανώς να δείτε ότι πρέπει να στήσετε τον VPN server σε συγκεκριμένο data center, συγκεκριμένου VPS provider. Ενδέχεται επίσης να διαπιστώσετε ότι δεν έχει νόημα να στήσετε τον δικό σας VPN server, μόνος σας. Αντίθετα, ίσως αξίζει να καταφύγετε στις υπηρεσίες ενός VPN provider. Επιλέξτε κάποιον ο οποίος αφενός σέβεται την ιδιωτικότητα των πελατών του, αφετέρου έχει τη δυνατότητα για δυναμική αλλαγή VPN end-point ώστε ο εκάστοτε πελάτης να επιλέγει ανά πάσα στιγμή από ποια γεωγραφική περιοχή θα αναδύεται στο δημόσιο Intetnet.

Περιοριστική νομοθεσία. Όπως αναφέραμε και πριν λίγο, όταν χρησιμοποιούμε VPN τότε ο ISP εξακολουθεί βεβαίως να βλέπει δικτυακή κίνηση από μέρους μας. Τα πακέτα όμως είναι κρυπτογραφημένα, ο ISP δεν μπορεί να τα αποκρυπτογραφήσει και, επιπρόσθετα, δεν έχει δικαίωμα να κάνει κάτι επ’ αυτού, αφού “packets are packets and there ain’t nothin’ you can do about it”. (Φαντάζεστε να υπάρχει υπάλληλος σε ελληνικό ISP, ο οποίος χρησιμοποιεί αυτή τη φράση; Αν υπάρχει και διαβάζει το παρόν ας επικοινωνήσει μαζί μας, θα θέλαμε να τον γνωρίσουμε!) Μολαταύτα, έχει επιχειρηθεί να περάσει νομοθεσία που θα επιτρέπει ή ακόμη και θα υποχρεώνει τους ISPs να μειώνουν δραματικά την ταχύτητα σύνδεσης των πελατών που χρησιμοποιούν VPN. Το σκεπτικό είναι ότι μόνον όσοι διακινούν υλικό που προστατεύεται από πνευματικά δικαιώματα έχουν λόγο να χρησιμοποιούν υπηρεσίες VPN, οπότε χτύπησέ τους εκεί που τους πονάει. Δεν γνωρίζουμε να ισχύει (ακόμα) σχετική νομοθεσία στην Ευρώπη, βεβαίως ούτε και στη χώρα μας. Επειδή όμως ποτέ δεν ξέρουμε τι μας ξημερώνει, ας έχουμε στην άκρη του μυαλού μας κι αυτή την πιθανότητα.

Ως αναγνώστες του deltaHacker γνωρίζουμε ότι δεν αποθαρρύνεστε εύκολα από ζητήματα σαν αυτά που μόλις αναφέραμε. Ας συνεχίσουμε λοιπόν με τα προαπαιτούμενα για την κρυπτογράφηση της δικτυακής κίνησης *ολόκληρου* του τοπικού μας δικτύου. Ίσως χρειαστεί αρκετή δουλειά κατά την προετοιμασία, πιστεύουμε ωστόσο ότι αξίζει τον κόπο και το αποτέλεσμα θα σας ανταμείψει.

Τα προαπαιτούμενα
Κατ’ αρχάς χρειαζόμαστε έναν OpenVPN Access Server στο cloud. Θα μπορούσαμε να δουλέψουμε και με την εκδοχή Community Edition του OpenVPN, όμως τα πράγματα είναι γενικά ευκολότερα με την εκδοχή Access Server. Σε περίπτωση που *ακόμη* δεν έχετε τον δικό σας OpenVPN Access Server (δεν πιστεύουμε να μην έχετε αλλά λέμε τώρα), διαβάστε το σχετικό αναλυτικό άρθρο του παρόντος τεύχους.

Για το τοπικό μας δίκτυο (LAN) χρειαζόμαστε έναν router ο οποίος μπορεί να λειτουργεί κι ως OpenVPN client. Υποψήφιοι είναι όλοι οι routers που δέχονται το dd-wrt ή το OpenWrt. Εναλλακτικά, σε ρόλο router για το LAN ίσως έχουμε ένα μηχανάκι το οποίο τρέχει Linux ή *BSD, αφού κι αυτό είναι σε θέση να λειτουργεί ως OpenVPN client. Υπάρχει επίσης και η οδός του pfSense, το οποίο είναι το αγαπημένο μας λετουργικό σύστημα για χρήση router/firewall και τυχαίνει μάλιστα να το χρησιμοποιούμε στα κεντρικά της Parabing Creations, στο Northern Outpost (του SKG).

Στο παρόν άρθρο δουλεύουμε με το pfSense. Αν δεν το χρησιμοποιείτε ήδη ή για κάποιον ανεξήγητο λόγο διστάζετε να το εγκαταστήσετε, ίσως πρέπει να παρακολουθήσετε το 7ο επεισόδιο της 1ης σεζόν του deltaCast. Το επεισόδιο είναι λίγο παλιό, όμως το σχετικό video tutorial είναι αναλυτικό κι εκτενές κι έχουμε την ελπίδα ότι *και* εσείς θα πωρωθείτε με το pfSense.

Δημιουργία νέου χρήστη & προφίλ σύνδεσης
Συνδεόμαστε μέσω SSH στο VPS όπου φιλοξενείται ο OpenVPN Access Server και δημιουργούμε ένα νέο χρήστη. Σε πολύ λίγο, για τον αντίστοιχο λογαριασμό ο Access Server θα μας φτιάξει κι ένα προφίλ σύνδεσης. Μπορείτε φυσικά να ονομάσετε το νέο σας χρήστη όπως θέλετε. Εμείς επιλέξαμε το χαρακτηριστικό όνομα pfsense και, όπως βλέπετε παρακάτω, ζητήσαμε από το εργαλείο adduser να μην του φτιάξει προσωπικό κατάλογο:

sub0@defiant:~$ sudo adduser --no-create-home pfsense

Δείτε σοβαρά το password για το νέο χρήστη και καθορίστε του ένα εξαιρετικά ισχυρό συνθηματικό.

Δημιουργία νέου χρήστη με username το pfsense και χωρίς προσωπικό κατάλογο. Για τον αντίστοιχο λογαριασμό, ο OpenVPN Access Server θα μας φτιάξει σε λίγο ένα προφίλ σύνδεσης. Σημαντικό: Μην παραλείψετε να δώσετε στο χρήστη ένα ισχυρό password!

Δημιουργία νέου χρήστη με username το pfsense και χωρίς προσωπικό κατάλογο. Για τον αντίστοιχο λογαριασμό, ο OpenVPN Access Server θα μας φτιάξει σε λίγο ένα προφίλ σύνδεσης. Σημαντικό: Μην παραλείψετε να δώσετε στο χρήστη ένα ισχυρό password!

Τη δημιουργία του προφίλ σύνδεσης που μόλις αναφέραμε τη διευθετούμε μέσα από το web panel του OpenVPN Access Server. Δείτε τα ακόλουθα screen shots και διαβάστε τις αντίστοιχες περιγραφές.

Από τον web browser της προτίμησής μας μεταβαίνουμε στη διεύθυνση https://δημόσιο_IP_του_AS:943/admin. Για τον δικό μας Access Server, στη θέση του 'δημόσιο_IP_του_AS' αρκεί να βάλουμε το 'defiant.gr'. Συνδεόμαστε στο λογαριασμό του διαχειριστή του Access Server, το username του οποίου εξ ορισμού είναι το openvpn.

Από τον web browser της προτίμησής μας μεταβαίνουμε στη διεύθυνση https://δημόσιο_IP_του_AS:943/admin. Για τον δικό μας Access Server, στη θέση του “δημόσιο_IP_του_AS” αρκεί να βάλουμε το “defiant.gr”. Συνδεόμαστε στο λογαριασμό του διαχειριστή του Access Server, το username του οποίου εξ ορισμού είναι το openvpn.

Από την κατηγορία ρυθμίσεων User Management, στην αριστερή στήλη του web panel, επιλέγουμε το User Permissions. Στο New Username πληκτρολογούμε το όνομα του χρήστη που φτιάξαμε πριν λίγο με το προγραμματάκι adduser, από τη γραμμή εντολών του VPS. Ο δικός μας χρήστη ονομάζεμαι pfsense. Φροντίζουμε ώστε να *μην* είναι τσεκαρισμένο κανένα από τα Admin, Allow Auto-login και Deny Access στα δεξιά. Επικυρώνουμε με κλικ στο κουμπί Save Settings.

Από την κατηγορία ρυθμίσεων User Management, στην αριστερή στήλη του web panel, επιλέγουμε το User Permissions. Στο New Username πληκτρολογούμε το όνομα του χρήστη που φτιάξαμε πριν λίγο με το προγραμματάκι adduser, από τη γραμμή εντολών του VPS. Ο δικός μας χρήστη ονομάζεμαι pfsense. Φροντίζουμε ώστε να *μην* είναι τσεκαρισμένο κανένα από τα Admin, Allow Auto-login και Deny Access στα δεξιά. Επικυρώνουμε με κλικ στο κουμπί Save Settings.

Και για τον Access Server υπάρχει, πλέον, άλλος ένας χρήστης, ονόματι pfsense. Προκειμένου να ενημερωθεί ο server για την παρουσία του, αρκεί ένα κλικ στο κουμπί Update Running Server.

Και για τον Access Server υπάρχει, πλέον, άλλος ένας χρήστης, ονόματι pfsense. Προκειμένου να ενημερωθεί ο server για την παρουσία του, αρκεί ένα κλικ στο κουμπί Update Running Server.

Ιδού οι δύο χρήστες που γνωρίζει και διαχειρίζεται ο OpenVPN Access Server. Για περισσότερους χρήστες χρειάζεται να αγοράσουμε κατάλληλο license. Οι δύο υπάρχοντες, πάντως, είναι ό,τι πρέπει για τις ανάγκες μας, αφού για καθέναν εξ αυτών επιτρέπονται τα concurrent connections.

Ιδού οι δύο χρήστες που γνωρίζει και διαχειρίζεται ο OpenVPN Access Server. Για περισσότερους χρήστες χρειάζεται να αγοράσουμε κατάλληλο license. Οι δύο υπάρχοντες, πάντως, είναι ό,τι πρέπει για τις ανάγκες μας, αφού για καθέναν εξ αυτών επιτρέπονται τα concurrent connections.

Αποσυνδεόμαστε  από το web panel του OpenVPN Access Server κι αμέσως συνδεόμαστε στο https://defiant.gr:943, αλλά αυτή τη φορά στο λογαριασμό του χρήστη pfsense. Πριν κάνουμε κλικ στο OK φροντίζουμε ώστε στο drop-down menu αριστερά να 'ναι επιλεγμένο το Login.

Αποσυνδεόμαστε από το web panel του OpenVPN Access Server κι αμέσως συνδεόμαστε στο https://defiant.gr:943, αλλά αυτή τη φορά στο λογαριασμό του χρήστη pfsense. Πριν κάνουμε κλικ στο OK φροντίζουμε ώστε στο drop-down menu αριστερά να ‘ναι επιλεγμένο το Login.

Από τη νέα σελίδα που εμφανίζεται παίρνουμε το προφίλ σύνδεσης για τον χρήστη ονόματι pfsense, με ένα κλικ στο σύνδεσμο Yourself (user-locked profile).

Από τη νέα σελίδα που εμφανίζεται παίρνουμε το προφίλ σύνδεσης για τον χρήστη ονόματι pfsense, με ένα κλικ στο σύνδεσμο Yourself (user-locked profile).

Αφού λοιπόν κατεβάσουμε στον υπολογιστή μας το προφίλ σύνδεσης για το λογαριασμό του χρήστη pfsense –πρόκειται για ένα αρχείο με όνομα client.ovpn– μπορούμε να αποσυνδεθούμε από το web panel του Access Server πατώντας στο Logout.

Εισαγωγή πιστοποιητικών & κλειδιών στο pfSense
Το αρχειάκι client.ovpn το ανοίγουμε με έναν απλό text editor και το κρατάμε εύκαιρο στην επιφάνεια εργασίας. Κατόπιν, από έναν web browser συνδεόμαστε στο περιβάλλον διαχείρισης του pfSense-based router μας. Δείτε στα ακόλουθα screen shots πώς πληροφορούμε το pfSense για το δημόσιο πιστοποιητικό του απομακρυσμένου OpenVPN Access Server, καθώς και για το πιστοποιητικό αλλά και για το ιδιωτικό κλειδί του πελάτη που μας ενδιαφέρει (είναι εκείνος με username το pfsense).

Στο περιβάλλον του pfSense ακολουθούμε τη διαδρομή System / Cert Manager. Από τις τρεις καρτέλες της σελίδας 'System: Certificate Authority Manager' φροντίζουμε ώστε να είναι επιλεγμένη η αριστερότερη, δηλαδή η CAs. Κάνουμε ένα κλικ στο εικονίδιο με το 'συν', στα δεξιά.

Στο περιβάλλον του pfSense ακολουθούμε τη διαδρομή System –> Cert Manager. Από τις τρεις καρτέλες της σελίδας “System: Certificate Authority Manager” φροντίζουμε ώστε να είναι επιλεγμένη η αριστερότερη, δηλαδή η CAs. Κάνουμε ένα κλικ στο εικονίδιο με το “συν”, στα δεξιά.

Το pfSense γνωρίζει, πλέον, το δημόσιο πιστοποιητικό του απομακρυσμένου OpenVPN Access Server.

Πηγαίνουμε στην καρτέλα Certificates, στα δεξιά της CAs. Εδώ θα εισαγάγουμε το πιστοποιητικό καθώς και το ιδιωτικό κλειδί του πελάτη (με username το pfsense), οπότε ξεκινάμε με ένα κλικ στο κουμπάκι 'συν', κάτω δεξιά.

Πηγαίνουμε στην καρτέλα Certificates, στα δεξιά της CAs. Εδώ θα εισαγάγουμε το πιστοποιητικό καθώς και το ιδιωτικό κλειδί του πελάτη (με username το pfsense), οπότε ξεκινάμε με ένα κλικ στο κουμπάκι “συν”, κάτω δεξιά.

Όπως βλέπουμε στην καρτέλα Certificates, το πιστοποιητικό του client (ονόματι pfsense) έχει υπογραφεί από το πιστοποιητικό του OpenVPN Access Server κι έχει εισαχθεί επιτυχώς. Τέλεια όλα.

Μπορούμε τώρα να προχωρήσουμε στη ρύθμιση του pfSense, ώστε να λειτουργεί ως client του OpenVPN Access Server.

Ρύθμιση του OpenVPN client, στο pfSense
Παραμένοντας στο περιβάλλον διαχείρισης του pfSense-based router μας, επιλέγουμε VPN –> OpenVPN –> Client. Όλες τις λεπτομέρειες για τη ρύθμιση του client θα τις δείτε στα screen shots που ακολουθούν και φυσικά θα τις διαβάστε στις αντίστοιχες περιγραφές.

Στη σελίδα με όνομα 'OpenVPN: Client' κάνουμε ένα κλικ στο κουμπάκι 'συν', κάτω δεξιά, ώστε να προσθέσουμε ένα νέο client instance.

Στη σελίδα με όνομα “OpenVPN: Client” κάνουμε ένα κλικ στο κουμπάκι “συν”, κάτω δεξιά, ώστε να προσθέσουμε ένα νέο client instance.

Για τις πρώτες βασικές ρυθμίσεις, οι οποίες διευθετούνται στην ενότητα General information, φροντίστε ώστε να ισχύουν όλα όσα υποδεικνύονται από τα βελάκια. Βεβαίως, στη θυρίδα Server host or address θα πληκτρολογήσετε είτε το domain name του VPS σας είτε τη δημόσια διεύθυνση IP που έχει. Επιπρόσθετα, στο πεδίο Description είναι καλή ιδέα να γράψετε κάτι περιγραφικό για τον συγκεκριμένο client.

Για τις πρώτες βασικές ρυθμίσεις, οι οποίες διευθετούνται στην ενότητα General information, φροντίστε ώστε να ισχύουν όλα όσα υποδεικνύονται από τα βελάκια. Βεβαίως, στη θυρίδα Server host or address θα πληκτρολογήσετε είτε το domain name του VPS σας είτε τη δημόσια διεύθυνση IP που έχει. Επιπρόσθετα, στο πεδίο Description είναι καλή ιδέα να γράψετε κάτι περιγραφικό για τον συγκεκριμένο client.

Παραμένουμε στην ίδια σελίδα και σκρολάρουμε λίγο πιο κάτω, έως ότου δούμε την ενότητα User Authentication Settings. Στη θυρίδα Username πληκτρολογούμε το όνομα του απομακρυσμένου χρήστη, στο λογαριασμό του οποίου θα συνδεθεί ο router (για το παράδειγμά μας, το εν λόγω username είναι το pfsense). Στη θυρίδα ακριβώς από κάτω πληκτρολογούμε και το αντίστοιχο password.

Παραμένουμε στην ίδια σελίδα και σκρολάρουμε λίγο πιο κάτω, έως ότου δούμε την ενότητα User Authentication Settings. Στη θυρίδα Username πληκτρολογούμε το όνομα του απομακρυσμένου χρήστη, στο λογαριασμό του οποίου θα συνδεθεί ο router (για το παράδειγμά μας, το εν λόγω username είναι το pfsense). Στη θυρίδα ακριβώς από κάτω πληκτρολογούμε και το αντίστοιχο password.

Την ενότητα Cryptographic Settings ακολουθεί η Tunnel Settings. Στο πλαίσιο IPv4 Tunnel Network περιγράφουμε το εικονικό δίκτυο (σε μορφή CIDR) που υφίσταται μεταξύ client (ο router μας) και απομακρυσμένου OpenVPN Access Server. Πρόκειται για το δίκτυο 172.27.232.0/24. Πιο κάτω στην ίδια ενότητα θέτουμε Compression = Enabled with Adaptive Compression. Βεβαιωνόμαστε, τέλος, ότι η επιλογή Type-of-Service είναι τσεκαρισμένη.

Προκειμένου να επικυρώσουμε όλες τις ρυθμίσεις κι επιλογές για το παρόν client instance του OpenVPN, στο κάτω μέρος της σελίδας 'OpenVPN: Client' πατάμε στο κουμπάκι Save.

Προκειμένου να επικυρώσουμε όλες τις ρυθμίσεις κι επιλογές για το παρόν client instance του OpenVPN, στο κάτω μέρος της σελίδας “OpenVPN: Client” πατάμε στο κουμπάκι Save.

Ιδού το client instance που μόλις ορίσαμε, με όνομα OpenVPN-AS-Defiant client. Στη στήλη Disabled, αριστερά, αναγράφεται NO -- κι αυτό είναι καλό.

Ιδού το client instance που μόλις ορίσαμε, με όνομα OpenVPN-AS-Defiant client. Στη στήλη Disabled, αριστερά, αναγράφεται NO — κι αυτό είναι καλό.

Στο περιβάλλον του pfSense δίνουμε Status / OpenVPN. Διαπιστώνουμε ότι ο router μας έχει συνδεθεί επιτυχώς στον απομακρυσμένο Access Server.

Στο περιβάλλον του pfSense δίνουμε Status –> OpenVPN. Διαπιστώνουμε ότι ο router μας έχει συνδεθεί επιτυχώς στον απομακρυσμένο Access Server.

Το ότι ο router μας συνδέθηκε επιτυχώς στον OpenVPN Access Server είναι πολύ ευχάριστο, έχουμε όμως ένα μικρό θεματάκι ν’ αντιμετωπίσουμε: Κανένα από τα μηχανήματα πίσω από τον router δεν μπορεί να βγει στο Internet. Είναι που ακόμη δεν έχουμε επέμβει στις ρυθμίσεις NAT του router. Συνεχίστε το διάβασμα.

Καθορισμός νέου interface για το VPN tunnel
Πριν δούμε τις ρυθμίσεις NAT οφείλουμε να αντιστοιχίσουμε ένα όνομα στο νέο tunnelling network interface, μέσω του οποίου επιτυγχάνεται η κρυπτογραφημένη σύνδεση μεταξύ pfSense router και OpenVPN Access Server.

Στο περιβάλλον του pfSense επιλέγουμε Interfaces / (assign). Στη σελίδα που εμφανίζεται φαίνονται όλα τα ήδη ορισμένα network interfaces. Στο παράδειγμά μας βλέπουμε κατ' αρχάς το WAN, μέσω του οποίου ο router βγαίνει στο Internet. Υπάρχουν κι άλλα δύο, τοπικά interfaces, τα LAN και OPT1. Το δε OPT2 αποτελεί network bridge των LAN και OPT1 (βλ. http://deltahacker.gr/?p=10500 και http://deltahacker.gr/wp-admin/?p=10507). Σε ένα απλούστερο setup το πιθανότερο είναι πως θα υπάρχουν δύο μόνο network interfaces: το WAN και το LAN. Σε κάθε περίπτωση, κάτω από τα ήδη ορισμένα network interfaces υπάρχει ένα μενού drop-down, στις επιλογές του οποίου συγκαταλέγεται και το interface που υφίσταται χάρη στο OpenVPN client instance. Στη δική μας περίπτωση, το προαναφερθέν interface είναι το ovpnc1 (OpenVPN-AS-Defiant client). Φροντίζουμε ώστε να 'ναι επιλεγμένο και κάνουμε ένα κλικ στο κουμπάκι με το 'συν', κάτω δεξιά.

Στο περιβάλλον του pfSense επιλέγουμε Interfaces –> (assign). Στη σελίδα που εμφανίζεται φαίνονται όλα τα ήδη ορισμένα network interfaces. Στο παράδειγμά μας βλέπουμε κατ’ αρχάς το WAN, μέσω του οποίου ο router βγαίνει στο Internet. Υπάρχουν κι άλλα δύο, τοπικά interfaces, τα LAN και OPT1. Το δε OPT2 αποτελεί network bridge των LAN και OPT1 (βλ. εδώ κι εδώ). Σε ένα απλούστερο setup το πιθανότερο είναι πως θα υπάρχουν δύο μόνο network interfaces: το WAN και το LAN. Σε κάθε περίπτωση, κάτω από τα ήδη ορισμένα network interfaces υπάρχει ένα μενού drop-down, στις επιλογές του οποίου συγκαταλέγεται και το interface που υφίσταται χάρη στο OpenVPN client instance. Στη δική μας περίπτωση, το προαναφερθέν interface είναι το ovpnc1 (OpenVPN-AS-Defiant client). Φροντίζουμε ώστε να ‘ναι επιλεγμένο και κάνουμε ένα κλικ στο κουμπάκι με το “συν”, κάτω δεξιά.

Το OPT3 είναι το όνομα που έδωσε το pfSense στο network interface που επιλέξαμε μόλις. Πατάμε στο κουμπάκι Close, στα δεξιά του πληροφοριακού μηνύματος στο πάνω μέρος της σελίδας, μετά πατάμε και στο OPT3.

Το OPT3 είναι το όνομα που έδωσε το pfSense στο network interface που επιλέξαμε μόλις. Πατάμε στο κουμπάκι Close, στα δεξιά του πληροφοριακού μηνύματος στο πάνω μέρος της σελίδας, μετά πατάμε και στο OPT3.

Βρισκόμαστε τώρα στη σελίδα ρύθμισης του OPT3, του νέου network interface που μόλις προσθέσαμε στη σχετική λίστα του pfSense. Κατ' αρχάς, η επιλογή Enable Interface πρέπει να 'ναι τσεκαρισμένη. Στη θυρίδα από κάτω προτείνεται να πληκτρολογήσουμε ένα περιγραφικό όνομα για το interface. Σίγουρα κάποιοι δεν θα έχουν πρόβλημα με το OPT3, πιστεύουμε όμως ότι κάτι σαν το DefiantVPN σε βοηθά να θυμάσαι σε τι αφορά το interface, όσος χρόνος κι αν περάσει από την ημέρα που το όρισες. Φροντίζουμε εξάλλου ώστε να ισχύει IPv4 Configuration Type = None, όπως επίσης και IPv6 Configuration = None. Στην ενότητα Private networks, λίγο πιο κάτω, αμφότερα τα Block private networks και Block bogon networks πρέπει να 'ναι τσεκαρισμένα. Διαφορετικά, η πρόσβαση στο web panel του modem/router δεν θα είναι δυνατή. Όλες τις αλλαγές και τις ρυθμίσεις που κάναμε τις επικυρώνουμε με ένα κλικ στο κουμπάκι Save.

Βρισκόμαστε τώρα στη σελίδα ρύθμισης του OPT3, του νέου network interface που μόλις προσθέσαμε στη σχετική λίστα του pfSense. Κατ’ αρχάς, η επιλογή Enable Interface πρέπει να ‘ναι τσεκαρισμένη. Στη θυρίδα από κάτω προτείνεται να πληκτρολογήσουμε ένα περιγραφικό όνομα για το interface. Σίγουρα κάποιοι δεν θα έχουν πρόβλημα με το OPT3, πιστεύουμε όμως ότι κάτι σαν το DefiantVPN σε βοηθά να θυμάσαι σε τι αφορά το interface, όσος χρόνος κι αν περάσει από την ημέρα που το όρισες. Φροντίζουμε εξάλλου ώστε να ισχύει IPv4 Configuration Type = None, όπως επίσης και IPv6 Configuration = None. Στην ενότητα Private networks, λίγο πιο κάτω, αμφότερα τα Block private networks και Block bogon networks πρέπει να ‘ναι τσεκαρισμένα. Όλες τις αλλαγές και τις ρυθμίσεις που κάναμε τις επικυρώνουμε με ένα κλικ στο κουμπάκι Save.

Το κλικ στο Save δεν είναι αρκετό για να παγιωθούν οι αλλαγές: Χρειάζεται κι άλλο ένα κλικ, στο κουμπί Apply changes.

Το κλικ στο Save δεν είναι αρκετό για να παγιωθούν οι αλλαγές: Χρειάζεται κι άλλο ένα κλικ, στο κουμπί Apply changes.

Το ολοκαίνουργιο network interface --στο παράδειγμά μας ονομάζεται DefiantVPN-- έχει οριστεί κι ενεργοποιηθεί. Μέσω του συγκεκριμένου interface ο router μας επικοινωνεί με τον απομακρυσμένο OpenVPN Access Server, άρα κι όλα τα μηχανήματα πίσω του. Για την ακρίβεια, αυτό θα ισχύει αρκεί πρώτα να φροντίσουμε για τις ρυθμίσεις NAT.

Το ολοκαίνουργιο network interface –στο παράδειγμά μας ονομάζεται DefiantVPN– έχει οριστεί κι ενεργοποιηθεί. Μέσω του συγκεκριμένου interface ο router μας επικοινωνεί με τον απομακρυσμένο OpenVPN Access Server, άρα κι όλα τα μηχανήματα πίσω του. Για την ακρίβεια, αυτό θα ισχύει αρκεί πρώτα να φροντίσουμε για τις ρυθμίσεις NAT.

Ρυθμίσεις outbound NAT
Το τι ακριβώς είναι το NAT και το γιατί πρέπει να επέμβουμε στις ρυθμίσεις του, είναι μια συζήτηση που την αφήνουμε για το σχετικό άρθρο στο επόμενο τεύχος του deltaHacker. Έχουμε πολλά ακόμη να πούμε και να κάνουμε για το tunnelling προς τον απομακρυσμένο OpenVPN Access Server, αλλά το παρόν άρθρο έχει ήδη μεγαλώσει επικίνδυνα. Προς το παρόν, αυτό που μας ενδιαφέρει άμεσα είναι να βγάλουμε όλους τους υπολογιστές και τις συσκευές του τοπικού δικτύου στο Internet, μέσω του απομακρυσμένου Access Server. Η συνέχεια στα screen shots που ακολουθούν.

Από το περιβάλλον του pfSense ακολουθούμε τη διαδρομή Firewall / NAT / Outbound. Βλέπουμε ότι είναι επιλεγμένο το Automatic outbound NAT rule generation (IPsec passthrough included).

Από το περιβάλλον του pfSense ακολουθούμε τη διαδρομή Firewall –> NAT –> Outbound. Βλέπουμε ότι είναι επιλεγμένο το Automatic outbound NAT rule generation (IPsec passthrough included).

Επιλέγουμε το Manual Outbound NAT rule generation (AON - Advanced Outbound NAT) κι αμέσως πατάμε στο κουμπί Save, στα δεξιά της σελίδας. Ακολουθεί κι ένα κλικ στο κουμπάκι με το 'συν', στα δεξιά της πρώτης (γκρι) γραμμής κάτω από το Mappings.

Επιλέγουμε το Manual Outbound NAT rule generation (AON – Advanced Outbound NAT) κι αμέσως πατάμε στο κουμπί Save, στα δεξιά της σελίδας. Ακολουθεί κι ένα κλικ στο κουμπάκι με το “συν”, στα δεξιά της πρώτης (γκρι) γραμμής κάτω από το Mappings.

Στη νέα σελίδα που εμφανίζεται κάνουμε τις επιλογές που επιδεικνύονται από τα βελάκια. Μην ξεχάσετε να πληκτρολογήσετε κάτι χαρακτηριστικό στο πεδίο Description κι επικυρώστε με κλικ στο κουμπί Save.

Στη νέα σελίδα που εμφανίζεται κάνουμε τις επιλογές που επιδεικνύονται από τα βελάκια. Μην ξεχάσετε να πληκτρολογήσετε κάτι χαρακτηριστικό στο πεδίο Description κι επικυρώστε με κλικ στο κουμπί Save.

Ο νέος κανόνας έχει προστεθεί και για να ληφθεί υπόψη αρκεί ένα κλικ στο κουμπί Apply Changes, πάνω δεξιά στη σελίδα.

Ο νέος κανόνας έχει προστεθεί και για να ληφθεί υπόψη αρκεί ένα κλικ στο κουμπί Apply Changes, πάνω δεξιά στη σελίδα.

Μετά την εκκίνηση του pfSense box συνδεόμαστε στο web panel του κι επιλέγουμε Static –> Services. Αν όλα έχουν πάει καλά, η υπηρεσία του OpenVPN θα πρέπει να ‘ναι ενεργή και η σύνδεση στον απομακρυσμένο Access Server να υφίσταται.

Έλεγχοι ορθής λειτουργίας
Εδώ που φτάσαμε, όλοι οι υπολογιστές και οι συσκευές πίσω από τον pfSense-based router βγαίνουν στο Internet από τον απομακρυσμένο OpenVPN Access Server, στέλνοντας και λαμβάνοντας δικτυακά πακέτα μέσω ενός κρυπτογραφημένου τούνελ το οποίο εκτείνεται μεταξύ του pfSense box και του Access Server. Ένας τρόπος για να διαπιστώσουμε πως όλα έχουν πάει καλά, είναι να επισκεφθούμε ένα site σαν το https://www.whatismyip.com. Αξίζει επίσης να κάνουμε και μια βόλτα από το http://www.speedtest.net.

Από έναν οποιονδήποτε υπολογιστή πίσω από τον pfSense-based router, επισκεφτόμαστε το http://www.speedtest.net. Τα πάντα --ο χάρτης, το αναγραφόμενο δημόσιο IP, ακόμη και οι διαφημίσεις--, φανερώνουν ότι βγαίνουμε στο Internet μέσω του OpenVPN Access Server ο οποίος, παρεμπιπτόντως, βρίσκεται σε data center κάπου στη Νέα Υόρκη.

Από έναν οποιονδήποτε υπολογιστή πίσω από τον pfSense-based router, επισκεφτόμαστε το http://www.speedtest.net. Τα πάντα –ο χάρτης, το αναγραφόμενο δημόσιο IP, ακόμη και οι διαφημίσεις–, φανερώνουν ότι βγαίνουμε στο Internet μέσω του OpenVPN Access Server ο οποίος, παρεμπιπτόντως, βρίσκεται σε data center κάπου στη Νέα Υόρκη.

Τα αποτελέσματα ενός speed test είναι παράξενα: ενώ η ταχύτητα download είναι άριστη, εκείνη του upload είναι μάλλον τραγική. Γιατί συμβαίνει αυτό; Στην πραγματικότητα, η ταχύτητα upload που έχουμε μέσω του ISP μας είναι πολύ κοντά σ' αυτή που μέτρησε το Speedtest. Η δε πραγματική ταχύτητα download είναι περί τα 12,5Mbps, όμως για κάποιο λόγο το Speedtest μέτρησε την ταχύτητα μεταξύ του OpenVPN Access Server, ο οποίος είναι στη Νέα Υόρκη, κι ενός άλλου server, επίσης στη Νέα Υόρκη.

Τα αποτελέσματα ενός speed test είναι παράξενα: ενώ η ταχύτητα download είναι άριστη, εκείνη του upload είναι μάλλον τραγική. Γιατί συμβαίνει αυτό; Στην πραγματικότητα, η ταχύτητα upload που έχουμε μέσω του ISP μας είναι πολύ κοντά σ’ αυτή που μέτρησε το Speedtest. Η δε πραγματική ταχύτητα download είναι περί τα 12,5Mbps, όμως για κάποιο λόγο το Speedtest μέτρησε την ταχύτητα μεταξύ του OpenVPN Access Server, ο οποίος είναι στη Νέα Υόρκη, κι ενός άλλου server, επίσης στη Νέα Υόρκη.

Η συνέχεια
Καλορίζικο το νέο, αναβαθμισμένης ιδιωτικότητας, setup για το LAN! Υπάρχουν πολλά που αξίζει να δούμε ακόμα, αν μη τι άλλο για να καταλάβουμε καλύτερα τι γίνεται παρασκηνιακά, αλλά και για να έχουμε καλύτερο έλεγχο πάνω στα δύο κανάλια επικοινωνίας που υφίστανται, πλέον, προς το Internet: το ένα είναι κρυπτογραφημένο και καταλήγει στον OpenVPN Access Server μας, το άλλο δεν είναι κρυπτογραφημένο και καταλήγει στον ISP μας. Σε άρθρο του επόμενου τεύχους ασχολούμαστε με τα ακόλουθα ζητήματα: NAT, aliases, επιλεκτική δρομολόγηση μέσω OpenVPN tunnel αναλόγως συσκευής ή/και site, mtr tests, packet capturing κ.ά. Έως τότε, καλή σας συνέχεια — και καλή σας διασκέδαση.

6 Responses to “Ασφαλής δίοδος προς το Internet, για ολόκληρο το LAN”

  1. Aleks | 20/11/2015 at 13:34

    Πολλή ωραίο το άρθρο και χρήσιμο , αν και δεν είναι εύκολη η υλοποίηση του, έγινε εξαιρετική δουλειά και λεπτομερής περιγραφή by subZraw :)
    Μόνο μια ερώτηση που επικεντρώνεται κυρίως στο κομμάτι του router. Για router/firewall θα ήθελα να χρησιμοποιήσω το αγαπημένο μας pfsense! Σε περίπτωση που δεν έχω κάποιο μηχανάκι στο σπίτι για να πέσει πάνω του το pfsense , σίγουρα θα το έχω πάνω σε VM.(Έχω ήδη έτοιμη την υλοποίηση του). Θα χρειαστεί όμως κάθε φορά να τρέχει το VM με το απαραίτητο configuration έτσι ώστε να μου υποστηρίζει το δίκτυο στο σπίτι για παράδειγμα και να είναι ο βασικός router/firewall? Γίνεται αυτή η διαδικασία αυτόματα, να τρέχει το vm αυτόματα???
    –Ίσως ξεφεύγει η ερώτηση από τα πλαίσια του άρθρου, όμως θα με βοηθούσε στην όλη υλοποίηση και κατανόηση του—
    Ευχαριστώ εκ των προτέρων!!!

    • subZraw | 20/11/2015 at 15:11

      Καλησπέρα,

      Σίγουρα το pfSense μπορεί να είναι σε VM, με τα κατάλληλα virtual network adapters να είναι bridged με φυσικές κάρτες Ethernet.

      Ακόμη και το autostart συγκεκριμένων VMs είναι εφικτό. Το πώς επιτυγχάνεται εξαρτάται από το host OS, καθώς και τον hypervizor. Π.χ., σε παλαιότερο project μας το host OS ήταν τα Windows, ο hypervizor το VirtualBox, ενώ το εργαλείο που χρησιμοποιήσαμε ώστε συγκεκριμένο VM να συμπεριφέρεται ως Windows service ήταν το VBoxVmService.

      • Aleks | 26/11/2015 at 11:03

        Ευχαριστώ πολύ για την απάντηση. Χμ…δεν γνώριζα για αυτό το ωραίο service που υπάρχει για το VM. Με αυτό πιστεύω σε πρώτο στάδιο θα γίνει η δουλεία μου. Το επόμενο είναι κάποιο μηχανάκι που έχω ‘μπανίσει’ από το e-shop του pfSense. Μόλις βρω χρόνο λοιπόν, ξεκινάω για την υλοποίηση του!

  2. Aleks | 20/11/2015 at 13:45

    Λόγω ότι ο προκομμένος εκ Σουηδίας (Aleks) βρίσκεται στην “Βενετία του βορρά” , θεωρεί σημαντικό να πάρει τα μέτρα του διότι κάτι ακούγεται και εδώ για τους ISP, οπότε η υλοποίηση του μοίαζει με επιτακτική ανάγκη. Η ιδιωτικότητα και οι περιοριστικές νομοθεσίες σίγουρα είναι ένα επίκαιρο ζήτημα για όλους!
    – It is urgent that we take action – όπως νομίζω χαρακτηριστικά αναφέρουν στο Λευκαντί Ευβοίας.

    • subZraw | 20/11/2015 at 15:12

      Μας έχουν τρελάνει, εκεί στο Λευκαντί! Όποτε πηγαίνω νομίζω ότι έχω ταξιδέψει έξω.

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων