Πρόσβαση σε ιστότοπο HTTPS μόνο μέσω VPN με προώθηση SSH
Γεφυρώστε μία υπηρεσία HTTPS που είναι διαθέσιμη μόνο μέσω VPN με μια τοπική προώθηση SSH, κρατήστε το πραγματικό όνομα κεντρικού υπολογιστή με το --connect-to και μάθετε τι δεν καλύπτει μία μόνο προώθηση TCP.
Ένας υπολογιστής έχει ήδη εγκεκριμένη πρόσβαση VPN, ένας δεύτερος χρειάζεται ακριβώς μία ιδιωτική υπηρεσία HTTPS, και μια τοπική προώθηση SSH μπορεί να γεφυρώσει αυτό το κενό χωρίς να δώσει στον δεύτερο υπολογιστή σήραγγα. Η προώθηση μεταφέρει έναν προορισμό TCP αντί για ολόκληρο το δίκτυο, και ακριβώς αυτός ο περιορισμός είναι το νόημα. Ακολουθήστε τα πέντε βήματα παρακάτω με τη σειρά, γιατί το καθένα αποτυγχάνει για διαφορετικό λόγο και ένα μεταγενέστερο βήμα δεν μπορεί να σώσει ένα προηγούμενο κενό. Αν λείπει οποιαδήποτε προϋπόθεση, αυτός ο σχεδιασμός δεν τη λύνει και καμία ρύθμιση εντολών δεν θα βοηθήσει.
Βήμα πρώτο: επιβεβαιώστε τις τρεις προϋποθέσεις
Τρία πράγματα πρέπει να ισχύουν ήδη πριν αποκτήσει νόημα οποιαδήποτε εντολή. Χρειάζεστε άδεια να χρησιμοποιήσετε τον πρώτο υπολογιστή ως κεντρικό υπολογιστή προώθησης, λειτουργική πρόσβαση SSH σε αυτόν και πολιτική διακομιστή που επιτρέπει τον προβλεπόμενο προορισμό. Ένας λογαριασμός SSH που δημιουργήθηκε για μεταφορά αρχείων μπορεί να έχει την προώθηση απενεργοποιημένη, και ένας διακομιστής που επιτρέπει προώθηση μπορεί ακόμη να περιορίζει ποιοι προορισμοί είναι προσβάσιμοι μέσω αυτής. Ρωτήστε πριν δοκιμάσετε, γιατί η χρήση του σταθμού εργασίας ενός συναδέλφου ως σημείου αναπήδησης χωρίς συμφωνία είναι πρόβλημα πολιτικής, ακόμη και όταν η εντολή εκτελείται άψογα.
Δύο εντολές διευθετούν το τεχνικό μισό αυτής της λίστας. Η πρώτη αποδεικνύει ότι ο λογαριασμός και το κλειδί λειτουργούν χωρίς διαδραστική προτροπή, και η δεύτερη εκτυπώνει την πραγματική πολιτική του διακομιστή αντί για το σχολιασμένο παράδειγμα στο αρχείο ρυθμίσεων.
ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'
Βήμα δεύτερο: δεσμεύστε μια θύρα loopback και κρατήστε τη συνεδρία ζωντανή
Στον υπολογιστή που εκτελεί την εφαρμογή πελάτη, ανοίξτε μια τοπική προώθηση προς την ιδιωτική υπηρεσία. Δεσμεύστε την ρητά στο loopback ώστε να μην εκτίθεται στο τοπικό δίκτυο, και επιλέξτε μια υψηλή θύρα που δεν κατέχει ήδη καμία τοπική υπηρεσία. Κρατήστε τη συνεδρία σε λειτουργία όσο εργάζεστε, αφού το κλείσιμό της κλείνει τον ακροατή. Το ExitOnForwardFailure μετατρέπει μια απορριφθείσα δέσμευση ή μια κατειλημμένη θύρα σε άμεση έξοδο αντί για συνεδρία που μένει ανοιχτή χωρίς προώθηση, και αυτή είναι η λειτουργία αποτυχίας που σπαταλά τον περισσότερο χρόνο.
Η ιδιωτική σύνδεση γίνεται από τον κεντρικό υπολογιστή αναπήδησης, οπότε το DNS, οι διαδρομές, η πολιτική VPN και η πρόσβαση στην υπηρεσία εκείνου του υπολογιστή πρέπει όλα να λειτουργούν. Η συνεδρία SSH δεν δημιουργεί προσβασιμότητα που λείπει από τον κεντρικό υπολογιστή αναπήδησης, και δεν μπορεί να επισκευάσει μια διαδρομή που το VPN δεν έστειλε ποτέ. Επιβεβαιώστε τον ακροατή εκεί όπου πραγματικά βρίσκεται αντί να εμπιστεύεστε τη σιωπή της εντολής.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'
Βήμα τρίτο: κρατήστε το όνομα HTTPS όταν το socket είναι τοπικό
Η περιήγηση στο https://127.0.0.1:9443/ αλλάζει το όνομα του διακομιστή TLS και την αρχή της εφαρμογής. Ένα πιστοποιητικό που εκδόθηκε για το portal.lab.example δεν θα επικυρωθεί απέναντι σε διεύθυνση loopback, και το σφάλμα που προκύπτει μοιάζει με σπασμένο πιστοποιητικό αντί για συντόμευση προώθησης. Για δοκιμή γραμμής εντολών, κρατήστε το πραγματικό URL και αλλάξτε μόνο τον προορισμό του socket. Αυτό κάνει το --connect-to, και το εγχειρίδιο του curl τεκμηριώνει τη μορφή τεσσάρων πεδίων που χρησιμοποιείται παρακάτω.
curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/
Το όνομα μένει στο URL, στη χειραψία TLS και στην κεφαλίδα Host, ενώ η σύνδεση TCP πηγαίνει στον τοπικό ακροατή. Η επιλογή χωρίς διαμεσολαβητή κρατά τη δοκιμή σε αυτή την προώθηση αντί να αφήσει έναν ρυθμισμένο διαμεσολαβητή HTTP να την υποκλέψει, και το να μείνει ενεργή η επικύρωση πιστοποιητικών είναι αυτό που κάνει το αποτέλεσμα ουσιαστικό.
Βήμα τέταρτο: μάθετε τι δεν καλύπτει μία προώθηση
Μία μόνο προώθηση TCP καλύπτει μία θύρα προορισμού. Μια σελίδα που ανακατευθύνει σε δεύτερο όνομα κεντρικού υπολογιστή, φορτώνει πόρους από υπολογιστή μέσα στο ιδιωτικό δίκτυο ή στέλνει σε άλλη θύρα χρειάζεται τη δική της προώθηση, και καθεμία από αυτές χρειάζεται τον ίδιο έλεγχο πολιτικής με την πρώτη. Οι ροές εργασίας του προγράμματος περιήγησης προσθέτουν δικές τους απαιτήσεις, γιατί πρέπει να ειπωθεί στο πρόγραμμα περιήγησης να στέλνει το πραγματικό όνομα στην τοπική θύρα μέσω ρύθμισης διαμεσολαβητή ή τοπικής αντιστοίχισης. Επομένως μια επιτυχημένη δοκιμή γραμμής εντολών δεν αποδεικνύει ότι θα τα καταφέρει το πρόγραμμα περιήγησης, αν και αποδεικνύει τη διαδρομή.
Το UDP, η ανακάλυψη SMB και η σύνδεση τομέα δεν ταξιδεύουν καθόλου μέσω προώθησης TCP. Αν η πραγματική απαίτηση είναι γενική πρόσβαση δικτύου, αυτός ο σχεδιασμός είναι το λάθος εργαλείο και μια υποστηριζόμενη πύλη απομακρυσμένης πρόσβασης είναι το σωστό.
Βήμα πέμπτο: καθαρίστε και καταγράψτε το
Σταματήστε τη συνεδρία όταν τελειώσει η δοκιμή και επιβεβαιώστε ότι ο ακροατής έφυγε. Αν η επιλεγμένη θύρα ήταν ήδη κατειλημμένη, επιλέξτε άλλη αχρησιμοποίητη θύρα loopback και ενημερώστε μαζί το URL, την εντολή δοκιμής και τη σημείωση, αντί να τερματίσετε μια άσχετη τοπική υπηρεσία για να ελευθερώσετε τον αριθμό. Το να αφήνετε μια προώθηση ανοιχτή σε φορητό υπολογιστή μετατρέπει μια διάγνωση σε μη διαχειριζόμενη υπηρεσία.
Καταγράψτε τον κεντρικό υπολογιστή αναπήδησης, τον προωθημένο προορισμό, την τοπική θύρα και ποιος ενέκρινε τη διευθέτηση. Μια προώθηση που υπάρχει μόνο στο ιστορικό κελύφους κάποιου απέχει μία επανεκκίνηση από μια επαναλαμβανόμενη έρευνα, και το επόμενο άτομο δεν θα ξέρει ποια από τις τρεις προϋποθέσεις έχει ήδη ελεγχθεί.