Το sshuttle επιλέγεται επειδή το SSH λειτουργεί ήδη και η κρυπτογραφία φαίνεται γνωστή, και αυτή η λογική παρακάμπτει το μόνο ερώτημα που κρίνει αν ταιριάζει. Ποια πακέτα φεύγουν από το μηχάνημα, ποιος λογαριασμός τα μεταφέρει στην άλλη πλευρά και πόσα τοπικά δικαιώματα απαιτεί το εργαλείο. Αυτές οι τρεις απαντήσεις διαφέρουν ανάλογα με τη μέθοδο προώθησης, οπότε μια ρύθμιση που λειτουργεί για μία εφαρμογή μπορεί να αποτύχει αθόρυβα για την επόμενη. Η ανάλυση παρακάτω ξεκινά από το πρωτόκολλο που χρειάζεται πραγματικά η εφαρμογή.

Ξεκινήστε από το πρωτόκολλο που χρειάζεται η εφαρμογή

Η υποστήριξη πρωτοκόλλων στο sshuttle 2.0 εξαρτάται από τη μέθοδο που θα επιλέξετε. Οι μέθοδοι NAT και nft του Linux χειρίζονται TCP και DNS, και το TPROXY προσθέτει γενικό UDP. Κάθε πλατφόρμα και μέθοδος φέρνει τα δικά της όρια, και το macOS υποκλέπτει μέσω εντελώς διαφορετικού μηχανισμού. Καταγράψτε την εγκατεστημένη έκδοση, την επιλεγμένη μέθοδο και τα πρωτόκολλα που χρειάζεται η εφαρμογή πριν επιλέξετε οτιδήποτε.

Επομένως ένα επιτυχημένο αίτημα TCP αποδεικνύει ελάχιστα για μια εφαρμογή UDP ή για κάθε αναζήτηση DNS. Το sshuttle επίσης αντιμετωπίζει το TCP ως ροές αντί να διοχετεύει ολόκληρα πακέτα IP, οπότε ένα συμπέρασμα για τη διεκπεραίωση δανεισμένο από συμβατικό VPN δεν μεταφέρεται. Συγκρίνετε τον μηχανισμό που εκτελείτε πραγματικά με τον φόρτο που έχετε πραγματικά.

ApproachWhat it carriesWhat it needs locally
SSH local forwardOne explicitly named TCP destinationNothing beyond the SSH client
sshuttle, nft or nat methodTCP and DNS to the routed prefixesRoot or sudo for firewall rules
sshuttle, tproxy methodTCP, DNS and general UDPRoot or sudo, and kernel support
IP VPNRouted IP traffic in a tunnelA client with the required privileges

Τι χρειάζεται ο πελάτης τοπικά

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

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

sudo sshuttle --method nft --dns 172.19.4.0/24
nft list ruleset | grep -i sshuttle
ip route

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

Τι εκτελεί η απομακρυσμένη πλευρά

Η απομακρυσμένη πλευρά είναι ένας εξουσιοδοτημένος λογαριασμός SSH συν ένα συμβατό περιβάλλον βοηθού Python. Μια σύνδεση που πετυχαίνει σε περιορισμένο κέλυφος δεν παρέχει αυτόματα άδεια εκτέλεσης αυτού του βοηθού, και ένας λογαριασμός που μπορεί να εκτελέσει τον βοηθό δεν φτάνει αυτόματα σε κάθε υπηρεσία προορισμού. Και τα δύο γεγονότα ανήκουν στο αίτημα πρόσβασης και όχι στις σημειώσεις αντιμετώπισης προβλημάτων.

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

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

Πού βρίσκεται το όριο εμπιστοσύνης

Η προώθηση μιας ιδιωτικής σύνδεσης API μέσω SSH δεν εξουσιοδοτεί κάθε λειτουργία API. Το TLS της εφαρμογής και η σύνδεση στην εφαρμογή ισχύουν ακόμη, και το εργαλείο δεν μπορεί να κάνει ασφαλή μια υπηρεσία χωρίς ταυτοποίηση. Ούτε ένα επιπλέον άλμα από τον απομακρυσμένο υπολογιστή είναι αυτόματα το ίδιο προστατευμένο τμήμα με το κανάλι SSH, επειδή αυτή η δεύτερη σύνδεση ακολουθεί όποια πολιτική έχει ο απομακρυσμένος υπολογιστής.

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

Αποδείξτε το ανά πρωτόκολλο και μετά επιλέξτε το εργαλείο

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

Για μια χούφτα ρητά ονομασμένες υπηρεσίες, μια συνηθισμένη τοπική προώθηση είναι ευκολότερη στην ιδιοκτησία και στον έλεγχο. Για κίνηση εφαρμογών που ταιριάζει στη μέθοδό του, το sshuttle προσφέρει μια νόμιμη μέση λύση. Όταν η απαίτηση είναι ευρεία συνδεσιμότητα IP, ο σχεδιασμός VPN είναι η ειλικρινής απάντηση, και η επιλογή ακολουθεί την κάλυψη και την επιχειρησιακή ευθύνη και όχι μια κατάταξη αλγορίθμων κρυπτογράφησης.

Σχετικά άρθρα