شل (shell) یک اصطلاح بسیار کلی برای اسکریپت ها و کد ها مخربی است که در صورت آپلود شدن داخل هاست و سرور ، به هکر دسترسی های غیر مجاز تا مرز دسترسی root access خواهند داد . جلوگیری از اجرا شدن شل در سرور لینوکس و سرویس های هاست و میزبانی وب کاملا نسبی است و هیچ راه ۱۰۰٪ و قابل اطمینانی برای جلوگیری از اجرا شدن شل در سرور لینوکس وجود ندارد . در واقع فقط در صورتی میتوانید با اطمینان اعلام کنید که موفق به جلوگیری از اجرا شدن شل در سرور لینوکس شده اید کهSSH ، CRON , PHP ، Perl ، Python ، CGI و … را به طور کامل غیر فعال کرده باشید که در این صورت نه تنها شل ، بلکه هیچ وب سرور و سایتی هم روی سرور لینوکس شما کار نخواهد کرد . راه هایی برای محدود کردن هکر ها و فعالیت های مخرب روی سرور های اشتراکی وجود دارد که در ادامه به معرفی این راهکار ها میپردازیم .
جلوگیری از اجرا شدن شل در سرور لینوکس و هاست
با توجه به اینکه ساختار اغلب این شل ها بر اساس کد های php است ، ابتدا به راه های امن سازی php می پردازیم .
غیر فعال کردن توابع و function های خطرناک php
برای این غیر فعال کردن توابع و فانکشن های خطرناک و یا بدون استفاده زبان PHP در سرور لینوکس ، باید لیست توابع را به فرمت زیر در فایل php.ini اضافه کنیم :
disable_functions = function1, function2, function3
به عنوان یک مثال ، ما در سرور های چت روم بر پایه ET-CHAT توابع را به شکل زیر محدود میکنیم :
disable_functions = detcwd, dl, escapeshellarg, escapeshellcmd, exec, fpassthru, imap_list, ini_alter, ini_restore, link, mysql_list_dbs, openlog, passthru, pcntl_exec, pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, pfsockopen, phpinfo, popen, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, readlink, shell_exec, snmpget, socket_accept, socket_bind, socket_create, socket_create_listen, socket_create_pair, socket_listen, socket_select, socket_strerror, stream_select, symlink, syslog, system, posix_getpwuid, posix_getgrgid, ini_set, show_source, allow_url_fopen, xmlrpc_entity_decode, posix_uname, posix_setuid, posix_setsid, posix_setpgid, posix_mkfifo, posix_kill, phpAds_xmlrpcEncode, phpAds_xmlrpcDecode, phpAds_XmlRpc, phpAds_remoteInfo, php_uname, mysql_pconnect, inject_code, ini_get_all, highlight_file, ftp_rawlist, ftp_raw, ftp_put, ftp_nb_fput, ftp_login, ftp_get, ftp_exec, ftp_connect, fput, fp, eval, define_syslog_variables, apache_setenv, apache_child_terminate
توابع محدود شده باید بر اساس نوع کاربری سرور ، نوع اسکریپت ها ، ماژول ها و کامپوننت های استفاده شده در سرور انتخاب شوند . در یک سرور هاستینگ بر پایه سی پنل ، در صورت بستن تمام توابع فوق ، قطعا با مشکلاتی مانند اجرا نشدن بعضی از کد های PHP و سیستم های مدیریت محتوا مواجه خواهید شد . بعد از ذخیره کردن فایل php.ini اقدام به ریستارت کردن وب سرور آپاچی (یا php-fpm در صورت استفاده) میکنیم .
service httpd restart
سایر موارد مورد نیاز برای افزایش امنیت php
فایل php.ini سرور را ویرایش کرده و مقادیر مورد نظر را به شکل زیر مقدار دهی کنید :
enable_dl = Off
allow_url_fopen=Off
allow_url_include=Off
safe_mode = On
بعد از ذخیره کردن فایل php.ini اقدام به ریستارت کردن وب سرور آپاچی (یا php-fpm در صورت استفاده) میکنیم .
service httpd restart
توجه داشته باشید که هر ۴ مورد فوق و به خصوص safe_mode در مورد بعضی از وب سایت ها و اسکریپت ها محدودیت هایی ایجاد خواهد کرد که معمولا باید بین امنیت بیشتر و سازگاری بیشتر یکی را انتخاب کنید .
نصب پچ امنیتی php-suhosin
پچ امنیتی suhosin یک سیستم محافظ هوشمند PHP است که با الگوریتم خود php را نسبت به بسیاری از بد افزار های شناخته شده و شناخته نشده امن خواهد ساخت . suhosin بر اساس رفتار و چگونگی اجرای کد ، مخرب یا مفید بودن آن را تشخیص خواهد داد . این دقیقا همان چیزی است که برای محدود کردن شل های اختصاصی و ناشناخته به آن نیاز داریم .
نصب ModSecurity v2.7 یا بالاتر
ماژول ModSecurity یک فایروال وب بیس وب سرور است که در صورت استفاده از رول های صحیح قابلیت های بسیار زیادی از جمله اسکن لحظه ای و realtime فایل های در حال آپلود به سرور توسط pure-ftpd را دارا است . این ماژول قدرتمند در حال حاضر از وب سرور های آپاچی ، انجین اکس و همچنین IIS پشتیبانی میکند ولی بیشترین سازگاری آن با وبسرور Apache است . با کمک این ماژول امنیتی وب سرور ، جلوی اجرا شدن بسیاری از شل های معروف را خواهید گرفت .
نصب فایروال CSF
نصب فایروال CSF از این جهت توصیه میشود که با رعایت موارد امنیتی که توسط CSF به شما پیشنهاد خواهد شد ، اجرای بسیاری از شل ها و بد افزار ها مختل خواهد شد .
استفاده از اجرا کننده suPHP
در محیط های اشتراکی (در صورت استفاده از وب سرور آپاچی) حتما از php-handler امن و قدرتمند suphp استفاده کنید . با کمک این اجرا کننده php در صورت هک شدن یکی از یوزر های هاست ، دسترسی گرفتن از محیط خارج از هاست هک شده برای هکر بسیار دشوار و در مواردی غیر ممکن خواهد شد .
امنیت اسکریپت و سیستم مدیریت محتوا
امن کردن سرور و وب سرور وظیفه مدیر سرور و هاستینگ است ، ولی بخشی از امنیت نیز مربوط به مدیر سایت می باشد . بار ها پیش آمده که سایتی به دلیل وجود باگ امنیتی ، حتی با توجه به امنیت بالای سرور هک شده است . حتما همیشه از آخرین نسخه های پایدار سیستم های مدیریت محتوا استفاده کنید . پلاگین ها ، ماژول ها و کامپوننت ها را همیشه به روز نگهدارید و از اسکریپت های ناشناخته و قدیمی هرگز استفاده نکنید . اگر سایت شما یک آپلود سنتر است ، حتما در پوشه آپلود عکس ها ، محدودیت هایی برای اجرا نشدن هر نوع فایل اجرایی اعمال کنید . برای مثال با وارد کردن کد زیر در .htaccess پوشه مورد نظر ، وب سرور هیچ فایلی به جز فایل های مربوط به تصویر و عکس را اجرا نخواهد کرد :
<FilesMatch “.(gif|jpg|png)$”> deny from all </FilesMatch>
نصب و کانفیگ آنتی ویروس CLAMAV
همیشه آخرین نسخه آنتی ویروس ClamAV را روی لینوکس خود نصب کرده و آن را به روز نگه دارید . اسکن های روزانه و هفتگی به شما امکان حذف حد اقل بعضی از ویروس ها و شل های شناخته شده را خواهد داد . به هر حال اگر شل اختصاصی یا کد شده باشد ،معمولا ClamAV قادر به شناسایی آن نخواهد بود .
نصب آنتی شل CXS در سرور های سی پنل
آنتی شلر CXS یک برنامه ضد شل بسیار قوی و مفید است که فقط امکان نصب در سرور های cPanel را دارد . با خرید لایسنس آنتی شل CXS سرور خود را به قابلیت اسکن لحظه ای و realtime پراسس های در حال اجرا و همچنین در حال آپلود مجهز خواهید کرد .
نصب و کانفیگ آنتی شل Maldet
آنتی شل Maldet یک برنامه آنتی ویروس و ضد شل رایگان و متن باز است که با کمک انجین ClamAV اقدام به اسکن و شناسایی شل ها و تروژان های سرور های لینوکس خواهد کرد . اگر امکان خرید CXS را ندارید یا سرور شما از پنلی به جز cPanel استفاده میکند ، استفاده از این ضد شل قوی را به شما توصیه میکنیم . با کانفیگ صحیح این آنتی شلر رایگان ، امکاناتی مانند اسکن لحظه ای و realtime به سرور شما اضافه خواهد شد .
موارد فوق تنها بخشی از راه های امن کردن سرور و جلوگیری از اجرا شدن شل های معروف روی هاست بود ، راه های بسیار دیگری نیز مانند محدود کردن perl و python و … وجود دارند که مسئول کانفیگ و ادمین سرور با پیاده سازی صحیح آن ، امنیت سرور را افزایش خواهد داد . در مقیاس بزرگ و کلاس Enterprise فایروال های سخت افزاری در لایه های شبکه ، پکت های ارسالی و دریافتی را باز کرده و signature آن ها را با دیتابیس خود مطابقت میدهند و در صورت مخرب بودن کد ، آن را در میانه راه و قبل از رسیدن به سرور حذف میکنند . همانطور که در ابتدای بحث اشاره کردیم ، امنیت نسبی است و هیچ راه تضمینی و قطعی برای جلوگیری از اجرا شدن شل در سرور وجود ندارد .