Εργασία με δυνατότητες Linux

Εισαγωγή

Οι δυνατότητες του Linux είναι ειδικά χαρακτηριστικά στον πυρήνα του Linux που εκχωρούν σε διεργασίες και σε δυαδικά εκτελέσιμα συγκεκριμένα δικαιώματα που κανονικά δεσμεύονται για διεργασίες των οποίων το πραγματικό αναγνωριστικό χρήστη είναι 0 (Ο χρήστης ρίζας και μόνο ο χρήστης ρίζας έχει UID 0).

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

Προαπαιτούμενα

  • Ένα σύστημα Linux στο οποίο έχετε πρόσβαση root (είτε μέσω του χρήστη root είτε ενός χρήστη με πρόσβαση sudo).

Εξήγηση

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

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

Οι δυνατότητες που εφαρμόζονται στο Linux είναι πολλές και πολλές έχουν προστεθεί από την αρχική τους κυκλοφορία. Μερικές από αυτές είναι οι εξής:

  • CAP_CHOWN: Πραγματοποιήστε αλλαγές στο User ID και στο Group ID των αρχείων
  • CAP_DAC_OVERRIDE: Παράκαμψη DAC (Discretionary Access Control). Για παράδειγμα, vto παράκαμψη ελέγχου δικαιωμάτων ανάγνωσης/εγγραφής/εκτέλεσης.
  • CAP_KILL: Παράκαμψη ελέγχων αδειών για αποστολή σημάτων σε διεργασίες.
  • CAP_SYS_NICE: Αύξηση της ωραιότητας των διαδικασιών ( Μια εξήγηση της ωραιότητας μπορείτε να βρείτε εδώ )
  • CAP_SYS_TIME: Ρύθμιση του συστήματος και του ρολογιού υλικού σε πραγματικό χρόνο

Για την πλήρη λίστα, τρέξτε το man 7 capabilities.

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

Όταν ορίζουμε δυνατότητες στο αρχείο, σχεδόν πάντα θα χρησιμοποιούμε "επιτρεπόμενο" και "ενεργό", για παράδειγμα CAP_DAC_OVERRIDE+ep. Παρατηρήστε το +ep, που υποδηλώνει τα προαναφερθέντα σύνολα.

Εργασία με δυνατότητες αρχείων

Απαιτούμενα πακέτα

Υπάρχουν δύο βασικά εργαλεία, getcapκαι setcapη οποία μπορεί να αντιστοίχως δείτε και να ρυθμίσετε αυτά τα χαρακτηριστικά.

  • Στο Debian και στο Ubuntu, αυτά τα εργαλεία παρέχονται από το libcap2-binπακέτο, το οποίο μπορεί να εγκατασταθεί με:apt install libcap2-bin
  • Σε CentOS και Fedora, απαιτείται το libcapπακέτο:yum install libcap
  • Στο Arch Linux, παρέχονται libcapεπίσης από:pacman -S libcap

Δυνατότητες ανάγνωσης

Για να δείτε εάν ένα αρχείο έχει κάποιο σύνολο δυνατοτήτων, μπορείτε απλώς να εκτελέσετε το getcap /full/path/to/binary, για παράδειγμα:

 root@demo:~# getcap /usr/bin/ping
 /usr/bin/ping = cap_net_raw+ep
 root@demo:~# getcap /usr/bin/rcp
 /usr/bin/rcp = cap_net_bind_service+ep

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

getcap -r /

Λόγω του γεγονότος ότι τα εικονικά συστήματα αρχείων (όπως το /proc) δεν υποστηρίζουν αυτές τις λειτουργίες, η παραπάνω εντολή θα παράγει χιλιάδες σφάλματα, επομένως για μια πιο καθαρή έξοδο χρησιμοποιήστε τα εξής:

getcap -r / 2>/dev/null 

Εκχώρηση και αφαίρεση δυνατοτήτων

Για να ορίσετε μια συγκεκριμένη δυνατότητα σε ένα αρχείο, χρησιμοποιήστε το setcap "capability_string" /path/to/file.

Για να καταργήσετε όλες τις δυνατότητες από ένα αρχείο, χρησιμοποιήστε το setcap -r /path/to/file.

Για επίδειξη, θα δημιουργήσουμε ένα κενό αρχείο στον τρέχοντα κατάλογο, θα του δώσουμε μια δυνατότητα και θα το αφαιρέσουμε. Ξεκινήστε με τα εξής:

root@demo:~# touch testfile
root@demo:~# getcap testfile

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

Στη συνέχεια, ορίστε μια δυνατότητα για το αρχείο:

root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep

Το "CAP_CHOWN+ep" χρησιμοποιήθηκε ως παράδειγμα, αλλά οποιοδήποτε άλλο μπορεί να εκχωρηθεί με αυτόν τον τρόπο.

Τώρα, καταργήστε όλες τις δυνατότητες από testfile:

root@demo:~# setcap -r testfile
root@demo:~# getcap testfile

Και πάλι, δεν θα υπάρχει έξοδος, επειδή το "CAP_CHOWN+ep" καταργήθηκε.

συμπέρασμα

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


Εγκαταστήστε το Plesk στο CentOS 7

Εγκαταστήστε το Plesk στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Plesk είναι ένας ιδιόκτητος πίνακας ελέγχου web host που επιτρέπει στους χρήστες να διαχειρίζονται τους προσωπικούς ή/και τους πελάτες τους ιστότοπους, βάσεις δεδομένων

Εγκαταστήστε το Lets Encrypt SSL σε εφαρμογή WordPress με ένα κλικ

Εγκαταστήστε το Lets Encrypt SSL σε εφαρμογή WordPress με ένα κλικ

Εισαγωγή Το Lets Encrypt είναι μια υπηρεσία αρχής έκδοσης πιστοποιητικών που προσφέρει δωρεάν πιστοποιητικά TLS/SSL. Η διαδικασία εγκατάστασης απλοποιείται από το Certbot,

Πώς να ρυθμίσετε έναν διακομιστή Tekkit Classic στο Ubuntu 16.10

Πώς να ρυθμίσετε έναν διακομιστή Tekkit Classic στο Ubuntu 16.10

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Τι είναι το Tekkit Classic; Το Tekkit Classic είναι ένα modpack για το παιχνίδι που όλοι γνωρίζουν και αγαπούν. Minecraft. Περιέχει μερικά από τα εδ

Δημιουργία ιστολογίου Jekyll στο Ubuntu 16.04

Δημιουργία ιστολογίου Jekyll στο Ubuntu 16.04

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Jekyll είναι μια εξαιρετική εναλλακτική λύση στο WordPress για blogging ή κοινή χρήση περιεχομένου. Δεν απαιτεί βάσεις δεδομένων και είναι πολύ εύκολο

Πώς να ρυθμίσετε αναβαθμίσεις χωρίς παρακολούθηση στο Debian 9 (Stretch)

Πώς να ρυθμίσετε αναβαθμίσεις χωρίς παρακολούθηση στο Debian 9 (Stretch)

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Εάν αγοράσετε έναν διακομιστή Debian, τότε θα πρέπει να έχετε πάντα τις πιο πρόσφατες ενημερώσεις κώδικα και ενημερώσεις, είτε κοιμάστε είτε όχι

Πώς να εγκαταστήσετε και να ρυθμίσετε τις παραμέτρους της PHP 7.0 ή της PHP 7.1 στο Ubuntu 16.04

Πώς να εγκαταστήσετε και να ρυθμίσετε τις παραμέτρους της PHP 7.0 ή της PHP 7.1 στο Ubuntu 16.04

Η PHP και τα σχετικά πακέτα είναι τα πιο συχνά χρησιμοποιούμενα στοιχεία κατά την ανάπτυξη ενός διακομιστή web. Σε αυτό το άρθρο, θα μάθουμε πώς να ρυθμίζετε την PHP 7.0 ή την PHP 7.1 o

Πώς να εγκαταστήσετε το Squid Proxy στο CentOS

Πώς να εγκαταστήσετε το Squid Proxy στο CentOS

Το Squid είναι ένα δημοφιλές, δωρεάν πρόγραμμα Linux που σας επιτρέπει να δημιουργήσετε έναν διακομιστή μεσολάβησης web προώθησης. Σε αυτόν τον οδηγό, θα δείτε πώς να εγκαταστήσετε το Squid στο CentOS για να σας μετατρέψει

Πώς να εγκαταστήσετε το Lighttpd (Στοίβα LLMP) στο CentOS 6

Πώς να εγκαταστήσετε το Lighttpd (Στοίβα LLMP) στο CentOS 6

Εισαγωγή Το Lighttpd είναι ένα πιρούνι του Apache που έχει ως στόχο να είναι πολύ λιγότερο εντάσεως πόρων. Είναι ελαφρύ, εξ ου και το όνομά του, και είναι αρκετά απλό στη χρήση. Εγκατάσταση

Τρεις δωρεάν πίνακες ελέγχου διακομιστή (Γρήγορη εγκατάσταση)

Τρεις δωρεάν πίνακες ελέγχου διακομιστή (Γρήγορη εγκατάσταση)

1. Virtualmin/Webmin Το Virtualmin είναι ένας ισχυρός και ευέλικτος πίνακας ελέγχου φιλοξενίας ιστοσελίδων για συστήματα Linux και UNIX που βασίζεται στη γνωστή διαδικτυακή βάση ανοιχτού κώδικα

Ρύθμιση μιας εφαρμογής Yii στο Ubuntu 14.04

Ρύθμιση μιας εφαρμογής Yii στο Ubuntu 14.04

Το Yii είναι ένα πλαίσιο PHP που σας επιτρέπει να αναπτύσσετε εφαρμογές πιο γρήγορα και εύκολα. Η εγκατάσταση του Yii στο Ubuntu είναι απλή, όπως θα μάθετε ακριβώς

Χρήση της οθόνης στο Ubuntu 14.04

Χρήση της οθόνης στο Ubuntu 14.04

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

Ρυθμίστε τον δικό σας διακομιστή DNS σε Debian/Ubuntu

Ρυθμίστε τον δικό σας διακομιστή DNS σε Debian/Ubuntu

Αυτό το σεμινάριο εξηγεί πώς να ρυθμίσετε έναν διακομιστή DNS χρησιμοποιώντας Bind9 σε Debian ή Ubuntu. Σε όλο το άρθρο, αντικαταστήστε το your-domain-name.com ανάλογα. Στο ου

Χρήση Logrotate για διαχείριση αρχείων καταγραφής

Χρήση Logrotate για διαχείριση αρχείων καταγραφής

Εισαγωγή Το Logrotate είναι ένα βοηθητικό πρόγραμμα Linux που απλοποιεί τη διαχείριση αρχείων καταγραφής. Συνήθως εκτελείται μία φορά την ημέρα μέσω μιας εργασίας cron και διαχειρίζεται τη βάση καταγραφής

Τροποποίηση Icinga2 για χρήση Μοντέλου Master/Client σε CentOS 6 ή CentOS 7

Τροποποίηση Icinga2 για χρήση Μοντέλου Master/Client σε CentOS 6 ή CentOS 7

Το Icinga2 είναι ένα ισχυρό σύστημα παρακολούθησης και όταν χρησιμοποιείται σε μοντέλο master-client, μπορεί να αντικαταστήσει την ανάγκη για ελέγχους παρακολούθησης που βασίζονται σε NRPE. Ο κύριος-πελάτης

Ρύθμιση του Red5 Media Server στο Ubuntu 16.04

Ρύθμιση του Red5 Media Server στο Ubuntu 16.04

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Red5 είναι ένας διακομιστής πολυμέσων ανοιχτού κώδικα που υλοποιείται σε Java που σας επιτρέπει να εκτελείτε εφαρμογές Flash πολλών χρηστών, όπως η ζωντανή ροή

Μεταγλώττιση και εγκατάσταση του Nginx με τη μονάδα PageSpeed ​​στο Debian 8

Μεταγλώττιση και εγκατάσταση του Nginx με τη μονάδα PageSpeed ​​στο Debian 8

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

Πώς να εγκαταστήσετε το Apache Cassandra 3.11.x στο Ubuntu 16.04 LTS

Πώς να εγκαταστήσετε το Apache Cassandra 3.11.x στο Ubuntu 16.04 LTS

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Apache Cassandra είναι ένα δωρεάν και ανοιχτού κώδικα σύστημα διαχείρισης βάσεων δεδομένων NoSQL που έχει σχεδιαστεί για να παρέχει επεκτασιμότητα, υψηλή

Πώς να εγκαταστήσετε το Apache Cassandra 3.11.x στο CentOS 7

Πώς να εγκαταστήσετε το Apache Cassandra 3.11.x στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Apache Cassandra είναι ένα δωρεάν και ανοιχτού κώδικα σύστημα διαχείρισης βάσεων δεδομένων NoSQL που έχει σχεδιαστεί για να παρέχει επεκτασιμότητα, υψηλή

Πώς να εγκαταστήσετε το Vanilla Forum στο Ubuntu 16.04

Πώς να εγκαταστήσετε το Vanilla Forum στο Ubuntu 16.04

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Vanilla forum είναι μια εφαρμογή φόρουμ ανοιχτού κώδικα γραμμένη σε PHP. Είναι πλήρως προσαρμόσιμο, εύκολο στη χρήση και υποστηρίζει εξωτερικά

Πώς να εγκαταστήσετε το Kanboard στο Ubuntu 18.04 LTS

Πώς να εγκαταστήσετε το Kanboard στο Ubuntu 18.04 LTS

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Εισαγωγή Το Kanboard είναι ένα δωρεάν και ανοιχτού κώδικα πρόγραμμα λογισμικού διαχείρισης έργων που έχει σχεδιαστεί για να διευκολύνει και να οπτικοποιήσει

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

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

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

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

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

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

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

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

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

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

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα