Συνδεθείτε στο Linux με δικαιώματα root. Εκτελέστε προγράμματα με μη αυτόματο τρόπο με δικαιώματα root. Δικαίωμα αλλαγής αρχείου

|

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

Απαιτήσεις

  • Βασικές δεξιότητες Linux.
  • Διακομιστής Linux (προαιρετικό).

Χρήστες Linux

Δεδομένου ότι το Linux είναι ένα σύστημα πολλών χρηστών, είναι σημαντικό να κατανοήσουμε πώς λειτουργούν οι χρήστες και οι ομάδες. Ας δούμε αυτές τις έννοιες με περισσότερες λεπτομέρειες.

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

Για να δείτε όλους τους χρήστες στο σύστημα, ελέγξτε το αρχείο /etc/passwd. Κάθε γραμμή σε αυτό το αρχείο περιέχει πληροφορίες για έναν μεμονωμένο χρήστη, ξεκινώντας με το όνομα χρήστη (πριν από τον πρώτο χαρακτήρα άνω και κάτω τελείας). Για να εμφανίσετε τα περιεχόμενα του αρχείου στην οθόνη, πληκτρολογήστε:

Υπερχρήστης

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

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

Ομάδες Linux

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

Για προβολή όλων διαθέσιμες ομάδεςκαι λίστες με τα μέλη τους, ανοίξτε το αρχείο /etc/group.

Δικαιώματα ιδιοκτησίας και πρόσβασης αρχείων

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

Για να προβάλετε δικαιώματα, χρησιμοποιήστε την εντολή ls. Έχει μια μεγάλη λίστα επιλογών (π.χ. ls -l myfile). Για να προβάλετε τις ρυθμίσεις πρόσβασης αρχείων στον τρέχοντα κατάλογο, εκτελέστε την εντολή χωρίς ορίσματα:

Για να ρωτήσετε τα περιεχόμενα του καταλόγου /etc, πληκτρολογήστε:

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

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

drwxrwxrwx
drwxrwx---
-rw-rw----
drwx------
-rw-------

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

d rwx(1) rwx(2) rwx(3)

  • d – πεδίο τύπου αρχείου.
  • rwx(1) – δικαιώματα του χρήστη που κατέχει το αρχείο.
  • rwx(2) – δικαιώματα της ιδιοκτήτριας ομάδας.
  • rwx(3) – δικαιώματα άλλων χρηστών.

Τύποι αρχείων

Υπάρχουν δύο κύριοι τύποι αρχείων στο Linux: τα κανονικά και τα ειδικά.

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

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

Πρόσβαση σε τάξεις

Όπως αναφέρθηκε προηγουμένως, κάθε αρχείο έχει ρυθμίσεις για τρεις κατηγορίες(ή πρόσβαση σε τάξεις):

  1. χρήστης – κάτοχος αρχείου.
  2. ομάδα - ο κάτοχος του αρχείου (αυτή η κλάση περιλαμβάνει όλα τα μέλη της ομάδας στην οποία ανήκει ο χρήστης - ο κάτοχος του αρχείου).
  3. και άλλους χρήστες (αυτή η κατηγορία περιλαμβάνει όλους τους χρήστες που δεν ανήκουν στις προηγούμενες κλάσεις).

Όλες οι διανομές Linux ακολουθούν αυτή τη σειρά προνομίων.

Τύποι πρόσβασης

  • r (ανάγνωση) – το δικαίωμα ανάγνωσης του αρχείου,
  • w (εγγραφή) – δικαίωμα αλλαγής (επεξεργασία),
  • x (εκτέλεση) – το δικαίωμα εκτέλεσης (σε ορισμένες ειδικές περιπτώσεις, μπορεί να χρησιμοποιηθεί άλλος χαρακτήρας αντί του x).

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

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

Ας ρίξουμε μια πιο προσεκτική ματιά στο τι ακριβώς παρέχει κάθε τύπος πρόσβασης.

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

Άδεια ανάγνωσης του αρχείου

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

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

Δικαίωμα αλλαγής αρχείου

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

Εάν ένας χρήστης έχει τον σωστό κατάλογο Επεξεργασία, τότε αυτός ο χρήστης μπορεί να διαγράψει τον κατάλογο, να αλλάξει τα περιεχόμενά του (δηλαδή, να δημιουργήσει, να μετονομάσει ή να διαγράψει αρχεία σε αυτόν) και τα περιεχόμενα των αρχείων που είναι αποθηκευμένα σε αυτόν.

Δικαίωμα εκτόξευσης

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

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

Παραδείγματα προνομίων

Τώρα ας δούμε μερικά χρήσιμα κοινά παραδείγματαδικαιώματα πρόσβασης σε αρχεία.

  • -rw——-: Μόνο ο χρήστης στον οποίο ανήκει το αρχείο έχει πρόσβαση στο αρχείο.
  • -rwxr-xr-x: Οποιοσδήποτε χρήστης στο σύστημα μπορεί να εκτελέσει ένα τέτοιο αρχείο.
  • -rw-rw-rw-: κάθε χρήστης του συστήματος έχει το δικαίωμα να αλλάξει ένα τέτοιο αρχείο.
  • drwxr-xr-x: οποιοσδήποτε χρήστης στο σύστημα μπορεί να διαβάσει αυτόν τον κατάλογο.
  • drwxrwx—: Τα περιεχόμενα του καταλόγου μπορούν να διαβαστούν και να τροποποιηθούν μόνο από τον ιδιοκτήτη και τον χρήστη.

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

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

Σημείωση: Για να μάθετε πώς μπορείτε να αλλάξετε τα δικαιώματα πρόσβασης, διαβάστε. Μιλάει για τη χρήση των εντολών chown, chgrp και chmod.

συμπέρασμα

Τώρα είστε εξοικειωμένοι με τις βασικές έννοιες που σχετίζονται με τα δικαιώματα και την ιδιοκτησία σε περιβάλλον Linux.

Ετικέτες:

Όπως γνωρίζετε, το Linux λαμβάνει πολύ σοβαρά υπόψη τη διαχείριση των χρηστών και τη χορήγηση αδειών χρήσης του συστήματος. Ένας κανονικός χρήστης μπορεί να γράψει αρχεία μόνο στον δικό του κατάλογο και στον κατάλογο /tmp/. Είναι επίσης δυνατή η ανάγνωση ορισμένων αρχείων στο root σύστημα αρχείων. Αλλά δεν μπορείτε να εγκαταστήσετε προγράμματα, επειδή αυτό απαιτεί άδεια εγγραφής, δεν μπορείτε να αλλάξετε χαρακτηριστικά αρχείων, δεν μπορείτε να ξεκινήσετε υπηρεσίες, δεν μπορείτε να διαβάσετε ορισμένα αρχεία καταγραφής και δεν μπορείτε να κάνετε πολλά περισσότερα.

Στο Linux, μόνο ο χρήστης root έχει το δικαίωμα να διαχειρίζεται το ριζικό σύστημα αρχείων και να δημιουργεί αρχεία εκεί.

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

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

  • Διαβάστε, γράψτε και αλλάξτε τα χαρακτηριστικά των αρχείων στον κατάλογό σας
  • Ανάγνωση, εγγραφή, αλλαγή ιδιοτήτων αρχείων στον κατάλογο /tmp
  • Εκτελέστε προγράμματα όπου δεν απαγορεύεται χρησιμοποιώντας τη σημαία noexec
  • Διαβάστε αρχεία που έχουν οριστεί η σημαία ανάγνωσης για όλους τους χρήστες.

Αν χρειαστεί να κάνουμε κάτι περισσότερο, θα χρειαστούμε δικαιώματα χρήστη root Linux. Το Root έχει το δικαίωμα να κάνει τα πάντα στο σύστημα αρχείων σας, ανεξάρτητα από τα δικαιώματα που έχουν οριστεί στο αρχείο.

Συνδεθείτε ως υπερχρήστης

Για να μπείτε κάτω root χρήστημπορείτε να μεταβείτε σε ένα από τα εικονικές κονσόλες, για παράδειγμα, χρησιμοποιώντας τη συντόμευση πληκτρολογίου Ctrl+Alt+F1 και, στη συνέχεια, εισαγάγετε τη ρίζα σύνδεσης και κωδικό πρόσβασης rootχρήστης.

Θα αποκτήσετε ένα πλήρες περιβάλλον root με τη δυνατότητα να κάνετε τα πάντα, αλλά αυτή η μέθοδος είναι πολύ μη πρακτική καθώς χάνετε όλα τα οφέλη από τη χρήση ενός GUI.

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

Μετάβαση σε υπερχρήστη στο τερματικό

Τώρα ερχόμαστε σε κάτι πιο ενδιαφέρον και πρακτικό. Χρησιμοποιώντας ειδικά βοηθητικά προγράμματα, μπορείτε να αλλάξετε τον τρέχοντα εξομοιωτή τερματικού στο περιβάλλον υπερχρήστη και να εκτελέσετε όλες τις ακόλουθες εντολές όχι για λογαριασμό σας, αλλά για λογαριασμό του, δίνοντας έτσι στο πρόγραμμα δικαιώματα root Linux. Υπάρχει ένα βοηθητικό πρόγραμμα για αυτό που ονομάζεται su. Σε γενικές γραμμές, αυτό το βοηθητικό πρόγραμμα σάς επιτρέπει όχι μόνο να μεταβείτε στον χρήστη root αλλά και σε οποιονδήποτε άλλο χρήστη, αλλά από προεπιλογή χρησιμοποιείται το root. Ας το ρίξουμε μια πιο προσεκτική ματιά. Η εντολή su linux έχει την ακόλουθη σύνταξη:

χρήστης επιλογών $su

Εδώ είναι οι κύριες επιλογές του:

  • -γ, --εντολή- εκτελέστε την εντολή
  • -g, --ομάδα- ορίστε την κύρια ομάδα χρηστών (μόνο για root)
  • -G --supp-group- πρόσθετες ομάδες χρηστών (μόνο για root)
  • -, -l, --login- λειτουργία σύνδεσης, όλες οι μεταβλητές περιβάλλοντος θα διαγραφούν και θα αρχικοποιηθούν λαμβάνοντας υπόψη τον νέο χρήστη και θα αλλάξει επίσης ο οικιακός κατάλογος
  • -p, --διατήρηση-περιβάλλον
  • -s, --κέλυφος- ορίστε το κέλυφος σύνδεσης
  • --εκδοχή- εμφάνιση της έκδοσης του προγράμματος.

Τώρα ας πειραματιστούμε λίγο για να καταλάβουμε πώς λειτουργεί η εντολή su linux.

Αρχικά, ας εκτελέσουμε το su χωρίς παραμέτρους, αλλά πρώτα θα δημιουργήσουμε μια μεταβλητή περιβάλλοντος για να ελέγξουμε πώς τις αντιμετωπίζει αυτή η εντολή:

Τώρα κάνουμε:

Ας δούμε τώρα τι έγινε:

ποιός είμαι
$pwd
$ echo $VAR
$ ηχώ $PATH
$ έξοδο

Από αυτές τις εντολές βλέπουμε ότι είμαστε πλέον ο χρήστης root, αλλά ο αρχικός κατάλογος θεωρείται ότι είναι ο κατάλογος του προηγούμενου χρήστη μας και η μεταβλητή μας δεν έχει αποθηκευτεί και η μεταβλητή PATH έχει αλλάξει, τώρα προστίθεται η διαδρομή /sbin εκεί .

Τώρα χρησιμοποιούμε τη λειτουργία σύνδεσης:

Και ας επαναλάβουμε τον ίδιο συνδυασμό:

ποιός είμαι
$pwd
$ echo $VAR
$ ηχώ $PATH
$ έξοδο

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

Όπως μπορείτε να δείτε, η μεταβλητή μας παραμένει. Μπορείτε επίσης να μεταβείτε σε οποιονδήποτε άλλο χρήστη. Για παράδειγμα:

Η απόκτηση δικαιωμάτων υπερχρήστη με αυτόν τον τρόπο χρησιμοποιείται σε πολλές διανομές, για παράδειγμα, Debian, OpenSUSE, ArchLInux, Gentoo, κ.λπ. Αλλά στο Ubuntu, ως διανομή για αρχάριους, η είσοδος ως χρήστης root είναι απενεργοποιημένη. Αυτό γίνεται επειδή επίσης δεν είναι πολύ ασφαλές, μπορεί να ξεχάσετε ότι εκτελείτε μια εντολή ως root και να κάνετε κάτι λάθος στο σύστημα. Επομένως, ας περάσουμε στο επόμενο πρόγραμμα.

Λήψη δικαιωμάτων root χωρίς εναλλαγή

Για την εφαρμογή της πιο ασφαλούς διεπαφής για εργασία με δικαιώματα υπερχρήστη στο Linux, αναπτύχθηκε η εντολή sudo. Ας δούμε τι είναι το sudo. Αυτή η εντολή γράφεται πριν από κάθε εντολή που πρέπει να εκτελεστεί ως υπερχρήστης και για να την εκτελέσετε πρέπει να εισάγετε τον κωδικό πρόσβασης όχι του root, αλλά μόνο του χρήστη σας. Όπως και το προηγούμενο, αυτό το βοηθητικό πρόγραμμα έχει τις δικές του επιλογές. Ας δούμε πρώτα τη σύνταξη:

εντολή $ sudo options

Επιλογές προγράμματος:

  • -σι- εκτελέστε το βοηθητικό πρόγραμμα που ξεκίνησε στο παρασκήνιο
  • -ΜΙ- αποθήκευση μεταβλητών περιβάλλοντος
  • -σολ- εκτελέστε την εντολή από την ομάδα
  • - χρησιμοποιήστε τον αρχικό κατάλογο
  • -μεγάλο- εμφάνιση λίστας δικαιωμάτων sudo για τον τρέχοντα χρήστη
  • -r- χρησιμοποιήστε τον ρόλο SELinux για την εντολή
  • -μικρό- χρησιμοποιήστε κέλυφος
  • -u- εκτελέστε την εντολή ως χρήστης, εάν δεν καθορίζεται, χρησιμοποιήστε root
  • -Εγώ- μην εκτελέσετε την εντολή, αλλά εισαγάγετε το κέλυφος, που ισοδυναμεί με su -

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

Η χρήση του sudo είναι ο προτεινόμενος τρόπος εκτέλεσης εντολών ως root στο Linux. Με αυτόν τον τρόπο δεν θα ξεχάσετε με τι αντιμετωπίζετε και θα έχετε τον λιγότερο κίνδυνο να καταστρέψετε το σύστημα. Αλλά υπάρχει ένα ακόμη άλυτο ερώτημα - τι να κάνετε με τα βοηθητικά προγράμματα γραφικών; Άλλωστε, η εντολή sudo δεν τα εκτελεί, αλλά τρέχει γραφικό κέλυφοςΗ εκτέλεση ως root δεν είναι ασφαλής. Αυτό είναι που θα δούμε στη συνέχεια.

Γραφικές εφαρμογές ως υπερχρήστης

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

Απλώς πληκτρολογήστε gksu ή kdesu ακολουθούμενο από την εντολή που θέλετε:

Αυτή η εντολή θα εκτελεστεί διαχείριση αρχείων KDE με δικαιώματα υπερχρήστη. Στο Gnome θα μοιάζει με αυτό:

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

συμπεράσματα

Αυτό είναι όλο. Τώρα ξέρετε πώς να αποκτήσετε δικαιώματα υπερχρήστη στο Linux, ξέρετε πώς να χρησιμοποιείτε την εντολή sudo και ποια είναι η διαφορά μεταξύ sudo και su. Τώρα τα προγράμματα που απαιτούν πρόσθετα προνόμια στο σύστημα δεν θα σας δημιουργήσουν προβλήματα. Εάν έχετε οποιεσδήποτε ερωτήσεις, γράψτε στα σχόλια!

Πώς μπορώ να αυξήσω τα προνόμιά μου σε προνόμια συστήματος; Κόσμος των Windows. Όπως αποδεικνύεται, υπάρχουν περισσότερες από αρκετές επιλογές για αυτό. Τι να επιλέξετε εξαρτάται τόσο από την κατάσταση όσο και από τις προτιμήσεις σας. Ωστόσο, όπως καταλαβαίνετε, πρέπει να επεκτείνετε τις δυνάμεις σας όχι μόνο για τα παράθυρα, αλλά και για τους πιγκουίνους. Τι ευκαιρίες υπάρχουν; Λοιπόν ας δούμε...

Πρόλογος

Όπως θυμάστε (και όπως θα πρέπει να θυμάται κάθε επαρκής διαχειριστής), η εργασία σε Linux υπό root δεν συνιστάται αυστηρά. Σε έναν ιδανικό κόσμο, θα το χρησιμοποιούσατε μόνο για διαμόρφωση διακομιστή, εγκατάσταση λογισμικού και ενημερώσεις και άλλες καθαρά διοικητικές εργασίες. Το πρόβλημα είναι ότι ζούμε σε έναν συνηθισμένο κόσμο, ο οποίος απέχει πολύ από τον ιδανικό. Επομένως, μια τέτοια κατάσταση εξακολουθεί να συμβαίνει μερικές φορές. Είναι αλήθεια ότι στις περισσότερες περιπτώσεις οφείλεται καθαρά σε αμέλεια, γιατί ιστορικά συνέβη ότι οι χρήστες Linux έπρεπε να καταλάβουν πώς λειτουργεί το λειτουργικό τους σύστημα. Και ακόμα κι αν καταλαβαίνετε λίγο για το σύστημα και τους μηχανισμούς ασφαλείας του, δεν θα μπορείτε να καθίσετε κάτω από τη βάση. Επομένως, σήμερα, σε αντίθεση με τα Windows, όπου μιλήσαμε για την απόκτηση προνομίων συστήματος ως διαχειριστής, θα εξετάσουμε μόνο επιλογές για την αύξηση των προνομίων από έναν μη προνομιούχο χρήστη σε root. Ας ξεκινήσουμε λοιπόν.

Εκμεταλλεύσεις

Όλες οι μέθοδοι απόκτησης δικαιωμάτων υπερχρήστη στο Linux μπορούν να χωριστούν σε δύο κατηγορίες. Το πρώτο είναι ακριβώς η χρήση εκμεταλλεύσεων. Σε αντίθεση με τα Windows, με τον μηχανισμό τους αυτόματη εγκατάστασηενημερώσεις, οι οπαδοί του Penguin πρέπει κυρίως να παρακολουθούν μόνοι τους την κυκλοφορία των ενημερώσεων κώδικα και την εγκατάστασή τους. Από αυτή την άποψη, η πιθανότητα να συναντήσετε ένα σύστημα που δεν έχει επιδιορθωθεί πλήρως μεταξύ των μηχανών Linux είναι πολύ υψηλότερη. Ποια είναι τα οφέλη αυτή τη μέθοδομπορείς να τονίσεις; Αρχικά, οι περισσότερες εκμεταλλεύσεις χρησιμοποιούν ευπάθειες στον πυρήνα του λειτουργικού συστήματος, κάτι που τους επιτρέπει να αποκτήσουν μέγιστα προνόμια. Η εύρεση κατάλληλου κώδικα εκμετάλλευσης δεν είναι τόσο δύσκολη και πιθανότατα γνωρίζετε μερικούς πόρους. Επιπλέον, για να επωφεληθείτε από ένα exploit, μερικές φορές δεν χρειάζεται να κατανοήσετε όλες τις περιπλοκές της ευπάθειας που χρησιμοποιείται - απλά πρέπει να το μεταγλωττίσετε σωστά και να το εκτελέσετε (μερικές φορές, ωστόσο, πρέπει να το προσαρμόσετε λίγο, αλλά αρκετά συχνά όλα λειτουργούν χωρίς να τα τροποποιήσετε με ένα αρχείο). ΣΕ γενική εικόναΟ αλγόριθμος των ενεργειών είναι ο εξής:

  1. Προσδιορίστε την έκδοση πυρήνα και διανομής.
  2. Λήψη λίστας διαθέσιμα εργαλείαγια τη συναρμολόγηση του σχίσματος.
  3. Παραδώστε το sploit στο μηχάνημα-στόχο.
  4. Μεταγλώττιση (αν χρειάζεται) και εκτέλεση.
  5. Απολαύστε τη ρίζα που προκύπτει.

Λοιπόν, τώρα για κάθε βήμα με περισσότερες λεπτομέρειες.

Ταυτοποίηση

Κρίνοντας από το σχέδιο, πρέπει πρώτα να μάθουμε πού καταλήξαμε, τι είδους διανομή χρησιμοποιούμε και ποια είναι η έκδοση του πυρήνα. Η έκδοση του πυρήνα μπορεί να ανακτηθεί χρησιμοποιώντας τη γνωστή εντολή uname -a ή τα ανάλογα της. Για να λάβετε πληροφορίες σχετικά με τη διανομή που χρησιμοποιείτε, πρέπει να δείτε το αρχείο *-release που βρίσκεται στον κατάλογο etc (ανάλογα με τη διανομή, μπορεί να ονομαστεί διαφορετικά: lsb-release στο Ubuntu, redhat-release στο κόκκινο Καπέλο / CentOS κ.λπ.):
cat /etc/*-release

Γνωρίζοντας τη διανομή και την έκδοση του πυρήνα, μπορείτε να προχωρήσετε στο δεύτερο στάδιο - την εύρεση ενός κατάλληλου "κύριο κλειδιού".

Αναζήτηση για μια εκμετάλλευση

Όταν υπάρχουν όλες οι απαραίτητες πληροφορίες, είναι καιρός να αναζητήσετε ένα κατάλληλο exploit. Το πρώτο πράγμα που έρχεται στο μυαλό είναι το exploit-db.com, αλλά υπάρχουν και εναλλακτικές: 1337day, SecuriTeam, ExploitSearch, Metasploit, Securityreason, Seclists. Εξάλλου, υπάρχει η Google που σίγουρα ξέρει περισσότερα για τα exploits από οποιονδήποτε άλλον. Κοιτάζοντας λίγο μπροστά, θα πω: μερικές φορές, για κάποιο λόγο, το "κύριο κλειδί" μπορεί να μην λειτουργεί ή πρέπει να το προσαρμόσετε λίγο σε ορισμένες συνθήκες ή τις ανάγκες σας, δηλαδή να το διαβάσετε με ένα αρχείο. Σε αυτή την περίπτωση, δεν θα έβλαπτε να μάθουμε για αυτήν Επιπλέον πληροφορίες, το οποίο μπορεί να ληφθεί από έναν από τους παρακάτω πόρους:
www.cvedetails.com
packetstormsecurity.org
cve.mitre.org

Λοιπόν, ας υποθέσουμε ότι βρίσκετε ένα κατάλληλο exploit που σας δίνει ένα πέρασμα στον κόσμο του root. Το μόνο που μένει είναι να το μεταφέρουμε με κάποιο τρόπο στο αυτοκίνητο.

Διανομή κατ 'οίκον

Για να παραδοθεί ο διανομέας στην τοποθεσία, υπάρχουν πολλές μέθοδοι, από τα γνωστά cURL/wget, Netcat, FTP, SCP/SFTP, SMB έως Χρήση DNSΕγγραφές TXT. Για να μάθετε ποιο από αυτά τα εργαλεία έχουμε, εκτελέστε:

Εύρεση / -name wget find / -name nc* find / -name netcat* find / -name tftp* find / -name ftp

Ας πούμε ότι βρήκαμε τη Netcat. Για να μεταφέρετε ένα αρχείο χρησιμοποιώντας το, εκτελέστε στην πλευρά λήψης:
nc -l -p 1234 > out.file

Δηλαδή, ακούμε τη θύρα 1234. Στην αποστολή κάνουμε τα εξής:
nc -w 3 1234< out.file

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

Nc -l -p 1234 | αποσυμπίεση -c | tar xvfp - // για λήψη tar cfp - /some/dir | συμπίεση -γ | nc -w 3 1234 // για αποστολή

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

Κρυφτό

Εντάξει, καταλάβαμε πώς να το παραδώσουμε. Πώς όμως μπορείτε να αποφύγετε να καείτε; Εάν ανακαλυφθεί η εκμετάλλευσή σας, να είστε σίγουροι ότι το κενό θα κλείσει γρήγορα. Πρέπει λοιπόν να το φιλοξενήσετε, να το μεταγλωττίσετε και να το εκτελέσετε από κάποιο δυσδιάκριτο μέρος. Στο Linux, οι κατάλογοι που ξεκινούν με μια τελεία (για παράδειγμα, .secret_folder) είναι κρυφοί. Επομένως, θα ήταν λογικό να χρησιμοποιηθούν για να κρύψουν τη δραστηριότητά τους. Για παράδειγμα, βάλτε κώδικα εκμετάλλευσης σε αυτά: /tmp/.nothingthere/exploit.c . Ωστόσο, σε αυτήν την περίπτωση, πρέπει πρώτα να βεβαιωθείτε ότι το tmp έχει τοποθετηθεί χωρίς την επιλογή noexec και μπορείτε να εκτελέσετε το assembled exploit από αυτό (για να το κάνετε αυτό, χρησιμοποιήστε την εντολή mount).

Δημιουργία και λειτουργία του exploit

Μόλις παραδώσουμε και τοποθετήσουμε το Sploit, θα πρέπει να συναρμολογηθεί/διαμόρφωση. Κατά κανόνα, τα exploits γράφονται σε C ή σε μία από τις γλώσσες δέσμης ενεργειών Python/Perl/PHP. Οι τακτικοί αναγνώστες ][ γνωρίζουν ότι το να αφήνετε έναν μεταγλωττιστή στον διακομιστή σας δεν είναι ό,τι καλύτερο Η καλύτερη απόφαση, οπότε συνήθως κόβεται. Εάν η ερώτησή σας σχετικά με την έκδοση μεταγλωττιστή gcc -v bash επιστρέφει την εντολή gcc: δεν βρέθηκε, τότε είστε «τυχεροί» και θα πρέπει να κάνετε μια παράκαμψη. Δηλαδή, είτε αναζητήστε ένα υπολογιστικό φύλλο σε Python, Perl ή κάτι άλλο, είτε μεταγλωττίστε το εικονική μηχανήμε παρόμοιο λειτουργικό σύστημα και έκδοση πυρήνα. Στη συνέχεια, μετακινήστε το εκτελέσιμο αρχείο που προκύπτει στον κεντρικό υπολογιστή προορισμού (ωστόσο, αυτή η μέθοδος δεν εγγυάται 100% λειτουργία· το exploit μπορεί να πέσει και να καταρρεύσει το σύστημα, γι' αυτό να είστε προσεκτικοί εδώ). Ωστόσο, όπως δείχνει η πρακτική, στο σύστημα πρέπει να υπάρχει διερμηνέας για μία από τις αναφερόμενες γλώσσες. Επομένως, δεν πρέπει να τα παρατήσετε αμέσως, ας ελέγξουμε όλες τις επιλογές:

Εύρεση / -name perl* find / -name python* find / -name gcc* find / -name cc

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

Counteracting Sploits

Είναι δύσκολο να βρείτε καινοτόμες συνταγές εδώ. Όλα είναι γνωστά εδώ και πολύ καιρό. Απλά πρέπει να εγκαταστήσετε τα patches στην ώρα τους. Αυτό είναι το πρώτο. Το δεύτερο είναι να περιορίσετε τα σημεία από τα οποία μπορούν να εκτελεστούν τα αρχεία (ο φάκελος tmp θα πρέπει οπωσδήποτε να στερηθεί αυτή τη δυνατότητα). Λοιπόν, εφαρμόστε κάποιο είδος λύσης ασφαλείας, για παράδειγμα grsecurity.

Δικαιώματα, αρχεία, διαδρομές και ρυθμίσεις παραμέτρων

Η δεύτερη κατηγορία που μπορεί να διακριθεί στην αύξηση των προνομίων είναι μέθοδοι που δεν σχετίζονται με τη χρήση exploits, αλλά βασίζονται στην αναζήτηση αρχείων με εσφαλμένα καθορισμένα δικαιώματα. Εδώ, όπως και στην περίπτωση των Windows, υπάρχουν μερικά κόλπα, αλλά βασικά εξακολουθεί να είναι η ίδια δουλειά συλλογής και ανάλυσης δεδομένων. Συνήθως, το πρώτο πράγμα που πρέπει να αναζητήσετε είναι αρχεία που είναι αναγνώσιμα και εγγράψιμα από όλους:
βρείτε / -perm 2 ! -τύπος l -ls

Μπορεί να υπάρχουν αρκετά από αυτά μεγάλος αριθμός, και ανάμεσά τους μπορείτε να βρείτε κάτι ενδιαφέρον: αρχεία ρυθμίσεων, πηγές τοποθεσιών/εφαρμογών, σενάρια που εκκινήθηκαν από το init ή το cron. Κατ 'αρχήν, μια κατάσταση όπου ένα αρχείο είναι αναγνώσιμο και εγγράψιμο από όλους είναι φυσιολογικό. Προβλήματα προκύπτουν όταν οι χρήστες/διαχειριστές/σενάρια αρχίζουν να αλλάζουν αλόγιστα τα δικαιώματα. Επομένως, όταν αλλάζετε δικαιώματα, προσπαθήστε να αποφύγετε τη χρήση του chmod 777 . Λοιπόν, πραγματοποιήστε περιοδικούς ελέγχους σε σημαντικά αρχείαδεν ήταν διαθέσιμα σε όλους.

Setuid+setgid

Όπως αναφέρει η τεκμηρίωση, το setuid και το setgid είναι σημαίες δικαιωμάτων που επιτρέπουν την εκτέλεση εκτελέσιμων με τα δικαιώματα του κατόχου ή της ομάδας του εκτελέσιμου αρχείου (συνήθως root). Τέτοια εκτελέσιμα αρχεία, όταν εκτελούνται με αυξημένα δικαιώματα, μπορούν να έχουν πρόσβαση σε περισσότερες προνομιακές πληροφορίες. Για παράδειγμα, εάν ορίσετε το setuid στην εντολή ls, θα μπορείτε να προβάλετε τα περιεχόμενα των καταλόγων στους οποίους αρχικά σας απαγορεύτηκε η πρόσβαση. Και στην περίπτωση του vim, μπορώ να επεξεργαστώ αρχεία ρυθμίσεων που δεν είχα το δικαίωμα να εξετάσω πριν.

Αντίστοιχα, εάν οι εφαρμογές με το σύνολο σημαιών setuid/setgid περιέχουν τρωτά σημεία όπως υπερχείλιση buffer ή ένεση εντολών, τότε ένας εισβολέας μπορεί να εκτελέσει αυθαίρετο κώδικα με αυξημένα δικαιώματα. Επομένως, η επόμενη επιλογή είναι συνήθως να αναζητήσετε εκτελέσιμα αρχεία με αυτές τις σημαίες.
sudo find / -xdev \(-perm 4000\) -type f -print0 -exec ls -s () \;

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

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

SUDO

Η εντολή sudo (υποκατάστατος χρήστης και do), που κυριολεκτικά σημαίνει "αντικαταστήστε έναν χρήστη και εκτελέστε", σας επιτρέπει να εκχωρήσετε ορισμένους προνομιούχους πόρους στους χρήστες ενώ διατηρείτε ένα αρχείο καταγραφής της εργασίας. Δηλαδή, παρέχει στους χρήστες τη δυνατότητα να εκτελούν εντολές ως root (ή άλλους χρήστες) χρησιμοποιώντας τους δικός κωδικός πρόσβασης, όχι τον κωδικό πρόσβασης root. Οι κανόνες για τη λήψη αποφάσεων πρόσβασης βρίσκονται στο αρχείο /etc/sudoers. Περισσότερες λεπτομέρειες σχετικά με τη μορφή αυτού του αρχείου και τη ρύθμιση των κανόνων μπορείτε να βρείτε στο επίσημο εγχειρίδιο ή στη Wikipedia. Θα πω μόνο ότι αυτό το αρχείο πρέπει επίσης να ελεγχθεί προσεκτικά. Επειδή συμβαίνει συχνά ορισμένες εφαρμογές να το αλλάζουν κατά την εγκατάσταση και, επιπλέον, όχι μέσα καλύτερη πλευρά. Ως αποτέλεσμα, οι χρήστες έχουν την ευκαιρία να αυξήσουν τα προνόμιά τους (ανάρτηση στο Offensive Security που λέει για μια τέτοια περίπτωση).

ΜΟΝΟΠΑΤΙ

Όπως και στα Windows, στο Linux οι εσφαλμένα διαμορφωμένες διαδρομές θα βοηθήσουν επίσης στην αύξηση των προνομίων σας. Αυτό συμβαίνει συνήθως με τη μεταβλητή περιβάλλοντος PATH (χρησιμοποιήστε printenv για να την προβάλετε). Κοίταξες; Ωραία, τώρα πείτε μου: τι γίνεται αν η μεταβλητή περιβάλλοντος PATH ξεκινά με. (.:/bin:/usr/sbin ....); Αυτό γίνεται συνήθως από χρήστες που δεν θέλουν να πληκτρολογήσουν δύο επιπλέον χαρακτήρες, δηλαδή θέλουν να καλέσουν την εντολή ως εξής: πρόγραμμα $ αντί για $ ./program . Πρόσθεση. στο PATH σημαίνει τη δυνατότητα εκτέλεσης αρχείων/σεναρίων από τον κατάλογο εργασίας. Μπορείτε να το προσθέσετε ως εξής:

PATH=.:$(PATH) PATH εξαγωγής

Τώρα φανταστείτε την κατάσταση που έχουμε δύο χρήστες: τον Joe (επιθετικός) και τον Bob. Ο Joe γνωρίζει ότι ο Bob έχει δικαιώματα sudo για να αλλάξει τους κωδικούς πρόσβασης χρηστών, συμπεριλαμβανομένου του root. Άλλωστε ο Μπομπ είναι τεμπέλης και προστίθεται. στη μεταβλητή περιβάλλοντος PATH. Ο Wile Joe γράφει ένα πρόγραμμα που θα αλλάξει τον κωδικό πρόσβασης root, το ονομάζει ls και το βάζει σε ένα φάκελο όπου ο Bob θέλει να κοιτάζει. Τώρα, όταν ο τελευταίος μπει στο φάκελο και θέλει να δει τα περιεχόμενά του, θα εκτελεστεί το πρόγραμμα που έγραψε ο Τζο και θα αλλάξει ο κωδικός πρόσβασης root. Επομένως, ελέγχουμε πάντα τις μεταβλητές περιβάλλοντος για την παρουσία ενδιαφέροντων πραγμάτων και για τον εαυτό μας εξάγουμε τα ακόλουθα συμπεράσματα:

  1. Δεν το χρησιμοποιούμε ποτέ. στη μεταβλητή PATH.
  2. Εάν το σημείο εξακολουθεί να υπάρχει εκεί, τοποθετήστε το επόμενη γραμμήσε .bashrc ή .profile:
    PATH= ηχώ $PATH | sed -e "s/::/:/g; s/:.:/:/g; s/:.$//; s/^://"

Εργαλεία

Για να αυτοματοποιήσετε την αναζήτηση για αδύναμα σημεία, μπορείτε να χρησιμοποιήσετε τα ακόλουθα εργαλεία:

1. Το LinEnum είναι ένα σενάριο bash που θα κάνει όλη τη βρώμικη δουλειά για εσάς, εκτελώντας όλους τους ελέγχους που περιγράφονται σε αυτό το cheat sheet. Συνολικά, έχει περίπου 65 διαφορετικούς ελέγχους, που κυμαίνονται από τη λήψη πληροφοριών σχετικά με την έκδοση του πυρήνα έως την αναζήτηση για πιθανώς ενδιαφέροντα αρχεία SUID/GUID. Επιπλέον, μπορείτε να μεταβιβάσετε μια λέξη-κλειδί στο σενάριο, την οποία θα αναζητήσει σε όλα τα αρχεία διαμόρφωσης και καταγραφής. Ο έλεγχος ξεκινά ως εξής: ./LinEnum.sh -k λέξη-κλειδί -r report -e /tmp/ -t . Αφού ολοκληρωθεί η σάρωση, θα σας παρουσιαστεί μια αρκετά λεπτομερής αναφορά, τα περισσότερα ενδιαφέροντα μέρηπου θα τονιστεί με κίτρινο χρώμα.
2. LinuxPrivChecker - Ένα σενάριο Python που είναι επίσης χρήσιμο στην αναζήτηση πιθανών επιλογών για την κλιμάκωση των προνομίων. Γενικά, κάνει όλα τα ίδια τυπικά πράγματα: έλεγχος προνομίων, λήψη πληροφοριών για το σύστημα... Αλλά το κύριο χαρακτηριστικό του είναι ότι μετά την ολοκλήρωση του ελέγχου, θα σας προσφέρει μια λίστα με εκμεταλλεύσεις που, κατά τη γνώμη του, θα βοηθήσουν αυξήσει τα προνόμια. Τόσο καλός τύπος :).
3. unix-privesc-check - αυτό το σενάριοσας επιτρέπει να αναζητήσετε επιλογές για την αναβάθμιση των προνομίων όχι μόνο στο Linux, αλλά και στα Solaris, HPUX, FreeBSD. Προσπαθεί να εντοπίσει σφάλματα διαμόρφωσης που θα επέτρεπαν σε έναν μη προνομιούχο χρήστη να ανέβει στο σύστημα.
4. g0tmi1k’s Blog - και αυτό είναι ένα blog στο οποίο περιγράφονται καλά όλοι οι έλεγχοι που εκτελούνται από τα τρία επώνυμα εργαλεία. Σας συνιστώ λοιπόν ανεπιφύλακτα να ρίξετε μια ματιά εκεί και να το γνωρίσετε για να φανταστείτε πώς λειτουργούν αυτά τα εργαλεία από μέσα.



Το LinuxPrivChecker περιέχει μια μεγάλη λίστα εκμεταλλεύσεων, η οποία ενημερώνεται συνεχώς από τη βάση δεδομένων Exploit

Επίλογος

Όπως έχετε δει, στον κόσμο του Linux, η αύξηση των προνομίων είναι επίσης αρκετά συνηθισμένη. Το μυστικό της επιτυχίας είναι απλό: για να πετύχεις τον στόχο σου, πρέπει να έχεις υπομονή και να ξέρεις πού να ψάξεις και τι να ψάξεις. Πού να κοιτάξετε, τώρα ξέρετε ποια βοηθητικά προγράμματα να χρησιμοποιήσετε και για αυτοματισμό, οπότε τώρα μπορείτε να κατακτήσετε όχι μόνο ένα σύστημα win, αλλά και ένα σύστημα nix. Καν 'το!

1. Χρησιμοποιώντας την εντολή: su

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

αλλά πιο συχνά θα χρησιμοποιούμε suπροκειμένου να γίνει χρήστης ρίζα:

Su - ρίζα

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

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

Συχνά οι χρήστες χρησιμοποιούν το "su" για να γίνουν root. Εάν προσπαθήσετε να εκτελέσετε μια εντολή (για παράδειγμα - ifconfig), θα λάβετε: σφάλμα "η εντολή δεν βρέθηκε".

Su Password: ifconfig bash: ifconfig: η εντολή δεν βρέθηκε

Ο λόγος είναι ότι οι κανονικοί χρήστες του συστήματος και ο χρήστης ρίζας έχουν διαφορετικές μεταβλητές περιβάλλοντος PATH (μπορείτε να δείτε το PATH του χρήστη χρησιμοποιώντας το "echo $PATH" μετά την είσοδο Εντολές Linux, το κέλυφος θα πραγματοποιήσει αναζήτηση στο PATH του χρήστη για να προσπαθήσει να βρει μια εντολή για εκτέλεση. Ξεκινά την αναζήτηση σε κάθε κατάλογο που παρατίθεται στο PATH μέχρι να βρεθεί ο στόχος.

Οι εντολές του τακτικού χρήστη βρίσκονται συνήθως στα /usr/local/bin, /usr/bin και /bin. Και οι εντολές χρήστη root βρίσκονται κυρίως στο /usr/local/sbin, /usr/sbin, /sbin και το ριζικό PATH αντικατοπτρίζει αυτό. Όταν λοιπόν γίνεσαι υπερχρήστης με "su -", δέχεσαι και εσύ νέος τρόπος PATH στις βασικές εντολές. Και χρησιμοποιώντας μόνο "su", το προεπιλεγμένο χρήστη PATH αποθηκεύεται, επομένως, όταν προσπαθείτε να εκτελέσετε ένα πρόγραμμα που βρίσκεται στο /usr/local/sbin, /usr/sbin, /sbin θα παράγει το αποτέλεσμα: σφάλμα "command not found" . Για μια πιο λεπτομερή εξήγηση, ανατρέξτε στη σελίδα man bash, ειδικά στην ενότητα των κελύφους σύνδεσης.

Οπότε εσείς ή πρέπει να υποδείξετε πλήρης διαδρομήστην εντολή (παράδειγμα - /sbin/ifconfig) όταν χρησιμοποιείτε "su", ή χρησιμοποιήστε "su -" όταν γίνετε root.

2. Χρήση Sudo

Δεν χρειάζεται να είστε υπερχρήστης κάθε φορά που θέλετε να εκτελέσετε ορισμένες συγκεκριμένες λειτουργίες διαχείρισης. Χάρη σε Σούντο, μπορείτε να εκτελέσετε ορισμένες ή όλες τις εντολές ως root. Οταν Σούντοεγκατεστημένο (πακέτο: Sudo), μπορείτε να το διαμορφώσετε χρησιμοποιώντας την εντολή "visudo" ως root. Βασικά επεξεργάζεται (προεπιλογή Vim) /etc/sudoers, αλλά δεν συνιστάται να το κάνετε με μη αυτόματο τρόπο.

Alex ALL=(ALL)ALL

Alex είναι το όνομα χρήστη. Αποθήκευση (πατήστε escape και μετά πληκτρολογήστε wq) και τελειώσατε. Συνδεθείτε ως alex και εκτελέστε για παράδειγμα:

$sudo yum ενημέρωση

Το Sudo θα ζητήσει κωδικό πρόσβασης. Αυτός είναι ο κωδικός πρόσβασης του Alex, όχι του χρήστη root. Επομένως, να είστε προσεκτικοί όταν εκχωρείτε δικαιώματα χρήστη με το Sudo.

Αλλά το Sudo μπορεί να κάνει περισσότερα από αυτό. Μπορούμε να επιτρέψουμε σε έναν χρήστη ή ομάδα χρηστών να εκτελεί μόνο μία εντολή ή ομάδα εντολών. Ας επιστρέψουμε στο αρχείο sudoers μας. Ας ξεκινήσουμε με τους alex και alisa, μέλη της ομάδας διαχειριστών. Εάν θέλουμε όλοι οι χρήστες στην ομάδα "διαχειριστής" να μπορούν να εκτελούν κάθε εντολή ως υπερχρήστης, πρέπει να τροποποιήσουμε το παράδειγμά μας:

%admin ALL=(ALL)ALL

Ο Alex μπορεί επίσης να εκτελέσει μια εντολή superuser και η Alisa έχει το δικαίωμα να εκτελέσει το Sudo, με τα ίδια δικαιώματα και τον κωδικό πρόσβασής της. Εάν το alex και το alisa δεν είναι μέλη της ίδιας ομάδας, μπορούμε να ορίσουμε το ψευδώνυμο του χρήστη στο αρχείο sudoers:

User_Alias ​​ADMINS = alisa,alex

Εδώ έχουμε ορίσει ένα ψευδώνυμο που ονομάζεται ADMINS, με μέλη alisa και alex.

Ωστόσο, δεν θέλουμε ο Alex και η Alisa να μπορούν να εκτελούν οποιοδήποτε πρόγραμμα ως root. Θέλουμε να μπορούν να εκτελούν μόνο το "updatedb". Ας ορίσουμε ένα ψευδώνυμο εντολής:

Cmnd_Alias LOCATE = /usr/sbin/updatedb

Δεν φτάνει όμως αυτό! Πρέπει να πούμε στο Sudo ότι οι χρήστες που ορίζονται ως ADMINS μπορούν να εκτελούν εντολές που καθορίζονται στο LOCATE. Για να γίνει αυτό, θα αντικαταστήσουμε τις γραμμές με "%admin" με αυτές:

ADMINS ALL = LOCATE

Αυτό σημαίνει ότι οι χρήστες στο ψευδώνυμο ADMINS μπορούν να εκτελέσουν όλες τις εντολές στο ψευδώνυμο LOCATE.

Αυτή τη φορά, το /etc/sudoers μοιάζει με αυτό:

User_Alias ADMINS = alisa, alex Cmnd_Alias LOCATE = /usr/bin/updatedb ADMINS ALL = LOCATE

Ως αποτέλεσμα, οι alex και alisa μπορούν να εκτελέσουν το updatedb ως root εισάγοντας τον κωδικό πρόσβασής τους.

Εάν αλλάξει η τελευταία γραμμή του αρχείου:

ADMINS ALL = NOPASSWD:LOCATE

τότε οι alex και alisa θα μπορούν να εκτελέσουν το "sudo updatedb" χωρίς να εισάγουν κωδικό πρόσβασης.

Μπορείτε να προσθέσετε περισσότερες εντολές σε ένα ψευδώνυμο εντολής και περισσότερα ψευδώνυμα σε έναν κανόνα. Για παράδειγμα, μπορούμε να δημιουργήσουμε ένα ψευδώνυμο ΔΙΚΤΥΟ που περιέχει μερικά εντολές δικτύουτύπος: ifconfig, route ή iwconfig:

Cmnd_Alias ​​NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhcclient, /usr/bin/net, sbin/iptables, /usr/bin/rfcom, /usr/bin/wvdial, /sbin /iwconfig, /sbin/mii-tool

Ας τα προσθέσουμε όλα αυτά στο αρχείο μας /etc/sudoers (χρησιμοποιώντας visudo!). Θα εκχωρήσουμε επίσης στην ομάδα ADMINS μας τα δικαιώματα για την εκτέλεση προγραμμάτων από το ψευδώνυμο NETWORKING:

User_Alias ​​ADMINS = alice, bob Cmnd_Alias​LOCATE = /usr/bin/updatedb Cmnd_Alias​NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net ,/sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ADMINS ALL = LOCATE, NETWORKING

Μια γρήγορη δοκιμή: συνδεθείτε ως alisa (ή alex) και πληκτρολογήστε:

$ping -c 10 -i localhost

Η απάντηση πρέπει να επανέλθει γρήγορα:

PING localhost.localdomain (127.0.0.1) 56(84) byte δεδομένων. ping: δεν μπορεί να πλημμυρίσει. ελάχιστο διάστημα, που επιτρέπεται για τον χρήστη, είναι 200ms

Τώρα, το ίδιο πράγμα αλλά με το Sudo:

$sudo ping -c 10 -i 0 localhost PING localhost.localdomain (127.0.0.1) 56(84) byte δεδομένων. 64 byte από localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0,049 ms 64 byte από localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0,049 ms localhost. (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms 64 byte από localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms 64 byte από localhost.localdom. icmp_seq=5 ttl=64 χρόνος=0,017 ms 64 byte από localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 χρόνος=0,016 ms 64 byte από localhost.localdomain (127.0mptl=127.0mpt_1): time=0,016 ms 64 byte από localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 time=0,016 ms 64 byte από localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=06. από localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 time=0,016 ms --- localhost.localdomain στατιστικά ping --- 10 πακέτα μεταδόθηκαν, 10 ελήφθησαν, 0% απώλεια πακέτων, χρόνος 1ms rtt min/avg max/mdev = 0,016/0,023/0,049/0,010 ms, ipg/ewma 0,187/0,028 ms

ΣούντοΣυχνά χρησιμοποιείται για να παραχωρήσει σε ορισμένους χρήστες μερική πρόσβαση σε προνομιακές εντολές, ώστε να μπορούν να εκτελούν περιορισμένες λειτουργίες διαχείρισης. Μία από τις ανέσεις Σούντοείναι ότι όλες οι εντολές γράφονται στο /var/log/secure. Το παραπάνω παράδειγμα θα περιγραφεί από τη γραμμή στο αρχείο καταγραφής:

18 Απρ 11:23:17 localhost sudo: alex: TTY=pts/0 ; PWD=/home/alex ; USER=root ; COMMAND=/bin/ping -c 10 -i 0 localhost

Αυτό είναι όλο. Τώρα δεν θα ξεχάσω ποτέ πότε χρησιμοποίησα το Sudo: "με μεγάλη δύναμη έρχεται μεγάλη ευθύνη."

2.1 κέλυφος Sudo

Εάν έχετε αρκετά δικαιώματα ρυθμισμένα στο sudoers, μπορείτε επίσης να ανοίξετε το root κέλυφοςχρησιμοποιώντας:

ΣΕ πιο πρόσφατες εκδόσειςμόνο στο CentOS 5, για να εκτελέσετε το κέλυφος ως root, χρησιμοποιήστε sudo -s. Να είστε πολύ προσεκτικοί καθώς αυτό μπορεί να αλλάξει ή να δημιουργήσει νέα αρχεία οικιακό κατάλογο Root και εγκατάσταση στον αρχικό κατάλογο του χρήστη που καλεί.

3.βοηθός κονσόλας

Το Consolehelper είναι ένα κέλυφος για εκκίνηση GUIεφαρμογές. Όταν ξεκινήσει να εκτελείται, ελέγχει τη διαμόρφωση του PAM για την απαιτούμενη εφαρμογή. Αυτό σημαίνει ότι μπορούμε να ελέγξουμε την ταυτότητα του χρήστη χρησιμοποιώντας όλα εγκατεστημένες μονάδες PAM. Η κύρια μέθοδος είναι να ζητήσουμε κωδικό πρόσβασης, αλλά αν έχουμε τον κατάλληλο εξοπλισμό. μπορούμε να κάνουμε έλεγχο ταυτότητας χρησιμοποιώντας έξυπνη κάρτα, μάρκες, δακτυλικά αποτυπώματα κ.λπ. Η διαμόρφωση του PAM είναι πέρα ​​από το πεδίο αυτού του εγγράφου (δείτε τον Οδηγό διαχειριστή PAM), επομένως θα εξετάσουμε το βήμα διαμόρφωσης του βοηθού κονσόλας που απαιτείται για την εκτέλεση εφαρμογών ως root και απαιτείται κωδικός πρόσβασης root.

Για παράδειγμα, ας διαμορφώσουμε το /usr/bin/xterm ώστε να εκτελείται ως root.

Ln -s /usr/sbin/consolehelper /usr/bin/xterm-root

Τώρα για να διαμορφώσετε το PAM, δημιουργήστε ένα αρχείο /etc/pam.d/xterm-root:

#%PAM-1.0 auth περιλαμβάνει config-util λογαριασμός περιλαμβάνει config-util συνεδρία περιλαμβάνει config-util

Τέλος, ρυθμίστε το consolehelper να εκτελεί το /usr/bin/xterm ως root με την εντολή "xterm-root". Δημιουργήστε ένα αρχείο /etc/security/console.apps/xterm-root:

USER=root PROGRAM=/usr/bin/xterm

Αυτό είναι όλο. Εκτελέστε το "xterm-root" (από γραμμή εντολώνή αρχείο shortcut.desktop), εισάγετε τον κωδικό πρόσβασης και πηγαίνετε. Εάν λάβετε το σφάλμα: "Xlib: η σύνδεση με ":0.0" απορρίφθηκε από τον διακομιστή", εκτελέστε πρώτα το "xhost local:root".

Σε πολλά εγχειρίδια linux (και όχι μόνο linux) για θέματα ασφάλειας, υπάρχουν τακτικά συστάσεις για την εκτέλεση όλων των μη διαχειριστικών ενεργειών υπό έναν χρήστη που δεν έχει δικαιώματα διαχειριστή/υπερχρήστη. Με απλά λόγια, όλοι συνιστούν να μην εργάζεστε συνεχώς ως root και να καταφεύγετε στην εργασία ως root μόνο όταν είναι απαραίτητο.
Στην πραγματικότητα, σε πολλές περιπτώσεις καθίσταται απαραίτητο να εκτελούνται διεργασίες κάτω από έναν χρήστη που όχι μόνο δεν έχει δικαιώματα root, αλλά δεν μπορεί επίσης να αυξήσει τα δικαιώματά του στο root. Καμία περίπτωση, καμία περίπτωση. Αυτή η ανάγκη προκύπτει (είναι λογικό να δημιουργούνται τέτοιοι χρήστες) για υπηρεσίες που εκτελούνται στον διακομιστή. Για παράδειγμα, Apache, Asterisk και ούτω καθεξής. Δηλαδή, έτσι ώστε κάποιος που μπορεί να αποκτήσει τα δικαιώματα ενός τέτοιου χρήστη όχι μόνο δεν θα λαμβάνει δικαιώματα root, αλλά ακόμη και (ξαφνικά) μαθαίνοντας τον κωδικό πρόσβασης root, δεν θα μπορεί να συνδεθεί χρησιμοποιώντας αυτόν τον κωδικό πρόσβασης (αύξηση των προνομίων του).

Σε παλαιότερες εκδόσεις του Linux, η προεπιλεγμένη λειτουργία ορίστηκε στην ακόλουθη λειτουργία: οι χρήστες που ανήκουν στην ομάδα τροχών μπορούν να εκτελέσουν την εντολή su, αλλά όλοι οι άλλοι δεν μπορούν. Δηλαδή, όλοι μπορούν να τρέξουν su, αλλά για χρήστες όχι από την ομάδα εντολή τροχού su ακόμη και με σωστό κωδικό πρόσβασης root θα ρίξει ένα σφάλμα.
Στις σύγχρονες εκδόσεις του Linux, για παράδειγμα, CentOS και Debian, αυτή η δυνατότητα είναι απενεργοποιημένη από προεπιλογή, π.χ. όλοι οι χρήστες μπορούν να αυξήσουν τα δικαιώματά τους (γνωρίζοντας τον κωδικό πρόσβασης root). Σε αυτό το άρθρο θα δείξουμε πώς να επιστρέψετε τη λειτουργία που ήταν πριν - έτσι ώστε μόνο οι χρήστες από την ομάδα τροχών να μπορούν να "ανεβάσουν" τα προνόμιά τους.

Από πού να ξεκινήσω

Πρώτα απ 'όλα, πρέπει να προστατεύσετε τον εαυτό σας. Δηλαδή, φροντίστε να προσθέσετε τον χρήστη στον οποίο εργάζεστε στην ομάδα ρόδα. Λοιπόν, εάν υπάρχουν αρκετοί χρήστες που εργάζονται στο σύστημα, υπό τους οποίους είναι απαραίτητο να αυξάνονται τα προνόμια για root από καιρό σε καιρό, τότε κάθεαπό αυτούς τους χρήστες πρέπει να προστεθούν στην ομάδα τροχών!
Σημειώστε ότι αυτό είναι σημαντικό να κάνετε πρινπώς αλλάζετε τις ρυθμίσεις του linux, διαφορετικά (εάν, για παράδειγμα, συνδεθείτε στον διακομιστή μέσω SSH, η πρόσβαση στο root δεν επιτρέπεται μέσω SSH) κάνοντας είσοδο τακτικός χρήστηςμέσω SSH, δεν θα μπορείτε να αυξήσετε τα προνόμιά σας στο root!

Δημιουργία ομαδικού τροχού

Είναι πιθανό ότι σε σας εκδόσεις linuxΔεν υπάρχει ομάδα τροχών από προεπιλογή. Τότε πρέπει να δημιουργηθεί. Υπάρχει η ακόλουθη εντολή για αυτό:
τροχός προσθήκης ομάδας
Μην φοβάστε να εισαγάγετε αυτήν την εντολή: εάν υπάρχει ο τροχός ομάδας, θα εμφανίσει ένα μήνυμα ότι μια τέτοια ομάδα υπάρχει ήδη. Εάν δεν υπάρχει τέτοια ομάδα, θα δημιουργηθεί

Πώς να προσθέσετε έναν χρήστη στην ομάδα τροχών

Υπάρχει μια εντολή για αυτό:
usermod -a -G wheel όνομα χρήστη
Για παράδειγμα:
usermod -a -G wheel όνομα χρήστη

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

Τώρα ελέγξτε ότι όλα γίνονται σωστά. Υπάρχει μια εντολή για αυτό:
αναγνωριστικό όνομα χρήστη
Για παράδειγμα:
αναγνωριστικό όνομα χρήστη

Θα εμφανιστούν το αναγνωριστικό χρήστη, το όνομα χρήστη και το αναγνωριστικό και το όνομα κάθε ομάδας στην οποία ανήκει ο χρήστης. Φρόντισε τα πάντα απαιτούμενοι χρήστεςπροστέθηκε στην ομάδα τροχών.

Εκτελέστε το su μόνο από χρήστες από την ομάδα τροχών

Ανοίξτε στο δικό σας επεξεργαστής κειμένουαρχείο: /etc/pam.d/su
Σε αυτό το αρχείο, αναζητήστε μια γραμμή παρόμοια με την ακόλουθη:
απαιτείται πιστοποίηση pam_wheel.so
ή
απαιτείται πιστοποίηση pam_wheel.so use_uid
Από προεπιλογή, αυτή η γραμμή ξεκινά με ένα σύμβολο "#", το οποίο μοιάζει με σχόλιο. Αφαιρέστε το σημάδι σχολίου από την αρχή αυτής της γραμμής και αποθηκεύστε το αρχείο.

Ολα! Τώρα μόνο οι χρήστες από την ομάδα τροχών μπορούν να εκτελέσουν την εντολή su και να κλιμακώσουν τα προνόμιά τους στο root. Μην ξεχάσετε να το ελέγξετε!