להגביל יישומון משתמש SSH לתיקייה מסוימת ישנם מספר סיבות, בעיקר על שרתי אינטרנט, אך האחת הבולטת היא בטיחות המערכת. כדי לנעול משתמשי SSH בתיקייה מסוימת, נוכל להשתמש במנגנון chroot.
שינוי השורש (chroot) במערכות דומות ליוניקס כמו לינוקס, הוא כלי להפרדת פעולות משתמש ספציפיות משאר מערכת הלינוקס; משנה את התיקייה הראשית הנראית עבור תהליך המשתמש הנוכחי ולתהליך האב (הורה) שלו עם תיקיית שורש חדשה הנקראת כלא chrooted.
במדריך זה, נדגים כיצד להגביל גישת משתמש SSH לתיקייה נתונה בלינוקס. שים לב שנפעיל את כל הפקודות כשורש, השתמש בפקודת sudo אם אתה מחובר לשרת כמשתמש רגיל.
טבלת התוכן
1. התחל ביצירת הכלא Chroot באמצעות פקודת mkdir שבהלן:
1. התחל ביצירת הכלא שרת על ידי שימוש בפקודת mkdir שלהלן:
# mkdir -p /home/test
2. לאחר מכן, זהו את הקבצים הנדרשים, על פי דף הנחיה sshd_config, אופציה ChrootDirectory
מציינת את שמת הנתיב לסירוגין אליו לאחר אימות המשתמש. הספרייה חייבת להכיל את הקבצים והספריות הדרושים לתמיכה בפעילות המשתמש.
לפעילות של משתמש אינטראקטיבי, זה דורש לפחות שם של שפת פקודה, שם של שפת הפקודה הנפוצה במיוחד sh
, וכן קבצים בסיסיים ב/dev
כגון null, zero, stdin, stdout, stderr, ומכשירי tty:
# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. כעת, יצאו את הקבצים /dev
כפי שמוצג בפקודות שלהלן באמצעות פקודת mknod. בפקודה זו, מסמן -m
משמש לציון סימני רישיון הקבצים, c
אומר קובץ תווים ושני המספרים הם מספרים עיקריים ומינוריים שהקבצים מצביעים עליהם.
# mkdir -p /home/test/dev/ # cd /home/test/dev/ # mknod -m 666 null c 1 3 # mknod -m 666 tty c 5 0 # mknod -m 666 zero c 1 5 # mknod -m 666 random c 1 8

4. לאחר מכן, הגדר את הרישיון המתאים על הכלא שרת. שים לב כי הכלא שרת והתת-קבצים והתת-ספריות שלו חייבים להיות בבעלות משתמש שמם root, ולא להיות כתובים על ידי משתמש רגיל או קבוצה:
# chown root:root /home/test # chmod 0755 /home/test # ls -ld /home/test

שלב 2: הגדרת שפת פקודה אינטראקטיבית עבור כלא SSH שרת
5. קודם כל, צור את המדריך bin
ואז העתק את הקבצים /bin/bash
לתוך המדריך bin
באמצעות הפקודת cp כך:
# mkdir -p /home/test/bin # cp -v /bin/bash /home/test/bin/

6. עכשיו, זהו את הבאש הנדרש לlibs
משותפים, כפי שמוצג להלן, והעתק אותם לתוך המדריך lib
:
# ldd /bin/bash # mkdir -p /home/test/lib64 # cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

שלב 3: יצירת והגדרת משתמש של SSH
7. עכשיו, צור את משתמש ה-SSH באמצעות הפקודת useradd וקבע סיסמא בטוחה עבור המשתמש:
# useradd tecmint # passwd tecmint
8. צור את מדריכי ההגדרות הכלליים של הכלאת chroot, /home/test/etc
והעתק את קבצי החשבון המעודכנים (/etc/passwd ו-/etc/group) לתוך המדריך כך:
# mkdir /home/test/etc # cp -vf /etc/{passwd,group} /home/test/etc/

/home/test/etc
directory.שלב 4: הגדרת SSH לשימוש בכלאת chroot
9. עכשיו, פתח את הקובץ sshd_config
.
# vi /etc/ssh/sshd_config
והוסף/שנה את השורות להלן בקובץ.
#define username to apply chroot jail to Match User tecmint #specify chroot jail ChrootDirectory /home/test

שמור את הקובץ וצא, והפעל מחדש את שירותי ה-SSHD:
# systemctl restart sshd OR # service sshd restart
שלב 5: בדיקת SSH עם כלאת chroot
10. בשלב זה, בדוק אם ה-chroot jail מותקן עבודה כצפוי:
# ssh [email protected] -bash-4.1$ ls -bash-4.1$ date -bash-4.1$ uname

מהצילום מסך למעלה, אנו יכולים לראות שמשתמש ה-SSH כלוא ב-chrooted jail, ולא יכול להפעיל שום פקודות חיצוניות (ls, date, uname, וכו ').
המשתמש יכול רק לבצע bash ופקודות מקושרות שלה כמו (pwd, history, echo, וכו ') כפי שנראה להלן:
# ssh [email protected] -bash-4.1$ pwd -bash-4.1$ echo "Tecmint - Fastest Growing Linux Site" -bash-4.1$ history

שלב 6. צור את ספריית הבית של משתמש ה-SSH והוסף פקודות לינוקס
11. מהשלב הקודם, אנו יכולים לשים לב שהמשתמש כלוא בספריית השורש, אנו יכולים ליצור ספריית בית עבור משתמש ה-SSH כך (עשה זאת עבור כל המשתמשים בעתיד):
# mkdir -p /home/test/home/tecmint # chown -R tecmint:tecmint /home/test/home/tecmint # chmod -R 0700 /home/test/home/tecmint

12. הבא, התקן כמה פקודות משתמש כגון ls, date, ו-mkdir בספריית bin
:
# cp -v /bin/ls /home/test/bin/ # cp -v /bin/date /home/test/bin/ # cp -v /bin/mkdir /home/test/bin/

13. הבא, בדוק את הספריות המשותפות עבור הפקודות לעיל והעבר אותם לתוך ספריית הסוכן המקומית של הכלאה:
# ldd /bin/ls # cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

שלב 7. בדיקת SFTP עם כלאת Chroot
14. בצע בדיקה סופית בשימוש ב-sftp; בדוק אם הפקודות שהתקנת עכשיו פועלות.
הוסף את השורה למטה בקובץ /etc/ssh/sshd_config
:
#Enable sftp to chrooted jail ForceCommand internal-sftp
שמור את הקובץ וצא. ואז הפעל מחדש את שירותי ה-SSHD:
# systemctl restart sshd OR # service sshd restart
15. עכשיו, בדוק בשימוש ב-SSH, ותקבל את השגיאה הבאה:
# ssh [email protected]

נסה להשתמש ב-SFTP כדלקמן:
# sftp [email protected]

זה הכל לעכשיו! במאמר זה הראנו לך איך להגביל משתמש של SSH בסרגל תיקיה נתון (מעצר חולית chroot) בלינוקס. השתמש בסעיף התגובות למטה כדי לספר לנו את מחשבותיך על המדריך הזה.
Source:
https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/