Βασική ταυτοποίηση μέσω HTTPS έναντι IPsec: τι προστατεύει η καθεμία
Ακολουθήστε ένα αίτημα από το πρόγραμμα περιήγησης στην εφαρμογή: το άλμα TLS, η απόκριση 401 και η σήραγγα προστατεύουν διαφορετικές σχέσεις και αποτυγχάνουν με διαφορετικά στοιχεία.
Ανοίξτε τα εργαλεία προγραμματιστή, φορτώστε την εσωτερική εφαρμογή και παρακολουθήστε ένα αίτημα να περνά από τέσσερα σημεία ελέγχου πριν αποδοθεί η σελίδα. Πρώτα επιλύεται το όνομα, μετά ανοίγει μια σύνδεση TCP, μετά η χειραψία TLS καθορίζει ποιος είναι ο διακομιστής και μόνο τότε η εφαρμογή ρωτά ποιος είστε. Αντιμετωπίστε τα ως ξεχωριστά γεγονότα, γιατί το καθένα αποτυγχάνει με διαφορετικά στοιχεία και το καθένα ανήκει σε διαφορετική ομάδα. Η περισσότερη σύγχυση στα περιστατικά προέρχεται από το να διαβάζει κανείς ένα 401 ως πρόβλημα σήραγγας ή ένα πρόβλημα σήραγγας ως κακό κωδικό πρόσβασης.
Σημείο ελέγχου πρώτο: είναι αυτός ο διακομιστής με τον οποίο θέλατε να μιλήσετε
Η χειραψία TLS απαντά σε αυτή την ερώτηση πριν σταλεί οποιοδήποτε διαπιστευτήριο. Ο πελάτης σας επικυρώνει την αλυσίδα πιστοποιητικών έναντι μιας αποθήκης εμπιστοσύνης και ελέγχει ότι το όνομα στο πιστοποιητικό ταιριάζει με τον κεντρικό υπολογιστή που πληκτρολογήσατε. Αν αυτό αποτύχει, το πρόγραμμα περιήγησης εμφανίζει σφάλμα πιστοποιητικού και δεν στέλνει καθόλου την κεφαλίδα Authorization. Επομένως, το αίτημα κωδικού πρόσβασης δεν είναι απόδειξη ότι ο διακομιστής είναι γνήσιος· είναι απόδειξη ότι η εφαρμογή απάντησε.
Εδώ εμφανίζεται το πρώτο όριο. Το TLS προστατεύει τη σύνδεση μέχρι το σημείο τερματισμού της. Αν ένας εξισορροπητής φόρτου τερματίζει το TLS και προωθεί απλό HTTP στην εφαρμογή, το κρυπτογραφημένο τμήμα τελειώνει στον εξισορροπητή και τα διαπιστευτήρια προστατεύονται μόνο στο πρώτο άλμα.
Σημείο ελέγχου δεύτερο: τι ταξιδεύει πραγματικά σε μια ανταλλαγή 401
Η βασική ταυτοποίηση HTTP στέλνει το αναγνωριστικό χρήστη και τον κωδικό πρόσβασης σε μια κεφαλίδα, κωδικοποιημένα με Base64 όπως περιγράφεται στο RFC 7617. Authorization: Basic dXNlcjpwYXNz είναι η μορφή· η κωδικοποίηση μπορεί να αντιστραφεί από οποιονδήποτε μπορεί να διαβάσει το αίτημα, επομένως όλη η μυστικότητα προέρχεται από το μεταφορικό επίπεδο από κάτω. Το curl -v δείχνει τόσο την πρόκληση WWW-Authenticate: Basic όσο και την κεφαλίδα που στέλνετε πίσω.
Αυτή η κεφαλίδα λέει στην εφαρμογή ποιος ρωτά. Δεν λέει στο δίκτυο ποιος επιτρέπεται να συνδεθεί και δεν κρυπτογραφεί τίποτα από μόνη της. Η εφαρμογή πρέπει ακόμη να ελέγξει το διαπιστευτήριο έναντι μιας αποθήκης και να αποφασίσει τι επιτρέπεται να κάνει αυτός ο λογαριασμός, που είναι εξουσιοδότηση και συμβαίνει μετά την ταυτοποίηση.
Πού βρίσκεται η σήραγγα IPsec σε αυτή τη διαδρομή
Τώρα περπατήστε προς τα έξω από το πρόγραμμα περιήγησης. Μια σήραγγα IPsec από πύλη σε πύλη προστατεύει επιλεγμένη κίνηση μεταξύ δύο πυλών ασφαλείας, όχι μεταξύ του φορητού σας και της διεργασίας της εφαρμογής. Το ESP σε λειτουργία σήραγγας τυλίγει το αρχικό πακέτο, οι πύλες το κρυπτογραφούν και το επικυρώνουν, και οι εσωτερικές διευθύνσεις επιβιώνουν ώστε η απομακρυσμένη πλευρά να μπορεί να δρομολογήσει το αίτημα στην εφαρμογή.
Η επιλογή είναι το σημείο όπου σκοντάφτουν οι άνθρωποι. Οι σήραγγες βάσει πολιτικής χρησιμοποιούν επιλογείς κίνησης, συχνά εκφρασμένους ως λίστες ελέγχου πρόσβασης, για να αποφασίσουν ποια πακέτα μπαίνουν στη σήραγγα. Οι σήραγγες βάσει δρομολόγησης χρησιμοποιούν αντ’ αυτού μια εικονική διεπαφή και τον πίνακα δρομολόγησης. Στο Linux το ip xfrm policy δείχνει τους επιλογείς και το ip xfrm state τις εγκατεστημένες ενώσεις ασφαλείας· σε μια συσκευή τείχους προστασίας το ισοδύναμο είναι ο πίνακας SA της σήραγγας συν έναν ιχνηλάτη πακέτων.
Η συνέπεια αξίζει να ειπωθεί καθαρά. Ένα πακέτο μπορεί να βρίσκεται μέσα σε μια απολύτως υγιή σήραγγα και παρόλα αυτά να μεταφέρει ένα αίτημα HTTPS που η εφαρμογή απορρίπτει, και έγκυρα διαπιστευτήρια μπορούν να φτάσουν από διαδρομή χωρίς καμία σήραγγα αν το επιτρέπει η δρομολόγηση.
Διαβάστε την αποτυχία στο επίπεδο που την ανέφερε
Ένα 401 σημαίνει ότι η εφαρμογή δεν δέχτηκε το διαπιστευτήριο. Ένα 403 σημαίνει ότι δέχτηκε την ταυτότητα και αρνήθηκε την πράξη. Ένα σφάλμα TLS σημαίνει ότι ο πελάτης δεν δέχτηκε τον διακομιστή. Καμία διαδρομή ή αναντιστοιχία πολιτικής σημαίνει ότι το πακέτο δεν έφτασε ποτέ στην απομακρυσμένη πύλη. Τέσσερις διαφορετικές αποτυχίες, τέσσερις διαφορετικοί υπεύθυνοι, και καμία από αυτές δεν διαγιγνώσκεται κοιτάζοντας επίμονα τη φόρμα σύνδεσης.
Χρησιμοποιήστε τα στοιχεία που παράγει κάθε επίπεδο: τον πίνακα δικτύου του προγράμματος περιήγησης για καταστάσεις και κεφαλίδες, το openssl s_client -connect host:443 για την αλυσίδα πιστοποιητικών, τους μετρητές SA και τα αρχεία καταγραφής της πύλης για την κίνηση της σήραγγας και το αρχείο καταγραφής της εφαρμογής για την απόφαση του λογαριασμού. Όταν δύο επίπεδα αναφέρουν σφάλματα ταυτόχρονα, διορθώστε πρώτα το χαμηλότερο, γιατί μια νεκρή σήραγγα μπορεί εύκολα να καλύψει μια αποτυχία ταυτοποίησης και το αντίστροφο.
Χαρτογραφήστε μια υπηρεσία από άκρη σε άκρη
Γράψτε πέντε γραμμές για την υπηρεσία που αντιμετωπίζετε: ποιους ομοτίμους συνδέει η σήραγγα, ποια υποδίκτυα και θύρες επιτρέπουν οι επιλογείς, πού τερματίζεται το TLS και ποια ταυτότητα βεβαιώνει το πιστοποιητικό, ποιος λογαριασμός και ρόλος εφαρμογής χρησιμοποιείται και πού καταγράφει κάθε επίπεδο. Κρατήστε τις σε μία σελίδα, γιατί ο σκοπός του χάρτη είναι να δείξει πού τελειώνει η ευθύνη ενός επιπέδου και αρχίζει το επόμενο.
Στη συνέχεια δοκιμάστε μία αρνητική περίπτωση ανά επίπεδο. Χρησιμοποιήστε λάθος κωδικό πρόσβασης και επιβεβαιώστε ότι παίρνετε 401, όχι χρονικό όριο. Συνδεθείτε από υποδίκτυο εκτός των επιλογέων και επιβεβαιώστε ότι το πακέτο δεν περνά από τη σήραγγα. Παρουσιάστε πιστοποιητικό για λάθος όνομα και επιβεβαιώστε ότι ο πελάτης αρνείται πριν στείλει διαπιστευτήρια. Αυτά τα τρία αποτελέσματα σας λένε περισσότερα για τον σχεδιασμό από οποιοδήποτε διάγραμμα με κουτιά.
Τέλος, αποφασίστε συνειδητά ποια προστασία χρειάζεται κάθε σχέση. Η βασική ταυτοποίηση πάνω από TLS είναι λογική επιλογή για ένα μικρό εσωτερικό εργαλείο πίσω από μια πύλη· δεν υποκαθιστά την εξουσιοδότηση ανά χρήστη ούτε την προστασία της κίνησης πέρα από το τελικό σημείο TLS. Η σήραγγα προστατεύει τη διαδρομή, το πιστοποιητικό προστατεύει το άλμα και το 401 προστατεύει τον λογαριασμό, και μόνο το τελευταίο ξέρει ποιος είστε.