Ποια κίνηση εφαρμογής μεταφέρει πραγματικά μια προώθηση SSH;
Ένα κέλυφος, μια τοπική προώθηση, το SOCKS και η λειτουργία συσκευής σήραγγας εκθέτουν διαφορετικές διεπαφές. Ονομάστε αυτή που μπορεί να χρησιμοποιήσει η εφαρμογή σας πριν τη συγκρίνετε με ένα δρομολογημένο VPN.
Το τερματικό συνδέεται, η προτροπή εμφανίζεται και όλοι συμφωνούν ότι η πρόσβαση SSH λειτουργεί. Έπειτα ένας πελάτης βάσης δεδομένων στον φορητό υπολογιστή εξακολουθεί να μην φτάνει στον ιδιωτικό κεντρικό υπολογιστή και η συνεδρία κατηγορείται. Αυτό που χτίστηκε ήταν ένα κέλυφος, και είναι μία από τις τέσσερις αρκετά διαφορετικές διεπαφές που μπορεί να προσφέρει το SSH. Ονομάστε πρώτα τη διεπαφή και μετά ελέγξτε ότι η εφαρμογή τη χρησιμοποιεί πραγματικά. Η σειρά έχει σημασία, γιατί κάθε διεπαφή αποτυγχάνει με τον δικό της τρόπο.
Ονομάστε τη διεπαφή πριν συγκρίνετε οτιδήποτε
Το εγχειρίδιο του πελάτη OpenSSH διακρίνει τέσσερις μηχανισμούς που εύκολα συγχέονται. Ένα κέλυφος ή μια απομακρυσμένη εντολή εκτελείται στον κεντρικό υπολογιστή SSH. Μια τοπική προώθηση ανοίγει έναν ακροδέκτη αναμονής στον πελάτη και κάνει την περαιτέρω σύνδεση από την απομακρυσμένη πλευρά. Μια απομακρυσμένη προώθηση κάνει το αντίθετο, ακούγοντας στην πλευρά του διακομιστή. Η δυναμική προώθηση εκθέτει ένα τελικό σημείο SOCKS για προγράμματα που ξέρουν να το χρησιμοποιούν.
- Κέλυφος: το πρόγραμμα εκτελείται στο απομακρυσμένο μηχάνημα, τίποτα δεν ακούει τοπικά.
- Τοπική προώθηση: ο φορητός σας έχει θύρα, ο απομακρυσμένος κεντρικός υπολογιστής κάνει την εξερχόμενη σύνδεση.
- Απομακρυσμένη προώθηση: η απομακρυσμένη πλευρά έχει θύρα, η κίνηση επιστρέφει προς εσάς.
- Δυναμική: ένας διαμεσολαβητής SOCKS στον πελάτη, το χρησιμοποιούν μόνο εφαρμογές που καταλαβαίνουν διαμεσολαβητή.
Κανένα από αυτά δεν εγκαθιστά διαδρομή. Ένα πρόγραμμα που αγνοεί τις ρυθμίσεις διαμεσολαβητή, ή μιλάει UDP, ή επιλύει ονόματα μόνο του, δεν επηρεάζεται από μια ενεργή συνεδρία SSH. Αυτό δεν είναι σφάλμα του SSH· είναι το εύρος της διεπαφής που επιλέξατε.
Οι τοπικές, απομακρυσμένες και δυναμικές προωθήσεις διαφέρουν ως προς το ποιος ακούει
Η διάκριση που κρίνει τις περισσότερες περιπτώσεις είναι ποιος κατέχει τον ακροδέκτη αναμονής. Στην τοπική προώθηση ο πελάτης ακούει και το μακρινό άκρο καλεί τον προορισμό, γι’ αυτό η διεύθυνση προορισμού επιλύεται από τη σκοπιά του διακομιστή. Στην απομακρυσμένη προώθηση ο διακομιστής ακούει και η σύνδεση μεταφέρεται πίσω στην πλευρά σας, και έτσι εκθέτετε μια τοπική υπηρεσία χωρίς να τη δημοσιεύετε άμεσα.
ssh -N -L 5432:db.internal.example:5432 [email protected] ssh -N -D 1080 [email protected] ss -ltnp | grep -E '5432|1080'
Η πρώτη εντολή δεσμεύει τη θύρα 5432 στον φορητό και την προωθεί στη βάση δεδομένων όπως φαίνεται από το οχυρό. Η δεύτερη δημιουργεί έναν διαμεσολαβητή SOCKS στη θύρα 1080. Η τρίτη εντολή επιβεβαιώνει ποιες διεργασίες ακούν πραγματικά, και αυτή είναι η μόνη απόδειξη ότι η προώθηση υπάρχει αντί να έχει αποτύχει σιωπηλά σε σύγκρουση θυρών.
Η δυναμική προώθηση αξίζει δική της προειδοποίηση: καλύπτει μόνο εφαρμογές που σέβονται το SOCKS. Ένας περιηγητής μπορεί να στραφεί σε αυτό, σε ένα εργαλείο γραμμής εντολών μπορεί να ειπωθεί να το χρησιμοποιήσει, αλλά ένας οδηγός βάσης δεδομένων με δική του στοίβα συνδέσεων συνήθως δεν μπορεί. Η παραδοχή ότι κάθε πρόγραμμα στο μηχάνημα χρησιμοποιεί τώρα τη σήραγγα είναι το πιο συνηθισμένο λάθος σε όλη αυτή την περιοχή.
Η λειτουργία συσκευής σήραγγας είναι η μόνη πραγματική εξαίρεση δικτύου
Το OpenSSH υποστηρίζει επίσης προώθηση συσκευής σήραγγας -w, που περνά μια διεπαφή σημείου προς σημείο αντί για ακροατή TCP. Αυτή είναι γνήσια σήραγγα δικτύου, και ρυθμίζεται σκόπιμα, όχι ως παρενέργεια του ανοίγματος κελύφους.
sudo ssh -w 0:0 [email protected] ip addr show tun0
Χρειάζεται τους αντίστοιχους αριθμούς διεπαφών διαθέσιμους και στα δύο άκρα, τη σωστή διαμόρφωση στον διακομιστή και αρκετό προνόμιο στον πελάτη για τη δημιουργία της συσκευής. Χρειάζεται επίσης σχέδιο διευθυνσιοδότησης και δρομολόγησης, γιατί μια γυμνή διεπαφή δεν φέρει καμία πολιτική για το ποιοι προορισμοί πρέπει να τη χρησιμοποιούν.
Ακόμη και τότε, η σήραγγα τελειώνει στον μακρινό κεντρικό υπολογιστή. Όποια προστασία παρείχε η μεταφορά SSH τελειώνει εκεί, και η περαιτέρω σύνδεση είναι ξεχωριστό άλμα. Μια πύλη VPN έχει το ίδιο σχήμα ορίου, γι’ αυτό η σύγκριση πρέπει να αφορά το εύρος και τον τερματισμό και όχι το ποιο εργαλείο είναι ισχυρότερο. Το να ονομάσουμε αυτό το όριο φωναχτά λύνει επίσης τη διαφωνία για το αν μια σήραγγα «κρυπτογραφεί τα πάντα», γιατί προφανώς δεν το κάνει.
Ελέγξτε ότι η εφαρμογή σας χρησιμοποιεί τη διεπαφή που χτίσατε
Η επαλήθευση γίνεται ανά εφαρμογή, όχι ανά συνεδρία. Μια λειτουργική προώθηση αποδεικνύει ότι η θύρα είναι δεσμευμένη και το μακρινό άκρο μπορεί να καλέσει· δεν αποδεικνύει ότι το πρόγραμμα που σας ενδιαφέρει συνδέθηκε μέσω αυτής.
curl -sS --socks5-hostname 127.0.0.1:1080 -o /dev/null -w '%{http_code}\n' https://app.internal.example/health
psql "host=127.0.0.1 port=5432 dbname=app sslmode=require" -c 'select 1'Η πρώτη εντολή στέλνει αίτημα μέσω του τελικού σημείου SOCKS με το όνομα κεντρικού υπολογιστή να επιλύεται απομακρυσμένα, και η δεύτερη ασκεί την προωθημένη θύρα βάσης δεδομένων με το TLS να απαιτείται ακόμη. Εκτελέστε τις ίδιες δοκιμές με την προώθηση σταματημένη για να επιβεβαιώσετε ότι αποτυγχάνουν, γιατί μια δοκιμή που περνά και με τους δύο τρόπους δεν χρησιμοποιούσε ποτέ τη σήραγγα.
Έπειτα συγκρίνετε με ένα δρομολογημένο VPN μόνο στις διαστάσεις που μετράνε: ποιοι προορισμοί καλύπτονται, ποια πρωτόκολλα λειτουργούν, πού τελειώνει η προστασία και ποιος πρέπει να εγκρίνει την πρόσβαση. Μια προώθηση για μία υπηρεσία μπορεί να είναι η στενότερη και καλύτερη απάντηση, ενώ ένα VPN είναι το σωστό σχήμα όταν πολλές εφαρμογές χρειάζονται την ίδια διαδρομή δικτύου. Κανένα από τα δύο δεν παρέχει όλα όσα είναι προσβάσιμα από το μακρινό άκρο του.