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

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

1 دقیقه خوانده شده
۰
0
30
امنیت لینوکس و پایگاه داده MySQL

امنیت لینوکس ، در بخش دوم این مقاله ، ما به شما آموزش دادیم که یکی از راه های برقراری امنیت لینوکس ، بستن پورت های غیر ضروری و غیر فعال کردن سرویس هایی است که استفاده ای از آنها نمیشود . شما با انجام این کار ها میتوانید سطوح دسترسی سرور خود را کاهش دهید تا هکرها نتوانند آن ها را هدف بگیرند و به سرور شما لطمه ای وارد کنند . همچنین دانستیم که امنیت وب سرور یکی از عوامل مهم در ایجاد امنیت لینوکس می باشد . برای برقراری امنیت وب سرور Nginx نیز به شما راه هایی ارائه کردیم که با استفاده از آنها میتوانید به اهداف خود دست پیدا کنید . در ادامه این مقاله ما قصد داریم تا بحث ایمن کردن وب سرور Nginx را ادامه دهیم و سایر روش های موجود را نیز ارائه دهیم و نیز به شما آموزش دهیم که چگونه پایگاه داده MySQL یا MariaDB خود را ایمن کنید .

امنیت لینوکس و پایگاه داده MySQL

ارسال درخواست های کنترل نشده به سرویس PHP :

بسیاری از آموزش هایی که در سطح اینترنت برای تنظیم Nginx در جهت پشتیبانی از PHP ، شامل بخش هایی مانند زیر می باشد :

location ~* \.php$ {
    fastcgi_pass backend;
    # [...]
}

در مثال بالا ، هر درخواستی که به پسوند php. ختم شود ، به FastCGI هدایت می شود . تنظیمات پیش فرض PHP به گونه ای است که اگر مسیر مشخص شده دارای یک فایل PHP نباشد ، خود این سرویس حدس خواهد زد که شما قصد اجرای چه فایلی را دارید .

به عنوان نمونه اگر یک درخواست برای فایل yoursite.com/wp-content/uploads/1232.jpg/file.php داده شود و این فایل وجود نداشته باشد ، وب سرور بررسی خواهد کرد و در صورتی که فایل yoursite.com/wp-content/uploads/1232.jpg وجود داشته باشد ، آن را پردازش خواهد کرد . شاید پیش خودتان بگویید که چرا سرویس PHP یک فایل عکس با پسوند jpg. را بررسی میکند . در جواب باید بگوییم که گاهی اوقات برخی از کدهای PHP درون عکس ها مخفی میشوند . در حالت عادی سرویس PHP نباید یک عکس را بررسی کند ولی اگر فایل yoursite.com/wp-content/uploads/1232.jpg دارای کدهای PHP باشد ، این کار را انجام خواهد داد .

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

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

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

یک روش این است که شما پسوند های مورد نظرتون که قصد اجرای آنها را دارید ، به طور دقیق برای وب سرور Nginx ، مشخص کنید . این روش ایمن ترین روش در این زمینه می باشد ولی در کنار برقراری امنیت لینوکس ، باعث میشود تا تعداد پسوند های قابل اجرا در وب سرور ، محدود شود که این امر ممکن است بعدا باعث ایجاد مشکلاتی برای شما شود .

در مثالی که در زیر برای شما آورده ایم ، سرور ما فقط فایل هایی با نام index.php ، site.php و cms.php را اجرا خواهد کرد .

location ~* (index.php|site.php|cms.php)\.php$ {
    fastcgi_pass backend;
    # [...]
}

یک روش دیگر این است که شما از دستورات try_files استفاده کنید . در مثال زیر اگر فایل ارائه شده پیدا نشود ، وب سرور Nginx یک ارور ۴۰۴ را نمایش خواهد داد .

location ~* \.php$ {
    try_files $uri =404;
    fastcgi_pass backend;
    # [...]
}

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

در مثال زیر ما پوشه uploads را طوری تعریف کرده ایم که PHP آن را پردازش نکند :

location /uploads {
    location ~ \.php$ {return 403;}
    # [...]
}

برقراری امنیت لینوکس با ایمن کردن پایگاه داده MySQL یا MariaDB :

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

mysql_secure_installation

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

برای آن دسته از افرادی که سرور خود را راه اندازی کرده اند و نمیخواهند از این اسکریپت استفاده کنند ، بهترین مکان برای بررسی موارد ذکر شده در بالا ، داخل فایل etc/my.cnf/ می باشد . شما باید مطمئن شوید که مقدار bind-address = 127.0.0.1 تنظیم شده باشد و همچنین کاراکتر # قبل از آن قرار نداشته باشد که آن را غیر فعال کند .

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

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

این مقاله ادامه خواهد داشت . منتظر ادامه این مقاله باشید …

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

پاسخ دهید

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

بررسی کنید

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

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