السؤال الذي يطرحه معظم مديري الخوادم بعد سلوك غريب هو: “كيف أعرف إن كان هناك ملف خبيث على النظام؟”. المشكلة أن الإجابة ليست أمرًا واحدًا. لينكس لا يملك “فحصًا شاملًا” واحدًا يكشف كل شيء، لأن التهديدات نفسها متعددة الطبقات: ملف تنفيذي خبيث، سكريبت ويب مخفي، rootkit يعدل النواة، أو عملية تعمل من ذاكرة دون ملف على القرص.
هذا الدليل يقدم منهجية عملية من ثلاث طبقات: الفحص بالتوقيعات، والكشف عن rootkits، والمراقبة السلوكية. لكل طبقة أدواتها وأوامرها الجاهزة، وحدودها التي يجب أن تعرفها قبل الاعتماد عليها. الهدف ليس أن تشغّل أداة وتقول “انتهيت”، بل أن تبني شبكة كشف يمكنك الوثوق بها عندما يكون الوقت حرجًا.
نظرة سريعة: خريطة أدوات الكشف في لينكس
الجدول التالي يلخص الأدوات الرئيسية، وما تكشفه، وحدودها الأساسية:
| الأداة | ما تكشفه | القيد الأساسي |
|---|---|---|
| ClamAV | فيروسات وبرمجيات خبيثة معروفة | توقيعات فقط، لا يكشف الجديد |
| LMD | WebShells وسكريبتات خبيثة في مواقع الويب | يحتاج ضبطًا، ويفوت الملفات الثنائية |
| rkhunter | rootkits وbackdoors وsniffers معروفة | قد يفوّت rootkits الجديدة، إيجابيات كاذبة |
| chkrootkit | آثار rootkits معروفة | قديم نسبيًا، يحتاج مراجعة يدوية |
| AIDE / Tripwire | تغيّر الملفات عن خط الأساس | يخبرك “ماذا” لا “من” أو “كيف” |
| Lynis | ثغرات إعداد وتقوية أمنية | ليس مكافح فيروسات، بل مدقق |
| eBPF (Talus, Kunai) | سلوك مشبوه لحظيًا | يحتاج إعدادًا، وقد يفوّت الهجمات البطيئة |
لماذا لينكس ليس محصنًا؟
الاعتقاد السائد بأن لينكس “غير قابل للإصابة” خطأ شائع. صحيح أن نموذج الصلاحيات وتعدد المستخدمين يقلل من سطح الهجوم، لكن التهديدات التي تصيب لينكس واقعية:
- سكريبتات الويب الخبيثة: خادم ويب مخترق قد يحتوي على WebShell مكتوب بـPHP أوPython يسمح للمهاجم بتنفيذ أوامر. هذا شائع جدًا في الاستضافات المشتركة.
- برمجيات التعدين الخبيثة: تعمل في الخلفية وتستهلك المعالج، وغالبًا تُثبت عبر ثغرة في خدمة مكشوفة.
- rootkits: تعدل النواة أو مكتبات المستخدم لإخفاء العمليات والملفات، وتجعل أدوات الفحص العادية تعطي نتائج نظيفة كاذبة .
- ثغرات سلسلة التوريد: حزم برمجية أو تحديثات تحتوي على كود خبيث، كما حدث في حوادث سابقة. الفحص بالتوقيعات قد لا يكتشفها إذا كانت جديدة.
النتيجة أن “لينكس أكثر أمانًا” لا تعني “لينكس آمن تلقائيًا”. تحتاج إلى فحص دوري و مراقبة سلوكية، لا إلى الاعتماد على طبيعة النظام.
أنواع التهديدات التي تبحث عنها فعليًا
قبل تشغيل أي أداة، اعرف ما تبحث عنه. المصطلح “ملف خبيث” يغطي أشياء مختلفة:
| النوع | المكان النموذجي | أداة الكشف المناسبة |
|---|---|---|
| ملف تنفيذي خبيث | /tmp، /dev/shm، /var/tmp | ClamAV + مراجعة يدوية |
| WebShell | /var/www، مجلدات الرفع | LMD + YARA |
| rootkit في النواة | وحدة LKM مخفية | مقارنة /proc/modules مع /sys/module |
| rootkit في المستخدم | /etc/ld.so.preload | فحص الملف وrkhunter |
| برمجية تعدين | عملية تعمل بلا ملف | eBPF أو مراقبة العمليات |
| تعديل ملف نظام | /etc/passwd، /etc/ssh/sshd_config | AIDE أو Tripwire |
المنهجية: ثلاث طبقات من الفحص
لا توجد أداة واحدة تغطي كل شيء. الفحص الفعال يجمع ثلاث طبقات، كل منها يغطي ما يفوته الآخر:
- الطبقة الأولى: التوقيعات. سريعة وواسعة، تكشف المعروف. تناسب الفحص الدوري والملفات التي “تُكتب على القرص”.
- الطبقة الثانية: النزاهة والكشف عن rootkits. تكشف ما لا يعرف له توقيع، لكنها تحتاج خط أساس سليم.
- الطبقة الثالثة: السلوك. تراقب ما يحدث الآن، وتكشف الهجمات الجديدة أو التي تعمل من الذاكرة.
الطبقة 1: الفحص بالتوقيعات (ClamAV وLMD)
ClamAV هو محرك مكافحة فيروسات مفتوح المصدر، ويعمل على معظم توزيعات لينكس . تثبيته وتحديث قواعد البيانات:
sudo apt install clamav clamav-daemon
sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam
للفحص الأساسي، استخدم -r للفحص التكراري،
و-i لعرض الملفات المصابة فقط
:
sudo clamscan -r -i /home
sudo clamscan -r -i --exclude-dir="^/sys" --exclude-dir="^/proc" /
إذا أردت نقل الملفات المصابة إلى الحجر الصحي بدلًا من
حذفها، استخدم --move:
sudo mkdir -p /var/quarantine
sudo clamscan -r -i --move=/var/quarantine /var/www Linux Malware Detect (LMD) مكمل لـClamAV في سياق خوادم الويب. هو مصمم لاكتشاف WebShells والسكريبتات الخبيثة في مجلدات المواقع، ويدعم المراقبة المستمرة والتنبيهات:
# بعد تثبيت LMD
sudo maldet -a /var/www
sudo maldet --monitor-start
sudo maldet --report list الإصدار 2.0.1 من LMD (2026) أعاد كتابة محرك الفحص، وأضاف فحص YARA أصليًا، وتقارير JSON، ومحرك توقيعات مركب . هذا يجعله أسرع وأكثر ملاءمة للبيئات الحديثة.
الطبقة 2: كشف rootkits (rkhunter وchkrootkit)
rkhunter (Rootkit Hunter) يفحص النظام بحثًا عن rootkits وbackdoors وsniffers معروفة، ويتحقق من سلامة الأوامر الأساسية . قبل الفحص، حدّث قاعدة خصائص الملفات، ثم شغّل الفحص الكامل:
sudo rkhunter --propupd
sudo rkhunter --update
sudo rkhunter --checkall
النتائج تُسجَّل في /var/log/rkhunter.log.
لتصفية التحذيرات فقط:
sudo grep -i warning /var/log/rkhunter.log chkrootkit أداة أخف وأسرع، تفحص آثار rootkits المعروفة. تشغيلها المباشر:
sudo chkrootkit كلا الأداتين تعتمدان على توقيعات وأنماط معروفة. إذا كان rootkit جديدًا أو معدلًا بدرجة كافية، فقد يمر. ولهذا تحتاج إلى الطبقة المتقدمة التالية.
الكشف المتقدم: مقارنة رؤيتين للنواة
الـ rootkit الحقيقي لا يكتفي بإخفاء ملف؛ إنه يجعل النظام “يكذب” عليك. لكن الكذب المتسق صعب. النواة تعرض حالتها عبر واجهات متعددة، وعلى rootkit أن يعترض كل واحدة منها بنفس الطريقة، وإلا اختلفت الرؤى. هذا هو أساس الكشف المتقدم .
الفحص الأول: مقارنة الوحدات المحملة.
إذا ظهرت وحدة في /sys/module لكنها غائبة
عن /proc/modules (الذي يقرأه
lsmod)، فهذه علامة على وحدة تخفي نفسها:
comm -13 <(cut -d' ' -f1 /proc/modules | sort) <(for m in /sys/module/*/; do [ -f "$m/refcnt" ] && basename "$m" done | sort)
الناتج المتوقع: لا شيء. أي سطر يظهر هو وحدة محملة حسب
/sys لكنها مخفية من /proc
.
الفحص الثاني: مقارنة العمليات. إذا
استجاب PID لـstat مباشرة لكنه غائب عن
إدراج /proc، فهذا تناقض يستحق التحقيق.
الفحص الثالث: ld.so.preload.
ملف غير فارغ في /etc/ld.so.preload يعني أن
مكتبة تُحمَّل في كل عملية. هذا أسلوب شائع لـrootkits
في مساحة المستخدم . افحصه:
cat /etc/ld.so.preload
ls -la /etc/ld.so.preload إذا كان الملف موجودًا وغير فارغ، فاعتبره حادثًا حتى تثبت العكس.
سلامة الملفات: AIDE وTripwire
AIDE (Advanced Intrusion Detection Environment) يبني قاعدة بيانات ببصمات الملفات وصلاحياتها وسماتها، ثم يعيد الفحص دوريًا ويبلغ عن الفروق . Tripwire يعمل بالمبدأ نفسه، لكنه يضيف توقيعًا تشفيريًا لقاعدة البيانات، ما يجعل التلاعب بها قابلًا للكشف .
الفرق العملي: AIDE أبسط، وقاعدة بياناته غير موقعة، فأي مستخدم بـroot يمكنه إعادة كتابتها. Tripwire يضيف توقيعًا، لكنه يفرض إدارة مفاتيح وتعقيدًا أكبر .
حدودهما البنيوية واضحة: الفحص الدوري يعني أنك تعرف “الثلاثاء” ما تغير “الأحد”، ولا تعرف من غيّره أو كيف . إذا كانت نافذة الكشف ليلية، فالمهاجم لديه ما يصل إلى 24 ساعة قبل أن تكتشف التغيير . ولهذا تحتاج إلى طبقة سلوكية.
الطبقة 3: الكشف السلوكي بـeBPF
أدوات مثل eBPF تراقب الأحداث من النواة لحظة حدوثها، لا بعد ساعات. هذا يغير طبيعة الكشف من “مراجعة أرشيف” إلى “ملاحظة مباشرة”.
Talus مثال حديث: وكيل كشف واستجابة لبرمجيات الفدية على لينكس، يستخدم نقاط تتبع eBPF لاعتراض استدعاءات النظام، ويحسب لكل عملية نافذة منزلقة لسلوك فتح الملفات، ويمكنه إنهاء العملية فورًا عند إصدار حكم . يقيس الأداء بحوالي 280 ألف حدث في الثانية باستهلاك 7.6% من المعالج .
Kunai أداة أخرى قائمة على eBPF تسجل أحداث العمليات والملفات والشبكة من النواة أثناء حدوثها، ما يمنحك سجلًا لا يمكن للمضيف المخترق تعديله لاحقًا . هذا مهم في التحقيق الجنائي، حيث لا تثق في سجلات النظام التي قد تكون عُدّلت.
السجلات وauditd: كيف تقرأ الأثر؟
الأدوات لا تغني عن قراءة السجلات. ابدأ من الأماكن التالية:
- سجلات المصادقة:
/var/log/auth.log(Debian/Ubuntu) أو/var/log/secure(RHEL). ابحث عن “Failed password” والمحاولات الناجحة من عناوين غريبة . - سجلات systemd:
journalctl -xeوjournalctl -u ssh. - سجلات auditd: إذا كان مفعّلًا، يمكنك تتبع من فتح ملفًا أو نفّذ أمرًا. هذا يعطيك “من” و“كيف”، لا “ماذا” فقط .
- مهام cron وsystemd: تحقق من
crontab -lو/etc/cron*وsystemctl list-unit-files --type=serviceبحثًا عن خدمات غريبة مفعلة .
الإيجابيات الكاذبة: لماذا تحدث وكيف تتعامل معها؟
rkhunter وchkrootkit يشتهران بإنتاج تحذيرات كاذبة. السبب أن أنظمة لينكس الحديثة تتغير باستمرار: تحديثات الحزم تعدل ملفات النظام، وsystemd يغير سلوك العمليات، وبعض الأدوات المشروعة تستخدم تقنيات مشابهة للـrootkits (مثل preload أو وحدات نواة). القاعدة العملية:
- لا تعتبر كل تحذير إصابة. اقرأ السجل كاملًا، وتحقق من سياق الملف أو العملية.
- حدّث قاعدة rkhunter بعد كل تحديث
كبير.
rkhunter --propupdيقلل الإيجابيات الكاذبة . - استخدم بيئة فحص نظيفة. إذا شككت في أن أدوات النظام نفسها مخترقة، افحص من LiveUSB أو من نظام آخر بتركيب القرص للقراءة فقط .
بعد الاكتشاف: ماذا تفعل؟
اكتشاف ملف خبيث ليس النهاية، بل بداية الاستجابة:
- اعزل، لا تحذف فورًا. انقل الملف إلى الحجر الصحي أو احتفظ بنسخة للتحليل. الحذف يمحو الأدلة.
- حدد نطاق الإصابة. هل الملف واحد؟ هل هناك cron أو خدمة systemd تشغله؟ هل هناك اتصال شبكي خارجي؟
- ابحث عن آلية البقاء. المهاجم
لا يضع ملفًا فقط؛ يضع طريقة لإعادة تشغيله. افحص
cron، وsystemd، و
.bashrc، و/etc/rc.local. - غيّر بيانات الاعتماد. إذا كان الاختراق عبر SSH، فالمفاتيح وكلمات المرور مكشوفة. غيّرها.
- أعد البناء إذا لزم. في حالة rootkit في النواة، قد لا تكون الثقة في النظام ممكنة. إعادة التثبيت من وسيط نظيف هي الخيار الآمن.
قائمة تحقق نهائية
-
هل تحدّث قواعد ClamAV قبل الفحص؟ ←
freshclam -
هل فحصت
/tmpو/var/tmpو/dev/shm؟ ← هذه أماكن شائعة للملفات التنفيذية -
هل فحصت مجلدات الويب بـLMD؟ ←
maldet -a /var/www - هل شغّلت rkhunter وchkrootkit؟ ← نعم، مع مراجعة السجلات
-
هل قارنت
/proc/modulesمع/sys/module؟ ← أي اختلاف يستحق التحقيق -
هل
/etc/ld.so.preloadفارغ؟ ← إن لم يكن، اعتبره حادثًا - هل لديك خط أساس لـAIDE أو Tripwire؟ ← بدونه لا يمكنك كشف التغيير
- هل تراقب السلوك بـeBPF أو أداة مماثلة؟ ← ضروري للهجمات الجديدة
- هل راجعت cron وsystemd للتحقق من البقاء؟ ← نعم، بعد أي اكتشاف
- هل تعرف من عدّل الملف، لا ماذا تغير فقط؟ ← auditd وeBPF يجيبان عن “من”
روابط ومصادر مفيدة
فيما يلي روابط رسمية وأدوات يمكنك الرجوع إليها:
- ClamAV — الموقع الرسمي
- Linux Malware Detect (LMD) — GitHub
- rkhunter — الموقع الرسمي
- chkrootkit — الموقع الرسمي
- AIDE — الموقع الرسمي
- Tripwire Open Source — GitHub
- Lynis — أداة تدقيق أمني
- Talus — كشف برمجيات الفدية بـeBPF
- Kunai — مراقبة سلوكية بـeBPF
- YARA — قواعد كشف البرمجيات الخبيثة
أسئلة شائعة
هل أحتاج مكافح فيروسات على لينكس؟
ليس بنفس الطريقة التي تحتاجه على ويندوز، لكن الفحص الدوري مفيد. ClamAV يفيد في فحص الملفات التي تتبادلها مع أنظمة أخرى، وفي كشف سكريبتات الويب الخبيثة. والأهم من الفحص: المراقبة السلوكية وسلامة الملفات.
ما الفرق بين rkhunter وchkrootkit؟
كلاهما يبحث عن rootkits معروفة، لكن rkhunter أكثر شمولًا ويقدم فحصًا للخصائص والتحديثات، بينما chkrootkit أخف وأسرع. استخدامهما معًا يغطي مساحة أكبر، مع توقع إيجابيات كاذبة من كليهما.
هل rootkit يمكن أن يخفي نفسه عن كل الأدوات؟
يمكنه إخفاء نفسه عن أدوات تعتمد على واجهات معينة
(مثل /proc)، لكنه لا يستطيع إخفاء
التناقض بين واجهات النواة المختلفة. لهذا فإن مقارنة
/proc/modules مع /sys/module
تكشفه. الأدوات السلوكية مثل eBPF تلتقط ما يحدث قبل
أن يتمكن من الإخفاء.
هل AIDE كافٍ لمراقبة التغييرات؟
هو أفضل من لا شيء، لكنه يخبرك “ماذا تغير” لا “من غيّره” أو “كيف”. ونافذة الكشف تعتمد على تكرار الفحص. للحصول على صورة كاملة، ادمجه مع auditd وeBPF.
ماذا أفعل إذا وجدت ملفًا خبيثًا؟
لا تحذفه فورًا. انقله إلى حجر صحي أو احتفظ بنسخة للتحليل. ثم ابحث عن آلية البقاء (cron، systemd، بدء التشغيل)، وغيّر بيانات الاعتماد، وحدد ما إذا كانت إعادة البناء ضرورية.