rbash یا Restricted Bash چیست؟
در دنیای لینوکس و سیستمهای شبهیونیکس (Unix-like)، امنیت بسیار مهم است، به خصوص زمانی که چندین کاربر یک سیستم را به اشتراک بگذارند. یکی از راههای افزایش امنیت استفاده از شلهای محدود شده (restricted) است. یکی از این شِلها rbash یا Restricted Bash است.
این مطلب توضیح میدهد که rbash چیست، چه تفاوتی با shell معمولی Bash دارد و مثالهایی از کاربرد آن ارائه میشود.
شِل (Shell) چیست؟
شل برنامهای است که کاربران را قادر میسازد تا از طریق یک رابط خط فرمان با سیستم لینوکس تعامل داشته باشند. دستورات وارد شده توسط کاربر را تفسیر نموده و برای اجرای آن دستورات با سیستم ارتباط برقرار میکند.
Bash (Bourne Again SHell) یکی از پرکاربردترین شلها در محیط لینوکس است.
rbash چیست؟
rbash یک نسخه محدود از پوسته Bash است که برای محدود کردن دسترسی کاربران به دستورات و ویژگیهای خاص طراحی شده است که امنیت سیستم را افزایش میدهد.
هنگامی که کاربر با استفاده از rbash وارد سیستم میشود، نمیتواند کارهایی را انجام دهد که موجب خطر برای سیستم یا سایر کاربران شود.
تفاوتهای کلیدی Bash و rbash چیست؟
در ادامه برخی از تفاوتهای کلیدی بین bash و rbash آورده شده است:
- در rbash کاربران نمیتوانند دایرکتوری خود را با دستور cd تغییر دهند. آنها فقط میتوانند در دایرکتوری home خود کار کنند.
- دستورات خاصی مانند exec، set و unset محدود شدهاند و از تغییر محیط شل توسط کاربران جلوگیری میکنند.
- کاربران نمیتوانند متغیرهای محیطی را تغییر دهند که میتواند بر سایر کاربران یا تنظیمات سیستم تاثیر بگذارد.
- در rbash، کاربران نمیتوانند ورودی یا خروجی را تغییر مسیر دهند(redirect input or output)، و اجرای دستوراتی را که میتوانند به فایل های خارج از مناطق تعیین شده خود دسترسی یا دستکاری کنند، دشوارتر میکند.
این محدودیتها، rbash را برای سناریوهایی مناسب میسازد که میخواهید با حفظ سطح امنیت، دسترسی محدودی را برای کاربران فراهم کنید.
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
موارد استفاده از rbash
در اینجا مواردی وجود دارد که استفاده از rbash مفید است:
- ترمینالهای عمومی: در محیطهایی مانند کتابخانهها یا مدارس که کاربران نیاز به دسترسی به دستورات اولیه دارند اما نباید تنظیمات سیستم را دستکاری کنند.
- سرورهای اشتراکی: در سیستمهای اشتراکی، rbash میتواند از دسترسی کاربران به دادههای سایر کاربران یا فایلهای حیاتی سیستم جلوگیری کند.
- محیطهای تست و یادگیری: وقتی به کاربران مهارتهای خط فرمان اولیه را آموزش میدهند، rbash میتواند به محدود کردن اقدامات آنها برای جلوگیری از تغییرات تصادفی سیستم کمک کند.
آموزش راه اندازی rbash در لینوکس
راه اندازی rbash در سیستم لینوکس، یک فرآیند ساده است، تنها کاری که باید انجام دهید این است که مراحل زیر را دنبال کنید:
-
Bash را در لینوکس نصب کنید
اکثر توزیعهای لینوکس دارای Bash هستند که بهطور پیشفرض نصب شده است، میتوانید با اجرا کردن دستور زیر، نصب بودن آن را بررسی کنید:
bash --version
-
یک کاربر Restricted Shell ایجاد کنید
شما میتوانید به طور خاص برای rbash یک کاربر ایجاد کنید.
sudo adduser parsdev
پس از ایجاد کاربر، شل پیش فرض آنها را به rbash تغییر دهید:
sudo usermod -s /bin/rbash restricteduser
برای محدود کردن بیشتر محیط این کاربر، میتوانید یک دایرکتوری خاص ایجاد و آن را به عنوان دایرکتوری home آنها تنظیم کنید:
sudo mkdir /home/parsdev/bin
سپس، میتوانید هر اسکریپت یا دستوری را که میخواهید کاربر به آن دسترسی داشته باشد، در این دایرکتوری bin قرار دهید.
برای محدود کردن دستورات در دسترس کاربر، متغیر PATH او را طوری تنظیم کنید که فقط دایرکتوری bin را شامل شود:
echo 'export PATH=$HOME/bin' | sudo tee -a /home/parsdev/.bashrc
اکنون میتوانید به عنوان یک کاربر محدود وارد شوید:
su - parsdev
آموزش استفاده از rbash در لینوکس
بیایید چند مثال عملی را برای نشان دادن نحوه عملکرد rbash بررسی کنیم.
مثال 1: تلاش برای تغییر دایرکتوری
پس از ورود به عنوان کاربر محدود، سعی کنید دایرکتوریها را تغییر دهید:
cd /tmp
یک پیغام خطا مانند rbash: exec: restricted- دریافت خواهید کرد که تایید میکند کاربر نمیتواند خارج از دایرکتوری اصلی خود حرکت کند.
مثال 2: اجرای دستورات محدود
سعی کنید دستوراتی مانند exec یا set را اجرا کنید:
exec bash
با خطایی مانند rbash: exec: restricted- مواجه میشوید که نشان میدهد کاربر مجاز به اجرای نمونههای جدید شل نیست.
مثال 3: تغییر مسیر فایل
تلاش برای تغییر مسیر خروجی به یک فایل:
echo "Test" > test.txt
یک پیغام خطایی دریافت خواهید کرد که نشان میدهد کاربران نمیتوانند خروجی را به فایلها ریدایرکت کنند.
-rbash: test.txt: restricted: cannot redirect output
مثال 4: دستورات مجاز
برای مشاهده اینکه کاربر محدود شده چه دستوراتی را میتواند اجرا کند، می توانید یک اسکریپت ساده در دایرکتوری bin آنها ایجاد کنید.
به عنوان مثال، یک فایل به نام hello.sh ایجاد کنید:
echo "echo 'Hello, World!'" > /home/restricteduser/bin/hello.sh
chmod +x /home/restricteduser/bin/hello.sh
اکنون، زمانی که کاربر محدود اجرا میشود:
. hello.sh
Hello, World! را خواهند دید! روی صفحه چاپ شده و نشان می دهد که می توانند دستورات مجاز را اجرا کنند.
نتیجه گیری
به طور خلاصه، rbash یک ابزار قدرتمند برای افزایش امنیت در محیطهای لینوکس چند کاربره است. با محدود کردن دسترسی به دستورات و ویژگیهای خاص، به حفظ یکپارچگی سیستم کمک کرده و در عین حال به کاربران اجازه میدهد کارهای اساسی را انجام دهند.