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

Η πεποίθηση και το κόστος της

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

Τίποτα στη διεπαφή δεν διαφημίζει λειτουργία μόνο για ανάγνωση. Δεν υπάρχει ρόλος παρατηρητή για επιλογή, και ένα όνομα χρήστη στη διαμόρφωση δεν δημιουργεί έναν.

Τι κρατά στην πραγματικότητα ένας αποδεκτός πελάτης

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

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

Ένα δικό μας socket, όχι ανοιχτό

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

management /run/openvpn/office-management.sock unix /etc/openvpn/management.password
management-client-user vpn-observer
management-client-group vpn-observer

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

Το να κάνετε το socket προσβάσιμο σε όλο τον κόσμο για να εξαλείψετε ένα σφάλμα δικαιωμάτων είναι η μία διόρθωση που πρέπει να αποφύγετε. Μετατρέπει ένα τοπικό κανάλι ελέγχου σε κάτι που μπορεί να οδηγήσει οποιαδήποτε διεργασία στον κεντρικό υπολογιστή.

Η δημοσίευση μέσω TCP δεν είναι ο ίδιος σχεδιασμός

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

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

Εξαρτήσεις εκκίνησης που δεν ζητήσατε

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

Εξετάστε αυτές τις επιλογές πριν ενεργοποιήσετε οτιδήποτε πέρα από το ίδιο το socket. Η προαιρετική παρατήρηση πρέπει να παραμείνει προαιρετική, και μια πολιτική επανεκκίνησης δεν πρέπει να συνδέεται με έναν συλλέκτη που προστέθηκε για γραφήματα.

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

Πώς μοιάζει η αποδοχή

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

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

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