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

Τέσσερα επίπεδα που αποτυγχάνουν με το ίδιο μήνυμα

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

Ξεκινήστε από τη μεταφορά. Αν η θύρα 445 δεν φτάνει ποτέ στον διακομιστή, καμία ρύθμιση του Samba δεν έχει σημασία, και μια καταγραφή στη διεπαφή του διακομιστή το λύνει σε δευτερόλεπτα. Έπειτα έρχεται το τείχος προστασίας του κεντρικού υπολογιστή στον ίδιο τον διακομιστή, το οποίο μπορεί να απορρίψει μια επιτρεπόμενη πηγή πριν το smbd τη δει καν. Μόνο αφού περάσουν αυτά τα δύο γίνεται η λίστα επιτρεπόμενων υποψήφια. Η αυθεντικοποίηση έρχεται τελευταία, γιατί μια αποτυχημένη σύνδεση και μια απόρριψη κεντρικού υπολογιστή φαίνονται διαφορετικές στο αρχείο καταγραφής του διακομιστή, ακόμη και όταν ο πελάτης αναφέρει και τα δύο ως άρνηση πρόσβασης. Η σειρά μετράει περισσότερο από τα εργαλεία, γιατί κάθε επίπεδο έχει μια εντολή που το απαντά.

Βρείτε τη διεύθυνση πηγής που βλέπει πραγματικά το smbd

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

Αυτή η διαφορά αποφασίζει αν μια καταχώριση στη λίστα επιτρεπόμενων είναι πολιτική ή τρύπα. Το να επιτρέπεται μια μεταφρασμένη διεύθυνση πύλης δέχεται όλους όσοι βρίσκονται πίσω της, κάτι που ένας κανόνας ανά πελάτη σπάνια ήθελε να εκφράσει. Διαβάστε την πηγή από τον διακομιστή και όχι από την ιδέα του πελάτη για τη δική του διεύθυνση. Μια καταγραφή στη διεπαφή του διακομιστή είναι ο φθηνότερος τρόπος να τη δείτε, και η ίδια καταγραφή αποδεικνύει αν το πακέτο έφτασε καθόλου. Περιορίστε την καταγραφή με πλήθος πακέτων και προσθέστε φίλτρο κεντρικού υπολογιστή όταν ξέρετε ποιον πελάτη ακολουθείτε. Ο πίνακας συνεδριών του Samba είναι το άλλο μισό της απάντησης: στο smbstatus -b η στήλη πελάτη κάθε γραμμής συνεδρίας είναι ο ομότιμος που κατέγραψε το smbd, και αυτή είναι η ταχύτερη επιβεβαίωση της διεύθυνσης που έφτασε πραγματικά στην υπηρεσία.

sudo tcpdump -ni any -c 20 'tcp port 445'
sudo smbstatus -b
ss -tnp | grep ':445'

Διαβάστε τη λίστα επιτρεπόμενων όπως τη διαβάζει το Samba

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

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

hosts allow = 192.168.50.0/24 10.90.0.0/24
testparm -s
testparm -s /etc/samba/smb.conf client.example 10.90.0.14

Αλλάξτε το αρχείο που επιβιώνει από επανεκκίνηση

Σε έναν κανονικό κεντρικό υπολογιστή Linux η διαδρομή διαμόρφωσης είναι σταθερή και η υπηρεσία τη διαβάζει ξανά κατά την επανεκκίνηση. Σε δρομολογητή ή συσκευή το ενεργό smb.conf συχνά παράγεται κατά την εκκίνηση, και μια χειροκίνητη αλλαγή εξαφανίζεται στην επόμενη επανεκκίνηση. Χρησιμοποιήστε τον υποστηριζόμενο μηχανισμό προσαρμογής της συσκευής, που συνήθως είναι δικό του αρχείο διαμόρφωσης.

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

Καταγράψτε ποιο αρχείο αλλάξατε και τι το παράγει ξανά, ώστε το επόμενο άτομο να μην επαναλάβει τη διάγνωση.

Δοκιμάστε έναν επιτρεπόμενο και έναν αποκλεισμένο πελάτη

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

smbclient -L //fileserver -U alice
sudo testparm -s /etc/samba/smb.conf alice-laptop 10.90.0.14
sudo tail -n 40 /var/log/samba/log.smbd

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

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