!ΠΡΟΣΟΧΗ ΠΡΟΣ ΤΟΥΣ ΑΝΑΓΝΩΣΤΕΣ!

ΠΡΟΣΟΧΗ ΠΡΟΣ ΤΟΥΣ ΑΝΑΓΝΩΣΤΕΣ!
**** Σε αυτό το blog μερικά από τα άρθρα είναι αναδημοσιεύσεις από άρθρα του διαδικτύου και άλλα είναι προσωπικά tutorial που αναφέρονται σε διάφορα θέματα. Τα παραπάνω έγιναν για ενημέρωση του κοινού και εμπλουτισμό της εκπαιδευτικής διεύρυνσης. Όλα τα άρθρα είναι για εκπαιδευτικούς και μόνο σκοπούς. Δεν φέρω καμία ευθύνη εάν κάποιος αναγνώστης τα χρησιμοποιήσει κακόβουλα. ****

Τετάρτη 6 Φεβρουαρίου 2013

Βάλτε SSH server στα Windows

Οι φίλοι του Linux, του BSD αλλά και πολλοί από τον κόσμο του OS X, γνωρίζουν καλά τα οφέλη του πρωτοκόλλου SSH. Χάρη μάλιστα στο OpenSSH το χαίρονται καθημερινά, επιτυγχάνοντας απομακρυσμένες, ασφαλείς συνδέσεις στους υπολογιστές τους. Οι χρήστες των Windows μπορούν κι εκείνοι να καρπώνονται τα οφέλη του SSH. Σε αυτό το άρθρο δείχνουμε πώς ακριβώς.
Θα ξεκινήσουμε με μια πολύ σύντομη εισαγωγή στο πρωτόκολλο SSH και στα όσα προσφέρει, ακολούθως θα δείξουμε πώς εγκαθιστούμε και ρυθμίζουμε τα Cygwin και OpenSSH στα Windows 7 και, τέλος, θα δώσουμε μερικά παραδείγματα συνδέσεων ενώ θα εξηγήσουμε και πώς μπορούμε να σερφάρουμε με ασφάλεια μέσω των λεγόμενων SSH tunnels. Αυτό το τελευταίο μπορείτε να το σκέφτεστε ως μια απλούστερη εναλλακτική του OpenVPN, με τα πλεονεκτήματα αλλά και τα μειονεκτήματά της.

Τι είναι τα SSH και OpenSSH

Το Secure Shell ή αλλιώς SSH είναι ένα δικτυακό πρωτόκολλο που ορίζει έναν τρόπο για ασφαλείς, κρυπτογραφημένες συνδέσεις μεταξύ δύο μηχανημάτων. Οι κρυπτογραφημένες αυτές συνδέσεις είναι δυνατόν να επιτυγχάνονται και μέσω ενός επισφαλούς, εν γένει, δικτύου, όπως είναι το Internet. Το SSH συνήθως χρησιμοποιείται για την απομακρυσμένη, πλήρη πρόσβαση στη γραμμή εντολών διαφόρων Unix boxes, αλλά όχι μόνο. Συχνά, π.χ., επιστρατεύεται για ασφαλείς μεταφορές αρχείων, περιήγηση στο web μέσω των λεγόμενων SSH tunnels κ.ο.κ. Περισσότερα για το SSH μπορείτε να διαβάσετε στο σχετικό λήμμα της Wikipedia:


Το δε OpenSSH είναι ένα σύνολο προγραμμάτων για την υλοποίηση συνδέσεων SSH. Αναπτύχθηκε αρχικά στους κόλπους του OpenBSD project, αποτελεί Open Source Software και σήμερα διατίθεται για κάθε γνωστό κι άγνωστο σύστημα Unix, καθώς και για τα Windows. Το OpenSSH ακολουθεί τη λογική του μοντέλου client-server, όπως άλλωστε ορίζει το SSH. Σ' αυτό το άρθρο ασχολούμαστε με την εκδοχή του OpenSSH server για Windows, ενώ δείχνουμε φυσικά και πώς συνδεόμαστε σ' αυτόν από διάφορα λειτουργικά συστήματα, χρησιμοποιώντας τον κατάλληλο για την περίσταση client.

Εγκατάσταση Cygwin και OpenSSH

Το OpenSSH λειτουργεί σε Unixοειδή περιβάλλοντα. Ένα τέτοιο περιβάλλον για τα Windows παρέχεται από το Cygwin project. Για την εγκατάστασή του, κατεβάστε το προγραμματάκι setup.exe με κλικ στο


Αποθηκεύστε το σ' ένα βολικό μέρος. Είναι πολύ πιθανό να το χρειαστείτε κι αργότερα, π.χ., για την εγκατάσταση κάποιου έξτρα εργαλείου ή βιβλιοθήκης. Τρέξτε το setup.exe κι όταν ερωτηθείτε επιλέξτε εγκατάσταση από το Internet.

Όλα τα απαραίτητα πακέτα για την εγκατάσταση του Cygwin θα ληφθούν από το Internet.

Ως ριζικό κατάλογο (root directory) για την εγκατάσταση, αφήστε τον προεπιλεγμένο. Η εγκατάσταση καλό είναι να γίνει για όλους τους χρήστες του Windows box.

Αναφορικά με τον κατάλογο εγκατάστασης και τη διαθεσιμότητα του Cygwin στους χρήστες των Windows, αφήστε τις προεπιλογές.

Υποδείξτε έναν κατάλογο, μέσα στον οποίο το setup.exe θα κατεβάζει τα αρχεία της εγκατάστασης.

Πού θα αποθηκεύει τα πακέτα που κατεβάζει από το Internet το setup.exe, πριν την εγκατάστασή τους;

Αναφορικά με τη σύνδεσή σας στο Internet, αν χρειάζεται να διαλέξετε κάτι διαφορετικό από το Direct Connection, μάλλον θα το γνωρίζετε ήδη.

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

Επιλέξτε ένα κατά το δυνατόν κοντινό mirror, από το οποίο θα κατέβουν τα στοιχεία της εγκατάστασης.

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

Αν αυτή είναι η πρώτη φορά που εγκαθιστάτε το Cygwin, τότε μπορείτε να αγνοήσετε αυτό το ανησυχητικό, προειδοποιητικό μήνυμα.

Αυτό το μήνυμα αφορά μόνον εκείνους που αναβαθμίζουν μια υπάρχουσα εγκατάσταση του Cygwin.

Στο στάδιο της επιλογής πακέτων, εστιάστε την προσοχή σας στη θυρίδα Search, πάνω αριστερά. Πληκτρολογήστε εκεί "openssh", χωρίς τα εισαγωγικά. Από την κατηγορία πακέτων Net, διαλέξτε την τελευταία διαθέσιμη έκδοση του OpenSSH και τσεκάρετε το κουτάκι της στήλης Bin, ώστε να εγκατασταθούν τα αντίστοιχα binaries.

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

Επιλέγουμε προς εγκατάσταση το binary της τελευταίας διαθέσιμης έκδοσης, του πακέτου openssh.

Λόγω του αιτήματος σας για εγκατάσταση του OpenSSH, χρειάζονται και ορισμένα πρόσθετα πακέτα. Εννοείται ότι θα δεχθείτε την εγκατάστασή τους.

Για τη λειτουργία του OpenSSH χρειάζονται πρόσθετα πακέτα, την εγκατάσταση των οποίων φυσικά κι επιτρέπουμε.

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

Το περιβάλλον του Cygwin εγκαθίσταται από το Internet, όμορφα, ωραία, χωρίς απρόοπτα!

Μετά την εγκατάσταση, στο start menu των Windows θα υπάρχει μια καταχώρηση με όνομα Cygwin Terminal. Επιλέγοντάς τη ανοίγει ένα παράθυρο τερματικού, στο οποίο τρέχει το BASH shell του περιβάλλοντος Cygwin. Πληκτρολογήστε εντολές όπως:
uname -a
και
echo $SHELL
για να δείτε κι εσείς ότι τα Windows σας φιλοξενούν, πλέον, ένα πλήρες Unixοειδές περιβάλλον, το οποίο περιλαμβάνει και το δημοφιλέστατο BASH shell.

Το Cygwin έχει εγκατασταθεί επιτυχώς, κι αυτό είναι κάτι που φαίνεται *και* μέσα από το λεγόμενο Cygwin Terminal.

Ρύθμιση κι ενεργοποίηση OpenSSH

Ανοίξτε ένα Cygwin Terminal, αλλά με δικαιώματα administrator.

Για τη ρύθμιση κι ενεργοποίηση του OpenSSH, το Cygwin Terminal πρέπει να το τρέξουμε από το λογαριασμό του Administrator των Windows.

Στο τερματικό, πληκτρολογήστε
ssh-host-config
Δεχθείτε το privilege separation…

Για λόγους ασφαλείας, το OpenSSH είναι καλό να λειτουργεί στα πλαίσια ενός λογαριασμού με περιορισμένα δικαιώματα. Δεχθείτε, λοιπόν, το privilege separation.

όπως επίσης και τη δημιουργία ενός νέου, περιορισμένου account με όνομα sshd, εντός του οποίου θα λειτουργεί ο OpenSSH server. Ακολούθως, δεχθείτε την εγκατάσταση του server ως υπηρεσία (service) των Windows. Στην προτροπή "Enter the value of CYGWIN for the daemon", πατήστε απλά το [Enter]. Στα Windows 7 θα χρειαστεί να φτιάξετε ένα νέο, privileged account. Το σκριπτάκι ssh-host-config φροντίζει γι' αυτό και προτείνει το όνομα cyg_server. Φανταζόμαστε ότι δεν έχετε κανέναν λόγο να θέλετε κάποιο άλλο, οπότε στη σχετική ερώτηση γράψτε "no" (χωρίς τα εισαγωγικά) και πατήστε απλά το [Enter]. Μετά, στην ερώτηση για το αν επιθυμείτε τη δημιουργία του νέου account, δώστε "yes", ακολουθούμενο από [Enter] φυσικά. Μένει να δώσετε κι ένα password για τον λογαριασμό με όνομα cyg_server. Κάντε το και η διαδικασία ρύθμισης θα ολοκληρωθεί.

Στα Windows 7 απαιτείται και η δημιουργία ενός λογαριασμού με δικαιώματα υπερχρήστη. Ο λογαριασμός αυτός προστατεύεται φυσικά από password, που εμείς οι ίδιοι ορίζουμε.

Στο επόμενο reboot ο OpenSSH server θα ενεργοποιηθεί αυτόματα. Μπορείτε να τον σηκώσετε τώρα, χωρίς reboot, δίνοντας:
net start sshd
Αν όλα έχουν πάει καλά, ο OpenSSH server θα μπει σε λειτουργία και στο τερματικό του Cygwin θα δείτε τα δύο μηνύματα που φαίνονται στο ακόλουθο screenshot.

Ο OpenSSH server ενεργοποιήθηκε ως υπηρεσία των Windows και είναι έτοιμος για συνδέσεις εκ μέρους των διαφόρων SSH clients.

Εξ ορισμού, ο OpenSSH server χρησιμοποιεί το port 22. Πριν κάνετε την πρώτη σύνδεσή σας οφείλετε να βεβαιωθείτε ότι το port είναι ανοικτό στο firewall. Στην περίπτωση εκείνου που έχουν τα Windows 7, ανοίξτε το Control Panel κι ακολουθήστε τη διαδρομή System and Security --> Windows Firewall --> Advanced settings. Στο παράθυρο με τίτλο Windows Firewall with Advanced Security κάντε κλικ στο Inbound Rules (αριστερά) και μετά άλλο ένα στο New Rule... (δεξιά). Ακολουθήστε τα βήματα του οδηγού που θα εμφανιστεί, προκειμένου να επιτρέψετε τις εισερχόμενες στο port 22 συνδέσεις TCP.

Τώρα, όπως στην περίπτωσή μας έτσι και στη δική σας φανταζόμαστε ότι το Windows box βρίσκεται πίσω από κάποιο modem/router. Επομένως, στο firewall του router πρέπει να προσθέσετε και τον απαραίτητο κανόνα port forwarding, ώστε αιτήσεις για συνδέσεις TCP στο τάδε port του router να ανακατευθύνονται στο port 22/TCP του Windows box. Και γράφουμε "τάδε port του router" κι όχι "port 22 του router", επειδή για λόγους ασφαλείας είναι καλή ιδέα το port που βλέπει απευθείας το Internet να είναι κάποιο "άσχετο", πάνω από το 1024 (π.χ., το 2222).

Παραδείγματα συνδέσεων

Οι συνδέσεις SSH από Linux/BSD/OS X προς το Cygwin command shell του Windows box, γίνονται πανεύκολα: Το μόνο που χρειάζεται είναι το προγραμματάκι ssh, το οποίο και τρέχουμε από ένα οποιοδήποτε τερματικό. Για λόγους πληρότητας και μόνο, παραθέτουμε τη γενική του σύνταξη:
ssh -p remote_port remote_user_name@remote_box_ip_or_fqdn
Όταν το απομακρυσμένο port είναι το προκαθορισμένο (22), τότε η παράμετρος -p μπορεί να παραλείπεται. Επίσης, όταν το τοπικό user name είναι ίδιο με το απομακρυσμένο, τότε και το τμήμα "remote_user_name@" μπορεί να παραλείπεται.

Απομακρυσμένη σύνδεση στο Windows box, μέσω του πρωτοκόλλου SSH κι από το τερματικό ενός μηχανήματος που τρέχει Linux Mint. Είχατε συνηθήσει να κάνετε ή να ακούτε για το αντίστροφο, ε;

Για συνδέσεις από μηχανήματα Windows, ένα άριστο εργαλείο είναι το (δωρεάν) PuTTY.

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

Με χρήση του PuTTY, έχουμε συνδεθεί επιτυχώς μέσω SSH στο command shell ενός Windows box! 

Εκτός από πρόσβαση στο command shell του απομακρυσμένου Windows box, έχουμε τη δυνατότητα να στέλνουμε ή/και να παίρνουμε αρχεία από το μηχάνημα -- πάντα μέσω SSH. Το scp είναι ένα εργαλείο για Linux/BSD/OS X που χρησιμοποιείται από τη γραμμή εντολών και είναι κατάλληλο για τέτοιες μεταφορές. Μπορούμε όμως να χρησιμοποιούμε κι έναν οποιονδήποτε FTP client για το περιβάλλον γραφικών, αρκεί να υποστηρίζει συνδέσεις FTP πάνω από SSH (ή αλλιώς συνδέσεις SFTP). Ένα παράδειγμα τέτοιου client για Windows και OS X, είναι το δωρεάν Cyberduck. Ό,τι πρέπει είναι και το επίσης δωρεάν FileZilla, το οποίο διατίθεται για Windows/Linux/OS X.

Σύνδεση από Windows XP και FileZilla μέσω SSH, στον κατάλογο με τα αρχεία χρήστη ενός απομακρυσμένου Windows 7 box το οποίο τρέχει το OpenSSH.

Σημειώστε ότι κάθε φορά που συνδεόμαστε (μέσω SSH) στο λογαριασμό του χρήστη Windows με όνομα username, αυτομάτως προσγειωνόμαστε στον κατάλογο /home/username. Αυτό είναι το home directory του χρήστη username για το Cygwin. Τώρα, με την εντολή ls βλέπουμε ότι τα drives του συστήματος είναι προσαρτημένα κάτω από τον κατάλογο /cygwin. Αν υποθέσουμε ότι τα Windows είναι εγκατεστημένα στο C drive (το πιθανότερο), τότε τα αρχεία του χρήστη username για τα Windows θα είναι κάτω από το /cygdrive/c/Users/username. Καλό είναι να το έχουμε υπόψη αυτό, ειδικά για τις περιπτώσεις που θέλουμε να μεταφέρουμε αρχεία από ή προς το Windows box.

ΑΑΑΑΑΑΑΑΑΑ

OpenSSH vs OpenVPN

Οι απομακρυσμένες συνδέσεις σε υπολογιστή που τρέχει το OpenSSH είναι απόλυτα ασφαλείς, ενώ μας παρέχουν και κάποια έξτρα, όπως, π.χ., ξένοιαστο σερφάρισμα στο web (εκτός κι αν κάποιος σνιφάρει εντός του τοπικού δικτύου που τρέχει ο OpenSSH server, δηλαδή). Το OpenSSH θα μπορούσε κάποιος να το δει ως το μικρό αδελφάκι του OpenVPN. Χάρη στο τελευταίο, έχουμε πλήρη πρόσβαση στο τοπικό δίκτυο του υπολογιστή που τρέχει τον αντίστοιχο server. Επιπρόσθετα, σερφάρουμε με ασφάλεια στο web ενώ και οποιαδήποτε άλλη δικτυακή υπηρεσία περνάει μέσω του ασφαλούς, κρυπτογραφημένου καναλιού μεταξύ client και OpenVPN server. Όλα αυτά μάλιστα επιτυγχάνονται χωρίς να χρειαζόμαστε κάποιον proxy για μία ή περισσότερες εφαρμογές, όπως συμβαίνει στην περίπτωση του surfing μέσω SSH tunnel.
Αν επιχειρούσαμε μια σύγκριση μεταξύ OpenSSH και OpenVPN, εστιάζοντας τότε στα θετικά καθεμιάς εκ των δύο λύσεων θα μπορούσαμε να αναφέρουμε τα ακόλουθα:

OpenSSH. Εύκολο και γρήγορο setup, άριστη λύση για πλήρη πρόσβαση στο απομακρυσμένο box, δυνατότητα επιλεκτικού SSH tunneling (π.χ., HTTP/HTTPS traffic).

OpenVPN. Πλήρης πρόσβαση στο box αλλά και στο τοπικό δίκτυο εντός του οποίου βρίσκεται, αναδρομολόγηση όλης ανεξαιρέτως της δικτυακής κίνησης μέσω VPN tunnel (χωρίς την ανάγκη τοπικών proxies).

Το στήσιμο του OpenVPN απαιτεί περισσότερη δουλειά αλλά και πόρους, σε σχέση με το OpenSSH.

0 σχόλια:

Δημοσίευση σχολίου

Σημείωση: Μόνο ένα μέλος αυτού του ιστολογίου μπορεί να αναρτήσει σχόλιο.