یک چالش رایج در میان برنامه نویسان php رسیدن به درصد قابل قبولی از امنیت در هاست است. یکی از نگرانی های کاربران با آن مواجه می باشند چگونگی امنیت سرور می باشد. ما برای همه کسانی که به امنیت سرورشان فکر می کنند، رایج ترین روش های محافظت سرور لینوکسی در برابر تهدیدات را در این مقاله شرح داده ایم، با ما همراه باشید.
open_basedir چیست؟
در ابتدا می بایست بدانیم Open_BaseDir چیست و چگونه عمل می کند و چرا این Extension برروی PHP فعال است.
open_basedir سیستمی است که محدودیت دسترسی به فایل ها را توسط کامپایلر php اعمال می کند که کامپایلر php نتواند خارج از پوشه در اختیار آن، فایل های دیگر را کنترل و به آن ها دسترسی داشته باشد. به طور کلی این محدودیت تنها برروی کل سیستم عامل ایجاد می گردد و هر کاربر تنها مجاز است دسترسی به پوشه داخلی خودش داشته باشد و نمی تواند از طریق کامپایلر به فایل های دیگر سیستم عامل دسترسی داشته باشد. دلیل آن هم خیلی ساده است، هنگامیکه شما یک سرویس میزبانی اشتراکی تهیه میکنید تنها دسترسی شما به فایل های داخل پوشه /HOME/USERNAME/ می باشد یعنی شما می توانید فایل های داخل این پوشه را کنترل و مدیریت کنید و به هیچ عنوان نمی بایست به فایل های یوزر دیگری یا فایل های دیگر سیستم عامل دسترسی پیدا کنید ، اگر قرار بود هر یوزری به اطلاعات و فایل های دیگران دسترسی داشته باشد عملا حریم خصوصی وجود نخواهد داشت و یک سیستم کاملا نا امن در اختیار کاربران قرار می گیرد.
غیرفعال نمودن open_basedir ریسک امنیتی دارد
توجه داشته باشید غیرفعال نمودن open_basedir ریسک امنیتی دارد و شما نیز هیچ گاه به غیر فعال کردن آن نیاز نخواهید داشت و همواره می بایست اسکریپت هایتان را بررسی نمایید که آدرس دهی صحیح در تنظیمات آن باشد. معمولا این خطا هنگامیکه رخ می دهد که آدرس دهی شما اشتباه است و اسکریپت شما به دلیل آدرس اشتباهی که برای خواندن فایل های مورد نیاز خود دارد می خواهد خارج از فضای کاربری دسترسی پیدا کند، لذا برای حل این موضوع می بایست ابتدا تنظیمات اسکریپت خودتان را بررسی نمایید تا مطمئن شوید آدرس دهی ها صحیح است.
نکته: بیشتر ین خطا مربوط به پوشه tmp می باشد که خیلی از اسکریپت ها به جای tmp از /tmp که پوشه Temprorary سیستم عامل است استفاده می کند لذا می بایست / آن را حذف نمایید. در نظر داشته باشید یک اشتباه ساده همانند / یا \ در آدرس دهی موجب چنین خطایی می شود.
safe_mode چیست؟
safe_mode از دستورات خطرناکی که می تواند توسط یک فایل php روی سرور برای ورود هکر و دسترسی به اطلاعات اجرا شود جلوگیری می کند. با فعال کردن safe_mode در php.ini می توانید از اجرای فایل های شل جلوگیری کنید.
غیر فعال کردن اجرای کد بصورت Remote
اگر allow_url_fopen فعال باشد فانکشن های مرتبط با file مانند file_get_contents می توانند بصورت Remote از ftp و یا وب سایت اطلاعات دریافت کنند. بسیاری از برنامه نویسان فراموش میکنند تا یک فیلتر برای قسمت اطلاعات ارسالی از سمت کاربر ایجاد کنند که این باعث آسیب پذیری Injection میشود. بسیاری از آسیب پذیری Code-Injection گزارش شده مربوط به فعال بودن این تابع می باشد.
غیرفعال نمودن display_error
ارور های اسکریپت PHP شما نباید در معرض عموم قرار بگیرد تا از باگ های آن سوءاستفاده شده و نفوذ به سایت شما رخ دهد. همچنین نمایش Warning های متعدد نمایش داده شده در ابتدای صفحه سایت ظاهر خوش آیندی نیز نخواهد داشت، برای این کار باید display_error را در فایل php.ini سرور غیر فعال نمایید.
محدود سازی سایز ورودی
یکی از روش هایی که هکرها اقدام به نفوذ به سایت ها می کنند ، ارسال کدهای مخرب در بخش هایی از سایت که روی متد post از کاربر ورودی می گیرد و با محدود سازی سایز ورودی در فایل کانفیگ php از ارسال کدهای مخرب می توان جلوگیری نمود.
post_max_size = 1K
محدود سازی منابع
یکی دیگر از حملاتی که به سمت سرور معمولا انجام می گیرد حملات DOS است که با محدود سازی منابع در پکت های دریافتی در فایل کانفیگ php می توان در حد قابل توجهی از این حملات جلوگیری کرد.
max_execution_time = 30
max_input_time = 30
memory_limit = 128M
Disable_functions
در PHP توابع زیادی فعال می باشد و در صورتی که به درستی مورد استفاده قرار نگیرند می توانند سرور را با مشکل مواجه کنند بهمین دلیل نیاز است توابعی که ریسک امنیتی ایجاد می کنند را غیرفعال نمائید.
برخی از توابعی که غیرفعال نمودن آن را توصیه می کنیم بصورت زیر می باشد:
1
2
|
shell_exec,system,passthru,exec,popen,ini_restore,popen,stream_select,socket_create,socket_create_listen,socket_create_pair,socket_listen,socket_bind,symlink,link,pfsockopen,ini_alter,dl,pcntl_exec,pcntl_fork,proc_close,
proc_open,proc_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_uname
|
magic_quotes_gpc
این تابع به برنامه نویس کمک میکند که ورودی هایی را که از سمت کاربران به سمت سرور فرستاده میشود تاحدی ایمن سازی کند و جلوی حملاتی مثل SqlInjection رو میگیرد به این صورت که قبل از کاراکترهای خطرناک یک backslash قرار میدهد و برخی از کاراکترها را نظیر (“, ‘, \ , NULL) را با \ جابجا میکند و به این خاطر magic و یا جادویی نامگذاری می گردد زیرا زمانی که magic_quotes_gpc فعال می باشد به صورت اتوماتیک PHP این کار را انجام می دهد. لازم بذکر است این قابلیت در ۵٫۳٫۰ php توصیه میشد و در حال حاضر در نسخه php 5.4.0 حذف شده است.
غیرفعال کردن expose_php
یکی دیگر از روش های امن سازی سرورهایی که از زبان برنامه نویسی php استفاده می کنند مخفی نمودن نسخه ی php نصب شده بر روی سرور می باشد. بدین منظور نیاز است expose_php را غیرفعال (off) نمائید.
نصب فایروال CSF
نصب فایروال CSF از این جهت توصیه میشود که با رعایت موارد امنیتی که توسط CSF به شما پیشنهاد خواهد شد ، اجرای بسیاری از شل ها و بد افزار ها مختل خواهد شد، CSF وظیفه حفاظت از سرور را دارد و همانطور که از اسم آن مشخص می باشد، یک دیوار آتشین است که از انواع حملات که مهمترین آن ها syn flood ،، DDos و Brute force است جلوگیری می کند.
نصب و کانفیگ آنتی ویروس CLAMAV
همیشه آخرین نسخه آنتی ویروس ClamAV را در سرور خود نصب کرده و آن را بروز نگه دارید . clamav یک آنتی ویروس می باشد و می تواند فایل های آپلود شده شما را اسکن نموده و در صورت وجود شل ویرویس و فایل های خطرناک آنها را پیدا و پاک کنند.
نصب ماژول ModSecurity
Mod_security یکی از ماژول های وب سرور اپاچی میباشد که از اجرای اسکریپت های تحت وب خطرناک جلوگیری به عمل می آورد. Mod_security مانند سپری در برابر برنامه های تحت وب که قصد حمله به سرور را دارند عمل میکند و آنها را خنثی میسازد.از این برنامه ها میتوان از cross-site scripting، SQL injection و .. نام برد.این ماژول یک لایه امنیتی مقاوم به وب سرور اضافه می کند و به دلیل استفاده از نرم افزار های تحت وب گوناگون در سرور، میتواند بسیار موثر واقع گردد.
نصب CXS
CXS یک ابزار پویشگر امنیتی است. شما با استفاده از CXS میتوانید از اجرای فایلهای مخرب مانند شل و ابزار های هک سرور در امان باشید .یکی از مهمترین ویژگیهای CXS ، قابلیتی به نام Realtime Monitoring یعنی بررسی و مانیتور لحظه به لحظه سرور است. با فعال نمودن و پیکر بندی مناسب ویژگی CXS Watch Daemon ، در صورت آپلود فایل مخرب ، فایل به سرعت حذف یا قرنطینه و گزارش آن قابل دسترس خواهد بود.