إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

سلسلة مراقبة الأنظمة: مراقبة نظام الملفات Monitoring the Filesystem

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • سلسلة مراقبة الأنظمة: مراقبة نظام الملفات Monitoring the Filesystem

    متابعة للسلسة التي بدأت باعدادها منذ فترة المكونة من اربع مواضيع وسنقوم بتغطية الأمور المتعلقة بمراقبة الأنظمة والشبكات فيها.

    الموضوع الثاني : مراقبة نظام الملفات Monitoring the Filesystem

    المراقبة الفعالة لنظامك تتضمن مراقبة وتحديد النشاطات التي تجري في نظام الملفات الخاص بك و ما يحتويه من ملفات و مجلدات. في هذا الدرس سنتعرف على بعض الطرق و الادوات التي يمكننا استخدامها لمراقبة ما يحدث على ملفاتنا في نظام الملفات لدينا.

    - SetUID و SetGID :

    كما هو معروف لدينا عندما يقوم مستخدم بتنفيذ اي ملف فإن ذلك الملف سينفذ ضمن جميع الصلاحيات المملوكة للمستخدم، بعيارة أخرى إن قام المستخدم azooz بتنفيذ أمر معين، فإن ذلك الأمر أو العملية process الناتجة عنه لن تستطيع استخدام اي ملف لا يخضع لصلاحيات المستخدم azooz . أو ان الملف ليس مملوكا للمستخدم azooz لذلك فإنه لا يملك الصلاحية لاستخدام ذلك الملف سواء بقراءة او بكتابة او بتنفيذ (rwx).

    هناك حالة خاصة نستطيع فيها تجاوز هذا الأمر باستخدام SUID للمستخدم المالك و SGID للمجموعة المالكة بحيث نستطيع باستخدام هذه الخاصية ان نعطي اي مستخدم الصلاحية لتنفيذ الأمر او الملف التنفيذي بصلاحية المالك الأصلي Owner للملف حتى و إن كان الملف التنفيذي قد تم انشاءه من قبل مستخدم آخر، او بصلاحية المجموعة المالكة له عند استخدام SGID .

    اكثر التطبيقات المستخدمة بهذه الخاصية تتضمن اعطاء امر معين صلاحية root لتنفيذه من قبل أي مستخدم آخر، اي انه بتطبيق خاصية SUID على الملف نقوم باعطاء جميع المستخدمين صلاحية استخدام هذا الملف وكأنهم المستخدم root .

    طبعا كمدير للنظام فلا بد أن هذا الأمر قد يسبب لك القلق خوفا من ان يتم استغلال ثغرة معينة في برنامج لديه صلاحية العمل كمستخدم root ...لكن بعض الأوامر قد تتطلب منا ان يكون لها خاصية الSUID لتتنفذ بصلاحية الرووت مثل الأمر ping والأمر traceroute لأن كلا الأمرين يحتاجان الى انشاء باكيتات لارسالها عبر الشبكة وهذا ما لا يستطيع تنفيذه سوى المستخدم root. ولو لم يكن لدى كلا الأمرين هذه الخاصية لما استطاع سوى المستخدم rootان يستخدم كلا الأمرين.

    الأمرين ping و traceroute يعتبران من الأمثلة الآمنة لتطبيق خاصية SUID عليهما بسبب نضوج البرنامجين وسهولة تصميمهما. لذا من المستبعد ان يتم اكتشاف اي ثغرة بهما ليتم استغلالها للسيطرة على النظام. لكن بعض مدراء الانظمة غير الخبراء قد يستخدمون هذه الخاصية على بعض البرامج ( غالبا ما تكون الألعاب) لاعطائها صلاحية العمل كمستخدم root لكي يتجنبوا بعض مشاكل الصلاحيات التي قد تظهر عند محاولة تنفيذ هذه البرامج، وهذا بالتأكيد سيزيد من خطورة تعرض النظام للاختراق لأنه من المحتمل ان يتم اكتشاف ثغرة في هذه البرامج بشكل كبير.

    - كيفية تحديد الملفات التي لها خاصية SUID و SGID :

    باستخدامنا للأمر ls -l نستطيع تحديد الملفات التي لها هذه الخاصية ، حيث يتم استبدال اشارة x الخاصة بالمستخدم المالك أو الخاصة بالمجموعة بحرف s :

    كود:
    -rwsrwxr-x     1 root root 0 Mar 12 15:55 file1
    -rwxrwsr-x     1 root root 0 Mar 12 15:55 file2
    وبهذه الطريقة نقوم بالبحث عن الملفات التي بها هذه الخاصية و تعطيلها ان لزم الأمر. وخاصة SUID اذا كان الملف مملوكا للمستخدم root. (كما ذكرنا فإن هذا الملف سيكون له صلاحية العمل كمستخدم رووت حتى لو قام بتنفيذه اي مستخدم عادي).

    - الأمر find :

    الأمر find يقوم بالبحث عن ملفات بخاصية معينة على نظام معقد وضخم مثل خادم ريدهات لينوكس. طريقة استخدام الأمر find سهلة الى حد ما وسنقوم بعد قليل بتوضيح أهم الخيارات التي يمكننا استخدامها مع هذا الأمر:

    كود:
    find  [dir]  [condition]
    طبعا نختر المجلد dir الذي نريد البحث داخله ، والشرط condition الذي نريد البحث عنه. فيما يلي بعض اشهر الشروط التي يمكننا البحث عنها :

    *
    كود:
    -mtime x
    يستخدم للبحث عن الملفات التي تم تعديل modify محتوياتها خلال x يوم. ويمكننا استخدام الشرط -mmin للبحث عن الملفات التي تم تعديلها خلال دقائق. باستخدام الأمر touch على ملف موجود يمكننا تحديث زمن الmtime للملف يدويا.

    *
    كود:
    -ctime x
    يستخدم للبحث عن الملفات التي تم تعديل خصائصها (الملكية ، الصلاحية ، الحجم ، الخ..) خلال فترة x يوم . وايضا يمكن استخدام -cmin للبحث بالدقائق بدلا عن الايام.

    *
    كود:
    -perm +6000
    يستخدم للبحث عن الملفات التي تم تطبيق خاصية SUID و SGID عليها، اي ان هذه الملفات تستطيع العمل وكأنها منفذه من قبل المالك الاصلي وليس مستخدم عادي. ولديها صلاحية العمل ضمن اي مجموعة. خاصية SUID تساوي 4 وخاصية SGID تساوي 2 ، واستخدامنا للاشارة + يضمن لنا اظهار النتائج للملفات التي تتضمن خاصية SUID أو خاصية SGID . اذا قمنا باستخدام الاشارة - فستظهر لنا فقط الملفات التي بها كلتا الخاصيتين مطبقة عليها (SUID و SGID )

    مثلا للبحث عن الملفات التي يملكها المستخدم root ولكن يمكن لأي مستخدم ان ينفذها بنفس صلاحية الroot (بعبارة اخرى ان خاصية SUID مطبقة عليها وهي اصلا مملوكة للمستخدم root ) يمكن تنفيذ التالي:
    كود:
    find / -perm +4000 -user root
    *
    كود:
    -perm +002
    تستخدم هذه الطريقة مع الأمر find للبحث عن الملفات التي يمكن الكتابة write عليها من قبل الothers ، اي كل من ليس مالكا للملف او من ضمن المجموعة المالكة للملف. ويطلق عليها world-writable files ،

    *
    كود:
    -nouser 
    -nogroup
    يستخدم كلا الشرطين اعلاه للبحث عن الملفات التي لا تتبع اي مستخدم او مجموعة موجودة ضمن النظام، بحيث ان ملف معين قد تم انشاؤه من قبل مستخدم او مجموعة وتم حذف هذا المستخدم او المجموعة وبقي الملف ليس مملوكا لأحد. سنوضح هذا الأمر في المثال التالي:
    لنفترض وجود الملف التالي:
    كود:
    -rw-rw---- 1 azooz webadmins 8250 Mar 28 15:43 /share/file1
    لدينا هنا ملف اسمه /sahre/file1 مملوك من قبل المستخدم azooz . لو قمنا بحذف المستخدم azooz من النظام فسيصبح الملف بالشكل التالي:
    كود:
    -rw-rw---- 1 500 webadmins 8250 Mar 28 15:43 /share/file1
    اي ان الملف بقي يتبع الUID الخاص بالمستخدم azooz . (حتى لو قمنا باستخدام الخيار -r مع الأمر userdel عند حذف المستخدم فإن هذا الأمر لن يقوم بحذف الملفات التي تقع خارج المجلد /home/azooz )
    الآن لو قمنا باضافة مستخدم جديد و حددنا الخيار -u 500 مع الأمر useradd فأن كل الملفات التي كانت للمستخدم azooz ستصبح ملكا للمستخدم الجديد الذي أخذ نفس الUID السابق للمستخدم azooz ، وهذا أمر لا نريده أن يحدث طبعا.

    ملاحظة: عند عملية حذف مستخدم يجب اتباع سلسلة من الاجراءات لضمان عدم حدوث اي من هذه المشاكل، منها ارشفة المجلد /home/azooz التابع للمستخدم المراد حذفه واستخدام الأمر
    كود:
    find / -user azooz
    للبحث عن باقي ملفاته التي تقع خارج الhome dorectory للمستخدم قبل ان نستخدم الأمر userdel .

    - طريقة فحص البصمات fingerprinting files

    تتلخص هذه الطريقة بتمرير بعض الملفات عبر خوارزمية algorithm ينتج عنها مجموعة من الرموز الثابتة نطلق عليها اسم hashes وتكون بطول ثابت لا تتغير إلا بتغير محتويات او خصائص الملف. وبمقارنة الناتج الاصلي مع الناتج الجديد نستطيع تحديد اذا كانت هذه الملفات قد تعرضت لأي تعديل او تغيير. لنشاهد المثال التالي الذي يستخدم خوارزمية sha1 ضمن الأمر sha1sum :
    لنفترض وجود مجلد اسمه secret ولدينا به بعض الملفات السرية المتعلقة بالعمل، ونريد عمل fingerprinting عليها للتأكد منها ومن سلامتها من التعديلات بشكل متواصل.

    كود:
    [[email protected] ~]$ sha1sum /secret/*
    e242ed3bffccdf271b7fbaf34ed72d089537b42f /secret/bad
    f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 /secret/good
    6eadeac2dade6347e87c0d24fd455feffa7069f0 /secret/plan
    ويمكننا تخزين ناتج هذه العملية في ملف معين لنقوم بالتأكد لاحقا من سلامة هذه الملفات:
    كود:
    [[email protected] ~]$ sha1sum /secret/* > out.sha1
    سنقوم بتغيير محتوى احد هذه الملفات الثلاثة و نلاحظ كيف نستطيع الكشف عن هذا التغيير:
    كود:
    [[email protected] ~]$echo "Grey r0x" >> /secret/good
    [[email protected] ~]sha1sum --check out.sha1
    /secret/bad: OK
    /secret/good: FAILED
    /secret/plan: OK
    sha1sum: WARNING: 1 of 3 computed checksums did NOT match
    طبعا من المستحسن دائما تخزين الملفات التي تحوي القيم الاصلية لناتج الأمر sha1sum لهذه الملفات على نظام ملفات منفصل و للقراءة فقط مثل CD-ROM لحماية هذه الملفات من العبث من قبل المتسللين على النظام. وكلما قمنا بتعديل اي من الملفات المهمة نقوم بحفظ الناتج من جديد وهكذا.

    -مراقبة المساحة المستخدمة من القرص الصلب

    سواء ان المستخدم قد تعمد استغلال المساحة المتوفره على الخادم أو لم يتعمد ذلك بسبب عدم اكتراثه بالمساحة الموجوده على النظام فإن ذلك قد يؤدي الى العديد من المشاكل التي تتراوح من ان الخدمات لن تستطيع تخزين logs جديدة وصولا الى ان الجهاز لن يستطيع الاقلاع بسبب امتلاء الدليل الجذري / تماما. مرورا بالمجلدين tmp و home الذان قد يسبب امتلاؤهما عدم قدرة الxserver من العمل و بالتالي عدم الدخول الى الواجهة الرسومية.

    الأمرين df و du يمكن استخدامهما للتعرف على المساحة المتوفرة أو المستهلكة من الاقراص الصلبة في نظامنا. وباستخدام الخيار -T للتعرف على نوع نظام الملفات و الخيار -h لعرض الحجم بطريقة سهلة القراءة باستخدام ميجا او جيجا بدلا عن البايت:
    كود:
    [[email protected] ~]$ df -Th
    Filesystem Type Size Used Avail Use% Mounted on
    /dev/hda2 ext3 29G 22G 5.8G 79% /
    /dev/hda1 ext3 99M 53M 41M 56% /boot
    /dev/shm tmpf 252M 0 252M 0% /dev/shm
    /dev/hda3 ext3 5.9G 2.4G 3.2G 43% /var
    طبعا الخدمة logwatch تقوم يوميا بارسال ناتج هذا الأمر ليلا الى المستخدم root على بريده المحلي على النظام.

    الأمر du يتميز بقدرته على اعطاء مدير النظام ما هي المجلدات او الملفات التي تشغل اكبر حجم على النظام:

    كود:
    [[email protected] ~]# du -s /home | sort -rn
    171292 /home/azooz
    50404 /home/samer
    49890 /home/ali
    38904 /home/fakir
    من خلال هذا الامر وجدنا ان المستخدم azooz كعادته يستهلك المساحة على النظام، لذا قررنا التحقق من الملفات التي لديه في مجلده الخاص وتنبيهه لهذا الأمر!!

    لا تنسونا من دعائكم ولا نريد غيره منكم

    وكما تعرفون فإن هذا الموضوع يخضع للرخصة السفاحية التي تقضي بنقله و تعديله و حذفه لكن يرجى ذكر مصدر الموضوع على الأقل
    V.I.P

    (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
    هود 115

    Linux is user-friendly, but it happens to be selective about its friends

    "احذر أن تكون مثل البقية تأخذ وﻻتعطي ، فلن يكون هناك مصادر تعليمية على الشبكة، ﻻأكثر الله من أمثالهم"


    مجتمع لينوكس العربي: وقف لله تعالى وصدقة جارية، فلا بارك الله في كل من يحاول الإساءة إليه في الظاهر أو في الخفاء...



  • #2
    شكرا ليك يا سامر ,, لي عودة إلى الموضوع لقرائته بالكامل و التأمل فيه :d

    :doctor:

    La vie est complexe car nous avons tous une partie réelle et une partie imaginaire....

    تعليق


    • #3
      السلام عليكم
      بارك الله فيك سمور ، موضوع قمة في الروعة.
      لي عودة كذلك .

      تعليق


      • #4
        روووووووووووووووووووووووووووعه
        جزاك الله كل خير
        http://img197.imageshack.us/img197/9...66319499rr.gif

        lion_heart_300 previously

        تعليق


        • #5
          الله يجزاك الجنه اخي GreyHunter

          مجهووود جداا رائع ................ معلومااات قيمة جدااااااااااااااااااااااااااااااااااا

          تعليق


          • #6
            الكل له عودة ولم نرى أحد يعود

            بمزح طبعا مش تصدقوا
            V.I.P

            (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
            هود 115

            Linux is user-friendly, but it happens to be selective about its friends

            "احذر أن تكون مثل البقية تأخذ وﻻتعطي ، فلن يكون هناك مصادر تعليمية على الشبكة، ﻻأكثر الله من أمثالهم"


            مجتمع لينوكس العربي: وقف لله تعالى وصدقة جارية، فلا بارك الله في كل من يحاول الإساءة إليه في الظاهر أو في الخفاء...


            تعليق


            • #7
              ماشاء الله تبارك الرحمان .. أقرأه هدا المساء و نعود للأسئلة بإ<ن الله.

              جزاك الله خيرا مواضيعك مميزة .. واصل أخي.

              تعليق


              • #8

                قد عدت يا سامر
                ربنا يحفظك و يرزقك الزوجة الصالحة.

                تعليق


                • #9
                  بخصوص ال Monitoring the file system

                  السلام عليكم

                  يا اخوان هناك أيضا صفحة PHP لمواقبت الهاردسك والبارتشنز

                  اسمه هو phpsysinfo

                  مستخدمين الديبيان
                  كود PHP:
                  apt-get install phpsysinfo 
                  الاصدارات الاخري ابحثو عنه في sourceforge.net

                  بأمان الله

                  تعليق


                  • #10
                    تابع للموضوع

                    معلش نسيت احكي انه بعد ماينزل البرنامج

                    http://127.0.0.1/phpsysinfo افتح رابط وتصفحه علي جهازك

                    تحياتي

                    تعليق


                    • #11
                      جزاك الله خير اخوي على الشرح الرائع

                      تعليق

                      يعمل...
                      X