CageFS یک فایل سیستم مجازی سازی شده است که ابزاری را جهت ایزوله کردن کاربران مختلف و قرار دادن آنها در بخش خاص مربوط به خود فراهم میاورد. این ابزار که توسط CloudLinux توسعه یافته است، کاربرد ویژهای در راه اندازی خدمات میزبانی وب از جمله هاست اشتراکی، سرور مجازی و خدمات نمایندگی دارد. در CageFS هر کاربر ضمن دسترسی به تمامی امکانات، درون فضای مجازی شخصی خود قرار داده میشود تا به این ترتیب تنها به اطلاعات و منابع خود دسترسی داشته باشد. این ابزار نقشی حیاتی را در حفظ امنیت و کارایی خدمات ارائه شده در حوزه میزبانی وب ایفا مینماید.
مزایای CageFS
- تنها فایلهای امن و متعلق به کاربر توسط او قابل دسترسی و مشاهده میباشد.
- کاربر تنها امکان استفاده منابع سرویس خود را داراست و دسترسی به منابع سایر سرویسهای موجود بر روی سرور ندارد. مزیت این مورد در اینست که استفاده بیش از اندازه یک کاربر منجر به افت کیفیت سرورهای سایر کاربران نخواهد شد.
- کاربران مختلف به هیچ وجه حضور یکدیگر را احساس نخواهند کرد و هیچگونه دسترسی به اطلاعات و سایر جزئیات خدمات یکدیگر نخواهند داشت.
- کاربران امکان مشاهده فایلهای مربوط به تنظیمات سرور مانند فایلهای Apache config را ندارند.
- مشاهده پردازشهای صورت گرفته توسط کاربران برای یکدیگر مقدور نمیباشد.
اسکریپتهای CageFS با ابزار زیر قابل اجرا است:
- Apache (suexec, suPHP, mod_fcgid, mod_fastcgi)
- LightSpeed Web Server
- Cron Jobs
- SSH
- Other Pluggable Authentication Modules (PAM) enabled service.
نحوه نصب
حداقل منابع مورد نیاز:
Kernel
CL5 with lve0.8.54
CL6 with lve1.2.17.1
Or CL7.
Disk Space: 7GB Minimum
فرمان yum install cagefs $ برای نصب استفاده میشود و در ادامه دستور زیر را وارد نمایید:
/usr/sbin/cagefsctl –init $
برای ایجاد دایرکتوری skeleton که در حدود 7 گیگابایت فضا نیاز دارد از دستور زیر استفاده نمایید:
mkdir /home/cagefs-skeleton $
دایرکتوری skeleton، پوشهای است که دادههای هر کاربر به صورت خودکار در آن ذخیر میشود و در آدرس /usr/share/cagefs-skeleton قرار دارد.
چنانچه فضای کافی در usr/share وجود ندارد، میتوان از دستور زیر برای ایجاد پوشه در محل دیگری استفاده نمود:
ln -s /home/cagefs-skeleton /usr/share/cagefs-skeleton $
در صورتیکه در سی پنل CageFS skeleton را در /home directory قرار میدهید، به شکل زیر نیاز به ایجاد تغییراتی در تنظیمات دارید:
cPanel WHM -> Home -> Server Configuration -> Basic cPanel/WHM setup -> Basic Config -> Additional home directory
بدون تغییرات فوق، سی پنل به صورت پیشفرض ناحیه کاربری جدید را در محل نادرستی ایجاد مینماید. CageFS به صورت خودکار تنظیمات ضروری مورد نیاز را در غالب کنترل پنلها از جمله پلسک، دایرکت ادمین و سی پنل انجام میدهد.
فرآیند حذف
برای پاک کردن کامل و تمامی دایرکتوریها از دستور زیر استفاده میگردد:
/usr/sbin/cagefsctl –remove –all $
دستور فوق دایرکتوریهای /usr/share/cagefs-skeleton و /var/cagefs را حذف مینماید اما دایرکتوری /etc/cagefs همچنان باقی خواهد ماند. برای حذف CageFS RPM نیز از دستور زیر استفاده میگردد:
yum remove cagefs $
مدیریت کاربران
به صورت کلی در CageFSدو نوع روش برای اضافه کردن کاربر وجود دارد:
- اضافه کردن تمام کاربران به صورت خودکار
- ایجاد آن به صورت یکی یکی برای کاربران
برای شروع به استفاده از CageFS ابتدا نیاز به انتخاب مد یا نوع عملیات است. انواع عملیات قابل انجام به شرح زیر است:
usr/sbin/cagefsctl – -enable-all/ $
usr/sbin/cagefsctl – -disable-all/ $
usr/sbin/cagefsctl – -toggle-mode/ $
برای ایجاد یک کاربر، از دستور زیر استفاده میشود:
usr/sbin/cagefsctl – -enable [username]/ $
برای غیر فعال کردن یه کاربر از دستور زیر استفاده میگردد:
usr/sbin/cagefsctl – -disable [username]/ $
دستور زیر لیست کاربران فعال شده را نمایش میدهد:
usr/sbin/cagefsctl – -list-enabled/strong/ $
دستور زیر لیست کاربران غیرفعال شده را نمایش میدهد:
usr/sbin/cagefsctl – -list-disabled/ $
همچنین برای مشاهده مد یا نوع عملیات، دستور زیر قابل اجرا است:
usr/sbin/cagefsctl – -display-user-mode/ $
دستورات درون CageFS
در مواقعی لازم میشود تا دستورات به جای کاربر در داخل CageFS وارد شود، در این مواقع در حالتی که شل فعال است از کد زیر استفاده کنید:
_”bin/su – $USERNAME -c “_command/ $
و اگر شل غیرفعال است دستور زیر قابل اجرا است:
“_sbin/cagefs_enter_user $USERNAME “_command/ $
که بدون proxyexec اجرا میشود.
بنا بر ماهیت CageFS بعضی از موارد به شکل قبل کار نخواهند کرد و نیاز به تغییراتی کوچک است.
PHP فایل php.ini را از مسیر /usr/selector/php.ini بارگذاری مینماید. در واقع این فایل، لینکی به فایل اصلی php.ini در سیستم شما است تا در نهایت فایل php.ini یکسانی بارگذاری شود.
برای به روز رسانی CageFS، دستور cagefsctl –-update را به کار ببرید. در این حالت میتوانید تغییرات مورد نظر را بر روی php.ini اعمال کنید یا میتوانید به یک نرم افزار جدید در داخل CageFS دست پیدا کنید.
در طی نصب CageFS تمامی کاربران دارای jail shell فعال به حالت عادی bash در سی پنل به regular/bin/bash در /etc/passwdتغییر پیدا میکنند.
این مورد به منظور جلوگیری از بروز تداخل احتمالی با virtfs در هنگامیکه کاربران غیر CageFS وارد virtfs میشوند اجرا میشود. در صورت عدم اجرا، jail shell بر روی تمامی کپیها از cagefs -skeleton بر روی /home/virtfs/$USER مونت میشود. در نهایت این مورد منجر به کاهش سرعت و عملکرد سیستم میگردد.