حفاظت از اطلاعات و مقابله با هک و نفوذ در هاستينگ هاي اشتراکي

sanbad

Member
حفاظت از اطلاعات و مقابله با هک و نفوذ در هاستينگ هاي اشتراکي

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

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

اين اشکال به علت وجود تنظيماتي در php.ini مي باشد.
مثلا وجود هر يک از تنظيمات ذيل نفوذ به هاستينگ شما را آسان مي کند مي توانيد با استفاده از تابعphpinfo() يا در صورت وجود از Cpanel هاست خود تنظيمات php را مشاهده کنيد:
کد:
Register_global = on
Safe_mode = off
open_basedir = No value
enable_dl = on
allow_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:
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 مربوط به ناک سنتينل پسورد کاربران را مشاهده کند.
 

hoom

Active Member
سلام

اون قسمتی که در مورد غیرفعال کردن پیغامهای خطا در htaccess. اشاره کرده بودین به این صورت میشه:

php_flag display_errors off
php_value error_reporting 0

ارادتمند
 

sanbad

Member
hoom گفت:
سلام

اون قسمتی که در مورد غیرفعال کردن پیغامهای خطا در htaccess. اشاره کرده بودین به این صورت میشه:

php_flag display_errors off
php_value error_reporting 0

ارادتمند

با سپاس از شما به خاطر راهنمايي.

آيا نوشتن روي .htaccess موجود در public_html به صورت موروثي به تمام فولدرها اعمال مي شود؟
 

mnz2002

Member
hoom گفت:
سلام

اون قسمتی که در مورد غیرفعال کردن پیغامهای خطا در htaccess. اشاره کرده بودین به این صورت میشه:

php_flag display_errors off
php_value error_reporting 0

ارادتمند

اینو من همینطوری داخل htaccess. کپی کردم اما تو یکی از فولدرهای سایت که یک ایرادی تو نصب یه برنامه دارم بازم
مینویسه مثلا /home/accountName/public_html/portalDir/file.php Error 330 online 45
میشه راهنمایی کنید
مرسی:)
 

hoom

Active Member
sanbad گفت:
با سپاس از شما به خاطر راهنمايي.

آيا نوشتن روي .htaccess موجود در public_html به صورت موروثي به تمام فولدرها اعمال مي شود؟

سلام

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

sanbad

Member
اینو من همینطوری داخل htaccess. کپی کردم اما تو یکی از فولدرهای سایت که یک ایرادی تو نصب یه برنامه دارم بازم
مینویسه مثلا /home/accountName/public_html/portalDir/file.php Error 330 online 45
میشه راهنمایی کنید

من رو هاست آزمايش کردم و کار مي کنه.

مشکل شما احتمالا به يکي از دلايل ذيل مربوط باشد:

1- ممکن است هاست شما اين قابليت را که از طريق .htaccess بتوان اين تنظيمات را انجام داد، را نداشته باشه.( احتمالش کمه)

2- چون فايل htaccess حالت توارثي داره ممکنه يک فايل htaccess ديگه تو يک فولدري باشه که شما اين کدها را به آن اضافه نکردي.
 

mnz2002

Member
sanbad گفت:
من رو هاست آزمايش کردم و کار مي کنه.

مشکل شما احتمالا به يکي از دلايل ذيل مربوط باشد:

1- ممکن است هاست شما اين قابليت را که از طريق .htaccess بتوان اين تنظيمات را انجام داد، را نداشته باشه.( احتمالش کمه)

2- چون فايل htaccess حالت توارثي داره ممکنه يک فايل htaccess ديگه تو يک فولدري باشه که شما اين کدها را به آن اضافه نکردي.

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

nani

New Member
salam
ایا این برنامه ها برای هاستینگ هایی مثل
wampserver
و
easyphp
قابل اجراست ؟
 

جدیدترین ارسال ها

بالا