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

Ως λύση που προκύπτει από ανάγκες, η ενότητα 25 του POSIX.1e αφορά αυτό το ζήτημα. Η ανάπτυξη των προνομίων που ορίζονται σε αυτήν την ενότητα και πολλά άλλα ολοκληρώθηκε με την έκδοση του πυρήνα Linux 2.6.26. Εδώ είναι όλα όσα πρέπει να γνωρίζετε για τις δυνατότητες στον πυρήνα του Linux.

Κατανόηση της λογικής του API των δυνατοτήτων

Ο έλεγχος εξουσιοδότησης σε συστήματα που βασίζονται σε Unix αποτελείται από δύο βήματα:

  • Εάν ο τρέχων κάτοχος (πραγματικό αναγνωριστικό χρήστη, EUID) της εφαρμογής που εκτελείται είναι μηδέν, τότε το σύστημα δεν ελέγχει για εξουσιοδότηση
  • Εάν η τιμή EUID είναι διαφορετική από το μηδέν, το σύστημα εκτελεί τη διαδικασία ελέγχου σύμφωνα με τις εξουσιοδοτήσεις του πραγματικού χρήστη και της ομάδας της σχετικής εφαρμογής
instagram viewer

Ορισμένες εφαρμογές πρέπει να έχουν ευρύτερα δικαιώματα (SUID, SGIT bits) κατά την εκτέλεση. Ως το πιο χαρακτηριστικό παράδειγμα, μπορείτε να σκεφτείτε την εφαρμογή passwd. Με αυτό, οι χρήστες σε ένα σύστημα μπορούν να αλλάξουν τους κωδικούς πρόσβασής τους. Ωστόσο, για να γράψετε στο /etc/shadow αρχείο, όπου διατηρούνται οι κρυπτογραφημένοι κωδικοί πρόσβασης, είναι απαραίτητο να εργαστείτε με δικαιώματα χρήστη root (δηλαδή αναγνωριστικό χρήστη = 0).

Για την επίλυση αυτού του προβλήματος, η εφαρμογή passwd έχει ένα bit SUID. Όποιος χρήστης εκτελεί αυτήν την εφαρμογή, ο ενεργός κάτοχος (EUID) θα είναι πάντα root:

ls -l /usr/bin/passwd

# Έξοδος
-rwsr-xr-x. 1 root root 32552 23 Ιουλίου 2021 /usr/bin/passwd

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

Το πρόβλημα δεν τελειώνει μόνο με το bit SUID. Πρέπει επίσης να έχετε δικαιώματα χρήστη root όταν θέλετε να ακούσετε ένα προνομιακή θύρα TCP ή UDP λιγότερο από 1024 σε συστήματα που βασίζονται σε Unix. Για παράδειγμα, για να μπορέσετε να ακούσετε τη θύρα TCP 80 ενός διακομιστή web, πρέπει να εκτελέσετε την εφαρμογή ως χρήστης root.

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

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

Το μοντέλο ικανότητας Linux, εξηγείται!

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

Για παράδειγμα, για να λειτουργήσει η εφαρμογή ping, πρέπει να μπορεί να ανοίγει υποδοχές RAW, οι οποίες γενικά προορίζονται μόνο για χρήστες root. Σε παλιές διανομές Linux, το πρόβλημα είναι να δοθεί το bit SUID στην εφαρμογή ώστε να μπορούν να το χρησιμοποιούν οι κανονικοί χρήστες. Σε αυτές τις εκδόσεις, όταν αφαιρείτε το bit SUID από την εφαρμογή και προσπαθείτε να εκτελέσετε την εφαρμογή ως κανονικός χρήστης, λαμβάνετε το ακόλουθο σφάλμα:

ping 8.8.8.8

# Έξοδος
ping: icmp ανοιχτή υποδοχή: Δεν επιτρέπεται η λειτουργία

Ενώ στις σύγχρονες διανομές Linux, η εφαρμογή ping πιθανότατα δεν έχει το bit SUID:

ls -l /bin/ping 

# Έξοδος
-rwxr-xr-x. 1 root root 95232 25 Ιουλίου 2021 /bin/ping

Ωστόσο, μπορείτε να εκτελέσετε την εφαρμογή με επιτυχία ως κανονικός χρήστης. Ο μηχανισμός που το καθιστά δυνατό είναι ότι η εφαρμογή ping έχει την ειδική δυνατότητα CAP_NET_RAW.

Μπορείτε να μάθετε τις πρόσθετες δυνατότητες της εφαρμογής με το getcap εντολή ως εξής:

sudo getcap /bin/ping

# Έξοδος
/bin/ping cap_net_raw=ep

Εάν η εντολή getcap επιστρέψει μια κενή απόκριση, μπορείτε να ορίσετε μη αυτόματα αυτήν την τιμή με:

sudo setcap cap_net_raw+ep /bin/ping

Το μοντέλο ικανότητας διαδικασίας

Στην υλοποίηση Linux, οι δυνατότητες κάθε διεργασίας ομαδοποιούνται σε τρεις επικεφαλίδες:

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

Η λίστα των επιτρεπόμενων, αποτελεσματικών και κληρονομούμενων δυνατοτήτων για την εκτέλεση διεργασιών ανά πάσα στιγμή εμφανίζεται ως bitmask στις γραμμές CapPrm, CapEff, και CapInh στο αρχείο /proc//status. Επιπλέον, το CapBnd Η γραμμή περιέχει το bitmask που χρησιμοποιείται στη λειτουργία ελέγχου ορίων ικανότητας.

Για παράδειγμα, δοκιμάστε να διαβάσετε τις τιμές της εφαρμογής φλοιού που εκτελείται από το /proc/self/status αρχείο:

γάτα /proc/εαυτός/κατάσταση | grep Cap

# Έξοδος
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 000001ffffffffff
CapAmb: 0000000000000000

Το μοντέλο ικανότητας αρχείων στο Linux

Η λειτουργία του συστήματος δυνατοτήτων για αρχεία εξαρτάται από την προϋπόθεση ότι αυτές οι ιδιότητες μπορούν να αποθηκευτούν στο επίπεδο εικονικού συστήματος αρχείων (VFS). Παρόμοια με το μοντέλο διαδικασίας, οι δυνατότητες για αρχεία εμπίπτουν σε τρεις επικεφαλίδες:

1. Επιτρεπόμενο

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

2. Αποτελεσματικός

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

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

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

3. Κληρονόμητος

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

Ο ρόλος των δυνατοτήτων σε ένα σύστημα Linux

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

Επιτρέποντας σε όλους τους χρήστες να έχουν πρόσβαση σε όλους τους πόρους μπορεί να δημιουργήσει μια σοβαρή ευπάθεια ασφαλείας. Θα είναι πολύ εύκολο για τα άτομα που χρησιμοποιούν το σύστημα για κακόβουλους σκοπούς να εκμεταλλευτούν τα τρωτά σημεία του συστήματος. Οι δυνατότητες του Linux είναι χρήσιμες σε τέτοια θέματα. Μπορείτε εύκολα να ενισχύσετε την ασφάλεια των εφαρμογών σας με δυνατότητες API που τροφοδοτούνται από τον πυρήνα.

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

Βελτιώστε την ασφάλεια του διακομιστή σας Linux με αυτά τα 7 βήματα

Διαβάστε Επόμενο

ΜερίδιοΤιτίβισμαΜερίδιοΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ

Σχετικά θέματα

  • Linux
  • Προγραμματισμός
  • Πυρήνας Linux
  • Λειτουργικό σύστημα

Σχετικά με τον Συγγραφέα

Fatih Küçükkarakurt (Δημοσιεύτηκαν 8 άρθρα)

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

Περισσότερα από τον Fatih Küçükkarakurt

Εγγραφείτε στο ενημερωτικό μας δελτίο

Εγγραφείτε στο ενημερωτικό μας δελτίο για συμβουλές τεχνολογίας, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για να εγγραφείτε