Meshnet, Docker και η άδεια ανάμεσά τους
Ένας κόμβος mesh που φτάνει σε ένα δημοσιευμένο container περνά μια άδεια του host και μια μετάφραση του Docker. Εξετάστε τα δύο χωριστά, αλλιώς εγκρίνετε λάθος εύρος.
Δύο URL μπορεί να φαίνονται ίδια από το πρόγραμμα περιήγησης ενός κόμβου και όμως να σημαίνουν πολύ διαφορετικά πράγματα για το firewall. Το ένα δείχνει σε μια υπηρεσία που ακούει στον ίδιο τον host. Το άλλο δείχνει σε μια διεύθυνση host της οποίας η θύρα είναι δημοσιευμένη σε δίκτυο container, όπου ένα βήμα μετάφρασης παραδίδει τη σύνδεση σε άλλη IP. Σε ένα mesh ομότιμων κόμβων που ελέγχει την πρόσβαση στο τοπικό δίκτυο με άδεια ανά κόμβο, αυτή η διαφορά είναι όλη η εξέταση.
Η άδεια αφορά το τελικό σημείο του host, η μετάφραση αφορά το Docker και η σύνδεση αφορά την εφαρμογή. Τρεις αποφάσεις, τρία σημεία να κοιτάξετε.
Ακολουθήστε τον προορισμό μετά τη δημοσίευση
Πάρτε έναν host Linux με Docker που δημοσιεύει τη θύρα 80 ενός container στη θύρα 8080 του host. Ένας κόμβος συνδέεται στη διεύθυνση mesh του host στη 8080, ο host δέχεται τη σύνδεση και μια μετάφραση προορισμού την ξαναγράφει προς τη διεύθυνση γέφυρας του container, συνήθως κάτι σαν 172.17.0.2 στη θύρα 80.
Όταν ένας κανόνας εξετάζει αυτή τη ροή, ο ενδιαφέρων προορισμός είναι το container, όχι ο host. Μια πολιτική που συλλογίζεται μόνο για «μια υπηρεσία σε αυτό το μηχάνημα» συλλογίζεται για το λάθος αντικείμενο. Το αίτημα προσγειώθηκε στον host, αλλά παραδίδεται κάπου αλλού.
Γι’ αυτό η τεκμηρίωση του mesh απαριθμεί τα container του Docker ανάμεσα στους πόρους που ελέγχει η άδεια τοπικού δικτύου στο Linux. Η άδεια δεν είναι συνώνυμο μιας συνηθισμένης καταχώρισης στη λίστα επιτρεπόμενων του VPN και οι δύο έλεγχοι δεν αντικαθιστούν ο ένας τον άλλο. Ο ένας αποφασίζει αν ένας κόμβος μπορεί να φτάσει καθόλου σε τοπικούς πόρους· ο άλλος αποφασίζει ποιους προορισμούς μεταφέρει μια διαδρομή σήραγγας.
Αποφασίστε πόση τοπική πρόσβαση παρέχει μια άδεια
Το να δώσετε σε έναν κόμβο πρόσβαση στο τοπικό δίκτυο δεν είναι απόφαση για ένα μόνο container. Μπορεί να εκθέσει άλλες δημοσιευμένες υπηρεσίες στον ίδιο host και μπορεί να φτάσει πιο μακριά ανάλογα με το πώς προωθεί ο host. Εξετάστε το πραγματικό εύρος πριν πατήσετε τον διακόπτη για έναν πίνακα ελέγχου.
Έπειτα κοιτάξτε πού δημοσιεύει το Docker τη θύρα. Μια δημοσίευση στο 0.0.0.0 δημιουργεί έναν ακροατή σε κάθε διεύθυνση του host, κάτι που μπορεί να προσθέσει μια συνηθισμένη καταχώριση LAN δίπλα σε αυτήν του mesh. Αν η απαίτηση είναι μόνο mesh, δεσμεύστε τη δημοσίευση στη συγκεκριμένη διεύθυνση ή διεπαφή που σκοπεύετε, και αντιμετωπίστε την ευρύτερη δέσμευση ως ξεχωριστό εύρημα και όχι ως διευκόλυνση.
Κρατήστε την πολιτική προώθησης του host και τον έλεγχο ταυτότητας της ίδιας της εφαρμογής αρκετά στενά για την υπηρεσία. Ένα URL που φαίνεται ιδιωτικό δεν είναι έλεγχος πρόσβασης, και ένα container που εμπιστεύεται κάθε πηγή στο δίκτυο γέφυράς του δεν προστατεύεται από το ότι ο κόμβος του mesh εγκρίθηκε. Ο έλεγχος ταυτότητας της εφαρμογής είναι η τρίτη απόφαση και είναι η μόνη που ξέρει ποιος είναι ο χρήστης. Μια άδεια σε επίπεδο host δεν μπορεί να παρέχει αυτή τη γνώση.
Δοκιμάστε την άδεια, όχι μόνο το URL
Από τον εγκεκριμένο κόμβο, ανοίξτε την ακριβή υπηρεσία και επιβεβαιώστε ότι λειτουργεί. Έπειτα δοκιμάστε έναν προορισμό που θα έπρεπε να παραμείνει απορριφθείς και επιβεβαιώστε ότι δεν λειτουργεί. Το να δοκιμάζετε μόνο το ευνοϊκό μονοπάτι σας λέει ότι η άδεια δόθηκε· δεν σας λέει ότι το όριο είναι εκεί που νομίζετε.
Συγκρίνετε χωριστά μια υπηρεσία εγγενή στον host. Αν μια βάση δεδομένων ακούει στον host και ένας πίνακας ελέγχου εκτελείται σε container, ακολουθούν διαφορετικές διαδρομές μέσα από την ίδια άδεια και μπορεί να μην κυβερνώνται το ίδιο από την πολιτική προώθησης του host. Καταγράψτε τι είναι τι πριν γράψετε τη σημείωση εξέτασης.
Μην αδειάζετε τους πίνακες του Docker ή τους κανόνες του πελάτη mesh για να «επαναφέρετε» την πρόσβαση. Και τα δύο προϊόντα εγκαθιστούν τη δική τους ενσωμάτωση πολιτικής, και η εκκαθάρισή της παράγει έναν host που φαίνεται να λειτουργεί ενώ παρακάμπτει τους ελέγχους που σας ζητήθηκε να αξιολογήσετε. Αν ένας κανόνας φαίνεται λάθος, διαβάστε τον και αλλάξτε μόνο αυτόν τον κανόνα. Αν δεν μπορείτε να εξηγήσετε τι κάνει ένας κανόνας, αυτό είναι το εύρημα, όχι λόγος να τον διαγράψετε.
Γράψτε το εύρημα με τους όρους του ίδιου του συστήματος
Αυτό που μετρά είναι η διάκριση που επιβάλλει πραγματικά το προϊόν, όχι αυτή στο πρότυπο εξέτασης: άδεια να φτάσετε σε τελικό σημείο host, άδεια να φτάσετε σε δρομολογημένους ιδιωτικούς πόρους και άδεια να χρησιμοποιήσετε την εφαρμογή. Η δημοσίευση μιας θύρας αφήνει αυτές τις τρεις αποφάσεις ακριβώς εκεί που ήταν, και ένας εξεταστής που τις αντιμετωπίζει ως μία θα εγκρίνει λάθος εύρος.
Δηλώστε τη διεύθυνση του host, τη δημοσιευμένη θύρα, τον προορισμό του container και την άδεια του κόμβου στην ίδια πρόταση. Αυτή η πρόταση είναι δοκιμάσιμη από κάποιον άλλο, και αυτό την κάνει εύρημα και όχι γνώμη.