linux

محدود کردن دسترسی کاربران SFTP با استفاده از chroot jail

امتیاز کاربران

ستاره فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 

در این مقاله در مورد اینکه چطور می توانیم دسترسی کاربران SFTP را به Home دایرکتوری خودشان یا به دایرکتوری مشخصی محدود کنیم، صحبت می کنیم.یعنی با استفاده از این روش که جلوتر توضیح داده خواهد شد هر کاربر تنها قادر به مشاهده Home دایرکتوری خودش بوده  و امکان دسترسی داشتن به فایل های سیستمی را نخواهد داشت.

 

محدود کردن دسترسی کاربران در بسیاری از مواقع امری حیاتی است مخصوصا در محیط سرورهای اشتراک گذاری شده،چرا که در چنین شرایطی خطر دسترسی به فایل ها و اطلاعات کاربر توسط کاربری دیگر وجود دارد.

همچنین قابل ذکر است در این مقاله صرفا روش محدود کردن دسترسی SFTP آموزش داده می شود و در نهایت دسترسی مورد نیاز برای انتقال فایل ها را می توانیم پیاده سازی کنیم،اما مجوز برقراری ارتباط ssh وجود ندارد.

ساده ترین روش برای انجام این کار ایجاد محیط chroot برای دسترسی SFTP می باشد،این روش در تمامی نسخه های سیستم عامل لینوکس قابل اجرا می باشد.

مراحل :

بعنوان مثال می خواهیم دسترسی SFTP کاربر CBTNET را به Home دایرکتوری خودش که در مسیر home/CBTNET/ وجود دارد محدود کنیم:

قدم اول) یک گروه به نام sftpgroup ایجاد می نماییم.

 
 
.
groupadd sftpgroup #
.
 
 
 

قدم دوم) کاربر CBTNET را عضو گروه sftpgroup می کنیم. 

 
.
 usermod -G sftpgroup CBTNET#
.
 
 
 

حتی می توانیم با استفاده از دستور adduser کاربر جدیدی را تعریف کرده و به عضویت این گروه درآوریم.

 
 
.
# adduser test -g sftpgroup
# passwd test
 
 
 

انجام تنظیمات بر روی کانفیگ فایل SSH:

فایل etc/ssh/ssh_config/ را با استفاده از ویرایشگر متن باز کرده و دستورات زیر را در انتهای فایل وارد می نماییم:

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

محتویات فایل را دخیره کرده و از آن خارج می شویم و سپس سرویس ssh را ریستارت می کنیم.

 
 
.
# service sshd restart
.
 
 
 

پس از آن لازم است تا Permission مربوط به home دایرکتوری هر کاربر را با سطح دسترسی ۷۰۰ تنظیم نماییم :

 
 
.
chmod 700 /home/CBTNET
.
 
 
 

 حالا پس از انجام  این تنظیمات میتوانیم درستی کارکرد آنرا بصورت زیر چک نماییم:

 
 
.
# ssh این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید
.
 
 
 

پس از اجرای دستور بالا خروجی بصورت زیر مشاهده خواهیم کرد زیرا همانطور که در ابتدا به آن اشاره شد تنها مجوز دسترسی SFTP امکانپذیر می باشد:

 
 
CBTNET@192.168.1.150's password:
Could not chdir to home directory /home/CBTNET: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.
 
 
 

برقراری ارتباط sftp

دستور زیر را برای برقراری ارتباط sftp اجرا می کنیم:

 
 
.
# sftp این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید
.
 
 
 

در این حالت ارتباط ما بصورت SFTP برقرار می گردد و فقط دسترسی ایجاد یا مشاهده فایل در مسیر home/CBTNET/ وجود دارد: