> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/ar/dlyl-alidarh/admin-guide/security/file-integrity.md).

# سلامة الملفات

*جديد في Chamilo 3.0.*

تقارن سلامة الملفات الملفات المثبّتة على خادمك مع خط أساس موثوق، لاكتشاف الإضافات والتعديلات والحذف وتغييرات الأذونات التي لم تتوقعها — نوع التغيير الذي يخلّفه اختراق ناجح، أو اعتماد مخترَق، أو تعديل يدوي خاطئ.

## الوصول إلى سلامة الملفات

من لوحة الإدارة، انقر **الأمان > سلامة الملفات**.

## ما الذي تعرضه

* **آخر فحص** — متى جرى أحدث فحص وكم ملفًا تحقق منه
* **مضاف / معدَّل / محذوف** — ملفات تختلف عن خط الأساس، تُحدَّد بمقارنة مجموع SHA-256 الاختباري (كل قائمة محدودة بـ 500 مسار، مع ملاحظة إذا كانت القائمة الكاملة أطول — راجع سجل CEF أدناه للقائمة الكاملة)
* **تغيّرت الأذونات** — ملفات تختلف أذوناتها عن خط الأساس. على Linux، يقارن هذا بتات وضع POSIX مباشرة (على سبيل المثال، يُعلَّم ملف أصبح قابلاً للكتابة للجميع)؛ على Windows، يُتتبَّع سمة القراءة فقط فقط، لأن `fileperms()` لا يعكس قوائم ACL الحقيقية لـ NTFS
* **سجل التنبيهات** — سجل دائم يُلحق فقط لكل فحص وجد شيئًا (حتى آخر 50). بخلاف التقرير أعلاه، لا تُمسح هذه القائمة أبدًا بفحص نظيف أو خط أساس جديد، فتبقى التنبيهات السابقة مرئية حتى بعد حل الانحراف الذي أشارت إليه

يمشي الفحص شجرة الملفات المثبّتة بالكامل باستثناء مجلدي `var/` و`.git/` — مع استثناء واحد: ما زال `.git/config` يُراقَب فرديًا، تحديدًا لاكتشاف إعادة توجيه بعيد Git بصمت إلى خادم معادٍ. لا تُتبع الروابط الرمزية أبدًا، لتجنب حلقات التجوال أو الخروج من دليل التثبيت.

ولأن فحصًا كاملاً لتثبيت كبير قد يستغرق عدة دقائق، تُقسَّم المسيرة إلى أجزاء (دليل من المستوى الأعلى في كل مرة) ويُتتبَّع تقدمها في ملف قفل — بحيث يمكن إعادة تحميل الصفحة بأمان للتحقق من التقدم، ولا يُخطَأ فحص تعطّل أو أُنهي على أنه ما زال قيد التشغيل.

## الإجراءات

* **تشغيل فحص الآن** — يقارن شجرة الملفات الحالية بخط الأساس فورًا
* **إيقاف مؤقت لمدة ساعة** — يعلّق التنبيه مؤقتًا (على سبيل المثال، أثناء نشر تحديث). يتطلب إعادة إدخال كلمة مرورك. أثناء الإيقاف المؤقت، يعتمد الفحص الشجرة الحالية بصمت كخط أساس جديد بدل التنبيه، فتغلق نافذة الإيقاف دون تنبيهات متبقية. الحد الأقصى للإيقاف المؤقت 24 ساعة
* **إنشاء خط أساس جديد** — يعتمد شجرة الملفات الحالية كمرجع موثوق جديد. يتطلب إعادة إدخال كلمة مرورك

يمكن لإيقاف التنبيهات مؤقتًا أو إنشاء خط أساس جديد إخفاء اختراق جارٍ، ولهذا يتطلب كلاهما كلمة مرورك مرة أخرى — جلسة مسؤول مختطفة وحدها لا تكفي لإسكات الكشف أثناء العبث بالملفات.

## التشغيل من Cron

تتوفر الفحوصات نفسها كأوامر وحدة تحكم، يُقصد جدولتها بـ cron بدل تشغيلها من صفحة الإدارة وفق جدول:

```bash
# Scan for drift and alert admins if anything changed
0 3 * * * cd /var/www/chamilo/master && php bin/console app:file-integrity:scan

# Generate or regenerate the baseline (run once after install, or after a manual update)
php bin/console app:file-integrity:baseline

# Pause alerting from the command line (prompts for a global administrator's username and password)
php bin/console app:file-integrity:snooze
```

إذا كان إيقاف مؤقت نشطًا، يعيد `app:file-integrity:scan` إنشاء خط الأساس بصمت بدل التنبيه، مطابقًا سلوك فحص يُشغَّل من صفحة الإدارة.

## الإعدادات

يوجد إعداد مرتبط واحد في **إعدادات التكوين > الأمان**:

* **`file_integrity_check_notify_admins`** — قائمة عناوين بريد إلكتروني لإشعارها عند اكتشاف انحراف؛ إذا تُركت فارغة، يُشعَر كل مسؤول عام

## تكامل SIEM

يكتب كل فحص أيضًا أسطر سجل CEF (Common Event Format) إلى `var/logs/security/file_integrity.log`، مناسبة للاستهلاك بواسطة SIEM (Wazuh وSplunk وQRadar وArcSight وElastic/Filebeat وأدوات مشابهة). يُوسَم كل سطر بمعرّف توقيع يحدد نوع التغيير:

| التوقيع         | المعنى                                     |
| --------------- | ------------------------------------------ |
| `FIM-ADDED`     | ظهر ملف جديد                               |
| `FIM-MODIFIED`  | تغيّر محتوى ملف                            |
| `FIM-DELETED`   | اختفى ملف                                  |
| `FIM-GITCONFIG` | تغيّر `.git/config` (بعيد مختطَف محتمل)    |
| `FIM-PERMS`     | تغيّرت أذونات ملف                          |
| `FIM-TRUNCATED` | قُطع تقرير فئة؛ راجع السجل للقائمة الكاملة |

## الاستخدام الموصى به

1. أنشئ خط أساس فور التثبيت، ثم مرة أخرى بعد كل تحديث أو نشر يدوي
2. جدول الأمر `app:file-integrity:scan` في cron (على سبيل المثال، ليليًا)
3. قبل نافذة صيانة مخططة ستغيّر الملفات (تحديث أو ترحيل)، استخدم **إيقاف مؤقت لمدة ساعة واحدة** بدلًا من إزالة مهمة cron بالكامل
4. وجّه الملف `var/logs/security/file_integrity.log` إلى نظام مراقبة السجلات أو SIEM الحالي إن وُجد لديك
