כיצד להגביל משתמשי SFTP לספריות הבית באמצעות כלאה ב־chroot

במדריך זה, נדון באופן שבו ניתן להגביל משתמשי SFTP לספריות הבית שלהם או לספריות ספציפיות. זה אומר שהמשתמש יכול לגשת רק לספריית הבית שלו, ולא לכל מערכת הקבצים.

הגבלת ספריות הבית של המשתמשים חיונית, במיוחד בסביבת שרת משותף, כך שמשתמש לא מורשה לצצת לתוך קבצי ותיקיות של משתמש אחר.

חשוב: יש לשים לב גם כי מטרת המאמר היא לספק גישה ל-SFTP בלבד, ולא כניסות SSH, על ידי עקיפת מאמר זה תהיה להרשאות לביצוע העברת קבצים, אך לא תתרשה עריכת חיבור SSH רחוק.

קריאה מומלצת: הגבלת גישת משתמשי SSH לספרייה מסוימת באמצעות כלא

הדרך הפשוטה ביותר לעשות זאת היא ליצור סביבת כלא עבור גישה ל-SFTP. השיטה זו תואמת לכל מערכות ההפעלה Unix/Linux. באמצעות סביבת כלא, אנו יכולים להגביל משתמשים או לספריית הבית שלהם או לספרייה ספציפית.

הגבלת משתמשים לספריות הבית

בסעיף זה, ניצור קבוצה חדשה בשם sftpgroup ונקצה בעלות והרשאות נכונות לחשבונות משתמשים. ישנם שני בחירות להגבלת משתמשים לספריות הבית או לספריות ספציפיות, נראה שתי הדרכים במאמר זה.

יצירת או שינוי משתמשים וקבוצות

תגביל את המשתמש הקיים, לדוגמה tecmint, לספריית הבית שלו/שלה בשם /home/tecmint. עבור זה, עליך ליצור קבוצת sftpgroup חדשה באמצעות פקודת groupadd כפי שמוצג:

# groupadd sftpgroup

לאחר מכן, הקצה את המשתמש ‘tecmint’ לקבוצת sftpgroup.

# usermod -G sftpgroup tecmint

ניתן גם ליצור משתמש חדש באמצעות פקודת useradd, לדוגמה senthil ולהקצות את המשתמש לקבוצת sftpusers.

# adduser senthil -g sftpgroup -s /sbin/nologin
# passwd tecmint

שנה את קובץ התצורה של SSH

פתח והוסף את השורות הבאות לקובץ התצורה /etc/ssh/sshd_config.

Subsystem sftp internal-sftp
 
   Match Group sftpgroup
   ChrootDirectory /home
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

שמור וצא מהקובץ, אתחל את שירות ה-sshd כדי להחיל את השינויים החדשים.

# systemctl restart sshd
OR
# service sshd restart

אם אתה מגביל מספר משתמשים לאותו ספריית הבית, עליך לשנות את ההרשאות של ספריית הבית של כל משתמש כדי למנוע מכל המשתמשים לעיין בספריות הבית של המשתמשים האחרים.

# chmod 700 /home/tecmint

אמת כניסת משתמשי SSH ו-SFTP

עכשיו, זה הזמן לבדוק את הכניסה ממערכת מקומית. נסה להתחבר ב-ssh למערכת המרוחקת שלך מהמערכת המקומית שלך.

# ssh [email protected]

כאן,

  1. tecmint – שם המשתמש במערכת המרוחקת.
  2. 192.168.1.150 – כתובת ה-IP של מערכת המרוחקת.
פלט דוגמה:
[email protected]'s password: 
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.

לאחר מכן, גש למערכת המרוחקת באמצעות SFTP.

# sftp [email protected]
פלט דוגמה:
[email protected]'s password: 
Connected to 192.168.1.150.
sftp>

בוא נבדוק את תיקיית העבודה הנוכחית:

sftp&gt pwd
Remote working directory: /

sftp&gt ls
tecmint  

כאן, tecmint היא תיקיית הבית. עבור לתיקיית tecmint וצור את הקבצים או התיקיות שברצונך.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt mkdir test
tecmint  

הגבל משתמשים לתיקייה מסוימת

בדוגמה הקודמת שלנו, הגבלנו את המשתמשים הקיימים לתיקיית הבית. עכשיו, נראה כיצד להגביל משתמש חדש לתיקייה מותאמת.

צור קבוצה ומשתמשים חדשים

צור קבוצה חדשה sftpgroup.

# groupadd sftpgroup

בשלב הבא, צור תיקייה עבור קבוצת SFTP והקצה הרשאות למשתמש root.

# mkdir -p /sftpusers/chroot
# chown root:root /sftpusers/chroot/

לאחר מכן, צור תיקיות חדשות עבור כל משתמש, אליהן יש גישה מלאה. לדוגמה, ניצור את המשתמש tecmint ואת תיקיית הבית החדשה שלו עם הרשאת קבוצה נכונה באמצעות סדרת הפקודות הבאה.

# adduser tecmint -g sftpgroup -s /sbin/nologin
# passwd tecmint
# mkdir /sftpusers/chroot/tecmint
# chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
# chmod 700 /sftpusers/chroot/tecmint/

הגדר SSH לגישת SFTP

שנה או הוסף את השורות הבאות בסוף הקובץ:

#Subsystem  	sftp	/usr/libexec/openssh/sftp-server
Subsystem sftp  internal-sftp
 
Match Group sftpgroup
   ChrootDirectory /sftpusers/chroot/
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

שמור וצא מהקובץ. הפעל מחדש את שירות הsshd כדי שהשינויים שנשמרו ייכנסו לתוקף.

# systemctl restart sshd
OR
# service sshd restart

זהו, תוכל לבדוק על ידי התחברות לשרת SSH וSFTP המרוחק שלך באמצעות השלבים שסופקו למעלה באמת SSH וכניסה לSFTP.

היזהר ששיטה זו תשבית את גישת השילוב, כלומר לא תוכל לגשת לשיחת המערכת המרוחקת באמצעות SSH. תוכל רק לגשת למערכות המרוחקות דרך SFTP ולבצע העברת קבצים לפני ומהמערכות המקומיות והמרוחקות.

סיכום

עכשיו אתה יודע איך להגביל את ספריות הבית של המשתמשים באמצעות סביבת Chroot ב-Linux. אם אתה מוצא את זה שימושי, שתף מאמר זה ברשתות החברתיות שלך והודיע לנו בתחום ההערות למטה אם יש שיטות אחרות להגביל את ספריות הבית של המשתמשים.

Source:
https://www.tecmint.com/restrict-sftp-user-home-directories-using-chroot/