איך להגביל את גישת משתמשי SSH לתיקייה מסוימת באמצעות כלא ביטחון

להגביל יישומון משתמש 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}
Listing Required Files

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
Create /dev and Required Files

4. לאחר מכן, הגדר את הרישיון המתאים על הכלא שרת. שים לב כי הכלא שרת והתת-קבצים והתת-ספריות שלו חייבים להיות בבעלות משתמש שמם root, ולא להיות כתובים על ידי משתמש רגיל או קבוצה:

# chown root:root /home/test
# chmod 0755 /home/test
# ls -ld /home/test
Set Permissions on Directory

שלב 2: הגדרת שפת פקודה אינטראקטיבית עבור כלא SSH שרת

5. קודם כל, צור את המדריך bin ואז העתק את הקבצים /bin/bash לתוך המדריך bin באמצעות הפקודת cp כך:

# mkdir -p /home/test/bin
# cp -v /bin/bash /home/test/bin/
Copy Files to bin Directory

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/
Copy Shared Library Files

שלב 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/
Copy Password Files
Note: Each time you add more SSH users to the system, you will need to copy the updated account files into the /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
Configure SSH Chroot Jail

שמור את הקובץ וצא, והפעל מחדש את שירותי ה-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
Testing SSH User Chroot Jail

מהצילום מסך למעלה, אנו יכולים לראות שמשתמש ה-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
SSH Built-in Commands

שלב 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
Create SSH User Home Directory

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/
Add Commands to SSH User

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/
Copy Shared Libraries

שלב 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]
Test SSH Chroot Jail

נסה להשתמש ב-SFTP כדלקמן:

# sftp [email protected]
Testing sFTP SSH User

זה הכל לעכשיו! במאמר זה הראנו לך איך להגביל משתמש של SSH בסרגל תיקיה נתון (מעצר חולית chroot) בלינוקס. השתמש בסעיף התגובות למטה כדי לספר לנו את מחשבותיך על המדריך הזה.

Source:
https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/