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

Άποψη: 28349|Απάντηση: 4

[Linux] Μια πλήρης κατανόηση του τι είναι το selinux στο linux

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 5/7/2019 11:25:50 π.μ. | | | |
1. Προοίμιο

Το Security-Enhanced Linux (SELinux) είναι μια μονάδα πυρήνα Linux και ένα υποσύστημα ασφαλείας του Linux.

Το SELinux αναπτύχθηκε κυρίως από την NSA. Οι πυρήνες Linux 2.6 και άνω ενσωματώνουν ήδη μονάδες SELinux.

Το SELinux είναι πολύ περίπλοκο και έχει πολλά εννοιολογικά πράγματα που είναι δύσκολο να μάθεις. Πολλοί διαχειριστές συστημάτων Linux έχουν απενεργοποιήσει το SELinux επειδή το βρίσκουν ενοχλητικό.

Εάν μπορείτε να κατακτήσετε το SELinux και να το χρησιμοποιήσετε σωστά, νομίζω ότι ολόκληρο το σύστημα μπορεί βασικά να φτάσει στο σημείο να είναι «άφθαρτο» (να θυμάστε πάντα ότι δεν υπάρχει απόλυτη ασφάλεια).

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

Αυτό το άρθρο βασίζεται στο CentOS 7.4.1708.

Αυτό το άρθρο είναι καθαρά μια προσωπική μαθησιακή εμπειρία ανταλλαγής και ανταλλαγής, τα λάθη είναι αναπόφευκτα, μόνο για αναφορά! Αν βρείτε κάποιο λάθος, παρακαλώ να το επισημάνετε, σας ευχαριστώ πολύ!

2. Ο ρόλος του SELinux και ο μηχανισμός διαχείρισης αδειών

2.1 Ο ρόλος του SELinux

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

Φανταστείτε ότι εάν μια υπηρεσία δικτύου που εκτελείται ως root έχει μια ευπάθεια 0day, οι χάκερ μπορούν να εκμεταλλευτούν αυτήν την ευπάθεια για να κάνουν ό,τι θέλουν στον διακομιστή σας ως root. Δεν είναι τρομακτικό;

Το SELinux είναι εδώ για να λύσει αυτό το πρόβλημα.

2.2 ΕΑΒ

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

Εφόσον η διαδικασία πρόσβασης σε αυτόν τον πόρο πληροί τις παραπάνω προϋποθέσεις, είναι δυνατή η πρόσβαση σε αυτόν.

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

Το κύριο σώμα αυτού του μηχανισμού διαχείρισης αδειών είναι ο χρήστης, γνωστός και ως αυτόνομος έλεγχος πρόσβασης (DAC).

2.3 ΜΑΚ

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

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

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

Το κύριο σώμα αυτού του μηχανισμού διαχείρισης αδειών είναι η διαδικασία, γνωστή και ως υποχρεωτικός έλεγχος πρόσβασης (MAC).

Το MAC υποδιαιρείται σε δύο τρόπους, ο ένας ονομάζεται λειτουργία Category Security (MCS) και ο άλλος ονομάζεται λειτουργία Multi-Level Security (MLS).

Οι ακόλουθες ενέργειες είναι σε λειτουργία MCS.

2.4 Σύγκριση DAC και MAC

Εδώ είναι μια εικόνα για επεξήγηση.



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

3. Βασικές έννοιες του SELinux

3.1 Θέμα

Μπορεί να εξισωθεί πλήρως με μια διαδικασία.

Σημείωση: Για ευκολία κατανόησης, εκτός εάν ορίζεται διαφορετικά, η διαδικασία θεωρείται ως το κύριο σώμα παρακάτω.

3.2 Αντικείμενο

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

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

3.3 Πολιτική & Κανόνας

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

Και ποιες διαδικασίες πρέπει να ρυθμιστούν και πώς να τις ελέγξουμε καθορίζεται από την πολιτική.

Υπάρχουν πολλοί κανόνες σε μια πολιτική. Ορισμένοι κανόνες μπορούν να ενεργοποιηθούν ή να απενεργοποιηθούν ανάλογα με τις ανάγκες (εφεξής καλούμενοι δυαδικοί κανόνες).

Οι κανόνες είναι αρθρωτοί και επεκτάσιμοι. Κατά την εγκατάσταση μιας νέας εφαρμογής, η εφαρμογή μπορεί να προσθέσει κανόνες προσθέτοντας νέες ενότητες. Οι χρήστες μπορούν επίσης να προσθέσουν ή να αφαιρέσουν κανόνες με μη αυτόματο τρόπο.

Στο σύστημα CentOS 7, υπάρχουν τρία σύνολα πολιτικών, και συγκεκριμένα:

1. στοχευμένη: Ελέγχει τις περισσότερες διαδικασίες υπηρεσιών δικτύου. Αυτή είναι η πολιτική που χρησιμοποιείται από το σύστημα από προεπιλογή (χρησιμοποιούνται όλα τα παρακάτω).

2. Ελάχιστο: Με βάση τις στοχευμένες, ρυθμίζονται μόνο επιλεγμένες διαδικασίες υπηρεσίας δικτύου. Γενικά όχι.

3. MLS: Προστασία ασφαλείας πολλαπλών επιπέδων. Ρυθμίστε όλες τις διαδικασίες. Αυτή είναι η πιο αυστηρή πολιτική και η διαμόρφωση είναι πολύ δύσκολη. Γενικά, δεν χρησιμοποιείται εκτός εάν υπάρχουν εξαιρετικά υψηλές απαιτήσεις για ασφάλεια.

Οι πολιτικές μπορούν να οριστούν στο /etc/selinux/config.

3.4 Πλαίσιο ασφαλείας

Το πλαίσιο ασφαλείας βρίσκεται στην καρδιά του SELinux.

Πλαίσιο ασφαλείας Το χωρίζω σε "πλαίσιο ασφάλειας διαδικασίας" και "πλαίσιο ασφάλειας εγγράφων".

Ένα περιβάλλον ασφάλειας διεργασίας αντιστοιχεί συνήθως σε πολλαπλά περιβάλλοντα ασφάλειας εγγράφων.

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

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

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

Η δομή και η έννοια του πλαισίου ασφάλειας

Το περιβάλλον ασφαλείας έχει τέσσερα πεδία, που χωρίζονται με άνω και κάτω τελεία. Σχήμα όπως: system_u:object_r:admin_home_t:s0.


3.5 Τρόπος λειτουργίας SELinux

Το SELinux έχει τρεις τρόπους λειτουργίας, και συγκεκριμένα:

1. επιβολή: Επιβεβλημένη λειτουργία. Οι παραβιάσεις των κανόνων του SELinux θα αποκλειστούν και θα καταγραφούν στα αρχεία καταγραφής.

2. Επιτρεπτή: Λειτουργία ανοχής. Οι παραβιάσεις των κανόνων SELinux καταγράφονται μόνο στα αρχεία καταγραφής. Γενικά για εντοπισμό σφαλμάτων.

3. απενεργοποιημένο: Απενεργοποιήστε το SELinux.

Ο τρόπος λειτουργίας SELinux μπορεί να ρυθμιστεί στο /etc/selinux/config.

Εάν θέλετε να μεταβείτε από απενεργοποιημένο σε επιβεβλημένο ή επιτρεπτό, θα χρειαστεί να επανεκκινήσετε το σύστημα. Και αντίστροφα.

Οι λειτουργίες επιβολής και επιτρεπτής μπορούν να αλλάξουν γρήγορα με την εντολή Setenforce 1|0.

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

Τα αρχεία καταγραφής SELinux πρέπει να καταγράφονται με τη βοήθεια του auditd.service, μην το απενεργοποιήσετε.

3.6 Ροή εργασίας SELinux

Εδώ είναι ένα απόσπασμα από μια εικόνα, χωρίς πολλές εξηγήσεις.



Σημείωση: Το παραπάνω κείμενο ασφαλείας αναφέρεται στο περιβάλλον ασφαλείας.

4. Βασικές λειτουργίες SELinux

4.1 Ερώτηση για το περιβάλλον ασφαλείας ενός αρχείου ή καταλόγου

Βασική χρήση εντολών

ls -Ζ

Παραδείγματα χρήσης

Ερώτηση για το περιβάλλον ασφαλείας του /etc/hosts.

ls -Z /etc/hosts

Αποτελέσματα εκτέλεσης

-rw-r--r--. ρίζα ρίζας system_u:object_r:net_conf_t:s0 /etc/hosts

4.2 Ερώτηση για το πλαίσιο ασφαλείας της διαδικασίας

Βασική χρήση εντολών

ps auxZ | grep -v grep | grep

Παραδείγματα χρήσης

Ρωτήστε το πλαίσιο ασφαλείας των διαδικασιών που σχετίζονται με το Nginx.

ps auxZ | grep -v grep | grep nginx

Αποτελέσματα εκτέλεσης

system_u:system_r:httpd_t:s0 ρίζα 7997 0.0 0.0 122784 2156 ? Δδ 14:31 0:00 nginx: κύρια διαδικασία /usr/sbin/nginx

system_u:system_r:httpd_t:s0 nginx 7998 0.0 0.0 125332 7560 ? S 14:31 0:00 nginx: διαδικασία εργασίας

4.3 Μη αυτόματη τροποποίηση του περιβάλλοντος ασφαλείας ενός αρχείου ή καταλόγου

Βασική χρήση εντολών

Η CHCON [...]

Λειτουργία επιλογής -u Τροποποιήστε το πεδίο χρήστη του περιβάλλοντος ασφαλείας -r Τροποποιήστε το πεδίο ρόλου του περιβάλλοντος ασφαλείας -t Τροποποιήστε το πεδίο τύπου του περιβάλλοντος ασφαλείας -l Τροποποιήστε το πεδίο επιπέδου του περιβάλλοντος ασφαλείας --reference Τροποποιήστε το πλαίσιο ασφαλείας σύμφωνα με το καθορισμένο αρχείο ή κατάλογο -R Αναδρομική λειτουργία -h Τροποποιήστε το πλαίσιο ασφαλείας του soft link (τροποποιήστε το αντίστοιχο αρχείο του soft link χωρίς αυτήν την επιλογή)

Παραδείγματα χρήσης

Τροποποιήστε το περιβάλλον ασφαλείας της δοκιμής σε aaa_u:bbb_r:ccc_t:s0.

chcon -u aaa_u -r bbb_r -t ccc_t δοκιμή

4.4 Επαναφέρετε το περιβάλλον ασφαλείας ενός αρχείου ή καταλόγου στην προεπιλεγμένη τιμή του

Βασική χρήση εντολών

restorecon [επιλογές] [...]

Προαιρετική λειτουργία - Διαδικασία λειτουργίας εκτύπωσης V - Αναδρομική λειτουργία R

Παραδείγματα χρήσης

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

restorecon -R /usr/share/nginx/html/

4.5 Ερώτηση για τους κανόνες Boolean και την κατάστασή τους στο σύστημα

Βασική χρήση εντολών

getsebool -α

Δεδομένου ότι η εντολή ρωτά είτε όλους τους κανόνες είτε μόνο έναν κανόνα, συνήθως ρωτά πρώτα όλους τους κανόνες και μετά φιλτράρει με grep.

Παραδείγματα χρήσης

Ερώτηση δυαδικών κανόνων που σχετίζονται με το httpd.

getsebool -α | grep httpd

Αποτελέσματα εκτέλεσης

httpd_anon_write --> off

httpd_builtin_scripting --> καθεξής

httpd_can_check_spam --> off

httpd_can_connect_ftp --> off

#以下省略

4.6 Αλλαγή κανόνα Boole

Βασική χρήση εντολών

setsebool [επιλογή]

Η λειτουργία επιλογής -P επανεκκίνηση εξακολουθεί να ισχύει

Παραδείγματα χρήσης

Ενεργοποιήστε httpd_anon_write κανόνες.

setsebool -P httpd_anon_write ενεργοποιημένο

4.7 Προσθήκη προεπιλεγμένου περιβάλλοντος ασφαλείας για έναν κατάλογο

Βασική χρήση εντολών

semanage fcontext -a -t "(/.*)?"

Σημείωση: Το προεπιλεγμένο περιβάλλον ασφαλείας ενός καταλόγου ή αρχείου μπορεί να προβληθεί χρησιμοποιώντας την εντολή semanage fcontext -l σε συνδυασμό με το φιλτράρισμα grep.

Παραδείγματα χρήσης

Αφού προσθέσετε έναν νέο κατάλογο ιστότοπου /usr/share/nginx/html2 στο Nginx, πρέπει να ορίσετε το ίδιο προεπιλεγμένο περιβάλλον ασφαλείας για αυτόν με τον αρχικό κατάλογο.

semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html2(/.*)?"

4.8 Προσθήκη θυρών που επιτρέπονται από ορισμένους τύπους διεργασιών

Βασική χρήση εντολών

semanage port -a -t -p

Σημείωση: Οι αριθμοί θυρών που επιτρέπονται για διάφορους τύπους υπηρεσιών μπορούν να προβληθούν χρησιμοποιώντας την εντολή semanage port -l με φιλτράρισμα grep.

Παραδείγματα χρήσης

Για το Nginx, πρέπει να χρησιμοποιήσετε τη θύρα 10080 για υπηρεσίες HTTP.

Θύρα Semanage -A -T http_port_t -P TCP 10080

5. Ανάλυση και επίλυση σφαλμάτων SELinux

5.1 Κατανόηση των αρχείων καταγραφής SELinux

Όταν το SELinux είναι ενεργοποιημένο, κάποια φυσιολογική συμπεριφορά πολλών υπηρεσιών θεωρείται παραβίαση (τόσο στον τίτλο όσο και στα παρακάτω σφάλματα).

Προς το παρόν, πρέπει να χρησιμοποιήσουμε αρχεία καταγραφής παραβίασης SELinux για να τα αναλύσουμε και να τα λύσουμε.

Τα αρχεία καταγραφής παραβίασης SELinux αποθηκεύονται στο /var/log/audit/audit.log.

/var/log/audit/audit.log 的内容大概是这样的。

type=LOGIN msg=audit(1507898701.391:515): pid=8523 uid=0 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 old-auid=4294967295 auid=0 tty=(κανένα) old-ses=4294967295 ses=25 res=1

type=USER_START msg=audit(1507898701.421:516): pid=8523 uid=0 auid=0 ses=25 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 msg='op=PAM:session_open grantors=pam_loginuid,pam_ keyinit,pam_limits,pam_systemd acct="root" exe="/usr/sbin/crond" όνομα κεντρικού υπολογιστή=? addr=? terminal=cron res=επιτυχία'

...

Το αρχείο έχει πολύ περιεχόμενο και αναμειγνύεται με πολλά αρχεία καταγραφής ελέγχου συστήματος που δεν έχουν καμία σχέση με σφάλματα SELinux. Θα χρησιμοποιήσουμε το βοηθητικό πρόγραμμα sealert για να βοηθήσουμε στην ανάλυση (εάν η προτροπή δεν μπορεί να βρει την εντολή, εγκαταστήστε το πακέτο setroubleshoot).

5.2 Αναλύστε τα σφάλματα με το sealert

Βασική χρήση εντολών

sealert -α /var/log/audit/audit.log

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




Προηγούμενος:CentOS7 Προβολή και απενεργοποίηση του τείχους προστασίας
Επόμενος:Κατακτήστε την πρόσβαση στη διεπαφή Java API του HDFS
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 22/7/2021 5:17:58 μ.μ. |
Απενεργοποιήστε το SELinux

getenforce #查看是否是 απενεργοποιημένο, εάν όχι, εκτελέστε την παρακάτω εντολή
vim /etc/selinux/config
Αλλάξτε το SELINUX=επιβολή σε SELINUX=απενεργοποιημένο, αποθήκευση και έξοδος
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 15/10/2021 1:21:42 μ.μ. |
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 15/10/2021 2:22:40 μ.μ. |
Απενεργοποιήστε την ανταλλαγή διαμερισμάτων swap

 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 3/9/2024 2:16:43 μ.μ. |
Κλείστε το SELINUX





Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com