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

SSH tunneling μαζί με Tor: Δύο καλά σε ένα homemade πακέτο!

Το SSH tunneling είναι μια τεχνική κατά την οποία μπορούμε, μεταξύ άλλων, να σερφάρουμε χωρίς να κινδυνεύουμε από επιθέσεις man in the middle. Το σύστημα Tor, από την άλλη, μας παρέχει άριστη ανωνυμία στο web. Τι θα λέγατε αν συνδυάζαμε και τα δύο, ώστε να ‘χουμε ένα εξαιρετικά ωφέλιμο πάντρεμα μεταξύ privacy και anonymity;

Δεν νομίζουμε ότι θα λέγατε όχι, ειδικά από τη στιγμή που μπορούμε να κάνουμε το γάμο να δουλέψει χωρίς να ξοδέψουμε ούτε ένα ευρώ! Το μόνο που χρειαζόμαστε είναι μια εγκατάσταση Linux, σε αληθινό ή εικονικό υπολογιστή. Αυτό το Linux box ή VM πρέπει να βρίσκεται είτε στο σπίτι μας είτε σε κάποιον άλλο χώρο, στον οποίο τέλος πάντων έχουμε απόλυτο έλεγχο πάνω στο LAN κι εμπιστευόμαστε τους χρήστες του. Ο συγκεκριμένος υπολογιστής πρέπει φυσικά να ‘ναι διαρκώς online, να δέχεται συνδέσεις SSH και να τρέχει το Tor. Από κει και πέρα, ανεξαρτήτως του υπολογιστή-πελάτη και του λειτουργικού που τρέχει, ανά πάσα στιγμή μπορούμε να συνδεόμαστε απομακρυσμένα και με ασφάλεια στο Linux box/VM μέσω SSH tunneling και μάλιστα να χρησιμοποιούμε το Tor που βρίσκεται εκεί, ώστε να σερφάρουμε με ασφάλεια αλλά *και* ανώνυμα.

Συγκεκριμένα, στο παρόν άρθρο θα δούμε αναλυτικά τα ακόλουθα:

  1. πώς να στήσουμε τα Tor και Polipo σ’ ένα Ubuntu Server 10.10 VMware VM, φτιάχνοντας ουσιαστικά ένα βολικό virtual appliance
  2. πώς ακριβώς να χρησιμοποιούμε το virtual appliance για anonymous surfing από οποιοδήποτε μηχάνημα του τοπικού δικτύου
  3. πώς να κάνουμε SSH tunneling προς το virtual appliance και να σερφάρουμε με ασφάλεια από ένα οποιοδήποτε μηχάνημα *εκτός* τοπικού δικτύου, μάλιστα ανεξαρτήτως του λειτουργικού συστήματος που τρέχει
  4. πώς να συνδυάζουμε το SSH tunneling με το Tor, ώστε να σερφάρουμε με ασφάλεια από παντού και να ‘χουμε *και* την ανωνυμία μας

Το FoxyProxy Standard είν' ένα θαυμάσιο extension για το Firefox το οποίο επιτρέπει τον εύκολο ορισμό proxies και τη χειροκίνητη ή αυτόματη επιλογή καθενός εξ αυτών ανάλογα με την περίσταση. Εδώ, το χρησιμοποιούμε για να ορίσουμε έναν proxy προς το Polipo, το οποίο τρέχει στο virtual appliance του τοπικού μας δικτύου.Σε κάθε proxy που ορίζουμε με το FoxyProxy προτείνεται να δίνουμε ένα περιγραφικό, βολικό όνομα. Είναι σημαντικό να το κάνουμε αυτό, ειδικά αν δουλεύουμε με δύο ή περισσότερους proxies.Όπως πάντα, θα παρουσιάσουμε τα παραπάνω αναλυτικά και βήμα προς βήμα. Για την συνέχεια παίρνουμε ως δεδομένο ότι το Ubuntu Server είναι ήδη εγκατεστημένο και online, με διεύθυνση IP από το LAN μέσα στο οποίο βρίσκεται. (Πρακτικά, για την περίπτωση VMware VM αυτό σημαίνει ότι η μηχανή χρησιμοποιεί bridged networking.) Επίσης, θεωρούμε ότι στο Ubuntu λειτουργεί ήδη SSH server καθώς κι ότι δέχεται συνδέσεις. Αυτά τα ολίγα, ας περάσουμε τώρα στη δράση.

Ubuntu Server με static IP

Εξ ορισμού, μετά την εγκατάσταση του Ubuntu Server το λειτουργικό σύστημα παίρνει δυναμικά IP από τον όποιο διαθέσιμο DHCP server. Όμως για τους σκοπούς που θέλουμε να υπηρετεί το υπό συζήτηση virtual appliance είναι προτιμότερο το λειτουργικό να ‘χει στατικό IP. Για να το πετύχουμε αρκεί να τροποποιήσουμε, με δικαιώματα υπερχρήστη, το αρχείο /etc/network/interfaces. Μετά την εγκατάσταση του Ubuntu, το εν λόγω αρχείο θα περιλαμβάνει δυο γραμμές σαν τις ακόλουθες:

auto eth0
iface eth0 inet dhcp

Αυτές σημαίνουν ότι το network interface με όνομα eth0 παίρνει δυναμικά IP με τη βοήθεια DHCP client. Τις γραμμές αυτές αρκεί να τις αντικαταστήσουμε με κάποιες που θα μοιάζουν με τις ακόλουθες:

auto eth0
iface eth0 inet static
address 192.168.1.6
netmask 255.255.255.0
gateway 192.168.1.1

Για τις δικές μας ανάγκες αναθέσαμε στο λειτουργικό το στατικό IP 192.168.1.6 και του υποδείξαμε τον gateway (router) του τοπικού δικτύου, ο οποίος είχε διεύθυνση 192.168.1.1. Προφανώς, εσείς θα αναθέσετε τις κατάλληλες τιμές για το δικό σας δίκτυο. Αφού αποθηκεύσουμε τις αλλαγές στο /etc/network/interfaces είναι καλή ιδέα να ορίσουμε ρητά και τους nameservers που θέλουμε να χρησιμοποιεί το λειτοργικό. Αυτοί ορίζονται στο αρχείο /etc/resolv.conf, ένας σε κάθε γραμμή. Τώρα, για να επανεκκινήσουμε το σύστημα δικτύωσης και να ληφθούν υπόψη οι αλλαγές, αρκεί να δώσουμε, διαδοχικά, κάτι τέτοιο:

sub0@ubutu-server:~$ sudo ifdown eth0
sub0@ubutu-server:~$ sudo ifup eth0

1. Εγκατάσταση Tor και Polipo

Βήμα 1.1

Κάνουμε login στο Ubuntu μας και προσθέτουμε ένα νέο repository για το Tor:

sub0@ubuntu-server:~$ echo "deb http://deb.torproject.org/torproject.org maverick main" | sudo tee -a /etc/apt/sources.list
deb http://deb.torproject.org/torproject.org maverick main

sub0@ubuntu-server:~$ tail /etc/apt/sources.list
# deb http://extras.ubuntu.com/ubuntu maverick main
# deb-src http://extras.ubuntu.com/ubuntu maverick main

deb http://security.ubuntu.com/ubuntu maverick-security main restricted
deb-src http://security.ubuntu.com/ubuntu maverick-security main restricted
deb http://security.ubuntu.com/ubuntu maverick-security universe
deb-src http://security.ubuntu.com/ubuntu maverick-security universe
deb http://security.ubuntu.com/ubuntu maverick-security multiverse
deb-src http://security.ubuntu.com/ubuntu maverick-security multiverse
deb http://deb.torproject.org/torproject.org maverick main

Μια χαρά, αφού όπως βλέπουμε κι από τη δεύτερη εντολή το αρχείο sources.list ενημερώθηκε επιτυχώς. Στη συνέχεια εισάγουμε το GnuPG key που χρησιμοποιείται για την υπογραφή των πακέτων του νέου repository (δεν πιστεύουμε ακόμη να μην έχετε διαβάσει τα άρθρα μας πάνω στο GnuPG, που έχουμε δημοσιευμένα εδώ κι εδώ;!)

sub0@ubuntu-server:~$ gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg: key 886DDD89: public key "deb.torproject.org archive signing key" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

sub0@ubuntu-server:~$ gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
OK
Βήμα 1.2

Ενημερώνουμε τα repositories του Ubuntu μας

sub0@ubuntu-server:~$ sudo apt-get update
...
Fetched 4,714B in 2s (1,936B/s)
Reading package lists... Done

κι ακολούθως εγκαθιστούμε το Tor:

sub0@ubuntu-server:~$ sudo apt-get install -y tor tor-geoipdb
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libevent-1.4-2 libreadline5 polipo socat tsocks
Suggested packages:
  mixmaster mixminion anon-proxy
The following NEW packages will be installed:
  libevent-1.4-2 libreadline5 polipo socat tor tor-geoipdb tsocks
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,307kB of archives.
After this operation, 8,557kB of additional disk space will be used.
...
Fetched 3,307kB in 3s (991kB/s)      
Selecting previously deselected package libevent-1.4-2.
(Reading database ... 71396 files and directories currently installed.)
...
Starting tor daemon: tor...
Apr 12 14:01:35.282 [notice] Tor v0.2.1.30. This is experimental software. Do not rely on it for strong anonymity. (Running on Linux i686)
Apr 12 14:01:35.284 [notice] Initialized libevent version 1.4.13-stable using method epoll. Good.
Apr 12 14:01:35.284 [notice] Opening Socks listener on 127.0.0.1:9050
done.
Setting up socat (1.7.1.3-1) ...
Setting up tor-geoipdb (0.2.1.30-1~maverick+1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

Μαζί με το πακέτο ονόματι tor εγκαταστήσαμε και το tor-geoipdb που παρέχει μια βάση δεδομένων με πληροφορίες GeoIP, μ’ άλλα λόγια αντιστοιχήσεις διευθύνσεων IPv4 και χωρών. Όπως εξάλλου θα παρατηρήσατε και στην έξοδο του apt-get, ένα άλλο πακέτο που εγκαταστάθηκε αυτόματα είναι το Polipo. Πρόκειται για έναν web proxy που χρησιμοποιείται σε συνδυασμό με το Tor και συμβάλλει στην ενίσχυση του privacy ενώ ταυτόχρονα βελτιώνει και την εμπειρία χρήσης, αφού χάρη σ’ αυτό το surfing μέσω του δικτύου Tor φαίνεται αισθητά βελτιωμένο. Θα είδατε, τέλος, ότι μετά την εγκατάστασή του Tor ο ομώνυμος daemon (αλλά με πεζό t) ενεργοποιείται αυτόματα.

Βήμα 1.3

Το αρχείο ρυθμίσεων του Polipo είναι το /etc/polipo/config και για να χρησιμοποιήσουμε τον web proxy σε συνδυασμό με το Tor χρειάζεται να το τροποποιήσουμε κατάλληλα. Αλλά αντί να πειράξουμε οι ίδιοι το αρχείο ρυθμίσεων μπορούμε να πάρουμε απευθείας αυτό που παρέχεται επίσημα από το Tor project:

sub0@ubuntu-server:~$ wget --no-check-certificate https://gitweb.torproject.org/torbrowser.git/blob_plain/HEAD:/build-scripts/config/polipo.conf
--2011-04-12 14:41:47--  https://gitweb.torproject.org/torbrowser.git/blob_plain/HEAD:/build-scripts/config/polipo.conf
Resolving gitweb.torproject.org... 38.229.70.11, 2620:0:6b0:b:250:56ff:fe99:21
Connecting to gitweb.torproject.org|38.229.70.11|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified 
Saving to: `polipo.conf'

    [ <=> ] 3,904       --.-K/s   in 0.001s  

2011-04-12 14:41:49 (4.60 MB/s) - `polipo.conf' saved [3904]

Το αρχειάκι polipo.conf που μόλις κατεβάσαμε μεταφέρουμε *πάνω* από το /etc/polipo/config

sub0@ubuntu-server:~$ sudo mv polipo.conf /etc/polipo/config

Αμέσως μετά επανεκκινούμε το Polipo:

sub0@ubuntu-server:~$ sudo /etc/init.d/polipo restart
Restarting polipo: polipo.

Μια χαρά όλα.

2. Χρήση του virtual appliance για ανώνυμο surfing μέσα από το LAN

Δεν έχουμε επιλεγμένο κάποιον proxy μέσα από το FoxyProxy, οι ρυθμίσεις το Firefox όσον αφορά στους proxies είναι οι προκαθορισμένες, επομένως *δεν* σερφάρουμε μέσα από τον anonymous proxy του τοπικού virtual appliance.

Μέσω του FoxyProxy επιλέγουμε τώρα τον proxy που ορίσαμε προηγουμένως και, όπως βλέπουμε με μια επίσκεψη στο https://check.torproject.org, σερφάρουμε πλέον μέσα από το δίκτυο ανωνυμίας του Tor!

 

Αυτή τη φορά λέμε στο FoxyProxy ότι το 127.0.0.1:9050 είν' ένας SOCKS proxy. Αν αναρωτιέστε γιατί το κάνουμε αυτό, μάλλον είναι επειδή δεν έχετε διαβάσει ακόμα το παρόν άρθρο. Και για να μη σας κρατάμε σε αγωνία, σας λέμε από τώρα ότι ο νέος αυτός proxy έχει να κάνει με SSH tunneling.

Βήμα 2.1

Όπως είναι ρυθμισμένο το Polipo, οι μόνες εφαρμογές που μπορούν να το χρησιμοποιούν είναι όσες τρέχουν στο Ubuntu box, τοπικά. Αυτό όμως δεν είναι πολύ χρήσιμο για την περίπτωσή μας, αφού θέλουμε απ’ όλα τα μηχανήματα του τοπικού δικτύου να ‘ναι δυνατή η χρήση του Polipo, επομένως και του Tor. Μικρό το κακό, αφού αρκούν ορισμένες μικρές αλλαγές στο αρχείο /etc/polipo.config. Με δικαιώματα υπερχρήστη και με τη βοήθεια ενός text editor όπως είναι το nano, ανοίγουμε το αρχείο προς επεξεργασία:

sub0@ubuntu-server:~$ sudo nano -w /etc/polipo/config

Κάνουμε τις ακόλουθες δύο αλλαγές:

  • Αλλάζουμε το proxyAddress = "127.0.0.1" σε proxyAddress = "0.0.0.0"
  • Αλλάζουμε το allowedClients = "127.0.0.1" σε κάτι σαν allowedClients = "192.168.1.0/24". Εμείς βάλαμε 192.168.1.0/24, αφού τα μηχανήματα στο τοπικό μας δίκτυο παίρνουν διευθύνσεις IP της μορφής 192.168.1.*. Ελέγξτε τι ισχύει στο δικό σας δίκτυο και τροποποιήστε τη μεταβλητή allowedCients αναλόγως.

Αποθηκεύουμε τις αλλαγές στο αρχείο (π.χ., στο nano πατάμε το συνδυασμό πλήκτρων [CTRL+O], μετά το [Enter] κι έπειτα το [CTRL+X]) κι επανεκκικούμε το Polipo μ’ ένα

sub0@ubuntu-server:~$ sudo /etc/init.d/polipo restart
Restarting polipo: polipo.
Βήμα 2.2

Από έναν web browser ενός οποιουδήποτε μηχανήματος του LAN μας μπορούμε πλέον να χρησιμοποιούμε το Polipo -και συνεπώς το Tor- για ανώνυμο web surfing. Απαραίτητη προϋπόθεση είναι να ρυθμίζουμε κατάλληλα τους proxy servers που χρησιμοποιεί ο εκάστοτε browser. Γενικά, το Polipo ακούει για αιτήσεις πελατών στο port 8118. Ειδικά στην περίπτωσή μας, η διεύθυνση IP του Ubuntu Server, στον οποίο έτρεχε το Polipo, ήταν η 192.168.1.6. Επομένως, τους web browser που θέλαμε να χρησιμοποιούν το Tor τους στρέφαμε στον proxy 192.168.1.6:8118. Ένα βολικό extension για τον Firefox (της έκδοσης 4 συμπεριλαμβανομένης), το οποίο μας επιτρέπει ν’ αλλάζουμε εύκολα μεταξύ διαφορετικών proxy είναι το FoxyProxy Standard. Προτείνουμε να το εγκαταστήσετε και να φτιάξετε ένα νέο entry για τον Polipo proxy που τρέχει στο virtual appliance. Δείτε και τις σχετικές φωτογραφίες για περισσότερες λεπτομέρειες.

3. SSH tunneling προς το virtual appliance

Το Ubuntu Server VM έχει ήδη σηκωμένο SSH server -για την ακρίβεια τον OpenSSH- και συνεπώς δέχεται συνδέσεις SSH από τον έξω κόσμο – προφανώς και με τη βοήθεια του κατάλληλου κανόνα port forwarding στον router του τοπικού δικτύου. Τώρα, αν το μηχάνημα-πελάτης τρέχει Linux, *BSD ή Mac OS X, τότε το SSH tunneling επιτυγχάνεται σχετικά εύκολα και το πώς ακριβώς περιγράφεται, π.χ., στην παράγραφο SSH tunneling from Linux/BSD/Mac OS X αυτού του άρθρου μας στο Parabing.

Web surfing χωρίς SSH tunneling. Παρατηρήστε τη διεύθυνση IP που έχει το μηχάνημά μας, τη γεωγραφική μας περιοχή καθώς και τον ISP μέσα από τον οποίο φαίνεται να βγαίνουμε στο Internet.

Web surfing *με* SSH tunneling. Η γεωγραφική θέση είναι ίδια όπως και προηγουμένως, μόνο που τώρα φαίνεται να βγαίνουμε στο Internet με διαφορετικό IP και διαφορετικό ISP.Αν από την άλλη το μηχάνημα-πελάτης τρέχει Windows, τότε το SSH tunneling εξακολουθεί να ‘ναι εύκολο και τώρα γίνεται με τη βοήθεια του πολύ γνωστού, δωρεάν προγράμματος PuTTY. Με την προϋπόθεση ότι η βασική χρήση του PuTTY είναι γνωστή, ας δούμε πώς εγκαθιδρύουμε ένα SSH tunnel προς το virtual appliance που έχουμε στο σπίτι. Σημειώστε ότι χάρη σε μια υπηρεσία dynamic DNS, όπως είναι αυτή του DynDNS, το VM είναι εύκολα προσβάσιμο από τον έξω κόσμο μέσω του δημόσιου, δυναμικού IP που έχει ο ADSL router του LAN. Στο παράδειγμα που ακολουθεί, χάρη στο DynDNS του έχουμε αντιστοιχισμένο το όνομα rambaldi.thruhere.net και το SSH tunneling γίνεται προς το port 19595. Χάρη στον κατάλληλο κανόνα port forwarding που έχουμε ορίσει στον router, το port 19595 στο WAN interface της συσκευής αντιστοιχίζεται στο default SSH port (22) του box με διεύθυνση IP 192.168.1.6, που δεν είναι άλλο από το virtual appliance. Αλλά ας στρέψουμε τώρα την προσοχή μας στο PuTTY.

Βήμα 3.1

Στο παράθυρο PuTTY Configuration βεβαιωθείτε ότι το προφίλ που θέλετε είναι επιλεγμένο και μετά κάντε κλικ στο κουμπί Load, στα δεξιά.Στο παράθυρο PuTTY Configuration βεβαιωθείτε ότι το προφίλ που θέλετε είναι επιλεγμένο και μετά κάντε κλικ στο κουμπί Load, στα δεξιά.

 

 

 

 

Βήμα 3.2

Στ' αριστερά του παραθύρου PuTTY Configuration υπάρχει το κάθετο πλαίσιο με όνομα Category. Σ' αυτό, επιλέξτε Connection --> SSH --> Tunnels. Παρατηρήστε το πλαίσιο Source port, στα δεξιά του παραθύρου. Εκεί μέσα, πληκτρολογήστε 1080. Από κάτω βεβαιωθείτε ότι τα Dynamic και Auto είναι επιλεγμένα, μετά πατήστε στο κουμπί Add. Στο πλαίσιο από πάνω θα δείτε μια νέα καταχώρηση - στο παράδειγμά μας D1080.Στ’ αριστερά του παραθύρου PuTTY Configuration υπάρχει το κάθετο πλαίσιο με όνομα Category. Σ’ αυτό, επιλέξτε Connection –> SSH –> Tunnels. Παρατηρήστε το πλαίσιο Source port, στα δεξιά του παραθύρου. Εκεί μέσα, πληκτρολογήστε 1080. Από κάτω βεβαιωθείτε ότι τα Dynamic και Auto είναι επιλεγμένα, μετά πατήστε στο κουμπί Add. Στο πλαίσιο από πάνω θα δείτε μια νέα καταχώρηση – στο παράδειγμά μας D1080.

 

 

Βήμα 3.3

Στο κάθετο πλαίσιο με όνομα Category πατήστε στο Session (πάνω), μετά άλλη μια φορά στο κουμπί Save (δεξιά). Μόλις τροποποιήσατε επιτυχώς το προφίλ για το rambaldi κι αποθηκεύσατε τις αλλαγές.Στο κάθετο πλαίσιο με όνομα Category πατήστε στο Session (πάνω), μετά άλλη μια φορά στο κουμπί Save (δεξιά). Μόλις τροποποιήσατε επιτυχώς το προφίλ για το rambaldi κι αποθηκεύσατε τις αλλαγές.

 

 

 

Βήμα 3.4

Στο κάτω μέρος του παραθύρου PuTTY configuration πατήστε στο κουμπί Open για να συνθεθείτε μέσω SSH στο απομακρυσμένο μηχάνημα. Μετά από επιτυχή σύνδεση, είστε σχεδόν έτοιμος: Απλά ρυθμίστε τον web browser σας ώστε να χρησιμοποιεί το 127.0.0.1:1080 ως SOCKS proxy κι εφεξής η επικοινωνία της εφαρμογής με τον έξω κόσμο θα γινεται μέσω του ασφαλούς, κρυπτογραφημένου καναλιού από τον υπολογιστή σας προς το απομακρυσμένο virtual appliance. Φυσικά, αν είστε στον Firefox τότε για τη ρύθμιση του SOCKS proxy μπορείτε να καταφύγετε στις υπηρεσίες του FoxyProxy.Στο κάτω μέρος του παραθύρου PuTTY configuration πατήστε στο κουμπί Open για να συνθεθείτε μέσω SSH στο απομακρυσμένο μηχάνημα. Μετά από επιτυχή σύνδεση, είστε σχεδόν έτοιμος: Απλά ρυθμίστε τον web browser σας ώστε να χρησιμοποιεί το 127.0.0.1:1080 ως SOCKS proxy κι εφεξής η επικοινωνία της εφαρμογής με τον έξω κόσμο θα γινεται μέσω του ασφαλούς, κρυπτογραφημένου καναλιού από τον υπολογιστή σας προς το απομακρυσμένο virtual appliance. Φυσικά, αν είστε στον Firefox τότε για τη ρύθμιση του SOCKS proxy μπορείτε να καταφύγετε στις υπηρεσίες του FoxyProxy.

4. SSH tunneling σε συνδυασμό με το Tor

Υπάρχουν δύο περιπτώσεις εδώ κι έχουν να κάνουν με το λειτουργικό σύστημα στο μηχάνημα-πελάτη.

Περίπτωση 1: Linux, *BSD ή Mac OS X

Η σύνδεση μέσω SSH tunnel στο virtual appliance και η χρήση του Tor για web surfing γίνεται από ένα τερματικό, ως ακολούθως:

mbblack:~ cvar$ ssh -f -C -N -p 10606 -L 9050:127.0.0.1:9050 sub0@rambaldi.thruhere.net

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

-N Δεν θέλουμε να εκτελέσουμε κάποια εντολή στο απομακρυσμένο σύστημα
-f Πριν εκτελεστεί οποιαδήποτε εντολή, θέλουμε το ssh να πάει στο background
-C Ενεργοποίηση της συμπίεσης δεδομένων
-p Το port που χρησιμοποιεί ο απομακρυσμένος SSH server. Εξ ορισμού είναι το 22, αλλά στη δική μας περίπτωση το virtual appliance είναι πίσω από κάποιον ADSL router κι ο κανόνας port forwarding που έχουμε εκεί ανακατευθύνει όλο το traffic στο port 10606 του router προς το 22 του appliance.
-L Καθορίζει ότι ένα συγκεκριμένο port στον SSH client ανακατευθύνεται σε συγκεκριμένο IP και port στη μεριά που βρίσκεται ο SSH server. Στη δική μας περίπτωση, το τοπικό port 9050 το ανακατευθύνουμε στο port 9050 του localhost (127.0.0.1) του virtual appliance, μ’ άλλα λόγια εκεί που ακούει το Tor για αιτήσεις πελατών! Γενικά, η ανακατεύθυνση επιτυγχάνεται αντιστοιχίζοντας ένα socket για το τοπικό port. Περισσότερα για την εξαιρετικά χρήσιμη παράμετρο -L μπορείτε να διαβάσετε στο man page του ssh.

Τέλος, μαζί με τις παραμέτρους που δίνουμε στο ssh καθορίζουμε το λογαριασμό και τ’ όνομα του μηχανήματος στο οποίο επιχειρούμε να συνδεθούμε. Στη δική μας περίπτωση ο λογαριασμός ήταν εκείνος του sub0 και, χάρη στο DynDNS, το δημόσιο όνομα του SSH server ήταν rambaldi.thruhere.net.

Το virtual appliance που έχουμε στήσει στο σπίτι δέχεται συνδέσεις SSH και τρέχει το tor. Από ένα δίκτυο εκτός του οικιακού, αρχίζουμε τις δοκιμές. Σε πρώτη φάση δεν χρησιμοποιούμε κανέναν proxy. Παρατηρήστε το IP, τη γεωγραφική περιοχή καθώς και τον ISP που φαίνεται να έχουμε. Σ' αυτό το στάδιο δεν έχουμε ούτε privacy, ούτε anonymity.

Σε δεύτερη φάση ενεργοποιούμε τον SOCKS proxy για το SSH tunneling προς το virtual appliance. Πλέον διεύθυνση IP και ISP αλλάζουν, η γεωγραφική περιοχή όμως παραμένει ίδια. Προς το παρόν, έχουμε κερδίσει privacy αλλά όχι anonymity.Σε τρίτη φάση κάνουμε SSH tunneling προς το virtual appliance και ταυτόχρονα χρησιμοποιούμε και τον tor daemon που τρέχει σ' αυτό. Αυτή τη φορά όλα είναι αλλαγμένα. Φαινόμαστε να έχουμε διαφορετικό IP και διαφορετικό ISP, ενώ η γεωγραφική μας περιοχή βρίσκεται κάπου στη Γερμανία! Συνδυάζοντας λοιπόν SSH tunneling και Tor, κερδίζουμε privacy αλλά *και* anonymity!Εξ ορισμού, τα DNS queries που κάνει ο Firofox είναι τοπικά, πράγμα που σημαίνει ότι ακόμη κι αν σερφάρετε μέσω κάποιου SSH tunnel τα queries απαντώνται από τον name server του δικτύου στο οποίο βρίσκεστε. Αυτό δεν είναι κατ' ανάγκη κακό, υπάρχουν όμως περιπτώσεις που θέλετε ν' αποφεύγετε τέτοιου είδους "DNS leaks". Μπορεί, π.χ., ο εργοδότης σας να είναι πολύ αυστηρός με τη χρήση του Internet και συνεπώς δεν θέλετε ο διαχειριστής δικτύου να δει ότι σερφάρετε στο killing-time-on-the-expense-of-muh-boss.com (το domain είναι φανταστικό, όμως νομίζουμε ότι καταλαβαίνετε τι προσπαθούμε να πούμε :D). Ευτυχώς, την προκαθορισμένη αυτή συμπεριφορά του Firefox μπορούμε εύκολα να την αλλάξουμε. Αρκεί να πληκτρολογήσουμε about:config (συνοδευόμενο από ένα [Enter]) στην address bar κι από τη θυρίδα Filter ν' αναζητήσουμε το network.proxy.socks_remote_dns (1).Από τη γραμμή που εμφανίζεται από κάτω γίνεται προφανές ότι τα queries γίνονται τοπικά. Μ' ένα κλικ πάνω στη γραμμή, η τιμή της μεταβλητής network.proxy.socks_remote_dns αλλάζει από false σε true και είμαστε εντάξει (2).Αφού γίνει η σύνδεση, αρκεί να ρυθμίσουμε τον αγαπημένο μας web browser ώστε να χρησιμοποιεί το 127.0.0.1:9050 ως SOCKS proxy. Κατά τα γνωστά, ένας εύκολος και βολικός τρόπος για να το πετύχουμε στο Firefox, είναι μέσα από το extension FoxyProxy Standard. Πλέον, ο web browser θα επικοινωνεί κρυπτογραφημένα με το virtual appliance μέσω του SSH tunnel και *μετά* θα βγαίνει στο Internet. Χάρη και στην ανακατεύθυνση προς τον tor daemon που τρέχει εκεί, θα κυκλοφορεί *και* ανώνυμα. Σημειώστε ότι ανά πάσα στιγμή μπορούμε να τερματίσουμε το κανάλι προς το virtual appliance ως εξής:

mbblack:~ cvar$ ps aux | grep 'ssh[ ]'
cvar     13538   0.0  0.0  2435168    252   ??  Ss    9:14PM   0:00.00 ssh -f -C -N -L 9050:127.0.0.1:9050 sub0@rambaldi.thruhere.net
mbblack:~ cvar$ kill 13538
Περίπτωση 2: Windows

Κατά τα αναμενόμενα, για άλλη μια φορά καταφεύγουμε στις υπηρεσίες του PuTTY. Τρέχουμε το πρόγραμμα, φορτώνουμε το προφίλ που μας ενδιαφέρει (για το παράδειγμά μας εκείνο του rambaldi) κι από τ’ αριστερά ακολουθούμε τη διαδρομή Connection –> SSH –> Tunnels. Στα δεξιά, στη θυρίδα Source port, πληκτρολογούμε 9050. Στη θυρίδα Destination, από κάτω, γράφουμε 127.0.0.1:9050 κι ακολούθως πατάμε πάνω στο κουμπί Add. Στο πλαίσιο Forwarded ports θα πρέπει να δούμε την καταχώρηση "L9050 127.0.0.1:9050" (χωρίς τα εισαγωγικά). Αυτό ήταν. Αποθηκεύουμε τις αλλαγές στο προφίλ και συνδεόμαστε στο virtual appliance. Προσοχή: Δεν κλείνουμε το παράθυρο του PuTTY! Πλέον, αρκεί να κατευθύνουμε τον web browser της προτίμησής μας στον SOCKS proxy 127.0.0.1:9050 και θα σερφάρουμε με ασφάλεια αλλά *και* ανώνυμα, πάντα μέσα από το virtual appliance μας. Ανά πάσα στιγμή μπορούμε να διακόψουμε την ασφαλή επικοινωνία με το appliance πληκτρολογώντας exit στο παράθυρο τερματικού του PuTTY.

8 Responses to “SSH tunneling μαζί με Tor: Δύο καλά σε ένα homemade πακέτο!”

  1. sino | 04/03/2012 at 12:30

    Ενδιαφέρουσα ιδέα, cheers για το υπερπλήρες άρθρο.

  2. laurel | 04/03/2012 at 18:45

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

    sub0@ubutu-server:~$ sudo ifdup eth0

    Νομίζω πως εννοούσατε sudo ifup eth0.

    • subZraw | 04/03/2012 at 18:49

      Ωχ, τρομερό τυπογραφικό!
      Πάω να το διορθώσω τώρα κιόλας — να ‘σαι καλά :)

      • laurel | 04/03/2012 at 19:13

        Τίποτα, γι’ αυτό είμαστε εδώ! Επίσης δεν ξέρω γιατί, αλλά για κάποιον λόγο κατά την εγκατάσταση του tor όπως αναφέρεται στα παραπάνω βήματα αφήνεται να εννοηθεί ότι γίνεται και η εγκατάσταση του polipo, κάτι το οποίο δεν έγινε σε Ubuntu Server 11.10. Φυσικά διορθώνεται εύκολα με

        sudo apt-get install polipo

        Το αναφέρω με κάθε επιφύλαξη διότι ενδέχεται να έκανα/κατάλαβα κάτι λάθος εγώ.

        • subZraw | 04/03/2012 at 19:26

          Αχά. Ναι, αυτό το άρθρο είχε γραφτεί ένα περίπου χρόνο πριν — και τότε είχε χρησιμοποιηθεί το Ubuntu 10.10. Ίσως σήμερα χρειάζονται μερικές μικροαλλαγές, ωστόσο τα γραφόμενα μεταφέρονται/εφαρμόζονται άνετα και στο 11.10.

  3. h.n.y | 21/11/2012 at 23:45

    “How to become (almost?) invisible”…take a look..
    http://www.rootdamnit.eu/2011/12/10/virtualbox-tor-backtrack-aka-how-to-become-almost-invisible/

  4. natasa1 | 17/05/2014 at 23:30

    Συνδεομαι σε tor socks του vps μου με Mozilla και αλλαζοντας την καταλληλη ρυθμιση απο την καρτελα ρυθμισεων του Mozilla (about:config) περναω ολα τα DNS query over socks, ετσι μου ανοιγει και τα .onion site που πριν δεν ανοιγανε.
    Τωρα προσπαθω και συνδεομαι μεσω iphone και ipad (δεν ειναι αναγκαιω να ειναι jailbreak οι συσκευες) στον ιδιο socks χρησιμοποιώντας .pac file
    function FindProxyForURL(url, host)
    { return “SOCKS 9Χ.9ΧΧ.Χ54.312:9050”; }
    “τοποθετημενο σε web server και δηλωνοντας το στην καρτελα wifi -> μεσολαβητης proxy -> Αυτοματα)”
    Ολα καλα μεχρι εδω και σερφαρω ανωνυμα μεσω tor που εχω εγκατεστημενο στον vps. Τα DNS query ομως πως τα περναμε μεσω tor? Καμια ιδεα?
    Υπαρχει αντιστοιχο function στο .pac αλλα μαλλον κατι μου διαφευγει.

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

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