- Το SELinux επιβάλλει υποχρεωτικό έλεγχο πρόσβασης με βάση πολιτικές και περιβάλλοντα, προσθέτοντας ένα κρίσιμο επίπεδο ενίσχυσης σε σχέση με τα παραδοσιακά δικαιώματα Unix.
- Μια αποτελεσματική διαμόρφωση απαιτεί την σωστή επισήμανση του συστήματος αρχείων, την επιλογή της κατάλληλης λειτουργίας (επιτρεπτική/επιβολή) και την προσαρμογή των λογικών τιμών και των ενοτήτων χωρίς να αποδυναμωθεί η βασική πολιτική.
- Η ενσωμάτωση του SELinux με τα RHEL, Fedora, SUSE και openSUSE επιτρέπει τον μετριασμό του αντίκτυπου πολλών CVE και υπηρεσιών περιορισμού, όπως διακομιστές ιστού, κοντέινερ και δαίμονες δικτύου.
- Η αυτοματοποίηση της διαδικασίας σκλήρυνσης και η συστηματική χρήση αρχείων καταγραφής και εργαλείων όπως το audit2allow διευκολύνει τη διατήρηση της λειτουργικότητας του SELinux στην παραγωγή χωρίς να θυσιάζεται η σταθερότητα.

Όταν ρυθμίζετε έναν διακομιστή Linux για παραγωγή, η προεπιλεγμένη διαμόρφωσή του είναι συνήθως αρκετά ανοιχτή. Έχει σχεδιαστεί για να λειτουργεί άψογα αμέσως μόλις το εγκαταστήσετε, όχι για να είναι ένα φρούριο . Εδώ ακριβώς μπαίνει το SELinux ως βασικό στοιχείο ενίσχυσης: προσθέτει ένα επίπεδο ελέγχου που συνεχίζει να λειτουργεί ακόμα και όταν οι τυπικές άμυνες (δικαιώματα αρχείων, τείχος προστασίας, ενημερώσεις ) αποτυγχάνουν.
Το SELinux μπορεί να φαίνεται τρομακτικό στην αρχή, αλλά μόλις κατανοήσετε τα βασικά του, γίνεται ένα απίστευτα ισχυρό εργαλείο για τον περιορισμό των exploits, τον περιορισμό των ζημιών και την εκπλήρωση προτύπων ασφαλείας όπως το CIS, το PCI DSS ή άλλα πρότυπα υψηλής κρισιμότητας. Αντί να βασίζεται σε εφαρμογές για να συμπεριφέρονται κανονικά, το σύστημα αναγκάζει κάθε διεργασία να λειτουργεί εντός πολύ συγκεκριμένων ορίων.
Τι είναι το SELinux και γιατί είναι σημαντικό στην ενίσχυση του Linux;
Το Security-Enhanced Linux είναι μια επέκταση ασφαλείας πυρήνα Linux που βασίζεται στο Mandatory Access Control (MAC). Σε αντίθεση με το κλασικό Unix discretionary access control (DAC), όπου ο κάτοχος του αρχείου αποφασίζει ποιος μπορεί να έχει πρόσβαση σε ένα αρχείο, στο SELinux οι κανόνες υπαγορεύονται από μια κεντρική πολιτική την οποία ακόμη και οι χρήστες root δεν μπορούν να παρακάμψουν χωρίς να την αλλάξουν ρητά.
Αυτό το μοντέλο διασφαλίζει ότι οι αποφάσεις πρόσβασης βασίζονται σε ετικέτες ασφαλείας (πλαίσια) και προκαθορισμένους κανόνες , όχι μόνο σε δικαιώματα rwx. Ακόμα κι αν μια υπηρεσία έχει παραβιαστεί ή έχει υπερβολικά δικαιώματα, το SELinux μπορεί να την εμποδίσει να έχει πρόσβαση σε ευαίσθητα αρχεία, να ενεργοποιήσει άλλες διεργασίες ή να μετακινηθεί στο δίκτυο πέρα από τα εξουσιοδοτημένα όριά του.
Το SELinux δεν αντικαθιστά τον παραδοσιακό DAC, αλλά τον συμπληρώνει. Πρώτον, ελέγχονται τα τυπικά δικαιώματα Unix και μόνο εάν το DAC επιτρέπει τη λειτουργία, το SELinux παρεμβαίνει για να επικυρώσει την πολιτική του . Εάν το DAC ήδη μπλοκάρει την πρόσβαση, το SELinux ούτε παρεμβαίνει ούτε καταγράφει τίποτα, κάτι που βοηθά στη μείωση του θορύβου στα αρχεία καταγραφής και διατηρεί την απόδοση.
Αυτή η πολυεπίπεδη προσέγγιση είναι ιδιαίτερα αισθητή σε εταιρικά περιβάλλοντα όπως το Red Hat Enterprise Linux, το Fedora, το SUSE Linux Enterprise ή το openSUSE Leap , όπου το SELinux είναι ενσωματωμένο με τους υπόλοιπους μηχανισμούς ασφαλείας του συστήματος και με σύγχρονες τεχνολογίες όπως τα κοντέινερ και οι εικονικές μηχανές.

Βασικές έννοιες: πολιτικές, περιβάλλοντα και τομείς SELinux
Η βάση του SELinux είναι οι πολιτικές ασφαλείας που περιγράφουν ποιος μπορεί να κάνει τι, εναντίον τι και πώς . Σε αυτήν τη γλώσσα, οι διεργασίες θεωρούνται υποκείμενα και οι πόροι συστήματος (αρχεία, κατάλογοι, υποδοχές, θύρες, συσκευές κ.λπ.) είναι αντικείμενα.
Αντί να σκέφτεται τους χρήστες ως "root" ή "www-data", το SELinux λειτουργεί με τομείς και τύποιΜια διεργασία διακομιστή ιστού Apache, για παράδειγμα, εκτελείται στον τομέα httpd_t, ενώ τα αρχεία που παρέχονται στον πελάτη έχουν τύπο όπως httpd_sys_content_tΗ πολιτική ορίζει ποιοι τομείς μπορούν να έχουν πρόσβαση σε ποιους τύπους, για ποιες κλάσεις αντικειμένων (αρχείο, κατάλογος, υποδοχή, θύρα...) και με ποια συγκεκριμένα δικαιώματα (ανάγνωση, εγγραφή, εκτέλεση, getattr, προσάρτηση, κ.λπ.).
Κάθε αντικείμενο έχει ένα συσχετισμένο περιβάλλον SELinux , μια ετικέτα της μορφής:
usuario:rol:tipo:nivel
Για παράδειγμα, ένα αρχείο θα μπορούσε να επισημανθεί ως system_u:object_r:httpd_sys_content_t:s0όπου Το πιο σημαντικό πεδίο για την καθημερινή διαχείριση είναι συνήθως ο τύπος (httpd_sys_content_t), το οποίο καθορίζει σε ποιους τομείς διεργασίας θα επιτραπεί η πρόσβαση.
Στην πράξη, το SELinux λειτουργεί με χιλιάδες κανόνες. Για να αποφευχθεί η μη διαχειρισιμότητα αυτού του γεγονότος, οι πολιτικές χωρίζονται σε ανεξάρτητες ενότητες που μπορούν να ενεργοποιηθούν, να απενεργοποιηθούν ή να ενημερωθούν χωρίς να χρειάζεται να επαναμεταγλωττιστεί ένα γιγάντιο μονολιθικό μπλοκ. Αυτό είναι κρίσιμο στα RHEL, SUSE και openSUSE, όπου κάθε σχετική υπηρεσία έχει συνήθως τη δική της ενότητα πολιτικής.
Λειτουργίες SELinux: επιβολή, επιτρεπτική και απενεργοποιημένη
Το SELinux μπορεί να λειτουργήσει σε τρεις ξεχωριστές καταστάσεις, οι οποίες καθορίζουν τον βαθμό στον οποίο οι κανόνες του εφαρμόζονται στο σύστημα σε πραγματικό χρόνο :
Στη λειτουργία επιβολής , ο πυρήνας επιβάλλει αυστηρά την πολιτική. Οποιαδήποτε ενέργεια παραβιάζει τους κανόνες αποκλείεται και καταγράφεται . Αυτή είναι η συνιστώμενη λειτουργία για παραγωγή όταν η πολιτική είναι καλά ρυθμισμένη, επειδή εκεί είναι που το SELinux παρέχει πραγματικά προστασία.
Σε λειτουργία επιτρεπόμενης πρόσβασης , το SELinux συνεχίζει να αξιολογεί την πολιτική, αλλά δεν αποκλείει τίποτα . Όλες οι παραβιάσεις καταγράφονται ως προειδοποιήσεις. Αυτή η λειτουργία είναι ιδανική για δοκιμές, ανάπτυξη νέων εφαρμογών ή βελτιστοποίηση κανόνων, επειδή σας επιτρέπει να εντοπίσετε τι θα μπορούσε να παραβιάσει την επιβολή χωρίς να διακόψει τις υπηρεσίες.
Σε απενεργοποιημένη λειτουργία , το SELinux είναι εντελώς απενεργοποιημένο. Δεν επιβάλλονται πολιτικές και δεν δημιουργούνται αρχεία καταγραφής που σχετίζονται με το SELinux. Η εναλλαγή μεταξύ απενεργοποιημένης και ενεργής λειτουργίας (επιτρεπόμενη ή επιβολή) απαιτεί επανεκκίνηση, επειδή ο πυρήνας πρέπει να εκκινήσει με αρχικοποιημένη την υποστήριξη SELinux για να προσθέσει ετικέτα στο σύστημα αρχείων.
Μια πολύ λογική πρακτική σε οποιαδήποτε διανομή είναι να ξεκινάτε αρχικά με ρυθμίσεις που επιτρέπουν την πρόσβαση σε δεδομένα , να ελέγχετε και να διορθώνετε προβλήματα ετικετών και πολιτικής και να αλλάζετε σε ρυθμίσεις επιβολής μόνο όταν όλα είναι σταθερά . Αν το αφήσετε μόνιμα απενεργοποιημένο, αφαιρείται ένα από τα πιο ισχυρά επίπεδα προστασίας που έχετε στη διάθεσή σας.
Ενσωμάτωση του SELinux σε RHEL, Fedora, SUSE και openSUSE
Διανομές όπως το Red Hat Enterprise Linux, το Fedora και παράγωγα ενεργοποιούν το SELinux από προεπιλογή , συνήθως χρησιμοποιώντας μια στοχευμένη πολιτική που περιορίζει κυρίως τις υπηρεσίες συστήματος που ξεκινούν από το systemd και ορισμένους χρήστες.
Στο RHEL, εκτός από την προκαθορισμένη πολιτική, προσφέρεται μια σειρά εργαλείων για να αποτρέψει τον διαχειριστή από το να παλεύει συνεχώς με κανόνες χαμηλού επιπέδου. Ξεχωρίζει το SELinux Troubleshooter, το οποίο αναλύει συμβάντα άρνησης και προτείνει συγκεκριμένες αλλαγές (όπως ενεργοποίηση μιας λογικής τιμής, διόρθωση ενός περιβάλλοντος ή δημιουργία μιας πρόσθετης ενότητας).
Επιπλέον, το SELinux επεκτείνεται σε κοντέινερ (για παράδειγμα, με το Podman) και εικονικά περιβάλλοντα. Με τις κατάλληλες ετικέτες, κάθε κοντέινερ ή εικονική μηχανή απομονώνεται από τα άλλα σε επίπεδο πυρήνα, ακόμη και αν έχει παραβιαστεί κάποια ευπάθεια στο χρόνο εκτέλεσης ή στον υπερεπόπτη.
Στο οικοσύστημα SUSE, το SUSE Linux Enterprise Server περιλαμβάνει το πλαίσιο SELinux στον πυρήνα και τα εργαλεία του , αλλά όχι μια ολοκληρωμένη επίσημη πολιτική. Η συνιστώμενη προσέγγιση είναι να δημιουργήσετε μια προσαρμοσμένη πολιτική προσαρμοσμένη στο περιβάλλον σας ή να χρησιμοποιήσετε λύσεις όπως το slemicro όταν θέλετε έναν μινιμαλιστικό κεντρικό υπολογιστή για κοντέινερ ή εικονικοποίηση με πλήρη υποστήριξη SELinux.
Στο openSUSE Leap είναι σύνηθες να βασίζεστε σε πολιτικές που είναι διαθέσιμες σε αποθετήρια όπως η security:/SELinux_legacy για δοκιμές, γνωρίζοντας ότι για ένα κρίσιμο περιβάλλον το ιδανικό είναι μια πολιτική που αναθεωρείται και προσαρμόζεται ειδικά για την ανάπτυξη.
Μοντέλα πολιτικής SELinux: στοχευμένα, MLS και ελάχιστα
Το SELinux μπορεί να λειτουργήσει με διαφορετικά μοντέλα πολιτικής, τα οποία καθορίζουν το εύρος και το βάθος του ελέγχου. Τα τρία πιο συνηθισμένα είναι:
Η στοχευμένη πολιτική έχει σχεδιαστεί για γενικά περιβάλλοντα. Εστιάζει στον περιορισμό συγκεκριμένων υπηρεσιών (ειδικά των δαιμόνων δικτύου) και αφήνει άλλες διεργασίες σε πιο επιτρεπτικούς τομείς ή ακόμα και χωρίς περιορισμούς. Είναι η προεπιλεγμένη επιλογή στις περισσότερες διανομές επειδή επιτυγχάνει μια καλή ισορροπία μεταξύ ασφάλειας και συμβατότητας.
La Πολιτική Πολυεπίπεδης Ασφάλειας (MLS) Προσθέστε το πεδίο επιπέδου ευαισθησίας στο περιβάλλον (s0, s1, s2, κατηγορίες, κ.λπ.) και επιτρέπει ταξινομήστε τις πληροφορίες και τις διαδικασίες σε επίπεδαΈχει σχεδιαστεί για οργανισμούς με πολύ αυστηρές απαιτήσεις (άμυνα, πληροφορίες, διαβαθμισμένα περιβάλλοντα) όπου έχει σημασία ποιος μπορεί να δει ή να τροποποιήσει ποιο επίπεδο δεδομένων.
Η ελάχιστη πολιτική είναι μια μειωμένη παραλλαγή, με λιγότερους κανόνες και ελέγχους. Χρησιμοποιείται σε συστήματα με περιορισμένες απαιτήσεις ασφαλείας ή όπου επιθυμείται ελάχιστη επίδραση στη συμβατότητα , θυσιάζοντας ορισμένες από τις δυνατότητες περιορισμού του SELinux.
Σε πραγματικές εφαρμογές, είναι συνήθως προτιμότερο να εργάζεστε με στοχευμένες αρθρωτές πολιτικές , προσαρμόζοντας κάθε ενότητα ξεχωριστά τι προστατεύεται και πώς, αντί να προσπαθείτε να διαχειριστείτε ένα μόνο τεράστιο μονολιθικό αρχείο, το οποίο είναι πολύ πιο δύσκολο στη συντήρηση.
Διαχείριση περιβάλλοντος: προβολή, αλλαγή και επαναφορά ετικετών SELinux
Μία από τις βασικές εργασίες στη διαχείριση του SELinux είναι η διασφάλιση ότι τα αρχεία, οι κατάλογοι, οι διεργασίες και οι θύρες έχουν το σωστό περιβάλλον σύμφωνα με την πολιτική. Ένα εσφαλμένα αντιστοιχισμένο περιβάλλον μπορεί να προκαλέσει τη διακοπή λειτουργίας μιας υπηρεσίας ή να αφήσει έναν πόρο πολύ εκτεθειμένο.
Για να ελέγξετε το περιβάλλον SELinux των αρχείων και των καταλόγων, πολλές τυπικές εντολές δέχονται την επιλογή -Z. Για παράδειγμα, με ls -Z /ruta μπορείτε να δείτε χρήστης, ρόλος, τύπος και επίπεδο κάθε καταχώρησης, και με ps Zaux Λαμβάνετε το πλαίσιο των ενεργών διεργασιών.
Όταν εγκαθίσταται μια πολιτική και το σύστημα αρχείων φέρει ετικέτα (για παράδειγμα χρησιμοποιώντας setfiles o fixfiles με τα αρχεία file_contexts), κάθε διαδρομή λαμβάνει ένα προεπιλεγμένος τύπος σύμφωνα με την πολιτικήΕάν δημιουργήσετε ένα νέο αρχείο σε έναν ήδη επισημασμένο κατάλογο, θα κληρονομήσει τον τύπο του καταλόγου, αλλά εάν το μετακινήσετε από άλλη τοποθεσία, θα διατηρήσει την αρχική του ετικέτα, κάτι που μπορεί να προκαλέσει ασυνέπειες.
Εάν ένα δέντρο αρχείων ή καταλόγων έχει λάθος ετικέτες, μπορείτε να τις διορθώσετε με restoreconΌτι επαναφέρει τα περιβάλλοντα στις τιμές που ορίζονται στην πολιτική. Με επιλογές όπως -R (αναδρομική) και -v (περιεκτικό) Είναι εύκολο να καταλάβει κανείς τι αλλάζει. Είναι ένα σχεδόν υποχρεωτικό βήμα πριν από τη μετάβαση από την επιτρεπτική στην επιβολή λειτουργίας σε συστήματα που βρίσκονται σε δοκιμαστική λειτουργία για κάποιο χρονικό διάστημα.
Για να δηλώσετε νέα μοτίβα επισήμανσης, χρησιμοποιείτε semanage fcontextΜε αυτό το εργαλείο γράφετε στην πολιτική τι Ο τύπος SELinux πρέπει να αντιστοιχιστεί σε συγκεκριμένες διαδρομές ή κανονικές εκφράσειςκαι στη συνέχεια εφαρμόζετε αυτές τις αλλαγές στο σύστημα αρχείων με restoreconΓια παράδειγμα, μπορείτε να επισημάνετε ένα νέο DocumentRoot από τον Apache με httpd_sys_content_t έτσι ώστε ο διακομιστής ιστού να μπορεί να το διαβάσει στον περιορισμένο τομέα του.
Βασική διαμόρφωση: ενεργοποιήστε το SELinux και επιλέξτε λειτουργία
Η συμπεριφορά του SELinux σε παγκόσμιο επίπεδο ελέγχεται από /etc/selinux/config, όπου η λειτουργία ορίζεται (enforcing, permissive o disabled) και την πολιτική που θα χρησιμοποιηθεί (στοχευμένη, MLS, ελάχιστη…).
Σε συστήματα όπως το RHEL ή το Fedora, η στοχευμένη πολιτική συνήθως προέρχεται ενεργοποιημένο από προεπιλογή και σε λειτουργία αναγκαστικής λειτουργίαςΣτο SUSE ή το openSUSE, οι παράμετροι του πυρήνα στο GRUB2 πρέπει να προσαρμοστούν για να φορτώνουν το SELinux αντί για το AppArmor. Αυτό περιλαμβάνει την προσθήκη επιλογών όπως security=selinux y selinux=1 στη γραμμή εκκίνησης και αναδημιουργήστε τη διαμόρφωση GRUB.
Αφού ενεργοποιήσετε το SELinux κατά την εκκίνηση και επιλέξετε την πολιτική, είναι σημαντικό να εκτελέσετε μια αρχική ετικέτα πλήρους συστήματος αρχείων χρησιμοποιώντας setfiles ή ισοδύναμα εργαλεία. Αυτό το βήμα Μπορεί να χρειαστεί χρόνος και είναι καλύτερο να το κάνετε σε μια περίοδο χαμηλής ζήτησης.Αλλά είναι η βάση για να ξεκινήσει το σύστημα χωρίς εκπλήξεις σε λειτουργία αναγκαστικής εκτέλεσης.
Σε περιβάλλοντα όπου κάνετε μετεγκατάσταση από το AppArmor, είναι κρίσιμο ελέγξτε τα αρχεία πολύ προσεκτικά file_contexts και οι τοπικές παραλλαγές τουςεπειδή οποιαδήποτε σοβαρή ασυνέπεια μπορεί να εμποδίσει την εκκίνηση του συστήματος. Δημιουργήστε ένα αντίγραφο ασφαλείας εκ των προτέρων και εργαστείτε με semanage fcontext Η ευθυγράμμιση της πολιτικής με την πραγματικότητα του συστήματος είναι σχεδόν επιβεβλημένη.
SELinux και CVE: πώς βοηθούν στον μετριασμό των τρωτών σημείων
Προμηθευτές όπως η Red Hat περιλαμβάνουν το SELinux ως παράγοντα στην αξιολόγηση των επιπτώσεων των CVE . Το μοντέλο σοβαρότητάς τους (Κρίσιμη, Σημαντική, Μέτρια, Χαμηλή) λαμβάνει υπόψη εάν μια ευπάθεια μπορεί να μετριαστεί ή τουλάχιστον να περιοριστεί από καλά διαμορφωμένους περιορισμούς SELinux.
Σε μια κρίσιμη ευπάθεια εκτέλεσης απομακρυσμένου κώδικα, πληκτρολογήστε Log4Shell (CVE-2021-44228)Ένας εισβολέας θα μπορούσε να εισάγει κώδικα σε μια υπηρεσία προσβάσιμη από το διαδίκτυο. Εάν αυτή η υπηρεσία εκτελείται σε έναν τομέα SELinux με πολύ περιορισμένους περιορισμούς, η πιθανότητα βλάβης μειώνεται, επειδή δεν θα έχει άδεια ανάγνωσης /etc/shadowχειρισμός ευαίσθητων βάσεων δεδομένων ή εναλλαγή στο σύστημα πέραν αυτού που είναι απολύτως απαραίτητο για τη λειτουργία του.
Σε ευπάθειες κλιμάκωσης δικαιωμάτων όπως το CVE-2023-4911 (Looney Tunables) , ακόμη και αν το exploit καταφέρει να παραχωρήσει σε έναν χρήστη πρόσβαση με υψηλότερα δικαιώματα σε επίπεδο DAC, η πολιτική ενδέχεται να αποτρέψει βασικές ενέργειες, όπως η φόρτωση μονάδων πυρήνα, η εγγραφή σε καταλόγους συστήματος ή το άνοιγμα ορισμένων υποδοχών δικτύου . Το αποτέλεσμα είναι ένας περιορισμός στο τι μπορεί να γίνει με αυτήν την πρόσφατα αποκτηθείσα πρόσβαση.
Σε περιπτώσεις μέτριων ευπαθειών (για παράδειγμα, ορισμένα ζητήματα στο Grafana) που απαιτούν ασυνήθιστες διαμορφώσεις ή είναι δύσκολο να εκμεταλλευτούν, το SELinux λειτουργεί ως ένα πρόσθετο εμπόδιο, αποτρέποντας ένα μικρό ελάττωμα από το να κλιμακωθεί σε ένα σοβαρό περιστατικό. Συχνά, η πολιτική αποκλείει άμεσα την πρόσβαση που θα χρειαζόταν το exploit για να θέσει σε κίνδυνο το σύστημα.
Σε ευπάθειες χαμηλού αντίκτυπου, όπως σφάλματα που προκαλούν διακοπές λειτουργίας σε εφαρμογές χρηστών (για παράδειγμα σε προγράμματα επεξεργασίας όπως το vim) , το SELinux συνήθως δεν είναι καθοριστικό στην πρόληψη του ίδιου του προβλήματος, αλλά εξακολουθεί να διατηρεί τον ρόλο του ως περιοριστή, διασφαλίζοντας ότι μια ελαττωματική διεργασία δεν θα εγκαταλείψει το εννοιολογικό της sandbox.
SELinux σε δράση: ένα πραγματικό παράδειγμα περιορισμού διακομιστή ιστού
Φανταστείτε έναν διακομιστή ιστού που εκτελεί RHEL ή Fedora και εκθέτει πολλές εφαρμογές και, παρά το γεγονός ότι προστατεύεται με ενημερώσεις κώδικα, καταλήγει να είναι ευάλωτος σε ένα σφάλμα απομακρυσμένης εκτέλεσης σε ένα από τα στοιχεία του. Χωρίς το SELinux, ένας εισβολέας που εκτελεί κώδικα ως χρήστης του διακομιστή ιστού θα μπορούσε να εγκαταστήσει backdoors, να διαβάσει διαπιστευτήρια ή να στραφεί σε άλλα συστήματα.
Με το SELinux σε λειτουργία επιβολής και μια καλά ρυθμισμένη στοχευμένη πολιτική, οι διεργασίες Apache, Nginx ή παρόμοιες εκτελούνται στον τομέα. httpd_t, η οποία έχει δικαιώματα που περιορίζονται σε αρχεία με ετικέτες τύπων όπως httpd_sys_content_t o httpd_sys_rw_content_tκαι ελεγχόμενη πρόσβαση σε καθορισμένες θύρες επίσης με κατάλληλο πλαίσιο.
Αυτό σημαίνει ότι, παρόλο που η εκμετάλλευση επιτρέπει την εκτέλεση εντολών, η παραβιασμένη διεργασία Δεν μπορεί να διαβάσει αρχεία όπως /etc/shadow καταλόγους βάσεων δεδομένων nor touch επισημασμένο με συγκεκριμένους τύπους (για παράδειγμα mysqld_db_t), ούτε να ανοίγετε αυθαίρετες συνδέσεις με άλλες εσωτερικές υπηρεσίες εάν η πολιτική δικτύου το περιορίζει.
Αντί για πλήρη παραβίαση του συστήματος, η εισβολή περιορίζεται εντός των ορίων του τομέα του ιστότοπου . Ναι, θα εξακολουθεί να αποτελεί ένα περιστατικό που πρέπει να διερευνηθεί, αλλά ο πιθανός αντίκτυπος είναι πολύ μικρότερος και ο εισβολέας θα έχει πολύ πιο δύσκολο έργο.
Λογικές τιμές, ενότητες και εργαλεία για την προσαρμογή πολιτικών
Εκτός από την κατάλληλη επισήμανση, η καθημερινή εργασία με το SELinux συνήθως περιστρέφεται γύρω από την τροποποίηση της βασικής πολιτικής για μικρές προσαρμογές χωρίς να χρειάζεται να την ξαναγράψουμε πλήρως . Εδώ μπαίνουν στο παιχνίδι οι λογικές τιμές και οι προσαρμοσμένες ενότητες.
Ο λογικά SELinux Αυτοί είναι διακόπτες ενεργοποίησης/απενεργοποίησης που αλλάζουν μέρη της συμπεριφοράς της ήδη μεταγλωττισμένης πολιτικής. Για παράδειγμα, μια λογική τιμή μπορεί να επιτρέψει ή να απαγορεύσει στον διακομιστή FTP να γράφει σε ορισμένους καταλόγους (στην περίπτωση allow_ftpd_anon_write), ή ότι ο διακομιστής ιστού εκκινεί εξερχόμενες συνδέσεις στο δίκτυο.
με getsebool -a o semanage boolean -l Μπορείτε να παραθέσετε αυτούς τους διακόπτες και να δείτε τις περιγραφές τους. Για να τους αλλάξετε μόνιμα, χρησιμοποιείτε setsebool -P nombre_booleano on|offόπου η επιλογή -P διασφαλίζει ότι η αλλαγή αποθηκεύεται στο δίσκο και επιβιώνει από επανεκκινήσειςΕίναι ένας πολύ βολικός τρόπος για να προσαρμόσετε την "επίσημη" πολιτική στις συγκεκριμένες ανάγκες του διακομιστή σας.
Από την άλλη πλευρά, η χρήση του ενότητες πολιτικής Σας επιτρέπει να επεκτείνετε ή να τροποποιήσετε κανόνες χωρίς να αγγίξετε τη βασική πολιτική. Μπορείτε να δείτε τις ενεργές ενότητες με semodule -lγια να απενεργοποιήσετε ένα με semodule -d nombre ή ενεργοποιήστε το ξανά με semodule -e nombreΣτο SUSE/openSUSE αυτό είναι ιδιαίτερα χρήσιμο για τη βελτιστοποίηση των τμημάτων του συστήματος που θέλετε να βρίσκονται υπό την εστίαση του SELinux ενώ σταθεροποιείτε την ανάπτυξή σας.
Όταν χρειάζεται να παραχωρήσετε πολύ συγκεκριμένα πρόσθετα δικαιώματα, ο συνδυασμός audit2allow y semodule Κάνει τη ζωή πολύ πιο εύκολη. Με βάση τα αρχεία του /var/log/audit/audit.log, Το audit2allow σας δείχνει ποιος κανόνας αποκλείστηκε και δημιουργεί μια ενότητα το οποίο, αν το εγκαταστήσετε, επιτρέπει ακριβώς αυτό που είχε απορριφθεί προηγουμένως.
Αρχεία καταγραφής, έλεγχος και αντιμετώπιση προβλημάτων με το SELinux
Κάθε φορά που το SELinux αποτρέπει μια ενέργεια που η πολιτική δεν επιτρέπει, ένα Άρνηση AVC (Άρνηση Access Vector Cache) που συνήθως καταγράφεται στο /var/log/audit/audit.logυπό την προϋπόθεση ότι η υπηρεσία auditd esté funcionando.
Αυτές οι καταχωρήσεις περιλαμβάνουν πολλές πληροφορίες: τι έχει επιχειρηθεί να γίνει (avc: denied { append }, write, getattrκ.λπ.), ποια διαδικασία το έχει ζητήσει (pid, comm=), σε ποιο αρχείο ή πόρο (name=, dev=, ino=), ποιο ήταν το πλαίσιο της αρχικής διαδικασίας (scontext) και σε ποιο πλαίσιο ο προορισμός (tcontext)Στην αρχή φαίνονται σαν κρυπτικές γραμμές, αλλά με λίγη εξάσκηση είναι καθαρός χρυσός για να κατανοήσετε τι συμβαίνει.
Για να αποφύγετε την υπερβολική ανάγνωση του αρχείου καταγραφής χειροκίνητα, εργαλεία όπως ausearch επιτρέπουν το φιλτράρισμα κατά τύπο μηνύματος (για παράδειγμα, -m AVC) ή μέσω προσωρινού παραθύρου (-ts recent). Και, πάνω απ' όλα, audit2allow και επιχειρήσεις κοινής ωφέλειας όπως sealert βοήθεια σε να μεταφράσουν αυτά τα γεγονότα σε σχεδόν ανθρώπινη γλώσσα και να εμφανίζει προτάσεις.
Μια τυπική ροή εργασίας αντιμετώπισης προβλημάτων θα ήταν η χρήση audit2allow -w -a Για να δείτε εξηγήσεις των τελευταίων ειδοποιήσεων, τότε audit2allow -a o -i fichero να επιθεωρήσει συγκεκριμένους κανόνες και, τέλος, αποφασίστε αν αξίζει να δημιουργήσετε μια ενότητα που ξεκλειδώνει αυτό το δικαίωμα Ή αν, αντίθετα, το μπλοκ είναι ασφαλές και είναι καλύτερο να μην το αγγίξετε.
Κάθε φορά που δημιουργούνται ενότητες με audit2allow -M nombre και εγκαθίστανται με semodule -iΑξίζει να ελέγξετε αυτές τις ρυθμίσεις, επειδή το εργαλείο τείνει να είναι γενναιόδωρο και θα μπορούσε να παρέχει περισσότερη πρόσβαση από την απολύτως απαραίτητη. Το SELinux προσφέρει μεγάλη ευελιξία για την ενίσχυση της πρόσβασης, αλλά η απρόσεκτη χρήση μπορεί να καταλήξει να δημιουργήσει κενά στην ίδια την πολιτική.
Το SELinux σε μια στρατηγική ενίσχυσης του Linux
Το SELinux δεν υπάρχει στο κενό: είναι ενσωματωμένο σε μια ευρύτερη στρατηγική θωράκισης που περιλαμβάνει χρήστες με περιορισμένα δικαιώματα, τείχη προστασίας, θωράκιση SSH, μηχανισμούς κατά της βίαιης βίας και αυτοματοποίηση διαμόρφωσης.
Ένα πολύ συνηθισμένο μοτίβο μετά την εγκατάσταση ενός διακομιστή είναι η δημιουργία ενός χρήστη με περιορισμένα δικαιώματα sudo , ώστε να μην λειτουργεί ποτέ ως άμεσος root, η ενεργοποίηση ενός τείχους προστασίας δικτύου (όπως ufw ή iptables/nftables) , η εγκατάσταση εργαλείων όπως το Fail2ban για τον αποκλεισμό επαναλαμβανόμενων προσπαθειών πρόσβασης και η διαμόρφωση του SSH με καλές πρακτικές (μη τυπική θύρα, απενεργοποίηση πρόσβασης root, έλεγχος ταυτότητας κλειδιού, όρια προσπαθειών, ισχυρή κρυπτογράφηση κ.λπ.).
Βασιζόμενο σε αυτό το θεμέλιο, το SELinux προσθέτει το επίπεδο MAC: ακόμη και αν ένας εισβολέας αποκτήσει πρόσβαση σε έναν χρήστη με λανθασμένα διαμορφωμένα δικαιώματα sudo ή κωδικό πρόσβασης SSH, η πολιτική μπορεί να περιορίσει τις διεργασίες και τα αρχεία στα οποία έχει πρόσβαση αυτός ο χρήστης . Δεν είναι αλάνθαστη, αλλά κλείνει πολλά από τα τρωτά σημεία που συνήθως εκμεταλλεύονται αυτοματοποιημένες επιθέσεις που περιγράφονται σε πίνακες όπως το MITRE ATT&CK.
Καθώς ο αριθμός των διακομιστών αυξάνεται, η χειροκίνητη εφαρμογή όλων αυτών των μέτρων θωράκισης καθίσταται μη πρακτική. Εδώ μπαίνουν στο παιχνίδι τα εργαλεία αυτοματισμού και ενορχήστρωσης (Ansible, Puppet, Chef, εμπορικές αυτοματοποιημένες λύσεις θωράκισης κ.λπ.), επιτρέποντας την ανάπτυξη συνεπών πολιτικών SELinux, την προσαρμογή των booleans, την ετικέτες διαδρομής και τη συντήρηση των επιθυμητών καταστάσεων χωρίς να δαπανώνται ώρες ανά μηχάνημα.
Σε οργανισμούς με εκατοντάδες κόμβους, αυτός ο αυτοματισμός μπορεί να κάνει τη διαφορά μεταξύ ενός σχετικά ομοιογενούς και ασφαλούς περιβάλλοντος ή μιας ζούγκλας από ασυνεπείς διαμορφώσεις όπου το SELinux είναι απενεργοποιημένο στους μισούς διακομιστές "ώστε να μην ενοχλεί κανέναν".
Τελικά, όταν το SELinux υλοποιείται σωστά —με λειτουργία επιβολής, συνεπή περιβάλλοντα, αναθεωρημένες πολιτικές, βελτιωμένες ενότητες και παρακολουθούμενα αρχεία καταγραφής— γίνεται ένα είδος διχτυού ασφαλείας που κρατά μακριά την παράξενη συμπεριφορά, περιορίζει τις εισβολές και βοηθά στην απόδειξη ότι εφαρμόζονται ισχυροί έλεγχοι πρόσβασης για ελέγχους, κανονισμούς και βέλτιστες πρακτικές ασφαλείας.