فهرست نکات امنیتی جوملا 1.5 - نصب، میزبانی وب و انجام تنظیمات سرور - قسمت دوم
جوملا به دلیل طراحی معماری بر مبنای تکنولوژی های روز دنیا و بهره گیری از مدل توسعه متن باز و وجود جامعه کاربری بزرگ و جامعه توسعه دهندگان توانا, این سیستم از از امنیت بالایی برخوردار است.
در ادامه بررسی های موارد امنیتی و ارائه راهکارهای مناسب جهت ارتقاء بهره بری بهینه از جوملا 1.5 و پس از گذر از مرحله اول و انتشار "فهرست نکات امنیتی جوملا 1.5 - چگونه شروع کنیم - قسمت اول" حال زمان انتشار مرحله دوم سری مقالات تامین امنیت جوملا می باشد.
قسمت دوم را تحت عنوان "فهرست نکات امنیتی جوملا 1.5 - نصب، میزبانی وب و انجام تنظیمات سرور - قسمت دوم" منتشر می کنیم و در این مقاله بسیار مفید به بررسی نکات مهمی همچون : خطرات میزبانی وب اشتراکی, پیکربندی و تنظیمات اصلی سرور و دیگر موارد مرتبط می پردازیم.
یک میزبان فضای وب شایسته و واجد شرایط را انتخاب کنید - مهمترین تصمیم
خطرات میزبانی اشتراکی (Shared Server)
از پیکربندی و تنظیمات سرسری خودداری کنید
تنها برای این که چشمتان را باز کنید این گزارش را بخوانید، این گزارش درباره هزاران سایتی است که به گوگل اجازه ایندکس کردن نتایج phpinfo() را میدهد. شما چنین اشتباهی را در سایت خود مرتکب نشوید! این گزارش شامل آمار هشداردهندهای درباره درصد سایتهایی است که از تنظیمات نادرست مانند روشن بودن register_globals یا نداشتن open_basedir استفاده کردهاند. درضمن اگر php.ini و register_globals برای شما کدهای ناآشنایی هستند، بدین معناست که شما آمادگی لازم برای مدیریت امنیت سایت خود را ندارید.
پیکربندی Apache (آپاچی)- استفاده از Apache .htaccess
اقدامات استفاده typical را با فایلهای local Apache .htaccess بلوکه کنید. این گزینه بر روی همه سرورها فعال نیست. با میزبان خود بررسی کنید که آیا شما ممکن است دچار این مشکلات شوید یا خیر. با استفاده از .htaccess شما میتوانید گذارواژه محافظی بر روی دایرکتوریهای حساس، مانند مدیریت (administrator) قرار دهید، دسترسی دایرکتوریهای حساس را بر اساس IP ببندید، و بسیاری پیکربندیهای دیگر بر روی سرور خود در جهت افزایش امنیت با تغییر PHP4 به PHP5 اعمال کنید.
استفاده از Apache mod_security
پیکربندی MySQL - پایگاه داده را ایمن کنید
از تنظیم حسابهای MySQL در حالت دسترسی محدود اطمینان حاصل کنید. نصب اولیه MySQL ایمن نیست و نیازمند پیکربندی دقیقتری است. (راهنماهای MySQL http://dev.mysql.com/doc/ را بخوانید) توجه داشته باشید که این گزینه تنها برای مدیریت سرورهایی که شما دارنده آن هستید، نظیر سرورهای Dedicated اعمال میگردد.
پیکربندی PHP - نحوه کار PHP را دریابید
نحوه کار با فایل php.ini و چگونگی تنظیمات کنترل شده PHP را بیاموزید. فهرست رسمی دستورالعملهای php.ini را در http://www.php.net مطالعه کنید.
استفاده از PHP5
استفاده از فایلهای محلی php.ini
در سرورهای اشتراکی شما نمیتوانید فایل php.ini اصلی را ویرایش کنید، اما شما قادر به افزودن فایلهای محلی php.ini دلخواه هستید. اگر چنین قصدی داشته باشید، شما باید رونوشت فایلهای php.ini را در تمام زیردایرکتوریهایی که نیازمند تنظیمات سفارشی هست، ایجاد کنید. خوشبختانه تعدادی از اسکریپتها موجودند که میتوانند این کار دشوار را برای شما انجام دهند!
چند نکته مهم هست که باید بهیاد داشته باشید.
-
فایلهای محلی php.ini تنها در شرایطی که در سرور مورد استفاده آنها تنظیم شود، قابل استفاده میباشند. این شامل یک فایل php.ini در دایرکتوری http_root شما میباشد. شما میتوانید بررسی کنید که این فایل بر روی سایت شما توسط تنظیمات مستقیم فایل php.ini تاثیرگذار هست یا خیر.
-
فایلهای محلی php.ini تنها بر فایلهای .php تاثیر میگذارند که در همان دایرکتوری قرار دارند. این به آن معناست که به صورت طبیعی تنها دو دایرکتوری جوملا هستند که شما میتوانید فایل php.ini را در آن قرار دهید.
-
اگر شما در هر دایرکتوری یک فایل php.ini دارید، برخی از اسکریپتها احتمالا این کار را برای شما انجام دادهاند. اگر شما قصد آن را نداشتهاید، شما باید آنها را از شاخه اصلی خارج کنید، اما به طور منطقی شما باید نگران فایلهای php.ini در دایرکتورهای http_root و administrator باشید.
استفاده از PHP disable_functions
از disable_functions برای غیر فعالکردن توابع خطرناک PHP که در سایت شما موردنیاز نیستند، استفاده کنید. در زیر یک نمونه تنظیم برای یک سایت جوملا! است:
استفاده از PHP open_basedir
open_basedir باید فعال و به درستی تنظیم شده باشد. این تنظیمات فایلهایی را که میتوانند توسط PHP در یک دایرکتوری درختی خاص باز شوند را محدود میکند. این تنظیمات از روشن یا خاموش بودن حالت امن هیچ تاثیری نمیپذیرد.
دربرخی از پیکربندیهای سیستم، حداقل با PHP 4.4.8 استفاده از slash برای محدود کردن دسترسی تنها به دایرکتوری مشخص شده ممکن است سبب اخطار JFolder::create: Infinite loop detected جوملا هنگام ذخیره پیکربندی کلی بخش مدیریت شود. این اخطار به سبب عدم موفقیتهای PHP file_exists() function ، به عنوان مثال هنگام بررسی وجود /home/user/public_html/joomla_demo و تنظیم open_basedir در /home/user/public_html/joomla_demo/ شود.
به علاوه اگر open_basedir تنظیم شده باشد، ممکن است نیاز به تنظیم پیکربندی PHP upload_tmp_dir در مسیری در حوزه open_basedir باشد یا به طور جایگزینی مسیر upload_tmp_dir path را بیفزاید به open_basedir با استفاده از مسیر مربوطه جداکننده برای سیستم میزبان.
PHP از دایرکتوری موقت سیستم هنگامی که upload_tmp_dir تنظیم نشده باشد استفاده میکند یا هنگامی که تنظیم شده باشد اما دایرکتوری موجود نباشد. بنابراین الزامی است که آن را به open_basedir برای جلوگیری از بارگذاری خطا در جوملا بیفزایید.
جوملا! 1.5 به طور کل از این تنظیم صرف نظر میکند و به طریق دیگری عمل میکند.
از PHP safe_mode استفاده نکنید
از استفادهی PHP safe_mode اجتناب کنید. این کار در سیستم معتبر است، اما یک راهحل ناقص برای مشکلات بسیار پیچیده است که باعث بروز برخی مشکلات امنیتی میشود. برای اطلاعات بیشتر درباره این موضوع سایت رسمی PHP را بخوانید.
از PHP register_globals استفاده نکنید
register_globals = 0
از PHP allow_url_fopen استفاده نکنید
از PHP allow_url_fopen استفاده نکنید. این گزینه URL-aware fopen wrapperها را فعال میکند. Wrapperهای پیشفرض برای کنترل فایلها با استفاده از ftp و یا پروتوکل http ایجاد شده اند، همچنین برخی از امکانات مانند zlib میتوانند wrapperهای اضافیای را ثبت کنند.
در ضمن از تمامی دوستان خواهشمندیم نظرات خود را پیرامون این مقاله به صورت کامنت برای ما ارسال کنند تا تمامی کاربران سایت از نظرات یکدیگر آگاه شوند.