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

Ψάχνετε να εκτελέσετε εφαρμογές ή υπηρεσίες σε απομονωμένο χώρο στο Linux; Ή μήπως θέλετε να δοκιμάσετε και να διορθώσετε σφάλματα μια εφαρμογή χωρίς να παρεμβαίνει στο υπόλοιπο σύστημά σας; Αν ναι, θα θελήσετε να μάθετε για το chroot, έναν ισχυρό μηχανισμό ενσωματωμένο στο Linux που σας επιτρέπει να δημιουργήσετε ένα ξεχωριστό περιβάλλον στο σύστημά σας.

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

Τι είναι το chroot στο Linux;

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

instagram viewer

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

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

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

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

Τι είναι το chroot Jail;

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

Τώρα που η έννοια του chroot είναι ξεκάθαρη σε εσάς, ας μάθουμε πώς μπορείτε να δημιουργήσετε ένα chroot jail και να δημιουργήσετε διαδικασίες σε αυτό.

Πώς να δημιουργήσετε ένα chroot Jail και να εκτελέσετε προγράμματα σε αυτό

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

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

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

Ακολουθούν τα βήματα για να δημιουργήσετε ένα chroot jail και να δημιουργήσετε ένα κέλυφος Bash:

  1. Για να εκτελεστεί με επιτυχία ένα πρόγραμμα, πρέπει να αντιγράψετε όλες τις εξαρτήσεις του στον κατάλογο chroot. Ας βρούμε το δυαδικό, σε αυτήν την περίπτωση, το Bash και τη θέση όλων των εξαρτήσεών του χρησιμοποιώντας τις εντολές which και ldd:
    που μπας
    ldd /usr/bin/bash
  2. Τώρα που γνωρίζετε τις θέσεις του binary και τις εξαρτήσεις του, αντιγράψτε τις στον κατάλογο που θέλετε να μετατρέψετε σε chroot jail. Χρησιμοποιώντας την εντολή mkdir δημιουργήστε τους απαραίτητους καταλόγους και χρησιμοποιώντας την εντολή cp, αντιγράψτε όλα τα αρχεία στους αντίστοιχους καταλόγους:
    mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
  3. Τέλος, με το πρόγραμμα και τις εξαρτήσεις του αντιγραμμένες, μπορείτε να εκτελέσετε την εντολή chroot με αυξημένα δικαιώματα χρησιμοποιώντας το πρόθεμα sudo για να δημιουργήσετε το περιβάλλον chroot στον επιλεγμένο κατάλογο. Από προεπιλογή, θα δημιουργήσει ένα κέλυφος Bash. Εδώ είναι η εντολή για να πληκτρολογήσετε:
    sudo chroot directory_name

Αυτά είναι όλα τα βήματα για να δημιουργήσετε ένα chroot jail και να εκτελέσετε ένα πρόγραμμα μέσα σε αυτό.

Πώς να ξεφύγετε από μια φυλακή chroot

Ενώ τα chroot jails είναι καλά για τη δοκιμή ασταθούς λογισμικού, είναι επίσης χρήσιμα κατά τον χειρισμό συνδέσεων SSH καθώς η chrooting συνδεδεμένων χρηστών είναι ένας από τους πολλούς τρόπους για να ασφαλίσετε τον διακομιστή SSH σας.

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

Ωστόσο, υπάρχουν πολλοί τρόποι για να ξεφύγετε από μια εσφαλμένη διαμόρφωση chroot jail, ορισμένοι απαιτούν δεξιότητες προγραμματισμού C ενώ άλλοι μπορούν να αυτοματοποιηθούν με εργαλεία. Μερικοί εύκολοι τρόποι διαφυγής chroot είναι:

  • Ένθετες κλήσεις chroot
  • Ένθετες κλήσεις chroot με αποθηκευμένο περιγραφικό αρχείου
  • Μέθοδος ρίζας προσάρτησης
  • procfs απόδραση
  • ίχνος διαφυγής

Λάβετε υπόψη ότι για να εκτελέσετε chroot escape χρησιμοποιώντας οποιαδήποτε από αυτές τις μεθόδους, θα χρειαστεί να έχετε αυξημένα προνόμια στο σύστημα. Μάθετε περισσότερα σχετικά με αυτές τις μεθοδολογίες διαφυγής μεταβαίνοντας στο αποθετήριο GitHub του chw00t, ένα εργαλείο αυτοματισμού διαφυγής chroot.

Τώρα ξέρετε τα πάντα για το chroot στο Linux

Τώρα που ξέρετε τι είναι το chroot, πώς λειτουργεί και πώς να το εφαρμόσετε, θα πρέπει να μπορείτε να κάνετε sandbox εφαρμογές χωρίς κόπο από το τερματικό. Λάβετε υπόψη ότι, όπως γνωρίζετε, υπάρχουν πολλοί τρόποι για να ξεφύγετε από ένα chrooted περιβάλλον.

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

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

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