امنیت جوملا را بالا ببریم( قسمت دوم)!
فهرست نکات امنیتی جوملا قسمت دوم نصب، میزبانی وب و انجام تنظیمات سرور
جوملا به دلیل طراحی معماری بر مبنای تکنولوژی های روز دنیا و بهره گیری از مدل توسعه متن باز و وجود جامعه کاربری بزرگ و جامعه توسعه دهندگان توانا, این سیستم از از امنیت بالایی برخوردار است.
در ادامه بررسی های موارد امنیتی و ارائه راهکارهای مناسب جهت ارتقاء بهره بری بهینه از جوملا 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
--------------------------------------------------------------------------------
Apache mod_security و *****های mod_rewrite برای جلوگیری از حملات PHP با دقت تنظیم کنید. Google search for mod_security و Google search for mod_rewrite را مشاهده کنید. (توجه داشته باشید: اینها روشهای پیشرفتهای هستند که نیازمند توافقنامه یا هماهنگی با پشتیبان فضای وب شما میباشد، چنین گزینههایی به صورت جداگانه بر روی سرورهای اشتراکی قابل تنظیم نمیباشند.)
پیکربندی MySQL - پایگاه داده را ایمن کنید
--------------------------------------------------------------------------------
از تنظیم حسابهای MySQL در حالت دسترسی محدود اطمینان حاصل کنید. نصب اولیه MySQL ایمن نیست و نیازمند پیکربندی دقیقتری است. (راهنماهای MySQL [مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید] را بخوانید) توجه داشته باشید که این گزینه تنها برای مدیریت سرورهایی که شما دارنده آن هستید، نظیر سرورهای Dedicated اعمال میگردد.
پیکربندی PHP - نحوه کار PHP را دریابید
--------------------------------------------------------------------------------
نحوه کار با فایل php.ini و چگونگی تنظیمات کنترل شده PHP را بیاموزید. فهرست رسمی دستورالعملهای php.ini را در [مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید] مطالعه کنید.
استفاده از PHP5
--------------------------------------------------------------------------------
در حال حاضر PHP5 و PHP4هر دو پشتیبانی میگردند، و هر دو بر روی سرورها دردسترس میباشند. پیش از آن که PHP4 منسوخ شود، اسکریپهای دلخواه خود را به PHP5 ارتقا دهید. نگران کدهای هسته جوملا نباشید، تمامی نسخههای موجود با PHP5 سازگار میباشند. (مشاهده خبر PHP)
استفاده از فایلهای محلی php.ini
--------------------------------------------------------------------------------
در سرورهای اشتراکی شما نمیتوانید فایل php.ini اصلی را ویرایش کنید، اما شما قادر به افزودن فایلهای محلی php.ini دلخواه هستید. اگر چنین قصدی داشته باشید، شما باید رونوشت فایلهای php.ini را در تمام زیردایرکتوریهایی که نیازمند تنظیمات سفارشی هست، ایجاد کنید. خوشبختانه تعدادی از اسکریپتها موجودند که میتوانند این کار دشوار را برای شما انجام دهند!
چند نکته مهم هست که باید بهیاد داشته باشید.
1.فایلهای محلی php.ini تنها در شرایطی که در سرور مورد استفاده آنها تنظیم شود، قابل استفاده میباشند. این شامل یک فایل php.ini در دایرکتوری http_root شما میباشد. شما میتوانید بررسی کنید که این فایل بر روی سایت شما توسط تنظیمات مستقیم فایل php.ini تاثیرگذار هست یا خیر.
2.فایلهای محلی php.ini تنها بر فایلهای .php تاثیر میگذارند که در همان دایرکتوری قرار دارند. این به آن معناست که به صورت طبیعی تنها دو دایرکتوری جوملا هستند که شما میتوانید فایل php.ini را در آن قرار دهید.
3.اگر شما در هر دایرکتوری یک فایل php.ini دارید، برخی از اسکریپتها احتمالا این کار را برای شما انجام دادهاند. اگر شما قصد آن را نداشتهاید، شما باید آنها را از شاخه اصلی خارج کنید، اما به طور منطقی شما باید نگران فایلهای php.ini در دایرکتورهای http_root و administrator باشید.
استفاده از PHP disable_functions
--------------------------------------------------------------------------------
از disable_functions برای غیر فعالکردن توابع خطرناک PHP که در سایت شما موردنیاز نیستند، استفاده کنید. در زیر یک نمونه تنظیم برای یک سایت جوملا! است:
disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
استفاده از PHP open_basedir
--------------------------------------------------------------------------------
open_basedir باید فعال و به درستی تنظیم شده باشد. این تنظیمات فایلهایی را که میتوانند توسط PHP در یک دایرکتوری درختی خاص باز شوند را محدود میکند. این تنظیمات از روشن یا خاموش بودن حالت امن هیچ تاثیری نمیپذیرد.
open_basedir = /home/users/you/public_html
دربرخی از پیکربندیهای سیستم، حداقل با 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 با استفاده از مسیر مربوطه جداکننده برای سیستم میزبان.
open_basedir = /home/users/you/public_html:/tmp
PHP از دایرکتوری موقت سیستم هنگامی که upload_tmp_dir تنظیم نشده باشد استفاده میکند یا هنگامی که تنظیم شده باشد اما دایرکتوری موجود نباشد. بنابراین الزامی است که آن را به open_basedir برای جلوگیری از بارگذاری خطا در جوملا بیفزایید.
تنظیم magic_quotes_gpc
magic_quotes_gpc را آنگونه که مورد نیاز سایتتان است، تنظیم کنید. این تنظیم برای جوملا! 1.0 پیشنهاد میشود که در وضعیت روشن تنظیم شود تا از ضعف امکانات اضافی محافظت شود. اما امنترین روش این است که magic_quotes_gpc خاموش باشد تا در مقابل تمامی امکانات اضافی ضعیف و بیخاصیت محافظت شوید.
جوملا! 1.5 به طور کل از این تنظیم صرف نظر میکند و به طریق دیگری عمل میکند.
magic_quotes_gpc = 1
از PHP safe_mode استفاده نکنید
--------------------------------------------------------------------------------
از استفادهی PHP safe_mode اجتناب کنید. این کار در سیستم معتبر است، اما یک راهحل ناقص برای مشکلات بسیار پیچیده است که باعث بروز برخی مشکلات امنیتی میشود. برای اطلاعات بیشتر درباره این موضوع سایت رسمی PHP را بخوانید.
safe_mode = 0
از PHP register_globals استفاده نکنید
--------------------------------------------------------------------------------
register_globals خودکار متغیرها به طور حتم یکی از اشتباهترین تصمیمات برنامهنویسان و گسترشدهندگانِ PHP بود. این سند تعیین میکند که آیا EGPCS (Environment, GET, POST, Cookie, Server) به عنوان متغییرهای کلی ثبت شوند یا خیر و اینکه کجا باید سریعا برای تمام اسکریپتهای PHP در دسترس باشند و همچنین کجا باید به سادگی بر روی متغییر شما مجددا نوشته شوند، هنگامی که شما بیدقت هستید. خوشبختانه گسترشدهندگان PHP مدتی است متوجه این اشتباه خود شدهاند و این ویژگی را کمتر به کار میگیرند.
اگر سایت شما بر روی یک سرور اشتراکی با پشتیبان فضای وبی است که register_globals بر روی آن فعال است، شما واقعا باید نگران باشید. البته اگرچه شما میتوانید register_globals را غیر فعال کنید، اما همچنان این امر شما را در معرض آسیبپذیری در برابر حملات به سایت شما از طریق سرور قرار میدهد.
register_globals = 0
از PHP allow_url_fopen استفاده نکنید
--------------------------------------------------------------------------------
از PHP allow_url_fopen استفاده نکنید. این گزینه URL-aware fopen wrapperها را فعال میکند. Wrapperهای پیشفرض برای کنترل فایلها با استفاده از ftp و یا پروتوکل http ایجاد شده اند، همچنین برخی از امکانات مانند zlib میتوانند wrapperهای اضافیای را ثبت کنند.
allow_url_fopen = 0
--------------------------------------------------------------------------------
با مطالعه چک لیست های امنیتی جوملا در بالا و انجام دقیق تنظیمات, شما قادر به استفاده از یک سرور امن برای میزبانی جوملای سایت خود هستید, امیدواریم این مقاله نیز همانند دیگر مقالات جدید سایت جوملا فارسی (گروه نرم افزاری جوملا) بتواند به شما جهت استفاده لذت بخش از جوملا 1.5 کمک و یاری رساند.
در ضمن از تمامی دوستان خواهشمندیم نظرات خود را پیرامون این مقاله به صورت کامنت برای ما ارسال کنند تا تمامی کاربران سایت از نظرات یکدیگر آگاه شوند.
منبع joomla.ir ( به سبب حفظ حقوق ناشر نام منبع رو آوردم)