خانه WHM پیکربندی سرور چگونه امنیت لینوکس و سرویس های LEMP را افزایش دهیم؟ ( بخش پنجم )

چگونه امنیت لینوکس و سرویس های LEMP را افزایش دهیم؟ ( بخش پنجم )

1 دقیقه خوانده شده
۰
0
25
امنیت لینوکس از طریق ایمن کردن سرویس PHP

امنیت لینوکس ، در بخش چهارم این مقاله ، ما دانستیم که یکی از راه های تامین امنیت لینوکس ، ایمن کردن سرویس PHP می باشد زیرا بسیاری از حملاتی که به سرور انجام میشود ، این سرویس را هدف میگیرند . در این زمینه حملات SQL Injection ، XSS و CSRF را معرفی کردیم و همچنین به شما آموزش دادیم تا چگونه از طریق تنظیمات فایل php.ini ، امنیت PHP را بیشتر کنید . در ادامه این مقاله قصد داریم تا سایر روش های ایمن کردن سرویس PHP را به شما آموزش دهیم که با انجام دقیق آنها ، میتوانید امنیت لینوکس را بسیار بالا ببرید .

امنیت لینوکس از طریق ایمن کردن سرویس PHP

محدود کردن آپلود فایل ها در سرویس PHP :

در بخش های قبلی این مقاله ما به شما آموزش دادیم که چگونه با استفاده از فایل تنظیمات وب سرور Nginx ، میتوانید قابلیت بارگذاری فایل را بر روی یک مسیر از سایت خود محدود کنید . در این شرایط فایل های PHP در مسیرهایی که کاربران قابلیت آپلود فایل دارند ، اجرا نخواهد شد و اگر یک هکر ، بخواهد کدهای مخرب را در قالب عکس و … روی سایت شما بارگذاری کند ، با شکست مواجه خواهد شد زیرا این کدها اجرا نخواهند شد . اگر سایت شما اصلا از قابلیت های بارگذاری فایل ها استفاده نمیکند ، پیشنهاد ما به شما این است که از طریق فایل تنظیمات PHP ، به طور کلی گزینه آپلود فایل را غیر فعال کنید .

برای اینکار میتوانید از مقادیر زیر در فایل php.ini استفاده کنید :

file_uploads=Off

در شرایطی که برنامه شما از قابلیت های بارگذاری فایل استفاده میکند ، چاره ای نخواهید داشت جز اینکه این قابلیت را فعال کنید اما میتوانید برای فایل های بارگذاری شده ، نهایت حجم را تعیین کنید . برای مثال در زیر ، ما نهایت حجم یک فایل که کاربر میتواند آپلود کند را روی یک مگابایت قرار داده ایم .

file_uploads=On
upload_max_filesize=1M

در نظر گرفتن حجم متد POST با مقداری معقول :

از متد POST زمانی استفاده میشود که یک کاربر بخواهد اطلاعاتی را به سرور شما یا برنامه اینترنتی شما ارسال کند . چنین اطلاعاتی که از سمت کاربران به سمت سرور ارسال میشوند ، میتوانند شامل برنامه های مخرب نیز باشند و از آنها سوء استفاده نیز شود . برای نمونه میتوان از حملات DoS به عنوان یکی از راه های سوء استفاده از متد POST می باشد . این متد همچنین قابلیت ارسال فایل های حجیم را به سرور شما فراهم میکند .

اگر چه این متد نیز یکی از بخش های اساسی در هر برنامه اینترنتی می باشد ولی بهترین راه برای اینکه از سرور خودتان در برابر سوء استفاده های احتمالی محافظت کنید ، این خواهد بود که مقدار آن را محدود کنید و به عددی منطقی تغییر دهید .  اگر شما از قابلیت بارگذاری فایل ها در داخل برنامه های خود استفاده نمیکنید ، بهتر است که این مقدار را چیزی مانند ۴ کیلوبایت و یا کمتر از آن قرار دهید . برای اینکار میتوانید از مقدار زیر در فایل تنظیمات PHP استفاده کنید :

post_max_size=1K

اگر شما قصد دارید از قابلیت آپلود فایل ها روی سرور خود استفاده کنید ، باید مقدار بالا را بیشتر از مقدار پارامتر upload_max_filesize تنظیم کنید .

محدود کردن نمایش اطلاعات سرویس PHP :

ما در بخش مربوط به تنظیمات امنیتی وب سرور Nginx ، تغییراتی دادیم که از نمایش نسخه Nginx جلوگیری به عمل می آورد . برای سرویس PHP نیز میتوان عملیات مشابهی را انجام داد . شما با اضافه کردن عبارت expose_php = Off در فایل تنظیمات PHP ، میتوانید به راحتی اطلاعات مربوط به نسخه PHP نصب شده روی سرور خودتان را مخفی کنید . با این کار در واقع شما در حال مخفی کردن امضایی هستید که سرویس PHP در هدر های ارسال شده توسط وب سرور Nginx ایجاد میکند .

وقتی به بخش مستندات سرویس PHP نگاه میکنیم ، توسعه دهندگان آن از این مقدار به عنوان یک حفره امنیتی یاد نمیکنند و از نظر آنها حتی اگر این مقدار را روی ON نیز تنظیم کنیم ، مشکلی پیش نخواهد آمد . ولی ، هیچ کس نمیتواند این نکته را رد کند که اگر ما اطلاعات کمتری را از سرور خود در معرض دید عموم قرار دهیم ، امنیت لینوکس ما بیشتر خواهد شد .

محدود کردن حداکثر فرصت اجرای اسکریپت های PHP :

شما برای اینکار میتوانید از مقادیر زیر در فایل php.ini خود استفاده کنید . شما در هر زمان میتوانید بنا بر نیازهای خود ، این مقادیر را تغییر دهید .

# set in seconds
max_execution_time = 30
max_input_time = 30
memory_limit = 40M

تنظیم کردن این مقادیر نه تنها میتواند باعث کمک به شما در مهار حملات DoS شود ، بلکه میتواند از سرور شما در برابر برنامه نویسی ضعیف و حلقه های تکرار بی نهایت نیز مراقبت کند . مقادیری که در بالا بیان کردیم ، کارهای زیر را انجام میدهند :

  1. مورد اول به یک اسکریپت PHP ، سی ثانیه مهلت میدهد تا اجرا شود . در صورتی که در این مدت ۳۰ ثانیه ای اجرا نشود ، سرویس PHP آن فرآیند را از بین خواهد برد .
  2. مورد دوم زمان دریافت مقادیر ورودی از کاربران را ۳۰ ثانیه تعیین میکند . منظور از مقادیر دریافتی از کاربران همان متد POST و GET می باشد . بدین صورت روش های POST و GET اگر در ۳۰ ثانیه موفق به ثبت دیتا نشوند ، پروسه آنها حذف خواهد شد .
  3. مورد سوم حداکثر مقدار حافظه قابل استفاده توسط یک اسکریپت را تعیین میکند . برای مثال در بالا یک اسکریپت میتواند برای اجرای خودش از ۴۰ مگابایت رم استفاده کند .

در بسیاری از تنظیمات مرتبط با PHP ، مقدار memory_limit به ۱- تنظیم شده است . این مقدار در واقع بی نهایت می باشد و اسکریپت ها میتوانند از کل رم سرور استفاده کنند . شاید در مراحل برنامه نویسی و توسعه مشکلی ایجاد نکند اما بعد از انتشار عمومی ، نباید چنین قابلیتی را فعال کنید .

غیر فعال کردن ماژول های PHP که از آنها استفاده نمیشود :

php -m

در بخش های قبل تر مقاله امنیت لینوکس ، ما چنین موضوعی را در مورد پورت ها و سرویس هایی که از آنها استفاده نمیشود نیز ، مطرح کردیم . ماژول های PHP بسیار مفید هستند زیرا به ما این اجازه را میدهند که قابلیت های بسیاری را برای برنامه های اینترنتی خود فعال کنیم . اگر بخواهم یک نمونه خوب را معرفی کنم ، میتوانم به ماژول PHP مفیدی به نام pdo_mysql اشاره کنم که به PHP اجازه میدهد تا به پایگاه داده MySQL متصل شود .

درست است که این ماژول ها فایده های بسیاری را برای ما دارند اما در کنار این فواید ، ممکن است که دارای روزنه هایی برای نفوذ هکرها باشند . در این حالت توصیه ما به شما این است که ماژول هایی که از آنها استفاده نمیکنید را غیر فعال کنید . هر چقدر تعداد ماژول های فعال کمتر باشد ، سطحی که یک هکر میتواند از طریق آن امنیت لینوکس شما را مختل کند ، به حداقل میرسد . شما با استفاده از دستور SSH زیر میتوانید ماژول های فعال PHP روی سرور خودتان را مشاهده کنید .

php -m

غیر فعال کردن ماژول هایی که از آنها استفاده نمیکنید ، یکی از اقدامات مهم برای افزایش امنیت لینوکس می باشد . حالت ایده آل این خواهد بود که شما PHP را از اول نصب کنید و این بار تنها ماژول هایی که واقعا به آنها نیاز دارید را فعال کنید . در صورتی که احساس میکنید این کار برای شما سنگین است ، میتوانید تنها با قرار دادن یک # در ابتدای این ماژول ها در فایل php.ini ، آنها را غیر فعال کنید . یکی دیگر از روش های غیر فعال کردن ماژول ها ، تغییر نام آن ها از چیزی مانند etc/php.d/module_name.ini/ به چیزی مانند etc/php.d/module_name.ini.disabled/ می باشد .

نتیجه گیری مقاله امنیت لینوکس :

سیستم عامل لینوکس در ذات خودش ، یک سیستم عامل بسیار ایمن می باشد اما این قضیه نباید باعث شود تا شما سهل انگاری کنید و به مباحث پایه ای امنیت لینوکس توجه نکنید . استفاده از یوزرنیم و پسورد روت برای ورود به سرور توصیه نمیشود و همیشه بهتر است از اعتبارسنجی به وسیله کلیدهای عمومی SSH برای ورود به سرور استفاده کنید .

برای ایمن کردن بسته های LEMP ، باید تلاش زیادی را انجام دهید اما باید بدانید که کارهای شما به عنوان مدیر سرور ، تنها یک بخش از برقراری امنیت به صورت کامل می باشد . بخش دیگر این موضوع بر عهده توسعه دهندگان و برنامه نویس ها می باشد . در واقع میتوان گفت که رسیدن به امنیت کامل زمانی محقق میشود که برنامه نویس ها و مدیران سرور با هم کار کنند . برای مثال فرض کنید که شما تمامی موارد ذکر شده در مقالات ما را انجام داده اید ولی برنامه نویس شما ، رشته های متنی مربوط به MySQL را به خوبی کد گذاری نکرده باشد . در این صورت برنامه شما آسیب پذیر خواهد بود و میتواند مورد حمله های MySQL Injection قرار بگیرد و در نهایت منجر به از دست رفتن اطلاعات مهم شود .

اگر شما نیز میخواهید که از ایمنی کامل برای سایت خود و محتوای آن برخوردار شوید ، پیشنهاد ما به شما استفاده از سرویس هاست لینوکس چیتاهاست می باشد .

در نهایت ما به شما توصیه میکنیم که همیشه برنامه های خود را به روز رسانی کنید و آخرین پچ های امنیتی را روی سرور خود نصب کنید زیرا این کار مهمترین اقدام شما برای جلوگیری از رسیدن آسیب به سرور می باشد . اگر سرور شما بدون مراقبت باقی بماند ، در نهایت صدمه خواهد دید .

بارگذاری نوشته های مرتبط بیشتر
مطالب بیشتر از این نویسنده علی دربان
بارگذاری بیشتر در پیکربندی سرور

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بررسی کنید

چگونه از سرویس Git به موثرترین شکل ممکن استفاده کنیم ؟ ( بخش دوم )

در بخش اول این مقاله ، ما دانستیم که سرویس Git چه فوایدی برای توسعه دهندگان وب دارد و به ش…