> 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/faq/security-guide.md).

# دليل الأمان

يغطي هذا الدليل أفضل ممارسات الأمان لتشغيل منصة Chamilo 3.0 في بيئة الإنتاج. الأمن مسؤولية مشتركة بين برمجيات المنصة، وإعدادات الخادم، والممارسات التشغيلية المستمرة.

للاطلاع على أدوات المراقبة والتدقيق المدمجة المشار إليها في هذا الدليل (سجلات محاولات تسجيل الدخول، وكشف التسلل، وفحوصات قوة كلمات المرور، وفحوصات سلامة الملفات)، راجع فصل [الأمان](/3.x/ar/dlyl-alidarh/admin-guide/security.md).

## إبقاء Chamilo محدّثًا

أهم ممارسة أمنية هي إبقاء تثبيت Chamilo محدّثًا.

* اشترك في حساب X الأمني لـ Chamilo (@chamilosecurity) أو راقب مستودع GitHub لإعلانات الإصدارات.
* طبّق تصحيحات الأمان فورًا. التحديثات الثانوية ضمن فرع 3.0 مصممة لتكون آمنة للتطبيق.
* اتبع [عملية الترقية](/3.x/ar/dlyl-alidarh/admin-guide/installation/upgrading.md) لكل تحديث.

## HTTPS

قدّم Chamilo دائمًا عبر HTTPS في بيئة الإنتاج.

* احصل على شهادة SSL/TLS (توفر Let's Encrypt شهادات مجانية عبر Certbot).
* اضبط خادم الويب لإعادة توجيه كل حركة HTTP إلى HTTPS.
* فعّل ترويسة HSTS (HTTP Strict Transport Security) لمنع هجمات التخفيض:

  ```
  Strict-Transport-Security: max-age=31536000; includeSubDomains
  ```

بدون HTTPS، تُنقل بيانات اعتماد تسجيل الدخول، وكوكيز الجلسة، وجميع بيانات المستخدمين كنص واضح ويمكن اعتراضها على الشبكة.

## أذونات الملفات

قيّد أذونات الملفات إلى الحد الأدنى الضروري.

| المسار                           | المالك               | الأذونات                      | ملاحظات                                                                                                                 |
| -------------------------------- | -------------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| ملفات التطبيق (الشيفرة المصدرية) | root أو مستخدم النشر | 755 (المجلدات)، 644 (الملفات) | يحتاج خادم الويب إلى وصول للقراءة فقط.                                                                                  |
| `var/`                           | مستخدم خادم الويب    | 775                           | يجب أن يكون قابلاً للكتابة لذاكرة Symfony المؤقتة والسجلات ورفع الملفات                                                 |
| `.env`                           | root أو مستخدم النشر | 640                           | يحتوي على أسرار. يحتاج خادم الويب إلى وصول للقراءة فقط أثناء الاستخدام العادي، لكنه يحتاج وصولًا للكتابة أثناء التثبيت. |
| `config/`                        | root أو مستخدم النشر | 750                           | يحتوي على أسرار. يحتاج خادم الويب إلى وصول للقراءة فقط أثناء الاستخدام العادي، لكنه يحتاج وصولًا للكتابة أثناء التثبيت. |

لا تعيّن الأذونات أبدًا إلى 777. لا تشغّل خادم الويب أبدًا كـ root.

## سياسات كلمات المرور

اضبط متطلبات كلمات مرور قوية في [إعدادات الأمان](/3.x/ar/dlyl-alidarh/admin-guide/platform-settings/security-settings.md):

* حد أدنى للطول 8 أحرف (يُوصى بـ 12 فأكثر).
* اطلب مزيجًا من الأحرف الكبيرة والصغيرة والأرقام والرموز الخاصة.
* فكّر في تفعيل انتهاء صلاحية كلمات المرور في البيئات الخاضعة لمتطلبات الامتثال.
* ثقف المستخدمين حول اختيار كلمات مرور قوية وفريدة.

## تحديد المعدل والحماية من القوة الغاشمة

### مستوى التطبيق

* عيّن **الحد الأقصى لمحاولات تسجيل الدخول قبل حظر الحساب** (`login_max_attempt_before_blocking_account`) إلى قيمة صغيرة (على سبيل المثال 5).
* فعّل **CAPTCHA** في صفحة تسجيل الدخول. CAPTCHA تشغيل/إيقاف — لا يُفعَّل تلقائيًا بعد عدد معيّن من محاولات الدخول الفاشلة. اقرنه بـ **أخطاء CAPTCHA قبل الحظر** (`captcha_number_mistakes_to_block_account`) لقفل الحساب الذي يستمر في الفشل في CAPTCHA.
* راجع تقرير [محاولات تسجيل الدخول](/3.x/ar/dlyl-alidarh/admin-guide/security/login-attempts.md) دوريًا لاكتشاف أنماط القوة الغاشمة، وتقرير [Simple IDS](/3.x/ar/dlyl-alidarh/admin-guide/security/simple-ids.md) للطلبات الأخرى المعلَّمة (محاولات XSS، واجتياز المسارات، وما شابه).

### مستوى الخادم

استخدم **fail2ban** لمراقبة إخفاقات تسجيل الدخول وحظر عناوين IP المخالفة:

```ini
# /etc/fail2ban/jail.d/chamilo.conf
[chamilo]
enabled = true
port = http,https
filter = chamilo-auth
logpath = /path/to/chamilo/var/log/prod.log
maxretry = 5
bantime = 900
```

أنشئ مرشحًا مطابقًا في `/etc/fail2ban/filter.d/chamilo-auth.conf` لمطابقة إدخالات سجل إخفاق المصادقة.

## إدارة الجلسات

* عيّن **عمر الجلسة** معقولًا (مثل 3600 ثانية / ساعة واحدة) في إعدادات الأمان.
* اضبط **علامات كوكي الجلسة** في إعدادات Symfony:

  ```yaml
  # config/packages/framework.yaml
  framework:
      session:
          cookie_secure: true      # Only send over HTTPS
          cookie_httponly: true     # Not accessible via JavaScript
          cookie_samesite: lax     # CSRF protection
  ```
* فكّر في تعطيل "تذكرني" على المنصات ذات المحتوى الحساس.

## رؤوس أمان HTTP

قم بتهيئة خادم الويب لإرسال رؤوس الأمان:

| الرأس                     | القيمة                            | الغرض                                                              |
| ------------------------- | --------------------------------- | ------------------------------------------------------------------ |
| `X-Content-Type-Options`  | `nosniff`                         | يمنع استنشاق نوع MIME.                                             |
| `X-Frame-Options`         | `SAMEORIGIN`                      | يمنع النقر الاحتيالي عبر الإطارات المضمّنة.                        |
| `X-XSS-Protection`        | `1; mode=block`                   | حماية XSS قديمة للمتصفحات الأقدم.                                  |
| `Referrer-Policy`         | `strict-origin-when-cross-origin` | يتحكم في تسريب معلومات المُحيل.                                    |
| `Content-Security-Policy` | يختلف                             | يتحكم في الموارد التي يمكن تحميلها. يتطلب ضبطًا دقيقًا لـ Chamilo. |

مثال لـ Apache:

```apache
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
```

مثال لـ Nginx:

```nginx
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
```

## أمان رفع الملفات

* احظر امتدادات الملفات التنفيذية (exe, bat, sh, php, phtml, cgi) في [إعدادات الأمان](/3.x/ar/dlyl-alidarh/admin-guide/platform-settings/security-settings.md).
* قم بتهيئة خادم الويب بحيث **لا ينفّذ الملفات المرفوعة أبدًا**. بالنسبة إلى Apache، أضف إلى دليل var/ بالكامل:

  ```apache
  <Directory /path/to/chamilo/var>
      php_admin_flag engine off
      RemoveHandler .php .phtml .php3 .php5
  </Directory>
  ```
* امسح الملفات المرفوعة بمضاد فيروسات (ClamAV) إذا كانت بيئتك تتطلب ذلك.

## أمان قاعدة البيانات

* استخدم **مستخدم قاعدة بيانات مخصصًا** لـ Chamilo بالصلاحيات التي يحتاجها فقط (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, INDEX على قاعدة بيانات Chamilo).
* لا تستخدم حساب الجذر لقاعدة البيانات.
* تأكد من أن قاعدة البيانات غير قابلة للوصول من الإنترنت العام. اربطها بـ localhost أو شبكة خاصة.
* فعّل تسجيل تدقيق قاعدة البيانات في البيئات الحساسة للامتثال.

## النسخ الاحتياطية

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

انظر [النسخ الاحتياطية](/3.x/ar/dlyl-alidarh/admin-guide/maintenance/backups.md) للتعليمات التفصيلية.

## المراقبة

* راقب سجلات Chamilo في `var/log/prod.log` بحثًا عن الأخطاء والنشاط المشبوه.
* أعد مراقبة الخادم (المعالج، الذاكرة، القرص) لاكتشاف استنفاد الموارد.
* هيّئ تنبيهات لإخفاقات المصادقة المتكررة.
* راجع حسابات المستخدمين دوريًا بحثًا عن حسابات غير مصرح بها أو خاملة.
* جدول فحوصات [سلامة الملفات](/3.x/ar/dlyl-alidarh/admin-guide/security/file-integrity.md) (Chamilo 3.0+) في cron ليُبلَّغ عند تغيّر الملفات المثبّتة بشكل غير متوقع، وشغّل [فاحص قوة كلمات المرور](/3.x/ar/dlyl-alidarh/admin-guide/security/password-strength-checker.md) دوريًا، خاصة بعد استيراد المستخدمين بالجملة.

## قائمة التحقق

استخدم قائمة التحقق هذه عند نشر تثبيت Chamilo أو تدقيقه:

* [ ] تم تفعيل HTTPS بشهادة صالحة
* [ ] تم تهيئة إعادة التوجيه من HTTP إلى HTTPS
* [ ] `APP_ENV=prod` و `APP_DEBUG=0` في `.env`
* [ ] تم توليد `APP_SECRET` فريد
* [ ] صلاحيات الملفات مقيّدة (لا 777)
* [ ] تم تهيئة سياسة كلمات المرور
* [ ] تم تفعيل الحد الأقصى لمحاولات تسجيل الدخول وCAPTCHA
* [ ] تم حظر امتدادات الملفات التنفيذية
* [ ] تم تهيئة رؤوس الأمان على خادم الويب
* [ ] تم تعيين أعلام كعكة الجلسة (secure, httponly, samesite)
* [ ] مستخدم قاعدة البيانات لديه الحد الأدنى من الصلاحيات
* [ ] تم جدولة النسخ الاحتياطية الآلية واختبارها
* [ ] تم إنشاء خط أساس لسلامة الملفات وجدولة الفحص في cron (Chamilo 3.0+)
* [ ] مراقبة السجلات قائمة
* [ ] إصدار Chamilo محدّث
