هناك عدة أسباب لقيام بتقييد جلسة مستخدم 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}

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. بعد ذلك، حدد الأذونات المناسبة على سج الـchroot. لاحظ أن سج الـchroot ومجموعاته الفرعية وملفاته يجب أن يمتلكها المستخدم root، ولا يمكن أن تكون قابلة للكتابة من قبل أي مستخدم عادي أو مجموعة:
# chown root:root /home/test # chmod 0755 /home/test # ls -ld /home/test

الخطوة 2: إعداد طابعة نصية متقدمة لسج SSH Chroot Jail
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. قم بإنشاء دليل تكوينات عامة لسجل البحث المحجوز /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 لاستخدام سجل البحث المحجوز
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 مع سجل البحث المحجوز
10. في هذه المرحلة، اختبر ما إذا كان تجهيز سجن chroot يعمل كما هو متوقع:
# ssh [email protected] -bash-4.1$ ls -bash-4.1$ date -bash-4.1$ uname

من لقطة الشاشة المذكورة أعلاه، يمكننا أن نرى أن مستخدم 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

الخطوة 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

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) في Linux. استخدم قسم التعليقات أدناه لتقديم لنا أفكارك حول هذا الدليل.
Source:
https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/