بسم الله الرحمن الرحيم
هذا اول درس مقدم منOman-Web بمناسبة الانضمام للأخوة بالوب العربي
سنتكلم اليوم بشكل مبسط عن حماية الـphp ,,,وهذا الدرس يعتبر الدرس الاول من سلسلة دروس حماية السيرفرات
ماذا تحتاج لكي تبدأ هذا الدرس:_
1-المام بسيط بأستعمال محررات لينكس سواء nano او pico او غيرها...
2-ذهن صافي بالاضافه للحذر عند التعديل على الملفات.
ما اللذي قد تستفيدة من قرائتك لهذا الدرس:_
1-سوف تتمكن من معرفه اساسيات حماية الـphp
2-سوف تستطيع زياده حماية بيئه الـphp على سيرفرك
3-سوف تتمكن من تعطيل شلات الphp (phpshell) بشكل جيد
4-سوف تتغلب على ثغرات تخطي الـsafe_mod
5-سوف تتمكن من حل مشاكل تعطل دوال الـphp ومشاكل تعارض الـsafe_mode مع السكربتات المركبه على سيرفرك
بسم الله,,,
سنعتمد بدرسنا على نظم الحماية المبنية داخل مترجم الphp نفسه واللتي للأسف ليست مفعله من الاساس
اولا Safe_Mode
هي ميكانيكة حماية موجوده داخل مترجم الphp وعند تفعيله يقوم بالتالي او اكثر:-
1- يقوم مترجم الـphp بمقارنة مالك السكربت مع مالك الملف وذلك عن طريق كل من
GID او رقم المجموعة (group ID) + والـUID او رقم المستخدم (user ID) وفي حالة تطابقها يسمح للسكربت بالتعامل مع الملف سواء كانت قرأه او كتابه حسب الصلاحيات.
ولكن ما اللذي نستفيده من كل هذا؟؟؟
قف لحضة!!!
قبل ان تسئل هذا السؤال هل كنت تعرف ان نظام لينكس يضع الملفات تحت قيمتين وهما رقم المجموعة ورقم المستخم ,,, بمعنى
لو كنت بوضع root وقمت بأنشاء ملف ولنقل test.php عند تطبيق الامر ls -l سيكون المخرج كالاتي:-
كود:
-rw-r--r-- 1 root root 0 Aug 12 23:25 test.php
root <<<< الاول من اليسار يرمز الى رقم او اسم المستخدم
root <<<< الثاني يرمز الى رقم المجموعة
وببساطة لو قمت بتطبيق الامر التالي chgrp 500 test.php
سيكون المخرج قريبا من الاتي
كود:
-rw-r--r-- 1 root 500 0 Aug 12 23:25 test.php
ومن الواضح اناا قمنا بتغيير رقم المجموعة بالامر chgrp ويمكنك ايضا استخدام الامر chown لتغيير مالك المجموعة
الان بعد هذا كله : ما اللذي سوف نستفيدة ايضا
مثلما ذكرنا ان في حاله تفعيل الـsafe_mode سيمنع النظام ملفات او سكربتات الـphp من قرائة الملفات اللتي لا تحمل نفس المالك ....
وبذلك قد نظمن عزل المواقع عن بعضها على اقل تقدير
مثال:
لو حاول احد المخترقين استغلال احد الثغرات او الملفات الموجوده داخل الموقع للحصول على ملف passwd((الملف يحتوي معلومات المستخدمين ومسارات ملفاتهم)) الموجود بالمسار etc فأن النظام سوف يمنعه لان مالك السكربت ((الموجود نظريا ضمن ملفات الموقع)) يحمل رقم مستخدم ورقم مجموعه مختلف عن ملف passwd
لاحظ الاتي:
لو افترضنا وجود السكربت التالي على احد المواقع
كود:
<?php
readfile('/etc/passwd');
?>
وحاولنا تشغيله فسوف تضهر رساله قريبه من التالي :
كود:
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /username/script.php on line 2
مما يعني منع المستخدم من قرأه الملف
2- يقوم مترجم الـPHP بمنع الدوال اللتي تقوم بتشغيل برامج النظام وتقوم بتنفيذ الاوامر مثل system() و exec() من العمل مما يعني تعطيل اغلب مميزات ملفات الشل عن العمل والدوال اللتي يقوم المترجم بمنعها هي كالاتي:
كود:
escapeshellarg , escapeshellcmd ,exec,passthru,proc_close,proc_open(),proc_get_status,proc_nice,proc_open,,proc_terminate,shell_exec,system
وطبعا سنرى كيف يمكننا تعطيلها نهائيا عن العمل بطريقه اخرى ....طبعا يجب ان تعلم ان الحماية سلاح ذو حدين فأن قمت بتكثيفها سوف تسبب مشاكل للمواقع المستضيفه لان بعض البرامج لا تعمل الا في حاله عمل هذه الدوال لذلك يجب الاقتصاد بهذا الجانب وسنرى ايضا كيف يمككننا حل كل مشاكل التعارض بالدرس... تابع....