הפקודה chroot יוצרת סביבה מבודדת בלינוקס על ידי שינוי ספריית השורש עבור כל התהליכים הרצים.
האם אתה מחפש להפעיל יישומים או שירותים במרחב מבודד בלינוקס? או אולי ברצונך לבדוק ולאפות באגים ביישום מבלי שזה יפריע לשאר המערכת שלך? אם כן, תרצה ללמוד על chroot, מנגנון רב עוצמה המובנה בלינוקס המאפשר לך ליצור סביבה נפרדת בתוך המערכת שלך.
בואו לחקור את chroot בפירוט, ללמוד על היתרונות שלו, מקרי שימוש, איך להגדיר אותו על מערכת לינוקס, ואם צריך, איך להימלט ממנו.
מה זה chroot בלינוקס?
chroot או change-root היא ללא ספק אחת הצורות הקלות והעתיקות ביותר של תוכנות קונטיינריזציה המאפשרות למשתמש לאסוף יישומים ושירותים בבטחה. ארגז חול, במונחי מחשוב, הוא תהליך של בידוד תוכנית במרחב מצומצם עם משאבים מוגדרים מראש.
אם אתה מכיר Docker ואיך זה עובד, אתה יכול לחשוב על chroot כגרסה מופשטת מאוד שלו. chroot פועלת על ידי שינוי ספריית השורש של תוכנית, הגבלת גישה ונראות, ובכך מספקת שכבה נוספת של בידוד ואבטחה.
בעיקרו של דבר, אתה יוצר ספרייה נפרדת, מעתיק את כל התלות של התוכנית לתוך הספרייה החדשה, ולאחר מכן מפעיל את פקודת chroot. זה מאפשר לתוכנית לפעול כראוי ללא גישה למערכת הקבצים הבסיסית.
chroot של תוכנית היא דרך מצוינת לבחון את מהימנותה במרחב בטוח מבלי לשנות את קבצי המערכת בפועל. יתרה מכך, ניתן גם להפחית את סיכון האבטחה הנגרם מחבילה שנפרצה כמו בסביבה chrooted, החבילה שנפרצה לא תוכל לגשת ולשנות קבצי מערכת רגישים.
התוכנית תוכל לגשת ולהציג רק קבצים שיובאו לספריית ה-chroot, הידועה גם בשם "כלא chroot". זה מונע מהתוכנית ותתי-התהליכים שלה להפריע למערכת הבסיס.
מהו כלא chroot?
כלא chroot הוא סביבה מבודדת שבה תוכניות chroot שוכנות ומבוצעות. המונח chroot jail נגזר מהתפיסה שהתהליך ותתי התהליכים שלו בתוך הסביבה chrooted אין להם גישה או נראות למערכת הקבצים הבסיסית והם כלואים בגבולות ה-chroot עם קבועים מראש אֶמְצָעִי.
עכשיו כשהמושג chroot ברור לכם, בואו נתחיל וללמוד איך אתם יכולים ליצור כלא chroot ולהוליד בו תהליכים.
כיצד ליצור כלא chroot ולהפעיל בו תוכניות
כלא chroot הוא בעצם ספרייה המכילה את כל המשאבים, הקבצים, הקבצים הבינאריים ושאר התלות שתוכנית תצטרך כדי לתפקד כראוי.
עם זאת, שלא כמו בסביבת לינוקס רגילה, סביבת הכלא chroot מוגבלת מאוד והתוכנית אינה יכולה לגשת לקבצים ומשאבי מערכת חיצוניים או נוספים.
לדוגמה, כדי להפעיל את מעטפת Bash בכלא chroot, תצטרך להעתיק את הבינארי של Bash ואת כל התלות שלו לספריית chroot.
להלן השלבים ליצירת כלא chroot ולהריץ מעטפת Bash:
- כדי שתוכנית תפעל בהצלחה, אתה צריך להעתיק את כל התלות שלה לספרייה הרשומה. בואו נמצא את הבינארי, במקרה זה, Bash, ואת המיקום של כל התלות שלו באמצעות הפקודות which ו-ldd:
איזה bash
ldd /usr/bin/bash - עכשיו כשאתה יודע את המיקומים של הבינארי והתלות שלו, העתק אותם לספרייה שברצונך להפוך לכלא chroot. באמצעות הפקודה mkdir צור את הספריות הדרושות ושימוש הפקודה cp, העתק את כל הקבצים לספריות המתאימות:
mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
- לבסוף, עם העתקת התוכנית והתלות שלה, אתה יכול להפעיל את פקודת chroot עם הרשאות גבוהות באמצעות הקידומת sudo כדי להוליד את סביבת ה-chroot בספרייה שנבחרה. כברירת מחדל, היא תוליד מעטפת Bash. הנה הפקודה להקליד:
sudo chroot directory_name
זה כל השלבים להוליד כלא chroot ולהפעיל בתוכו תוכנית.
איך לצאת מכלא chroot
למרות שכלא chroot טובים לבדיקת תוכנה לא יציבה, הם גם שימושיים בטיפול בחיבורי SSH שכן chroot של משתמשים מחוברים הוא אחד מני רבים דרכים לאבטח את שרת ה-SSH שלך.
מצד שני, אם אתה בודק חדירה ונכנסת לשרת ה-SSH של היעד שלך, למצוא שזו סביבה chrooted יכול להיות מתסכל ולהרגיש כמו מבוי סתום.
עם זאת, ישנן די הרבה דרכים להיחלץ מכלא chroot שהוגדר בצורה שגויה, חלקן דורשות כישורי תכנות C בעוד שאחרות יכולות להיות אוטומטיות עם כלי עבודה. כמה דרכים קלות לבריחה מ-chroot הן:
- שיחות chroot מקוננות
- שיחות chroot מקוננות עם מתאר קובץ שמור
- שיטת שורש הר
- פרוקפים לברוח
- בצע בריחה
שים לב שכדי לבצע chroot escape באמצעות כל אחת מהשיטות הללו, תצטרך להיות בעל הרשאות הסלמה במערכת. למד עוד על מתודולוגיות מילוט אלה על ידי מעבר אל מאגר GitHub של chw00t, כלי אוטומציית chroot escape.
עכשיו אתה יודע הכל על chroot בלינוקס
עכשיו כשאתה יודע מה זה chroot, איך זה עובד ואיך ליישם את זה, אתה אמור להיות מסוגל להעביר יישומים לארגז חול ללא מאמץ מהמסוף. זכור שכידוע לך, ישנן דרכים מרובות לצאת מסביבה chrooted.
זה מראה ש-chroot לא תוכנן בשום אופן להיות מיושם כתכונת אבטחה. לכן עליך להשתמש ב-chroot בזהירות רבה שכן תצורה לא נכונה עלולה להסתיים בפעולה לאחור ולסכן את בטיחות המערכת שלך.
עדיף להיצמד לפתרונות ארגז חול ייעודיים כמו תוכנת קונטיינריזציה או מכונות וירטואליות. שניהם מרוכזים סביב ארגז חול ואבטחה, כך שאם לא יהיה יום אפס חדש בעיר, לא תצטרך לדאוג לגבי האבטחה והשלמות של המערכת שלך.
אם אינך בטוח במה לבחור בין תוכנת קונטיינריזציה לווירטואליזציה, עליך לנסות את שתיהן ולראות בעצמך איזו מהן עדיפה.