Εσωτερικό ALB με δημόσιο όνομα DNS: είναι πράγματι εκτεθειμένο;
Ένας δημόσιος resolver μπορεί να επιστρέψει ιδιωτικές διευθύνσεις για έναν εσωτερικό εξισορροπητή φόρτου AWS. Ελέγξτε το σχήμα, τις διαδρομές και τον listener πριν το χαρακτηρίσετε εκτεθειμένο.
Εκτελέστε ένα δημόσιο DNS lookup σε έναν εσωτερικό εξισορροπητή φόρτου και μπορεί να λάβετε πίσω μια ιδιωτική διεύθυνση, κάτι που μοιάζει με λάθος ρύθμιση μέχρι να ελέγξετε για τι προορίζεται η εγγραφή. Η AWS τεκμηριώνει ότι τα ονόματα εσωτερικών εξισορροπητών μπορούν να είναι δημόσια επιλύσιμα ενώ οι κόμβοι τους κρατούν μόνο ιδιωτικές διευθύνσεις. Ο resolver απάντησε πού βρίσκεται η υπηρεσία· δεν δημιούργησε διαδρομή, δεν άνοιξε ομάδα ασφαλείας και δεν πιστοποίησε κανέναν. Το αν αυτή η απάντηση είναι πρόβλημα εξαρτάται από γεγονότα που μπορείτε να ελέγξετε με σειρά.
Πρώτο βήμα: διαβάστε το σχήμα, όχι τη διεύθυνση IP
Το πεδίο σχήματος είναι η δική του δήλωση του εξισορροπητή για τα όριά του. Το aws elbv2 describe-load-balancers --names app-internal επιστρέφει ένα Scheme με τιμή internal ή internet-facing, συν έναν τύπο διεύθυνσης για IPv4 ή διπλή στοίβα. Ένας εξισορροπητής στραμμένος στο διαδίκτυο μπορεί ακόμη να προωθεί σε ιδιωτικούς στόχους, επομένως η θέα ιδιωτικών διευθύνσεων backend δεν αποδεικνύει τίποτα για το front end.
Γράψτε το σχήμα πριν κοιτάξετε οτιδήποτε άλλο, γιατί κάθε μεταγενέστερη κρίση εξαρτάται από αυτό. Λέει επίσης ποιοι έλεγχοι υπάρχουν, από ομάδες ασφαλείας και κανόνες listener μέχρι το σύνολο λειτουργιών αυτού του τύπου εξισορροπητή. Ένα σχήμα αντιγραμμένο από παλιό στιγμιότυπο κονσόλας είναι χειρότερο από καμία σημείωση. Διαβάστε το ξανά από το API και επικολλήστε την τιμή στο ticket.
Δεύτερο βήμα: δείτε σε τι επιλύεται το όνομα
Ρωτήστε από έξω από το VPC με το dig +short app-internal-1234567890.eu-west-1.elb.amazonaws.com και σημειώστε αν οι απαντήσεις βρίσκονται στο 10.0.0.0/8, 172.16.0.0/12 ή 192.168.0.0/16. Μια ιδιωτική απάντηση από δημόσιο resolver είναι η αναμενόμενη συμπεριφορά για όνομα εσωτερικού εξισορροπητή· δεν είναι απόδειξη ότι η διεύθυνση είναι δρομολογήσιμη από το διαδίκτυο.
Επιλύστε το ίδιο όνομα από μέσα στο VPC και συγκρίνετε. Αν οι δύο απαντήσεις διαφέρουν, βλέπετε ονοματοδοσία split-horizon, και αυτή η διαφορά είναι λεπτομέρεια σχεδίασης, όχι διαρροή.
Τρίτο βήμα: απαριθμήστε τις διαδρομές που μπορούν να το φτάσουν
Μια ιδιωτική διεύθυνση είναι προσβάσιμη από όπου υπάρχει διαδρομή και κανόνας ασφαλείας. Απαριθμήστε τις σκόπιμα: VPN τοποθεσίας σε τοποθεσία, VPN πελάτη, VPC peering, συνδέσεις transit gateway, Direct Connect και οποιονδήποτε proxy ή bastion μέσα στο VPC. Μία από αυτές είναι η προβλεπόμενη διαδρομή, και οι υπόλοιπες είναι αυτές που θα έψαχνε ένας επιτιθέμενος.
Στη συνέχεια ελέγξτε τους ελέγχους σε κάθε διαδρομή: ομάδες ασφαλείας στον εξισορροπητή, network ACL στα υποδίκτυα και τη δρομολόγηση που κάνει τη διαδρομή να υπάρχει. Οι περισσότερες αναφερόμενες περιπτώσεις εκτεθειμένης εσωτερικής υπηρεσίας λύνονται εδώ, είτε επειδή υπήρχε ακούσιο peering είτε επειδή η διαδρομή ήταν σκόπιμη και η εφαρμογή δεν είχε πιστοποίηση.
Τέταρτο βήμα: δοκιμάστε τον listener και την εφαρμογή χωριστά
Δοκιμάστε να συνδεθείτε από δίκτυο που δεν θα έπρεπε να φτάνει την υπηρεσία και επιβεβαιώστε ότι δεν μπορείτε. Έπειτα δοκιμάστε από ένα που θα έπρεπε, και επιβεβαιώστε ότι φτάνετε σε listener. Αυτά τα δύο αποτελέσματα διαχωρίζουν την προσβασιμότητα δικτύου από τη συμπεριφορά εφαρμογής, και είναι η μόνη απόδειξη που μετράει για το ερώτημα της έκθεσης.
Ένας προσβάσιμος listener δεν είναι το ίδιο με μια προσβάσιμη εφαρμογή. Ελέγξτε το πιστοποιητικό TLS και την πολιτική πρωτοκόλλου, έπειτα την πιστοποίηση και εξουσιοδότηση της ίδιας της εφαρμογής. Ένα εσωτερικό εργαλείο που δέχεται οποιονδήποτε καλεί στο εταιρικό VPN είναι εκτεθειμένο σε κάθε παραβιασμένο φορητό υπολογιστή σε αυτό το VPN, που είναι διαφορετικός κίνδυνος από ένα στραμμένο στο διαδίκτυο, αλλά παραμένει κίνδυνος.
Θυμηθείτε ότι οι έλεγχοι διαφέρουν ανά τύπο. Τα τείχη προστασίας επιπέδου εφαρμογής προσαρτώνται σε μία οικογένεια εξισορροπητών και όχι στην άλλη, οπότε επιβεβαιώστε τι είναι πραγματικά διαθέσιμο για το σχήμα και τον τύπο μπροστά σας αντί να υποθέτετε ισοτιμία.
Πέμπτο βήμα: αποφασίστε αν το ίδιο το όνομα έχει σημασία
Η δημόσια επιλυσιμότητα μπορεί να αποκαλύψει όνομα υπηρεσίας, περιοχή και εύρος διευθύνσεων. Αντιμετωπίστε το ως ζήτημα αποκάλυψης πληροφοριών με απάντηση πολιτικής, όχι ως αυτόματο περιστατικό: κρατήστε ευαίσθητους επιχειρηματικούς όρους έξω από ονόματα πόρων και σημειώστε την αποκάλυψη στο μητρώο κινδύνων αν η σύμβαση ονοματοδοσίας αποκαλύπτει περισσότερα από όσα θέλετε.
Αν ο οργανισμός θέλει ιδιωτική εμπειρία ονοματοδοσίας, μια ιδιωτική hosted zone μπορεί να σερβίρει ένα alias που επιλύεται μόνο μέσα στα συνδεδεμένα VPC. Αυτό αλλάζει το όνομα που βλέπουν οι χρήστες· δεν κάνει μυστικό το όνομα που παράγει ο πάροχος και δεν αφαιρεί καμία διαδρομή δικτύου.
Μην προσπαθήσετε να καρφώσετε διευθύνσεις για να κρύψετε την απάντηση. Οι διευθύνσεις του εξισορροπητή αλλάζουν, το καρφίτσωμα χαλάει τις συνήθειες επικύρωσης TLS, και ο έλεγχος που πραγματικά χρειάζεστε είναι ποιος μπορεί να δημιουργήσει τη σύνδεση και τι απαιτεί η εφαρμογή από αυτόν. Ελέγξτε τα τέσσερα γεγονότα, γράψτε τα, και το ερώτημα παύει να είναι αμφίσημο.