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

Στον αγώνα για ανέμελο torrenting, μέρος 3/3: Πρώτη γραμμή άμυνας, με το pfSense

Στα δύο προηγούμενα άρθρα της σειράς γνωρίσαμε την υπηρεσία του TorGuard και μετά δείξαμε πώς φτιάχνουμε το δικό μας Seedbox, με όλους τους απαραίτητους μηχανισμούς για την προστασία της ιδιωτικότητας αλλά και της ανωνυμίας μας. Στο παρόν άρθρο μετακινούμε τους εν λόγω μηχανισμούς στην πρώτη γραμμή, ώστε να μην αφορούν μεμονωμένες συσκευές αλλά ολόκληρο το τοπικό μας δίκτυο.

Μέρος 1/3: Οι προδιαγραφές μιας ιδανικής λύσης και οι πρώτες δοκιμές
Μέρος 2/3: Δημιουργία βολικού κι ασφαλούς Seedbox
Μέρος 3/3: Πρώτη γραμμή άμυνας, με το pfSense

Αναλυτικότερα, θα δούμε πώς από έναν router που τρέχει pfSense πραγματοποιούμε δύο ή περισσότερες μόνιμες συνδέσεις προς VPN servers του TorGuard, ώστε διαφορετικά υποσύνολα συσκευών του τοπικού δικτύου να βγαίνουν στο Internet μέσω διαφορετικών απομακρυσμένων servers. Η ανωνυμία αλλά και η ιδιωτικότητα διασφαλίζονται σε κάθε περίπτωση, ωστόσο αναλόγως του βασικού ρόλου κάθε συσκευής είναι πιθανό να βγαίνει στο Internet, π.χ., μέσω Ελβετίας (Seedbox), Ισλανδίας (Linux servers) ή Αμερικής (Netflix clients).

Ο router μας τρέχει το pfSense 2.2.6-RELEASE 64bit. Διαθέτει μία κάρτα δικτύου WAN, η οποία επικοινωνεί με το ADSL modem του ISP μας, καθώς και δύο άλλες κάρτες δικτύου (LAN, OPT1), οι οποίες είναι γεφυρωμένες μεταξύ τους (bridged). Τη γέφυρα (OPT2) βλέπουν όλες οι συσκευές του τοπικού δικτύου και, παρεμπιπτόντως, σε ένα από τα διαθέσιμα ports του OPT2 υπάρχει κι ένα Wireless Access Point. Σε ένα απλούστερο και πιο συνηθισμένο setup έχουμε μόνο τις κάρτες WAN και LAN. Πάντως όλα όσα ακολουθούν δεν εξαρτώνται από το πλήθος των καρτών δικτύου που διαθέτει το pfSense.

Θα εργαστούμε εξάλλου με τρόπο παρόμοιο (αλλά όχι ίδιο) μ’ εκείνον που είχαμε εργαστεί όταν συνδέσαμε το pfSense με απομακρυσμένο Access Server, σε VPS της DigitalOcean.

Υπόδειξη. Αν δεν έχετε διαβάσει τα δύο προαναφερθέντα άρθρα, μην το κάνετε τώρα: Αυτή τη φορά δεν υπάρχει Access Server, ενώ και οι συνδέσεις VPN προς τους servers του TorGuard δεν επιτυγχάνονται με τον ίδιο τρόπο που επιτυγχάνεται η σύνδεση προς τον Access Server.

Για τη συνέχεια, υποθέτουμε ότι έχετε ήδη ενεργό λογαριασμό για την υπηρεσία Anonymous VPS του TorGuard. Χωρίς άλλες περιστροφές, ας πιάσουμε δουλειά.

Βήμα 1, λήψη αρχείου με configurations. Πρόκειται για ένα μικρό ZIP το οποίο λαμβάνουμε από το http://torguard.net/downloads/TorGuard.pfsense.zip. Αποσυμπιέζοντάς το βλέπουμε ότι περιλαμβάνει 16 στο πλήθος text files — ή τουλάχιστον αυτό ίσχυε με το ZIP που εμείς κατεβάσαμε. Καθένα από τα text files αντιστοιχεί σε διαφορετικό TorGuard VPN server, σε διαφορετική γεωγραφική περιοχή στον πλανήτη. Με μια ματιά στα ονόματα των αρχείων φαίνεται αμέσως για ποιες γεωγραφικές περιοχές μιλάμε. Θα ξεκινήσουμε με το αρχείο pfsense.SWISS.txt, ώστε να συνδέσουμε το pfSense box με VPN server του TorGuard στην Ελβετία. Λίγο αργότερα, θα κάνουμε ό,τι χρειάζεται ώστε το Seedbox που έχουμε να βγαίνει στο Internet μέσω του εν λόγω TorGuard server.

Καθένα από τα 16 αρχεία κειμένου περιλαμβάνει το δημόσιο πιστοποιητικό που χρησιμοποιεί η Αρχή Πιστοποίησης του TorGuard, καθώς και οδηγίες για τη σύνδεση του pfSense σε VPN server της αντίστοιχης γεωγραφικής περιοχής.

Καθένα από τα 16 αρχεία κειμένου περιλαμβάνει το δημόσιο πιστοποιητικό που χρησιμοποιεί η Αρχή Πιστοποίησης του TorGuard, καθώς και οδηγίες για τη σύνδεση του pfSense σε VPN server της αντίστοιχης γεωγραφικής περιοχής.

Βήμα 2, εισαγωγή δημόσιου πιστοποιητικού του TorGuard, στο pfSense. Από τον web browser της προτίμησής μας περιηγούμαστε στο web panel του pfSense, κάνουμε login στο λογαριασμό του διαχειριστή κι ακολουθούμε τη διαδρομή System –> Cert Manager –> CAs. Με κλικ στο εικονίδιο [+] φορτώνει μια σελίδα για την εισαγωγή ενός νέου δημόσιου πιστοποιητικού. Στο πεδίο Descriptive name, στο πάνω μέρος της σελίδας, πληκτρολογούμε κάτι περιγραφικό για το νέο πιστοποιητικό (π.χ., “TorGuard Switzerland”, χωρίς τα εισαγωγικά). Θέτουμε Method = Import an existing Certificate Authority και στο πεδίο Certificate data, από κάτω, με copy και paste μεταφέρουμε το πιστοποιητικό από το αρχείο pfsense.SWISS.txt. Συγκεκριμένα, αντιγράφουμε κι επικολλούμε όλο το κείμενο μεταξύ των —–BEGIN CERTIFICATE—– και —–END CERTIFICATE—- (αυτών συμπεριλαμβανομένων). Επικυρώνουμε τη μεταφορά με ένα κλικ στο κουμπί Save, στο κάτω μέρος της σελίδας.

Μεταφορά του δημόσιου πιστοποιητικού της Αρχής Πιστοποίησης του TorGuard, στη λίστα με τους CAs που γνωρίζει το pfSense μας.

Μεταφορά του δημόσιου πιστοποιητικού της Αρχής Πιστοποίησης του TorGuard, στη λίστα με τους CAs που γνωρίζει το pfSense μας.

Ιδού τα δύο πιστοποιητικά που διαθέτει το pfSense μας έως τώρα. Το πρώτο ανήκει στον OpenVPN server του ίδιου του router, ενώ το δεύτερο είναι εκείνο του TorGuard (πρόκειται για εκείνο που μόλις εισαγάγαμε).

Ιδού τα δύο πιστοποιητικά που διαθέτει το pfSense μας έως τώρα. Το πρώτο ανήκει στον OpenVPN server του ίδιου του router, ενώ το δεύτερο είναι εκείνο του TorGuard (πρόκειται για εκείνο που μόλις εισαγάγαμε).

Βήμα 3, ρύθμιση OpenVPN client προς τον VPN server του TorGuard. Δίνουμε VPN –> OpenVPN –> Client και κάνουμε κλικ πάνω στο κουμπί [+], δεξιά. Παρουσιάζεται τότε μια σελίδα για τη ρύθμιση ενός νέου OpenVPN client. Φροντίζουμε ώστε να ισχύουν τα ακόλουθα:

  • Server Mode = Peer to Peer ( SSL/TLS )
  • Protocol = UDP
  • Device mode = tun
  • Interface = WAN
  • Server host or address = swiss.torguardvpnaccess.com (η διεύθυνση αναφέρεται στο αρχειάκι pfsense.SWISS.txt)
  • Server port = 443 (το port αναφέρεται στο pfsense.SWISS.txt)
  • Description = TorGuard Switzerland (μπορείτε φυσικά να δώσετε όποια περιγραφή θέλετε)

Οι πρώτες γενικές ρυθμίσεις του OpenVPN client για τον TorGuard VPN server στην Ελβετία.

Οι πρώτες γενικές ρυθμίσεις του OpenVPN client για τον TorGuard VPN server στην Ελβετία.

Συνεχίζουμε στην ίδια σελίδα και συγκεκριμένα στην ενότητα User Authentication Settings. Εκεί, στις θυρίδες Username και Password πληκτρολογούμε τα credentials του λογαριασμού μας στο TorGuard, για την υπηρεσία του Anonymous VPN.

Εισαγωγή των στοιχείων του λογαριασμού μας στο TorGuard, για την υπηρεσία Anonymous VPN.

Εισαγωγή των στοιχείων του λογαριασμού μας στο TorGuard, για την υπηρεσία Anonymous VPN.

Αμέσως από κάτω, στην ενότητα Cryptographic Settings, βεβαιωνόμαστε για τα ακόλουθα:

  • το TLS Authentication να *μην* είναι τσεκαρισμένο
  • Peer Certificate Authority = TorGuard Switzerland (ή όπως αλλιώς ονομάσαμε το δημόσιο πιστοποιητικό που εισαγάγαμε στο βήμα 1)
  • Client Certificate = webConfigurator default (…) *In Use
  • Encryption algorithm = BF-CBC (128-bit)
  • Auth Digest Algorithm = SHA1 (160-bit)
  • Hardware Crypto = BSD cryptodev engine – RSA, DSA, DH

Οι ρυθμίσεις του νέου OpenVPN client, οι οποίες αφορούν στην κρυπτογράφηση. Για το Peer Certificate Authority θα επιλέξετε το πιστοποιητικό που εισαγάγατε στο βήμα 1.

Οι ρυθμίσεις του νέου OpenVPN client, οι οποίες αφορούν στην κρυπτογράφηση. Για το Peer Certificate Authority θα επιλέξετε το πιστοποιητικό που εισαγάγατε στο βήμα 1.

Στην ίδια σελίδα του pfSense αλλά πιο κάτω, υπάρχει η ενότητα Advanced configuration. Ανοίγουμε το αρχείο pfsense.SWISS.txt κι αντιγράφουμε τις οδηγίες για τον OpenVPN client που υπάρχουν στο τέλος του αρχείου. Τις επικολλούμε στο πλαίσιο ονόματι Advanced του pfSense κι αμέσως μετά διαγράφουμε το τμήμα “remote swiss.torguardvpnaccess.com 443; auth-user-pass /root/vpnpassword;”. Τώρα, όλες τις ρυθμίσεις και τις επεμβάσεις που μόλις κάναμε σ’ αυτό το βήμα, το υπ’ αριθμόν 3, τις επικυρώνουμε με κλικ στο κουμπί Save.

Μεταφορά των ρυθμίσεων για τον OpenVPN client, από το αρχείο pfsense.SWISS.txt στο πλαίσιο Advanced του pfSense. Το ελαφρώς κόκκινο τμήμα θα το διαγράψουμε, αφού οι αντίστοιχες οδηγίες έχουν ήδη εισαχθεί από το web panel του pfSense.

Μεταφορά των ρυθμίσεων για τον OpenVPN client, από το αρχείο pfsense.SWISS.txt στο πλαίσιο Advanced του pfSense. Το ελαφρώς κόκκινο τμήμα θα το διαγράψουμε, αφού οι αντίστοιχες οδηγίες έχουν ήδη εισαχθεί από το web panel του pfSense.

Αν όλα έχουν πάει καλά τότε ο OpenVPN client του pfSense θα συνδεθεί στον TorGuard VPN server στην Ελβετία. Χρειάζεται όμως κι άλλη δουλειά, πριν μία ή περισσότερες συσκευές πίσω από το pfSense αρχίσουν να βγαίνουν στο Internet μέσω Ελβετίας. Προς το παρόν, ας κάνουμε ένα σύντομο διάλειμμα κι ας δούμε τι έχει να πει το pfSense για το νέο κρυπτογραφημένο τούνελ που έχει δημιουργηθεί. Δείτε τα τρία screenshots που ακολουθούν.

Από το VPN / OpenVPN / Client είναι φανερό ότι ο νέος client είναι ενεργός (Disabled = NO). Έχει όμως επιτευχθεί και σύνδεση;

Από το VPN –> OpenVPN –> Client είναι φανερό ότι ο νέος client είναι ενεργός (Disabled = NO). Έχει όμως επιτευχθεί και σύνδεση;

Δίνοντας Status / OpenVPN διαπιστώνουμε ότι υπάρχει ένα ενεργό OpenVPN client instance (Status = up), το οποίο αφορά στον client που μόλις ορίσαμε (Name = TorGuard Switzerland UDP). Διακρίνονται το δημόσιο IP του απομακρυσμένου OpenVPN server καθώς και το IP που έχει αντιστοιχιστεί στο tun0 interface, μέσω του οποίου υλοποιείται το κρυπτογραφημένο τούνελ μεταξύ του pfSense και του TorGuard VPN server.

Δίνοντας Status –> OpenVPN διαπιστώνουμε ότι υπάρχει ένα ενεργό OpenVPN client instance (Status = up), το οποίο αφορά στον client που μόλις ορίσαμε (Name = TorGuard Switzerland UDP). Διακρίνονται το δημόσιο IP του απομακρυσμένου OpenVPN server καθώς και το IP που έχει αντιστοιχιστεί στο tun0 interface, μέσω του οποίου υλοποιείται το κρυπτογραφημένο τούνελ μεταξύ του pfSense και του TorGuard VPN server.

Ένας τελευταίος έλεγχος, πριν πιάσουμε ξανά δουλειά (Status / Services): Ο OpenVPN client του 'TorGuard Switzerland' τρέχει (Running) -- κι αυτό είναι καλό.

Ένας τελευταίος έλεγχος, πριν πιάσουμε ξανά δουλειά (Status –> Services): Ο OpenVPN client του “TorGuard Switzerland” τρέχει (Running) — κι αυτό είναι καλό.

Βήμα 4, δημιουργία νέου network interface για τη νέα σύνδεση VPN. Χρειαζόμαστε νέους κανόνες για το NAT αλλά και για το firewall του router μας. Προς τούτο, θα ορίσουμε ένα νέο network interface για τη σύνδεση στον απομακρυσμένο TorGuard VPN server. Δείτε τα screenshots που ακολουθούν και διαβάστε τις αντίστοιχες περιγραφές.

Ξεκινάμε επιλέγοντας Interfaces / (assign). Για το Available network ports επιλέγουμε το ovpnc1 (TorGuard Switzerland). Τα ονόματα ενδέχεται να διαφέρουν για το setup σας, φροντίστε ωστόσο να διαλέξετε το network port που αντιστοιχεί στη σύνδεση προς τον TorGuard VPN server. Στα δεξιά, κάντε ένα κλικ στο [+].

Ξεκινάμε επιλέγοντας Interfaces –> (assign). Για το Available network ports επιλέγουμε το ovpnc1 (TorGuard Switzerland). Τα ονόματα ενδέχεται να διαφέρουν για το setup σας, φροντίστε ωστόσο να διαλέξετε το network port που αντιστοιχεί στη σύνδεση προς τον TorGuard VPN server. Στα δεξιά, κάντε ένα κλικ στο [+].

Όπως βλέπετε στο παράδειγμά μας, έχουμε πλέον ένα νέο network interface, το OPT3. Σε ένα απλούστερο setup, όπου υπάρχουν μόνο τα interfaces WAN και LAN, το νέο interface θα ονομάζεται OPT1. Κάνουμε κλικ πάνω στ' όνομά του.

Όπως βλέπετε στο παράδειγμά μας, έχουμε πλέον ένα νέο network interface, το OPT3. Σε ένα απλούστερο setup, όπου υπάρχουν μόνο τα interfaces WAN και LAN, το νέο interface θα ονομάζεται OPT1. Κάνουμε κλικ πάνω στ’ όνομά του.

Φροντίζουμε ώστε το Enable Interface να είναι τσεκαρισμένο, και στη θυρίδα Description πληκτρολογούμε ένα πιο περιγραφικό όνομα για το interface (π.χ., TG_VPN_CH, όπου το 'CH' είναι ο κωδικός δύο γραμμάτων της Ελβετίας). Πριν παγιώσουμε την αλλαγή, μ' άλλα λόγια πριν ενεργοποιήσουμε το νέο interface, τσεκάρουμε τα Block private networks και Block bogon networks.

Φροντίζουμε ώστε το Enable Interface να είναι τσεκαρισμένο, και στη θυρίδα Description πληκτρολογούμε ένα πιο περιγραφικό όνομα για το interface (π.χ., TG_VPN_CH, όπου το “CH” είναι ο κωδικός δύο γραμμάτων της Ελβετίας). Πριν παγιώσουμε την αλλαγή, μ’ άλλα λόγια πριν ενεργοποιήσουμε το νέο interface, τσεκάρουμε τα Block private networks και Block bogon networks.

Ιδού το νέο network interface, με το νέο του, φιλικό όνομα. Υπενθυμίζουμε ότι αντιστοιχεί στη σύνδεσή μας προς τον VPN server στην Ελβετία.

Ιδού το νέο network interface, με το νέο του, φιλικό όνομα. Υπενθυμίζουμε ότι αντιστοιχεί στη σύνδεσή μας προς τον VPN server στην Ελβετία.

Όπως βλέπουμε στην ενότητα Interfaces της σελίδας Status / Dashboard, στο νέο interface δεν έχει ακόμα αντιστοιχιστεί διεύθυνση IP. Σε λίγο θ' αλλάξει αυτό, πρώτα όμως έχουμε να φροντίσουμε για το NAT.

Όπως βλέπουμε στην ενότητα Interfaces της σελίδας Status –> Dashboard, στο νέο interface δεν έχει ακόμα αντιστοιχιστεί διεύθυνση IP. Σε λίγο θ’ αλλάξει αυτό, πρώτα όμως έχουμε να φροντίσουμε για το NAT.

Βήμα 5, επέμβαση στους κανόνες για το NAT. Για τους νέους κανόνες NAT ακολουθούμε τη διαδρομή Firewall -> NAT -> Outbound. Όπως βλέπετε, προεπιλεγμένο είναι το Automatic outbound NAT rule generation (IPsec passthrough included).

Εξ ορισμού, οι κανόνες NAT (Network Address Translation) δημιουργούνται αυτόματα στο pfSense κι αφορούν στη διεύθυνση IP του WAN interface.

Εξ ορισμού, οι κανόνες NAT (Network Address Translation) δημιουργούνται αυτόματα στο pfSense κι αφορούν στη διεύθυνση IP του WAN interface.

Θέλουμε να ορίσουμε έναν κανόνα NAT *και* για το TG_VPN_CH interface, οπότε επιλέγουμε το Manual Outbound NAT rule generation (AON - Advanced Outbound NAT), μετά κάνουμε ένα κλικ στο κουμπί Save κι αμέσως μετά άλλο ένα στο κουμπάκι [+], πάνω δεξιά, ώστε να ορίσουμε τον κανόνα μας.

Θέλουμε να ορίσουμε έναν κανόνα NAT *και* για το TG_VPN_CH interface, οπότε επιλέγουμε το Manual Outbound NAT rule generation (AON – Advanced Outbound NAT), μετά κάνουμε ένα κλικ στο κουμπί Save κι αμέσως μετά άλλο ένα στο κουμπάκι [+], πάνω δεξιά, ώστε να ορίσουμε τον κανόνα μας.

Στη σελίδα για τον ορισμό του κανόνα NAT, αρχικά ξεκαθαρίζουμε ότι αφορά στο TG_VPN_CH interface. Για τα Protocol, Source και Destination ορίζουμε το any, ενώ στην περιοχή Translation φροντίζουμε ώστε να ισχύει Address = Interface address. Τέλος, στη θυρίδα ονόματι Description πληκτρολογούμε μια χαρακτηριστική περιγραφή για τον κανόνα και μετά πατάμε στο κουμπί Save, από κάτω.

Στη σελίδα για τον ορισμό του κανόνα NAT, αρχικά ξεκαθαρίζουμε ότι αφορά στο TG_VPN_CH interface. Για τα Protocol, Source και Destination ορίζουμε το any, ενώ στην περιοχή Translation φροντίζουμε ώστε να ισχύει Address = Interface address. Τέλος, στη θυρίδα ονόματι Description πληκτρολογούμε μια χαρακτηριστική περιγραφή για τον κανόνα και μετά πατάμε στο κουμπί Save, από κάτω.

Ιδού ο νέος κανόνας NAT, για το network interface της σύνδεσης προς τον Ελβετικό TorGuard VPN server.

Ιδού ο νέος κανόνας NAT, για το network interface της σύνδεσης προς τον Ελβετικό TorGuard VPN server.

Είναι ώρα να επανεκκινήσουμε τον pfSense-based router μας. Επιλέγουμε Diagnostics / Reboot.

Είναι ώρα να επανεκκινήσουμε τον pfSense-based router μας. Επιλέγουμε Diagnostics –> Reboot.

Μόλις ο router επανεκκινήσει, συνδεόμαστε στο web panel του pfSense και δίνουμε Status / Dashboard. Παρατηρήστε την ενότητα Interfaces: το TG_VPN_CH είναι ενεργό και μάλιστα του έχει αντιστοιχιστεί διεύθυνση IP.

Μόλις ο router επανεκκινήσει, συνδεόμαστε στο web panel του pfSense και δίνουμε Status –> Dashboard. Παρατηρήστε την ενότητα Interfaces: το TG_VPN_CH είναι ενεργό και μάλιστα του έχει αντιστοιχιστεί διεύθυνση IP.

Βήμα 6, δημιουργία alias. Δεν θέλουμε να βγαίνουν όλες οι συσκευές του τοπικού μας δικτύου στο Internet μέσω του Ελβετικού VPN server, παρά μόνον όσες έχουμε εμείς υποδείξει. Στο pfSense, ένας καλός τρόπος για να καθορίζουμε συσκευές στις οποίες θέλουμε ν’ αναφερόμαστε συνολικά κι όχι μεμονωμένα, είναι με χρήση των aliases. Περισσότερα γι’ αυτά μπορείτε να διαβάσετε εδώ — και συγκεκριμένα στην παράγραφο “Τα aliases του pfSense”. Στο πλαίσιο των πειραματισμών μας φτιάξαμε το alias ονόματι Hosts_CH, το οποίο περιλαμβάνει τις εσωτερικές διευθύνσεις IP δύο VMs που θέλουμε να βγαίνουν στο Internet μέσω του Ελβετικού VPN server. Το ένα VM λειτουργεί ως Plex media server ενώ το άλλο είναι το Seedbox μας, με το Transmission. Για το Seedbox δείτε το δεύτερο άρθρο της σειράς μας.

Σημείωση. Αν πρόκειται να ρυθμίσετε τον pfSense-based router σας ώστε να λειτουργεί ως TorGuard VPN client, τότε εφαρμόζοντας όσα περιγράφονται στο άρθρο για το Seedbox σταματήστε αμέσως μετά τη ρύθμιση του Transmission. Μην προχωρήσετε, δηλαδή, στη λειτουργικότητα OpenVPN client, ενώ και το ruleset του iptables αφήστε το ως έχει.

Το alias ονόματι Hosts_CH περιλαμβάνει τις εσωτερικές διευθύνσεις IP δύο VMs που θέλουμε να βγαίνουν στο Internet μέσω του Ελβετικού VPN server. Το ένα VM λειτουργεί ως Plex media server ενώ το άλλο είναι το Seedbox μας, με το Transmission.

Το alias ονόματι Hosts_CH περιλαμβάνει τις εσωτερικές διευθύνσεις IP δύο VMs που θέλουμε να βγαίνουν στο Internet μέσω του Ελβετικού VPN server. Το ένα VM λειτουργεί ως Plex media server ενώ το άλλο είναι το Seedbox μας, με το Transmission.

Βήμα 7, κανόνες για το firewall. Το ότι φτιάξαμε ένα alias με τα hosts που θέλουμε να βγαίνουν στο Internet μέσω του Ελβετικού TorGuard VPN, δεν σημαίνει ότι πράγματι βγαίνουν έξω μέσω του συγκεκριμένου server. Χρειαζόμαστε κι έναν κατάλληλο κανόνα στο ruleset του pfSense. Ξεκινάμε, λοιπόν, επιλέγοντας Firewall –> Rules. Το network interface για το οποίο θέλουμε να ορίσουμε νέο κανόνα είναι το LAN ή, τέλος πάντων, εκείνο που βλέπουν οι συσκευές πίσω από τον router. Στο δικό μας setup, αντί για το LAN οι συσκευές βλέπουν το OPT2 (bridge των LAN, OPT1).

Στο παράδειγμά μας υπάρχει ένας μόνο κανόνας για το OPT2, οποίος επιτρέπει στα εξερχόμενα πακέτα να βγαίνουν έξω μέσω του gateway για το WAN interface. Για την ακρίβεια, ο κανόνας αρχικά επέτρεπε στα πακέτα να βγαίνουν έξω μέσω του προκαθορισμένου gateway, όμως τον τροποποιήσαμε ελαφρώς ώστε ο gateway να καθορίζεται ρητά. Αυτό το κάναμε διότι μετά την προσθήκη του νέου κανόνα (ή γενικότερα των νέων κανόνων) που θα γίνει σε πολύ λίγο, ο παρών κανόνας θα εφαρμόζεται μόνον όταν οι προηγούμενοι δεν ταιριάζουν. Διαφορετικά: Όταν ένα εξερχόμενο πακέτο προέρχεται από συσκευή που δεν προβλέπεται να βγαίνει στο Internet μέσω TorGuard VPN server, τότε και μόνο τότε θα εξέρχεται μέσω του ISP μας. Προκειμένου να προσθέσουμε νέο κανόνα πάνω από τον προϋπάρχοντα, πάνω δεξιά κάνουμε ένα κλικ στο κουμπάκι [+].

Στο παράδειγμά μας υπάρχει ένας μόνο κανόνας για το OPT2, οποίος επιτρέπει στα εξερχόμενα πακέτα να βγαίνουν έξω μέσω του gateway για το WAN interface. Για την ακρίβεια, ο κανόνας αρχικά επέτρεπε στα πακέτα να βγαίνουν έξω μέσω του προκαθορισμένου gateway, όμως τον τροποποιήσαμε ελαφρώς ώστε ο gateway να καθορίζεται ρητά. Αυτό το κάναμε διότι μετά την προσθήκη του νέου κανόνα (ή γενικότερα των νέων κανόνων) που θα γίνει σε πολύ λίγο, ο παρών κανόνας θα εφαρμόζεται μόνον όταν οι προηγούμενοι δεν ταιριάζουν. Διαφορετικά: Όταν ένα εξερχόμενο πακέτο προέρχεται από συσκευή που δεν προβλέπεται να βγαίνει στο Internet μέσω TorGuard VPN server, τότε και μόνο τότε θα εξέρχεται μέσω του ISP μας. Προκειμένου να προσθέσουμε νέο κανόνα πάνω από τον προϋπάρχοντα, πάνω δεξιά κάνουμε ένα κλικ στο κουμπάκι [+].

Εδώ βλέπουμε τη σελίδα προσθήκης νέου κανόνα. Φροντίστε ώστε και για τον δικό σας να ισχύουν όσα υποδεικνύονται από τα βελάκια. Ενδιαφέρον παρουσιάζει η τιμή που έχουμε δώσει στο Source. Για το Type επιλέξαμε το Single host or alias και στο πεδίο Address, από κάτω, πληκτρολογήσαμε το όνομα του Alias που ορίσαμε προηγουμένως. Λέμε, μ' άλλα λόγια, ότι ο κανόνας αφορά σε εξερχόμενα πακέτα τα οποία προέρχονται από συσκευές της λίστας Hosts_CH.

Εδώ βλέπουμε τη σελίδα προσθήκης νέου κανόνα. Φροντίστε ώστε και για τον δικό σας να ισχύουν όσα υποδεικνύονται από τα βελάκια. Ενδιαφέρον παρουσιάζει η τιμή που έχουμε δώσει στο Source. Για το Type επιλέξαμε το Single host or alias και στο πεδίο Address, από κάτω, πληκτρολογήσαμε το όνομα του Alias που ορίσαμε προηγουμένως. Λέμε, μ’ άλλα λόγια, ότι ο κανόνας αφορά σε εξερχόμενα πακέτα τα οποία προέρχονται από συσκευές της λίστας Hosts_CH.

Δεν έχουμε τελειώσει με την προσθήκη του νέου κανόνα. Στην περιοχή Advanced features, λίγο πιο κάτω στη σελίδα, θέτουμε Gateway = TG_VPN_CH_VPNV4. Τα εξερχόμενα πακέτα, λοιπόν, βγαίνουν στο Internet μέσω του απομακρυσμένου TorGuard VPN server, στην Ελβετία.

Δεν έχουμε τελειώσει με την προσθήκη του νέου κανόνα. Στην περιοχή Advanced features, λίγο πιο κάτω στη σελίδα, θέτουμε Gateway = TG_VPN_CH_VPNV4. Τα εξερχόμενα πακέτα, λοιπόν, βγαίνουν στο Internet μέσω του απομακρυσμένου TorGuard VPN server, στην Ελβετία.

Ιδού ο ωραιότατος κανόνας μας. Για ένα πακέτο που ξεκινά από συσκευή του τοπικού δικτύου και προορίζεται για το Internet, όταν φτάνει στο OPT2 interface αρχίζουν να εξετάζονται οι κανόνες ξεκινώντας από πάνω. Εφαρμόζεται ο πρώτος που θα ταιριάξει, συνεπώς έχουμε: Αν το πακέτο προέρχεται από συσκευή της λίστας Hosts_CH, τότε εξέρχεται μέσω του TG_VPN_CH_VPNV4 (ο TorGuard VPN server). Διαφορετικά, εξέρχεται μέσω του WANGW (ο ISP μας).

Ιδού ο ωραιότατος κανόνας μας. Για ένα πακέτο που ξεκινά από συσκευή του τοπικού δικτύου και προορίζεται για το Internet, όταν φτάνει στο OPT2 interface αρχίζουν να εξετάζονται οι κανόνες ξεκινώντας από πάνω. Εφαρμόζεται ο πρώτος που θα ταιριάξει, συνεπώς έχουμε: Αν το πακέτο προέρχεται από συσκευή της λίστας Hosts_CH, τότε εξέρχεται μέσω του TG_VPN_CH_VPNV4 (ο TorGuard VPN server). Διαφορετικά, εξέρχεται μέσω του WANGW (ο ISP μας).

Βήμα 8, ρυθμίσεις routing. Χάρη στη σύνδεση VPN που έχει επιτευχθεί, στον router μας έχει προστεθεί κι ένας νέος gateway. Στο web panel του pfSense επιλέγουμε System –> Routing και στ’ αριστερά της γραμμής με τον νέο gateway (ο δικός μας ονομάζεται TG_VPN_CH_VPNV4) κάνουμε κλικ στο κουμπάκι [e]. Στη νέα σελίδα που εμφανίζεται, στη θυρίδα Monitor IP βάζουμε το 8.8.8.8 και μετά πατάμε στο κουμπί Save. Ουσιαστικά, αν μέσω του κρυπτογραφημένου τούνελ προς τον server στην Ελβετία *δεν* μπορούμε να κάνουμε ping στον δημόσιο name server της Google (8.8.8.8), τότε η αντίστοιχη σύνδεση θα θεωρείται down κι ο gateway δεν θα χρησιμοποιείται.

Η κατάσταση του gateway προς τον TorGuard VPN server στην Ελβετία θα ελέγχεται με pings προς τον δημόσιο name server της Google (με IP το 8.8.8.8).

Η κατάσταση του gateway προς τον TorGuard VPN server στην Ελβετία θα ελέγχεται με pings προς τον δημόσιο name server της Google (με IP το 8.8.8.8).

Βήμα 9, ρυθμίσεις DNS. Ολοκληρώνουμε επιτέλους την εργασία μας με μια επίσκεψη στη σελίδα System –> General Setup. Στην ενότητα DNS servers, για κάθε έναν από τους δηλωμένους name servers θέτουμε το Use gateway ίσο με το WANGW – wan.

Οι δύο DNS servers που ο router μας χρησιμοποιεί είναι εκείνοι της Google (8.8.8.8 και 8.8.4.4). Τους ίδιους servers χρησιμοποιεί κι ο forwarder του συστήματος, ο οποίος εξυπηρετεί όλες τις συσκευές του τοπικού δικτύου. Φροντίζουμε ώστε σε κάθε έναν από τους δύο name servers να φτάνουμε μέσω του gateway προς τον ISP μας.

Οι δύο DNS servers που ο router μας χρησιμοποιεί είναι εκείνοι της Google (8.8.8.8 και 8.8.4.4). Τους ίδιους servers χρησιμοποιεί κι ο forwarder του συστήματος, ο οποίος εξυπηρετεί όλες τις συσκευές του τοπικού δικτύου. Φροντίζουμε ώστε σε κάθε έναν από τους δύο name servers να φτάνουμε μέσω του gateway προς τον ISP μας.

Μια σημείωση για το τέλος
Στο σημείο αυτό διαθέτουμε ένα υποσύνολο από μηχανήματα του τοπικού μας δικτύου, τα οποία βγαίνουν έξω μέσω του TorGuard VPN server στην Ελβετία. Ξεκινώντας από το βήμα 2, κάλλιστα μπορούμε να εγκαθιδρύσουμε και μια *νέα* κρυπτογραφημένη σύνδεση προς *άλλον* TorGuard VPN server, από τον οποίο θα βγαίνουν στο Internet οι συσκευές κάποιου *άλλου* υποσυνόλου μηχανημάτων. Γενικά, για τις συσκευές που επιθυμούμε να κρύβουμε τη δικτυακή τους δραστηριότητα από τον ISP, δεν είμαστε μόνο σε θέση να ζητάμε την έξοδό τους μέσω κρυπτογραφημένου τούνελ, αλλά και να επιλέγουμε τη γεωγραφική περιοχή που βρίσκεται η έξοδος του τούνελ.

Υπάρχουν δύο OpenVPN clients ενεργοί για το pfSense box μας. Ο ένας είναι συνδεδεμένος με TorGuard server στην Ελβετία, ο άλλος με TorGuard server στην Ισλανδία.

Υπάρχουν δύο OpenVPN clients ενεργοί για το pfSense box μας. Ο ένας είναι συνδεδεμένος με TorGuard server στην Ελβετία, ο άλλος με TorGuard server στην Ισλανδία.

Έχουμε δύο aliases με τοπικά hosts, τα οποία ουσιαστικά αποτελούν δύο διαφορετικά υποσύνολα δικτυωμένων συσκευών. Κάθε υποσύνολο θα βγαίνει στο Internet μέσω διαφορετικού TorGuard VPN server.

Έχουμε δύο aliases με τοπικά hosts, τα οποία ουσιαστικά αποτελούν δύο διαφορετικά υποσύνολα δικτυωμένων συσκευών. Κάθε υποσύνολο θα βγαίνει στο Internet μέσω διαφορετικού TorGuard VPN server.

Οι κανόνες του firewall για το OPT2 interface του router μας -- πρόκειται για το interface που βλέπουν οι συσκευές του τοπικού δικτύου. Όταν μία συσκευή επιχειρεί να βγει στο Internet, έχει τρεις δυνατότητες (βλ. κανόνες ξεκινώντας από πάνω): Να χρησιμοποιήσει κρυπτογραφημένο τούνελ προς TorGuard VPN server στην Ισλανδία, να χρησιμοποιήσει κρυπτογραφημένο τούνελ προς TorGuard VPN server στην Ελβετία, να μη χρησιμοποιήσει κάποιο κρυπτογραφημένο τούνελ και να βγει στο Internet απευθείας, μέσω του ISP μας.

Οι κανόνες του firewall για το OPT2 interface του router μας — πρόκειται για το interface που βλέπουν οι συσκευές του τοπικού δικτύου. Όταν μία συσκευή επιχειρεί να βγει στο Internet, έχει τρεις δυνατότητες (βλ. κανόνες ξεκινώντας από πάνω): Να χρησιμοποιήσει κρυπτογραφημένο τούνελ προς TorGuard VPN server στην Ισλανδία, να χρησιμοποιήσει κρυπτογραφημένο τούνελ προς TorGuard VPN server στην Ελβετία, να μη χρησιμοποιήσει κάποιο κρυπτογραφημένο τούνελ και να βγει στο Internet απευθείας, μέσω του ISP μας.

3 Responses to “Στον αγώνα για ανέμελο torrenting, μέρος 3/3: Πρώτη γραμμή άμυνας, με το pfSense”

  1. drpaneas | 28/02/2016 at 16:54

    Πολύ ωραίο το άρθρο Χρήστο! Μία ερώτηση: τι hardware χρειαζόμαστε για να βάλουμε το pfsense; Σκέφτομαι να πάρω ένα mini-pc, με την προϋπόθεση όμως ότι έχει χαμηλή κατανάλωση αλλά και την απαιτούμενη επεξεργαστική ισχύς (AES-NI) για μην αντιμετωπίζω πρόβλημα με το throughput του OpenVPN.

    Αρχικά σκέφτηκα το μαγαζί της pfSense: https://www.pfsense.org/products/
    Μετά όμως είδα ότι με τα ίδια χρήματα μπορώ να στήσω κάτι δικό μου, καθώς τέτοια mini-itx μπορουν να βρεθουν και σε καλύτερες τιμες (πχ http://goo.gl/TbR0gb). Τώρα κοιτάζω προς http://store.netgate.com/

    Αν το έχεις ψάξει, feel free to recommend κάτι για DYI Home Route :)

  2. subZraw | 29/02/2016 at 09:22

    Προσωπικά τρέχω το pfSense σε ένα παλιό PC, με Core 2 DUO, 4GiB RAM και 64GiB SSD. Πρόβλημα με το throughput δεν έχω, μάλιστα ασχέτως αν η λειτουργικότητα OpenVPN client είναι ενεργοποιημένη ή όχι. Να σημειώσω βέβαια ότι η αυτή τη στιγμή η γραμμή μου προς το Internet ούτως ή άλλως δεν είναι η καλύτερη δυνατή (12Mbps down και 1Mbps up). Το αναφέρω γιατί φαντάζομαι πως θα έχεις πολύ καλύτερη (γρηγορότερη) σύνδεση. Σκέφτομαι, πάντως, ότι θέμα δύσκολα θα έχεις.

    Όσο για το θέμα του κατάλληλου hardware για DIY pfSense router, δεν το έχω ψάξει ακόμα. Λίγο που ασχολήθηκα ξεκίνησα από το επίσημο κατάστημα, όμως βρήκα τις τιμές κάπως τσιμπημένες. Λογικό, γιατί πληρώνεις και για την ανάπτυξη του pfSense. Είδα εξάλλου πολλές αναφορές σε προτάσεις από ALIX (βλ. π.χ. το https://linitx.com/product/linitx-apu-1d-3nicusbrtc-pfsense-msata-firewall-kit-red/14095), Soekris (http://soekris.com) και Netgate. Αν πάντως έπρεπε να επιλέξω γρήγορα, ομολογώ πως τότε θα πήγαινα προς το Jetway (αλλά με 4GiB RAM).

  3. mrvga.gr | 26/12/2017 at 14:03

    Καλησπέρα Χρήστο και χρόνια πολλά
    Τι γίνεται σε περίπτωση που πέσει το tunnel, τότε πέφτει αυτό αλλά το interface θεωρείται ακόμα up? Και συνεχίζουν να είναι και ενεργοί οι κανόνες του firewall για το gateway και γίνονται match για τις συσκευές και απλά δεν έχουν internet, ή απενεργοποιούνται το σχετικό interface και ο κανόνας του firewall για το gateway και οι συσκευές που πρέπει να βγαίνουν από το vpn όπως το seedbox τότε έχουν internet μέσω του ISP?

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

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