كيفية تقييد وصول مستخدم SSH إلى دليل معين باستخدام السجن المحصور

هناك عدة أسباب لقيام بتقييد جلسة مستخدم SSH إلى دليل معين، خاصة على خوادم الويب، لكن السبب الواضح هو أمان النظام. من أجل قفل مستخدمي SSH في دليل معين، يمكننا استخدام آلية chroot.

تغيير الجذر (chroot) في أنظمة Unix-like مثل Linux، هو وسيلة لفصل العمليات المحددة للمستخدم عن بقية نظام Linux؛ يغير الدليل الجذر الظاهري لعملية المستخدم الجارية حاليًا وعملية الأبوية (الأصلية) لها بدليل جذر جديد يُسمى jail chrooted.

في هذا البرنامج التعليمي، سنعرض لك كيفية تقييد وصول مستخدم SSH إلى دليل معين في Linux. لاحظ أننا سنقوم بتشغيل جميع الأوامر كمستخدم root، استخدم أمر sudo إذا كنت مسجلاً دخولك إلى الخادم كمستخدم عادي.

١. ابدأ بإنشاء السجن الشكلي باستخدام الأمر mkdir أدناه:

1. قم ببدأ تكوين سج الـchroot باستخدام أمر 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. بعد ذلك، حدد الأذونات المناسبة على سج الـchroot. لاحظ أن سج الـchroot ومجموعاته الفرعية وملفاته يجب أن يمتلكها المستخدم root، ولا يمكن أن تكون قابلة للكتابة من قبل أي مستخدم عادي أو مجموعة:

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

الخطوة 2: إعداد طابعة نصية متقدمة لسج SSH Chroot Jail

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. قم بإنشاء دليل تكوينات عامة لسجل البحث المحجوز /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 لاستخدام سجل البحث المحجوز

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 مع سجل البحث المحجوز

10. في هذه المرحلة، اختبر ما إذا كان تجهيز سجن chroot يعمل كما هو متوقع:

# ssh [email protected]
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname
Testing SSH User Chroot Jail

من لقطة الشاشة المذكورة أعلاه، يمكننا أن نرى أن مستخدم SSH محبوس في سجن chroot، ولا يمكنه تشغيل أي أوامر خارجية (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 وإضافة أوامر Linux

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) في Linux. استخدم قسم التعليقات أدناه لتقديم لنا أفكارك حول هذا الدليل.

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