Parsi Coders

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

پس از پرسش و تحقيق متوجه شدم که پلن هاي ارزان ريسلري و اکثر هاست هاي ارزان داراي تنظيماتي هستند که به کاربران امکان مي دهد که به فايل ها و ديتابيس يکديگر دسترسي داشته باشند.
با استفاده از يک اسکريپت ساده مي توان هر فايلي را از اکانت ديگر بدزديم در نتيجه براي هرکسي اين امکان هست که فايل محتوي يوزر و پسورد و نام ديتابيس کاربر ديگر را دانلود کرده سپس بين ديتابيس و يک اسکريپت دست نويس خودش ارتباط برقرار کند و هر کاري که بخواهد مي تواند انجام دهد!

اين اشکال به علت وجود تنظيماتي در php.ini مي باشد.
مثلا وجود هر يک از تنظيمات ذيل نفوذ به هاستينگ شما را آسان مي کند مي توانيد با استفاده از تابعphpinfo() يا در صورت وجود از Cpanel هاست خود تنظيمات php را مشاهده کنيد: کد:
Register_global = onSafe_mode = offopen_basedir = No valueenable_dl = onallow_url_fopen = on

روش حفاظت :

1- استفاده از هاستينگ هايي که مرتبه امنيتي بالايي از لحاظ تنظيمات دارند.
2- غير فعال کردن نمايش خطا
3- تغيير نام برخي از فايل هاي پرتال
4- اتصال دو پرتال به يک ديتابيس
5- رمزنگاري برخي فايل هاي پرتال

• غير فعال کردن نمايش خطا:
هنگامي که يک فايل غير مجازphp را از طريق مرورگر وب خود فرا مي خوانيد يا به متغير هاي يک فايل php از طريق آدرس url مقادير غير مجاز مي دهيد يا هنگامي که سيستم يا ديتابيس دچار اشکال مي شود ، مشاهده گر روي مرور گر خود پيام خطايي مثلا به شکل ذيل مي بيند:
کد:
/home/accountName/public_html/portalDir/file.php Error 330 online 45

به اين ترتيب نفوذگر متوجه مي شود که نام اکانت شما چيست.
سپس با استفاده از اسکريپت بسيار ساده اي فايل اتصال ديتابيس را بدست مي آورد.

راه حل:
يا بايد از طريق فايل .htaccess فولدر را به گونه اي تنظيم کنيد که فايل هاي php خطا را نشان ندهند که من اين روش را بلد نيستم و اگه کسي مي دونه راهنمايي کند.
و يا بايد به ابتداي تمام فايل هاي php دو خط کد اضافه کنيد:
PHP Code:
ini_set('display_errors', 'Off');
ini_set('log_errors', 'On');

اين باعث مي شود که پيام خطا نشان داده نشود.
اگر cpanel شما داراي بخش نمايش خطا ها مي باشد احتياجي به تعيين مسير log نداريد.

• تغيير نام فايل ها و فولدر هاي پرتال
با اين روش شما مجبوريد تمام يا اکثر فايل هاي پرتال را با دقت تمام ويرايش کنيد. البته بايد نمايش خطا هم حتما غير فعال شده باشد.
به اين ترتيب حتي هکر هايي که با استفاده از حفره ها به سايت شما حمله مي کنند نيز به سختي مي توانند به پرتال شما نفوذ کنند مثلا فرض کنيد نام فولدر includes را به يک نام ديگر تغيير داده باشيد.
محل فايل تعريف ديتابيس را هم بايد تغيير دهيد و نام آن را نيز تغيير دهيد.

• رمزنگاري برخي فايل هاي پرتال
اگر شما فايل ارتباط با ديتابيس و چند فايل مهم ديگر را با نرم افزارهايي نظير zend php encoder رمزنگاري کنيد. اطلاعات شما امنيت بيشتري خواهد داشت.

• اتصال دو فولدر از پرتال به يک ديتابيس
شما مي توانيد برخي فايل هاي مربوط به مديريت را از پوشه اصلي برداشته و در عوض در يک مسير پسورد پروتکت شده ناشناس يک نسخه ديگر از پرتال را به ديتابيس مي توانيد اتصال دهيد.
حتي يوزر و پسورد ديتابيس اين دو نسخه مي تواند متفاوت باشد و بسته به نوع پرتال حتي ميتوانيد نوع دسترسي يوزر به ديتابيس را متفاوت تنظيم کنيد.
با اين روش شما مي توانيد تا حدي از حملات به خاطر حفره از طريق هکر غير مقيم نيز در امان باشيد.



دقت کنيد که هکر مقيم روي شيرد هاست مي تواند به هر نوع پرتالي مثلا حتي به vBulletin نيز به راحتي حمله کند. او مي تواند ديتابيس را پاک کند يا تغيير دهد.
حتي مي تواند دائم به راحتي پسورد هش شده ادمين را مشاهده کند و خودش يک پرتال مشابه را به ديتابيس شما وصل کند سپس در کد فايل مربوط به کنترل پسورد در پرتال خودش تغييراتي دهد و هميشه با وارد کردن کد هش شده شما مثل يک ادمين وارد سايت شما شده و سايت شما را مديريت کند.

نکته:
safe_mode = on هميشه نمي تواند از ربودن فايل هاي شما جلوگيري کند چون هکر مي تواند يک اسکريپت ساده بنويسد تا آن اسکريپت از طريق سرور يک فايل تهاجمي بسازد. فايل تهاجمي ساخته شده توسط سرور توسط safe_mode به عنوان فايل سرور شناخته شده و مجوز دسترسي آزاد به آن داده مي شود.

اما
open_basedir بايد براي تمام يوزر ها جداگانه تنظيم بشود و وجود يک يوزر آزاد به آن يوزر امکان حمله به تمام يوزرهاي ديگر را مي دهد.


نکته:
حتي اگر يک هاستينگ از لحاظ تنظيمات php در حداکثر امنيت بود بايد بررسي کنيد که آيا تنظيمات پرل نيز امنيت شما را برقرار مي کند يا خير! وگرنه هکر با استفاده از اسکريپت هاي پرل به فايل هاي php يا پرل و ديتابيس شما حمله خواهد کرد.

نکته:
اگر بتوانيد ساختار ظاهري پرتال خود را با تغيير نام دادن فايلها و فولدر هاي کليدي تغير دهيد حتي تا مدتها نياز به آپديت نخواهيد داشت. چون 99 درصد هکرها روي ساختارهاي شناخته شده مهارت دارند و ساختار ناشناس معمولا امن باقي مي ماند. شايد هک کردن يک ناک 6.5 تغيير ساختار يافته مشکل تر باشه از هک کردن يک ناک 7.9 تر و تازه.


نکته: پسورد ايميل اصلي خود و اکانت دامين و اکانت هاي مهم را متفاوت با ديگرپسوردها انتخاب کنيد. گاهي اوقات استفاده از تنها يک پسورد براي تمام احتياجات باعث مي شود به راحتي ديگران به اطلاعات شما دسترسي يابند. مثلا در ناک مدير مي تواند با مراجعه به جدول nuke_nsnst_tracked_ips مربوط به ناک سنتينل پسورد کاربران را مشاهده کند.

منبع persianadmin