چند توصيه برای بالابردن ضريب امنيتی سايت های اينترنتی
نام نویسنده: فرشاد اسماعيليان *
بخش مقاله آی تی ایران – همان طور كه مى دانيد: متاسفانه هر روز شاهد هك شدن سرورهاى بزرگ ايرانى هستيم واقعاً آيا مى توان جلوى اين حملات را گرفت؟ چرا وقتى مى توانيم با كمى وقت گذاشتن و مطالعه جلوى اين حملات را بگيريم و از خسارات مادى و معنوى آن جلوگيرى كنيم اين كار نمى كنيم؟ هر روز چندين هزار Bug و exploit كشف مى شود كه ما از آنها بىخبريم. مبحث Security چيزى نيست كه با يك مدرك سادهى امنيت شبكه بتوان گفت توانايى كافى در اين زمينه را دارا هستيم. هم اكنون به يك سرى از توصيه هاى امنيتى اشاره مى كنيم توسط گروه asquad ارائه شده است.
براى اينكه مطمئن شويد سرور شما داراى اين باگ هست يا نه اين فايل php را روى سرور خود اجرا كنيد.
http://64.240.171.106/cpanel.php
اين در واقع يك local exploit است كه برپايه perl نوشته شده و يكى از خطرناك ترين Bugهاى آن دسترسى از طريق nobody shell به user هاى ديگر است يعنى مى توانيد تنها با داشتن يك اكانت ftp از يك سرور به كل سايت هاى روى آن سرور دسترسى داشته باشيد. حتى مى توانيد به عنوان يك قربانى از آن استفاده كنيد و اهداف خود را از طريق آن سرور پى بگيرد.
متاسفانه cpanel به صورت default با ماژول mod_php كار مى كند بنابراين اكثر سرويسدهنده هاى لينوكس داراى اين مشكل هستند. اين ماژول امكان دسترسى يك user به ديگر user هاى سرور را با استفاده از UID-Min (كه 100=uid> مى باشد) مى دهد.
براى رفع اين مشكل بايد apache را دوباره بر پايه mod_phpsuexec ساخت. (Build)
هم اكنون تمام cpanel ها از جمله stables ,Releases, current و حتى Cpanel 9.3.0-Edge-95 داراى اين مشكل هستند. همچنين OS هاى RedHat 7.3,8,0,9,enterprize linux, fedora, freebsd داراى اين مشكل هستند.
بطور كلى وقتى mo_-php فعال است تمام script هاى php با همان كاربر default web server (nobody) انجام مى شود. اين به user ها اين امكان را مى دهد كه هر script اى كه بخواهند براى سرور اجرا كنند و اين براى سرورهايى كه بيش از 1 اكانت دارا مى باشند و نمى خواهند user ها به محدوده هم ديگر دسترسى داشته باشند خطرناك است (به طور كلى web serverها) متاسفانه mod-php به صورت پيش فرض بر روى cpanel نصب مىشود (و اين مشكل بزرگى است) البته توجه داشته باشيد اين يك Bug يا exploit نيست در واقع يك سرويس عادى و طبيعى و مخصوص mo_-php است كه نمى توان آن را منع كرد (مگر با تبديل آن به php suexce)
با اين حال باز هم suexec اى كه همراه cpanel ارائه مى شود اجازه اجراى كنترل ناشدنى يك سرى script ها را به user ها مى دهد كه اين با suexec ارائه شده در خود apache متفاوت است. Cpanel براى رفع اين مشكل patch اى ارائه كرده است.
(home/cpapachebuild/buildapache/suexec.patch)
اين patch فقط اجازه اجراى اين script ها را براى user هاى مخصوص root، wheel را مىدهد. فقط مشكلى دارد كه اجازه اجراى shared scripts را در صورتى كه دايركتورى اصلى آن داراى اجازه write براى user ها و group هاى ديگر داشته باشد.
علاوه بر اين هم چنان يك سرى script هاى perl و cgi وجود دارد كه داراى قابليت exploit شدن مى باشند. براى مثال:
/usr/local/cpanel/bin/proftodvhosts
/usr/local/cpanel/cgi-sys/addalinh.cgi
/usr/local/cpanel/cgi-sys/gustbook.cgi
/usr/local/cpanel/cgi-sys/mchat.cgi
…
براى اطمينان از وجود اين expliot ها بروى سرور خود اين دستور را اجرا كنيد.
Root@server01>find/usr/local / cpanel-user root-group wheel-type f- perm+ 1| xargs-I echo `head-1{}| grep – q per | && head -1{}| grep-q-r-e-T && ls – 1{}1 | sh
اگر با اجراى اين دستور هيچ پيغامى دريافت نكرديد به اين معنى كه سرور شما كاملاً در برابر اين نكات secure است. همچنين مى توانيد از طريق اين لينك سرور خود را تست كنيد:
http://64.240.171.106/cpanel.php
اين Script سرور شما را در برابر چندين vulnerability تست مى كند.
اين فايل يك سرى php script با يك user معمولى اجرا مى كند كه باعث اجراشدن فايل اصلى tests.pl مى شود. مى توانيد از اين اطلاعات كامل درباره اين tester دريافت كنيد:
http://www.a-sqvad.co/audit
اكثر سايتها هر كدام روشى براى patch كردن اين Bug ها ارائه كردن ولى اكثراً كامل نيستند و يا داراى ايراد هستند. در زير به چند روش اشاره مى كنيم:
1-بهترين كار (كه باعث از بين رفتن مشكلات ديگر نيز مى شود) تغيير ماژول php از mod-php به mod-phpssuexec مى باشد: راه اول: apache را compile كنيد
(«شماره 2» /scripts/easyapache)
ولى مواظب باشيد بسيارى از permission ها و owner ships ها برپايه phpscripts است و اين كار شما ممكن است باعث ايجاد اختلال در بعضى سايت ها شود.
*با مسئوليت خود اين كار را انجام دهيد.
2-فايل patch را پاك كنيد بعد از اجراى buildapache
(/home/cdapachbuidl/buildapach/suexea.patch)
ولى توجه داشته باشيد قبل از انتخاب راه اول: اين راه سرور شما را secure مى كند اما ممكن است مشكلاتى ايجاد كند كه بستگى به shared script هاى شما و user ها و سايت هاى روى سرور شما دارد. با اين حا مى توانيد با خود mod-php هم فعلاً مشكل را حل كنيد.
شايد بهتر باشد suexec.patch اصلاح كنيد تا پوشه هاى اصلى را براى اين مشكلات امنيتى Scan كند (قبل از اينكه اجازه اجراى Script را بدهد)
3-اگر نمى توانيد راه اول را انتخاب كنيد يا نگران ايجاد مشكل بر روى سرور و يا عوض كردن php engine خود هستيد مى توانيد خود با تغيير Script هاى perl براى root.wheel اين مشكل را از بين ببريد در زير روشى براى اين كار ذكر كرده ايم.
كافى است فقط يك (-T) به آن ها اضافه كنيم.
——-snip ——-
—/usr/local/cpanel/bin/proftydvhosts.o 2003-02-22
09:38:52.000000000 – 0700
+++/usr/local/cpanel/bin/proftpdvhosts 2004-05-27
00:10:20.000000000 – 0600
@@-1 , 5 +1 , 6 @@
-#! /usr/bin/perl
+#! /usr/bin/perl-T
+% ENV = (PATH => “/usr/bin:/bin/:/sbin:/usr/sbin”);
BEGIN {
Push @ INC, “/scripts”);
}
– – – – snap – – – –
فقط مشكلى كه در اين روش وجود دارد اين است كه با انجام اين taint clean Script ها بعد از هر (/Scripts/upcp) cpanel, update تمام اين تنظيمات از بين مى رود و دوباره بايد انجام گردد.
4-راه راحت تر اين است كه owner ship تمام untaint script ها را به root wheel تبديل كنيد.
Chgrp root / usr/ local/cpanel/ hin / proft pdv hosts
بنابراين شما احتياجى به fix كردن هيچ Script اى نداريد. فقط كافى است Script Schared ها را به root wheel تبديل كنيد. بنابراين براى اجراشدن آنها حتماً بايد با group، root wheel وارد شوند.
پيشنهاد مى كنم براى اينكه خال خود را راحت كنيد تمام perl script هاى قابل اجرا را كه مال root.wheel هستند را taint clean كنيد اگر نمى توانيد اين كار را كنيد آن را پاك كنيد يا ownership آن را به root.wheel تغيير دهيد يا Chmod آنها را روى صفر قرار دهيد.
در كل Cpanel هميشه خود داراى مشكلات بسيار بوده است و خواهد بود اين مشكل شامل تمام نرمافزارهاى 3dparty و opensource مى باشد. بهترين كار اين است كه admin يك سرور روز به سايت Security news سر بزنند و از اخبار جديد اطلاع يابد.
منابع:
1-http: //www.security focus.com/archive/1/365328
2-http: //cve.mitre.org/cgi-bin/cvename.cgi?name-CAN-2004-0529
3-cPanel’s Internal Ticket Request: # 17703 (no public URL)
4-http: //www.a-squad.com/audit/
5-http://bugzilla.cpanel.net/show_bug.cgi?id=668
توجه داشته باشيد 2 مشكل را بررسى كرديم يكى مربوط به mod-phpsuexc مى باشد. ديگرى مربوط به /usr/local/apach/bin/suexec همراه با mod-php است. براى اطلاعات بيشتر به اين link توجه كنيد:
http://cve.mitre.org/cgi-bin/cvename.cgi?CVE-2004-0490
اگر سوال يا اشكال و ايرادى وجود داشت با كمال ميل در خدمت دوستان و علاقهمندان عزيز مى باشيم.
Support@cypherHost.com
* مديرامنيتى CypherHost