maldet لفحص ملفات السيرفر للتاكد من عدم وجود ملفات ضارة

Mohamed Ali

[ VIP ]
24 مارس 2010
670
4
0
السلام عليكم ورحمة الله وبركاته

كثرة الدروس هنا بالمعهد عن maldet

ولكن للاسف جميع هذه الدروس غير كامله وينقصها الكثير من الشرح

وبهذا الموضوع إن شاء الله سوف يتم الشرح الكافي لــ maldet

لكي يستفيد الجميع منه

تقديم

Maldet او Linux Malware Detect وايضا يعرف اختصارا بـ (LMD) هو برنامج من برمجة R-fx Networks مخصص لفحص الملفات على نظام التشغيل ليونكس للتاكد من خلو النظام من الملفات الضارة وذلك بناء على قاعدة بيانات خاصة بالبرنامج تحتوي على الملفات التي تصنف على انها ضاره حيث تحتوي على MD5 و HEX pattren عن الملفات الضارة التي يستطيع البرنامج الكشف عنها.
البرنامج معد بطريقة تسمح له العمل سويا مع السي بنل وفي حال اكتشاف احد الملفات الضارة على السيرفر فانه يتم ايقاف الحساب تلقائيا (suspend account) دون الحاجة لتدخل احد في حال كان قد تم ضبط اعدادات البرنامج للقيام بذلك.
كذلك فان البرنامج يقوم باستخدام برنامج ClamAV في حال كان موجودا على السيرفر للقيام بعملية فحص محتوى الملفات وفي حال لم يكن البرنامج ClamAV غير موجودا فانه يقوم باستخدام الية اخرى خاصة به للبحث عن الملفات.
ايضا فان لدى البرنامج القابلية للتحديث حيث يتم تحديث قاعدة البيانات التي تحتوي على قائمة الملفات الضارة كل فترة بحيث يتم اضافة ملفات جديدة.

لا يمكن اعتبار LMD على انه معالج للفيروسات كـ ClamAV مثلا. انه فقط برنامج لفحص الملفات ومقارنتها مع قاعدة البيانات الموجودة لديه فان تطابق احدى فان البرنامج يعتبر هذا الملف ملفا ضارا. وهنا في PPPLHE سوف نقوم بشرح كامل للبرنامج وطريقة تركيبه على السيرفر وكيفية ضبط اعداداته والتعامل معه بشكل سليم.
مميزات البرنامج

اكتشاف الملفات الضارة من خلال مقارنة MD5 hash وذلك من اجل الكشف السريع عن الملفات الضارة.
اكتشاف الملفات الضارة من خلال اجراء عملية مقارنة لـ HEX pattern من اجل التعرف على الملفات الضارة.
اكتشاف الملفات الضارة والتي قد يتم تشفير محتوياتها ببعض تقنيات اخفاء المحتوى كـ base64 مثلا.
يقوم باستخدام محرك فحص ClamAV في حال وجودة من اجل تسريع عملية فحص الملفات.
قابلية تحديث قاعدة البيانات من خلال البرنامج دون الحاجة للتركيب مرة اخرى.
القدرة على فحص الملفات التي تم تحديثها خلال فترة معينة من الايام ، مثلا X يوم وذلك للتقليل من الحمل اثناء عملية البحث فلا داعي مثلا ان نقوم يوميا بفحص الملفات التي لم تتغير والتي تم فحصها سابقا.
القدرة على فحص جميع الملفات في المسار الذي تحدده، مثلا كامل مجلد /home.
يمكنك ان تقوم بارسال ملف معين الى مبرمج البرنامج من اجل معنايته وفي حال كان ضارا سوف يتم اضافته الى القاعدة في التحديثات التالية.
يقوم البرنامج باصدار تقرير مفصل بنتيجة الفحص.
يمكن للبرنامج الاحتفاظ بالملفات التي تم الكشف عنها انها ملفات ضارة في مكان خاص من اجل المعاينه المستقبلية مثلا كمان للحجر (quarantine) بدلا من حذفها فربما تحتوي على معلومات مهمه.
البرنامج يحاول ازالة الكود الضار من الملفات التي يستطيع ازالة الكود منها دون الاضرار بمحتواها الاخر في حال كان الكود الضار اقحم الى الملف الاصلي.
البرنامج يقوم فحص الملفات التي تغيرت خلال ال 24 ساعة الماضية من خلال الكرون جوب cron وهذا الاوامر متوافقة مع Cpanel و Ensim.
يستخدم نظام inotify على مستوى الكيرنل من اجل الحصول على تقرير كامل بالملفات التي تم تحديثها او اضافتها او نقلها.
قدرة البرنامج على مراقبة مسار معين. مثلا مراقبة مسار /home التابع للمستخدميين users على السيرفر.
يستطيع البرنامج تجاهل مسار معين بحيث لا يتم فحص الملفات الموجودة بداخله او التي يتم اضافتها بداخله لاحقا. مثلا /tmp او /root على سبيل المثال.
يستطيع البرنامج ارسال بريد اليكتروني عند اكتشاف ملفات ضارة وارسال تقرير بها الى البريد المحدد في خيارات البرنامج مع قابلية تخصيص عنوان الرسالة المرسلة.
يمكن للبرنامج ان يعمل في الخلفية (background).
يستطيع البرنامج ايقاف حساب المستخدم الذي يحتوي على ملفات ضارة حيث يتم مناداة امر ايقاف الحساب من السي بنل (suspend account) مع وضع سبب الايقاف.

تركيب البرنامج

لتركيب البرنامج قم بالدخول الى السيرفر عن طريق ssh بالمستخدم root ونفذ الاوامر التالية


PHP:
cd /usr/local/src
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar zxvf maldetect-current.tar.gz
عند تنفيذ الامر الاخير فانه سوف يتم فك ضغط الملفات الموجودة بداخل الملف المظغوط maldet-current.tar.gz بداخل مجلد يحمل اسم البرنامج واصدارة وسوف يظهر كالتالي

PHP:
# tar zxvf maldetect-current.tar.gz
maldetect-1.4.1/
maldetect-1.4.1/README
maldetect-1.4.1/files/
maldetect-1.4.1/files/quarantine/
maldetect-1.4.1/files/ignore_sigs
maldetect-1.4.1/files/inotify/
maldetect-1.4.1/files/inotify/libinotifytools.so.0
maldetect-1.4.1/files/inotify/tlog
maldetect-1.4.1/files/inotify/inotifywait
maldetect-1.4.1/files/clean/
maldetect-1.4.1/files/clean/gzbase64.inject.unclassed
maldetect-1.4.1/files/clean/base64.inject.unclassed
maldetect-1.4.1/files/maldet
maldetect-1.4.1/files/VERSION.hash
maldetect-1.4.1/files/tmp/
maldetect-1.4.1/files/ignore_paths
maldetect-1.4.1/files/modsec.sh
maldetect-1.4.1/files/sess/
maldetect-1.4.1/files/hexstring.pl
maldetect-1.4.1/files/internals.conf
maldetect-1.4.1/files/ignore_inotify
maldetect-1.4.1/files/pub/
maldetect-1.4.1/files/ignore_file_ext
maldetect-1.4.1/files/sigs/
maldetect-1.4.1/files/sigs/hex.dat
maldetect-1.4.1/files/sigs/maldet.sigs.ver
maldetect-1.4.1/files/sigs/rfxn.hdb
maldetect-1.4.1/files/sigs/rfxn.ndb
maldetect-1.4.1/files/sigs/md5.dat
maldetect-1.4.1/files/hexfifo.pl
maldetect-1.4.1/files/conf.maldet
maldetect-1.4.1/.ca.def
maldetect-1.4.1/cron.d.pub
maldetect-1.4.1/CHANGELOG
maldetect-1.4.1/install.sh
maldetect-1.4.1/COPYING.GPL
maldetect-1.4.1/cron.daily
والان سوف ندخل الى المجلد الذي يحتوي على ملفات البرنامج والذي هو هنا في مثالنا maldet-1.4.1 لاحظ انه قد يختلف اسم المجلد باختلاف الاصدار لهذا تاكد من دخولك الى المجلد الصحيح ومن ثم سوف نقوم على تنفيذ امر التركيب ، لهذا نفذ الاوامر التالي

PHP:
cd maldetect-1.4.1
sh install.sh
عند تنفيذ امر التركيب السابق فانه سوف يتم تركيب برنامج LMD على السيرفر وسوف تظهر نتيجة التركيب كالتالي:

PHP:
# sh install.sh
Linux Malware Detect v1.4.1
            (C) 2002-2011, R-fx Networks <proj@r-fx.org>
            (C) 2011, Ryan MacDonald <ryan@r-fx.org>
inotifywait (C) 2007, Rohan McGovern <rohan@mcgovern.id.au>
This program may be freely redistributed under the terms of the GNU GPL

installation completed to /usr/local/maldetect
config file: /usr/local/maldetect/conf.maldet
exec file: /usr/local/maldetect/maldet
exec link: /usr/local/sbin/maldet
exec link: /usr/local/sbin/lmd
cron.daily: /etc/cron.daily/maldet

maldet(27190): {sigup} performing signature update check...
maldet(27190): {sigup} local signature set is version 2012011929852
maldet(27190): {sigup} latest signature set already installed
وبهذا نكون قد قمنا على تركيب برنامج Maldet على السيرفر والخطوة التالية هي ضبط اعدادات البرنامج من اجل العمل بصورة سليمة وفق المطلوب.
ضبط اعدادات LMD

بعد اجراء عمليات الضبط التي سوف نشرحها هنا سوف يكون لدينا التالي:

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

الان ناتي لعملية ضبط الاعدادات
ضبط الاعدادات الاساسية

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


PHP:
nano /usr/local/maldetect/conf.maldet
نبحث عن العبارة email_alert في الملف ونستبدل الرقم 0 بالرقم 1 بحيث تكون

PHP:
email_alert=1
والذي يعني اننا نرغب من البرنامج ان يقوم بارسال رسائل بريد اليكتروني بتقارير لحالة الفحص.

نبحث عن العبارة email_subj ونقوم بتغيير عنوان الرسائل المرسلة الى البريد الاليكتروني الى اي عنوان مناسب لنا مثلا:


PHP:
email_subj="maldet alert from $(hostname)"
نبحث عن العبارة email_addr ونقوم بوضع البريد الاليكتروني الذي نرغب بان نستلم رسالة بريد اليكتروني عليه بالتقارير ويمكن اضافة اكثر من بريد وذلك بوضع اشارة الفاصلة , بين كل بريد مثلا:

PHP:
email_addr="me1@example.com,you1@example.com"
نبحث عن العبارة quar_hits ونقوم باختيار الرقم 1 بدلا من 0 كالتالي

PHP:
quar_hits=1
وذلك حتى يتم تحريك اي ملف يتم الكشف عنه على انه ملف ضار الى مجلد الحجر (quarantine) بدلا من ابقائه في مكانه الحالي وذلك لمزيد من الحماية

نقوم بالبحث عن العبارة quar_clean ونتاكد من ان قيمتها هي 1 كما في التالي

PHP:
quar_clean=1
وذلك لنشعر البرنامج باننا نرغب بان يحاول تنظيف الملف من الاكواد الضارة ان امكنه ذلك.

نقوم بالبحث عن العبارة quar_susp ونقوم بتغييرها قيمتها لتصبح 1 بدلا من 0 كالتالي:

PHP:
quar_susp=1
وذلك من اجل قيام البرنامج بايقاف حساب المستخدم (حساب السي بنل) الذي يتم اكتشاف الملفات الضارة بداخله بحيث يتم ايقافه بشكل تلقائي ووضع سبب الايقاف maldet مع رقم التقرير من اجل الاطلاع المستقبلي.

نقوم بالبحث عن العبارة quar_susp_minuid ونتاكد من ان قيمة المتغير هي 500 والرقم هذا يعني انه لن يتم ايقاف الحسابات (حسابات السي بنل) التي يقل رقم المستخدم لاصحابها عن 500 ، وبالوضع العام جميع حسابات المستخدمين العادين للسي بنل هم اعلى من الرقم 500 . تحذير حساب root هو 0 لهذا لا تقم بوضع الرقم هذا 0 تحت اي ظرف، ابقاء الرقم على 500 مفضل. كالتالي

PHP:
quar_susp_minuid=500
نقوم بالبحث عن العبارة clamav_scan ونتاكد من ان قيمتها 1 كالتالي

PHP:
clamav_scan=1
وذلك من اجل اعطاء البرنامج الفرصة لاستخدام محرك بحث ClamAV اثناء البحث عن الملفات في حال وجود ClamAV على السيرفر كونه اسرع في عملية البحث في الملفات ولكن في حال كان البرنامج ClamAV غير موجودا على السيرفر فان البرنامج سوف يستخدم اسلوبه التقليدي في البحث في الملفات وبالتالي ابقي على هذا المتغير 1 والبرنامج سوف يقرر اي محرك يستخدم بناء على ما هو موجود في السيرفر.
اضافة عمية مراقبة المستخدمين على الكرون جوب

نقوم بتحرير الكون جوب عن طريق الامر

PHP:
# crontab -e
ومن ثم نضيف الامر التالي في اخر سطر في الملف

PHP:
0 0 * * * /usr/local/maldetect/maldet --monitor users
ونقوم على حفظ الملف وذلك من اجل تنفيذ هذا الامر

PHP:
/usr/local/maldetect/maldet —monitor users
يوميا الساعة 12 مساء.


واخيرا الموضوع تم نقله للاستفاده من

maldet لفحص ملفات السيرفر للتاكد من عدم وجود ملفات ضارة - ويكي مشروع حماية سيرفرات الاستضافة المشتركة