في هذا البرنامج التعليمي، سنناقش كيفية تقييد مستخدمي SFTP إلى دلائل منازلهم أو دلائل محددة. يعني ذلك أن المستخدم يمكنه الوصول فقط إلى دليل منزله الخاص، وليس إلى نظام الملفات بأكمله.
تقييد دلائل منازل المستخدمين أمر حيوي بشكل خاص في بيئة الخادم المشتركة، حتى لا يحاول مستخدم غير مصرح به التطفل على ملفات ومجلدات المستخدم الآخر.
مهم: يرجى أيضًا ملاحظة أن الغرض من هذه المقالة هو توفير الوصول إلى SFTP فقط، وليس تسجيل الدخول إلى SSH، عن طريق اتباع هذه المقالة، ستكون لديهم الأذونات لنقل الملفات، ولكنهم لن يكونوا مسموحين بجلسة SSH عن بعد.
قراءة مقترحة: تقييد وصول مستخدم SSH إلى دليل معين باستخدام السجن Chrooted
أبسط طريقة للقيام بذلك هي إنشاء بيئة سجن Chrooted للوصول إلى SFTP. تكون هذه الطريقة هي نفسها لجميع أنظمة التشغيل Unix/Linux. باستخدام بيئة Chrooted، يمكننا تقييد المستخدمين إما إلى دليل منازلهم أو إلى دليل محدد.
تقييد المستخدمين إلى دلائل المنازل
في هذا القسم، سنقوم بإنشاء مجموعة جديدة تسمى 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]
هنا،
- tecmint – اسم المستخدم على النظام البعيد.
- 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> pwd Remote working directory: / sftp> ls tecmint
هنا، tecmint
هو دليل المنزل. انتقل إلى دليل tecmint وأنشئ الملفات أو المجلدات التي تختارها.
sftp> cd tecmint Remote working directory: / sftp> mkdir test tecmint
قيد المستخدمين بدليل محدد
في المثال السابق، قمنا بتقييد المستخدمين الحاليين بدليل المنزل. الآن، سنرى كيفية قيد مستخدم جديد بدليل مخصص.
إنشاء مجموعة ومستخدمين جدد
إنشاء مجموعة جديدة sftpgroup
.
# groupadd sftpgroup
بعد ذلك، قم بإنشاء دليل لمجموعة SFTP وتعيين أذونات للمستخدم الجذر.
# 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/