السلام عليكم ورحمة الله وبركاته لا شك أن الجميع يشتكي من مشكلة الهاكرز الذي يقوم بدعس (أن صح اللفظ ) المواقع الموجود على السيرفر كلها بسحب الكونفيق لاخذ بيانات قاعدة بيانات المنتدى لتغير الفورم هوم أو التمبليت أو زرع Index الى غير ذلك من أنواع الدعس خخخ حان الوقت لشرح طريقة التخلص من هذه المشكلة إن شاء الله الى الأبد. نقول بسم الله وبالله التوفيق نرجع المسأله للأصل وكيف يستغل الهاكرز هذه الثغرة ، عموما الهاكرز يعتمد على 3 أمور مهمة في تشغيل البيرل أولها تصريح البيرل باعطاء ملف المترجم (/user/bin/perl)تصريح 700 هذه مسألة لها سلبياتها على السيرفر فكثير من سكريبتات السيبنال لا تشتغل وتعيد خطأ 500 في الأباتشي من جهة ومن جهة اخرى ان الهاكر بكل سهولة يقدر يتجاوز هذه المرحلة برفع ملف مترجم محلي وتغيير الباث التكملة .... لن اذكرها مخافة استغلالها من طرف اطفال النت هذه المسألة أظن أنه لا خلاف حولها . ثانيا : الهاكرز يعتمد على تغيير امتداد تشغيل البيرل لو أن الأباتشي مضبوط أو اعدادات الموقع مضبوطة على RemoveHandler لإمتدادات CGI Scripts أو حذف امتداد البيرل نهائي من ملف الإعداد فهذه يتم تجاوزها بالتبليغ عن امتداد جديد عن طريق Addhandler في htaccess وتشغيل البيرل بكل سهولة . ثالثا : تفعيل CGI scripts عن طريق عمل Override بتفعيل ExecCGI في htaccess (Options +ExecCGI) ولو كانت في الملف الرئيسي ملغية (Options –ExecCGI) هذه بالإضافة الى تطبيق الأمر الأول والثاني يشتغل البرل بكل بساطة. هذه الأمور كلها مرتبطة بعضها الببعض ولا يمكن معالجة أمر دون معالجة الأخر ، لدينا هنا الأمر الأول لا يمكن معالجته لحاله الا اذا الغينا البيرل من السيرفر بصفة نهائية وهذا لا يمكن الأمر الثاني الغاء FileInfo من AllowOverride لتمنع عمل Override لـتعليمات mod_mim منها addtype و addhandler و setHandler ما فيها أي اي خطر من الغائها ان شاء الله لكن المشكلة لو الغيناها يبقى منعنا العملاء من التحكم في mod_rewrite عن طريق التعليمات RewriteEngine و RewriteOptions و RewriteBase و RewriteCond و RewriteRule وفيها كذلك RedirectMuch دون ان ننسى صفحات الخطأ عن طريق التعليمة Error******** وغيرها من التعليمات المهمة التي يحتاجها العميل وهي الأكثر استخداما في الاستضافات بنسبة 90% لان الغالبية العظمى يعتمدون على mod_rewrite في vbseo وتحويل الصفحات وتغيير الإمتدادات والكثير من الأمور مما يجعل أمر الغائها مضرة . الأمر الثالث هو الأمر الذي سنسلط عليه الأضواء لشرحه لانه هو الأمر المتحكم في الامرين السابقين لو قمنا بمنع التحكم في ExecCGI ومنعنا العملاء من التحكم فيها عن طريق Htaccess يبقى حسمنا المسالة وانتيهنا . ناخذ الأمر وشرحه بمنطقية اكثر ما دام نحن عطلنا عمل Override لتعليمات Options عن طريق htaccess وأننا ضبطنا الخيار الرئيسي في httpd.conf لالغاء ExecCGI هذا يعني أننا الغينا CGI scripts نهائيا كيف ذلك : نعلم أنه في أخر نسخة الأباتشي تم تصحيح خلل فني Bug الذي كان يسمح بعمل تجاوز لكل تعليمات Options عن طريق htaccess والأن اصبح بالإمكان تخصيص التعليمات التي يسمح للعميل بتجاوزها عن طريق htaccess هذا يتيح لنا الغاء التحكم في ExecCGI وحده دون الغاء كافة تعليمات Options لانها في بعض الأحيان تكون ضرورية ولا يمكن الاستغناء عنها كمثال منع استعارض ملفات المجلدات التي لا تحتوي على ملف index أو أي ملف من ملفات المسمات ب DirectoryIndex بواسطة (Options -Indexes) وغيرها من الأمثلة كثيرة . واليكم طريقة الغاء البيرل في هذا الجزء : ملا حظة : التطبيق على apache 2.2.x فقط لذلك يفضل الترقية إلى اخر اصدار من الجيل 2.2 وهو apache2.2.9 أولا قم بتسجيل الدخول الى الشيل ثم قم بفتح ملف httpd.conf عن طريق الامر : nano /etc/httpd/conf/httpd.conf ابحث عن : <Directory "/"> ضع فوقه التالي : كود PHP:
<Directory "/home">
Options -ExecCGI
AllowOverride AuthConfig Indexes Limit FileInfo Options=IncludesNOEXEC,Indexes,Includes,MultiViews,SymLinksIfOwnerMatch,FollowSymLinks
</Directory>
احفظ الملف تم قم باعادة تشغيل الأباتشي بالأمر كود PHP:
service httpd restart
ماذا تعني هذه السطور : بالنسبة للسطر الأول : Options -ExecCGI -FollowSymLinks
هذا يعني أن كل التعليمات المتبقية مفعلة وهي IncludesNOEXEC Indexes MultiViews SymLinksIfOwnerMatch وهذا السطر يعادل :
Options -ExecCGI IncludesNOEXEC Indexes Includes MultiViews SymLinksIfOwnerMatch
لاحظ هنا نقدر نكتفي بالغاء –ExecCGI فقط عن طريق
Options –ExecCGI
يبقى أننا فعلنا كل التعليمات ماعدا ExecCGI لكن هناك تعليمة خطيرة لا نريد تفعيلها التحكم فيها وهي FollowSymLinks فاضطررنا اننا نفعل كل التعليمات باسثناء FollowSymLinks و الغينا –ExecCGI كما يمكن كتابة السطر كالتالي :
Options IncludesNOEXEC Indexes Includes MultiViews SymLinksIfOwnerMatch
كل هذه الأكواد معناها واحد ولو قمنا مثلا بتفعيل تعليمة مثلا
Options IncludesNOEXEC Indexes
يبقى التعليمات المتبقية اللي هي MultiViews SymLinksIfOwnerMatch ملغية لذا وجب علينا أن نفعلها كلها باستثناء التعليمات التي نراها الخطيرة
وبالنسبة للسطر الثاني :
AllowOverride AuthConfig Indexes Limit FileInfo Options=IncludesNOEXEC,Indexes,Includes,MultiViews,SymLinksIfOwnerMatch
هذا السطر يعادل منطقيا رمز
AllowOverride All
Option –FlowSymLinks –ExecCGI
لكن AllowOverride All يسمح بتجاوز Option –FlowSymLinks –ExecCGI عن طريق htacess فبالتالي السطر يمنحنا التحكم اكثر ومن الغاء وتفعيل تعليمات Options و التحكم بها عبر htaccess أمل أن يكون هذا الجزء واضح ولا اشكال فيه الطريقة الثانية لالغاء البيرل : وهي منع exec في بارتشن الهوم نظرا لعدم وجود سكربتات سيبنال سواء sh أو python او Perl والغات برمجة أخرى التي ليس لها محركات نظامها نفس نظام php التي لا تشتغل الا اذا تم تركيب محركات في apache كموديول في هذه الحالة يمكن ان نستفيذ بجعل بارتشن الهوم Noexec ومنع exec يمنع تنفيذ أي سكريبت من الأنواع التي سبق ذكرها وبالتالي نحن لم نعد بحاجة إلى حماية الأباتشي شرط ما يكون mod_perl مركب . واليكم الطريقة : اولا لا بد أن يكون الهوم بارتشن لحاله فلا يمكن تطبيقها والهوم جزء من بارتشن / لذلك أنصح بتقسيم السيرفر تقسيمة السي بنال وهي : كود:
/=10GB
/usr=10GB
/var=على حسب حجم قواعد البيانات ولو تخصص له هارد ديسك لحاله كان افضل
/tmp =1GB
/home =ماتبقى من المساحة
/boot=0.5GB
/swap=من 2 جيغا إلى ضعف حجم الرام
هذه هي التقسيمة السليمة للسيرفرات السي بنال
نقوم بفتح ملف fstab عن طريق الأمر :
Nano /etc/fstab
ننزل عند السطر :
كود:
LABEL=/home /home ext3 defaults,usrquota 1 2
تم نقوم باضافة noexec ليصبح بهذا الشكل :
كود:
LABEL=/home /home ext3 defaults,usrquota,noexec 1 2
بعدها نقوم باعادة فصل واعادة تركيب /home لياخذ الخصائص الجديدة بالأمر : كود:
mount –o remount /home
تذكر أنها عند عمل تحديث للاباشي يجب ازالة noexec من البارتشن وتنفيذ هذا الأمر : كود:
mount -o remount,exec /home
بعد الإنتهاء من التحديث رجع البارتشن noexec
كود:
mount -o remount /home
وهكذا قمنا بمنع البيرل من التنفيذ داخل بارتشن الهوم كما يمكن كذلك حماية tmp و ذاكرة المشاركة /dev/shm بنفس الطريقة منع تنفيذ الملفات الخبيثة منها أتمنى من الله عز وجل أن يكون الموضوع مفيدا للجميع والي عنده أي استفسار أو تنبيه على مسألة معينة يتفضل بالطرح دمتم في حفظ الرحمان
hgjvrdu hgkihzd geyvm hgfdvg Perl