محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

آموزش امن کردن هاست اشتراکی لینوکس : امن کردن Shared Hosting

سالها قبل زمانیکه دامین tosinso.com به تازگی ثبت شده بود تقریبا همگی سرویس ها و نرم افزارهای CMS رایگان مانند جوملا ، وردپرس ، ShareTronix و .... را برای قراردادن وب سایت در اینترنت استفاده کردیم. در این بین طبیعی است که از سرویس های هاست اشتراکی لینوکس یا Linux Shared Hosting که هزینه کمتری نسبت به سرویس های ویندوزی داشت استفاده می کردیم ، امنیت یکی از پارامترهای مهمی بود که برای وب سایت itpro در آن زمان ( البته الان هم هست اما مثاله دیگه ( در اولویت قرار داشت ، بعد از چند وقت مطالعه در خصوص سرویس های هاستینگ اشتراکی لینوکس در نهایت به یک سری نکات ساده و کاربردی برای امن کردن سرویس هاستینگ خود رسیدیم که در این مطلب قصد داریم آن را با شما به اشتراک بگذاریم بنابراین تا انتهای مطلب با ما باشید.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
امن کردن هاست های لینوکسی و Cpanel

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

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

    1. اولین نکته ای که باید رعایت کنید این است که شما فقط قرار نیست هاست اشتراکی را امن کنید ، شما ابتدا باید سیستم عاملی که قرار است به هاست متصل شود را امن نگه دارید تا از سمت پل ارتباطی ایجاد شده توسط خودتان مشکل امنیتی نداشته باشید بنابراین حتما روی سیستم خود یک آنتی ویروس به روز و قابل اعتماد نصب کنید و همیشه سیستم عامل خود را بروز نگه دارید و آخرین بسته های امنیتی را بر روی آن نصب کنید.
    2. اگر از نرم افزارهای Open Source مانند Joomla و Wordpress و ... استفاده می کنید همیشه به خاطر داشته باشید که بلافاصه و باز هم تاکید می کنم بلافاصله بعد از ارائه شدن نسخه جدید و بسته های امنیتی برای خود نرم افزار و همچنین هر یک از ماژول های نصب شده و Component ها و Add-on های نرم افزار آنها را دریافت و نصب کنید. بزرگترین نقطه ضعف امنیتی اینگونه نرم افزارها انتشار سریع نقاط ضعف آنها است که به دلیل بی توجهی براحتی هکرها می توانند از آنها استفاده کنند. به خاطر دارم 5 سال پیش زمانیکه وب سایت انجمن تخصصی فناوری اطلاعات ایران یک Forum ساده با استفاده از نرم افزار MyBB بود تنها دو بار و به فاصله 3 روز نسخه جدیدی از نرم افزار ارائه شد که باگ امنیتی نسخه قبلی را پوشش می داد اما همین فاصله برای یک هکر کافی بود که بتواند MyBB را هک کند. در ان زمان یکی از ماژول های وب سایت نقطه ضعف امنیتی داشت که بعدها پوشش داده شد.
    3. برای ورود به پنل مدیریتی CPanel ، MySQL ، FTP و Mail هایی که ایجاد می کنید حتما یک رمز عبور قوی انتخاب کنید. برای ایجاد کردن یک رمز عبور قوی می توانید به چگونه یک رمز عبور قوی درست کنیم ؟ در انجمن تخصصی فناوری اطلاعات ایران مراجعه کنید. هیچوقت و تاکید می کنم هیچوقت از یک رمز عبور مشترک برای همه حساب های کاربری خود استفاده نکنید برای مثال کاربرانی که از سرویس ایمیل شما استفاده می کنند یا شمایی که وارد CPanel می شوید نباید رمز عبورتان با رمز عبور سرویس MySQL شما یکسان باشد. همیشه پیشنهاد می شود که قویترین رمز عبور ممکن را برای ورود به پنل مدیریت CPanel انتخاب کنید. حواستان باشد که به هیچ عنوان رمزهای عبور خود را در قالب فایل در فضای پنل مدیریتی نگهداری نکنید و آنها را به جای یادداشت کردن خوب به خاطر بسپارید.
    4. قالب سطوح دسترسی به فایل های موجود در سرویس های لینوکس بر اساس یک عدد بین 5 تا 7 تعیین می شود که 5 سطح دسترسی پایین و 7 سطح دسترسی بالا می باشد که در سه سطح در پنل مدیریتی بر روی فایل ها قابل پیاده سازی است ، باید توجه کنید که به هیچ عنوان هیچکدام از فایل های اساسی نرم افزار شما در سیستم های هاست اشتراکی لینوکس دسترسی بالاتر از 775 نداشته باشند. اگر نرم افزارهای شما به دسترسی بیشتر از این حد نیاز دارند تا به درستی اجرا شوند آنها را خارج از ریشه یا webroot که بصورت public__html دیده می شود قرار دهید ، روش دوم در صورتیکه مجبور بودید فایل های اجرایی نرم افزار مورد نظر را در ریشه قرار دهید این است که در پوشه نرم افزار قرار گرفته در فضای میزبانی یک فایل به نام htaccess. ایجاد کنید و درون آن یک دستور به شکل deny from all ایجاد کنید که دسترسی های عمومی به پوشه مورد نظر را محدود کند.
    5. زمانیکه می خواهید به پنل مدیریتی Cpanel متصل شوید حتما از Connection های امن استفاده کنید برای مثال به جای استفاده از پروتکل http برای ورود به پنل مدیریت از https استفاده کنید ، برای مثال برای ورود به پنل مدیریتی دامین tosinso.com کافیست آدرس را به شکل https:////tosinso.com//cpanel وارد کنید. با اینکار امکان شنود ارتباطات خود را تا حدود زیادی محدود خواهید کرد.
    6. تنظیمات PHP روی فضای هاستینگ را برای برقرار امنیت بهتر بهینه سازی کنید. در واقع اینکار فرآیند Hardening در سطح فضای در اختیار گذاشته می باشد ، شما باید تمامی سرویس ها و امکاناتی که می دانید به درد شما نمی خورد و استفاده از آنها نمی شود را از روی سرور حذف یا غیرفعال کنید ، نمونه ای از این تنظیمات را می توانید در اینجا مشاهده کنید که در فایل php.ini موجود در سرویس هاستینگ ایجاد شده است :
allow_url_fopen=off 
disable_functions = proc_open , popen, disk_free_space, set_time_limit, leak, tmpfile, exec, system, shell_exec, passthru

به این نکته توجه کنید که دستورات بالا که در فایل php.ini در کنار تنظیمات PHP قرار می گیرند ممکن است فعالیت های برخی از قسمت های کد نرم افزار شما را دچار اختلال کنند ، بنابراین قبل از اینکه دستورات بالا را وارد کنید یک کپی از فایل اصلی php.ini بگیرید که در صورت بروز مشکل بتوانید به حالت اولیه برگردانید به هر حال کار اگر از محکم کاری عیب کرد باز هم محکم کاری کنید :D جمله از خودم بود البته ، در کنار تنظیمات بالا شما باید از دسترسی bot ها یا crawler ها به فایل های حساس وب سایت خود جلوگیری کنید در عین حالی که باید Perl را نیز Deny کنید ، این قوانین یا rule ها را می توانید براحتی با ویرایش کردن فایل htaccess. و وارد کردن دستورات پایین در آن ایجاد کنید :

SetEnvIfNoCase User-Agent libwww-perl bad_bots
order deny,allow
deny from env=bad_bots

اگر شما از اسکریپت های Perl استفاده نمی کنید ، قطعا باید به نحوه اجرای این کدها در فضای هاستینگ خود نظارت کنید و آنها را مدیریت کنید ، در home directory خود یک فایل به اسم htaccess. ایجاد کنید که دارای کدهای زیر باشد :

##Deny access to all CGI, Perl, Python and text files
<FilesMatch ".(cgi|pl|py|txt)">
Deny from all
</FilesMatch>
##If you are using a robots.txt file, please remove the
# sign from the following 3 lines to allow access only to the robots.txt file:
#<FilesMatch robots.txt>
#Allow from all
#</FilesMatch>

کدهای بالا از اجرا شدن کلیه کدهایی که با استفاده از اسکرییپت های Perl نوشته شده اند جلوگیری می کند. بیشتر exploit ها و backdoor های شناخته شده امروزی به زبان perl نوشته شده اند و با استفاده از کدهای بالا شما از اجرا شدن آنها در هاستینگ خود به خوبی جلوگیری خواهید کرد. این directory بر روی همه subdirectory های موجود در مجموعه خود تاثیر خواهد گذاشت ، نکته بسیار مهمی که باید رعایت کنید این است که زمانی که حساب کاربری شما مورد حمله قرار گرفت و از آن سوء استفاده شد .

  • امنیت هاست لینوکس در گرو امنیت سیستم عامل و شناخت درست لینوکس است. برای یادگیری و پیشرفت در حوزه امنیت اطلاعات و آموزش هک و نفوذ ، یادگیری دوره آموزش سکیوریتی پلاس Security+ ، دوره آموزش CEH ( دوره آموزشی هک قانونمند ) را حتما به عزیزان توصیه می کنم. اگر می خواهید تبدیل به یک کارشناس حرفه ای تست نفوذ و امنیت اطلاعات شوید ، پیشنهاد می کنم مقاله چگونه هکر شویم را نیز مطالعه کنید.

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


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات