صلاحيات الملفات واستخدامها في حماية مواقع الويب
تُعد صلاحيات الملفات (File Permissions) واحدة من الركائز الأساسية لأمن المعلومات الرقمية، وخاصة عند إدارة مواقع الويب. فكل موقع على الإنترنت يعتمد بشكل أو بآخر على ملفات تُخزن على خادم (سيرفر)، وهذه الملفات تشمل صفحات HTML وملفات CSS وJavaScript، بالإضافة إلى ملفات قواعد البيانات والبرمجيات التي تدير الموقع (مثل ملفات PHP). لذلك، فإن التحكم الدقيق في من يمكنه قراءة أو كتابة أو تنفيذ هذه الملفات هو عنصر جوهري في حماية الموقع من التهديدات الخارجية والداخلية على حد سواء.
في عالم نظم التشغيل، وتحديدًا في الخوادم التي تعمل بأنظمة شبيهة بـ Linux وUnix، تُعتبر صلاحيات الملفات خط الدفاع الأول أمام محاولات الاختراق، سواء من قِبل القراصنة (Hackers) أو حتى من خلال أخطاء بشرية قد تؤدي إلى تعريض الموقع للخطر.
مفهوم صلاحيات الملفات
تشير صلاحيات الملفات إلى مجموعة القواعد التي تحدد من يمكنه التفاعل مع ملف معين داخل نظام التشغيل. هذه التفاعلات تندرج تحت ثلاث عمليات رئيسية:
-
القراءة (Read): تعني القدرة على عرض محتويات الملف.
-
الكتابة (Write): تعني القدرة على تعديل محتوى الملف.
-
التنفيذ (Execute): تعني القدرة على تشغيل الملف كبرنامج أو سكربت.
يتم تحديد هذه الصلاحيات على ثلاثة مستويات:
-
المالك (Owner): هو المستخدم الذي يملك الملف.
-
المجموعة (Group): وهي مجموعة من المستخدمين الذين يمكن أن تُمنح لهم صلاحيات خاصة.
-
الآخرون (Others): وهم جميع المستخدمين الآخرين.
تُعبر هذه الصلاحيات عادة بالأرقام الثنائية أو عبر رموز حرفية. على سبيل المثال، الرمز rwxr-xr-- يعني:
-
المالك يمكنه القراءة والكتابة والتنفيذ (rwx).
-
أعضاء المجموعة يمكنهم القراءة والتنفيذ فقط (r-x).
-
الآخرون يمكنهم القراءة فقط (r–).
الصيغة الرقمية لصلاحيات الملفات
تُستخدم صيغة رقمية مكونة من ثلاثة أرقام لتحديد صلاحيات الملفات، وهذه الصيغة تُستخدم كثيرًا مع الأمر chmod في نظام Linux. كل رقم يمثل صلاحيات فئة معينة (المالك، المجموعة، الآخرون). مثلاً:
| القيمة الرقمية | الصلاحيات |
|---|---|
| 0 | — |
| 1 | –x |
| 2 | -w- |
| 3 | -wx |
| 4 | r– |
| 5 | r-x |
| 6 | rw- |
| 7 | rwx |
مثال على ذلك:
إذا كانت صلاحيات الملف 644، فهذا يعني:
-
المالك: قراءة وكتابة (6)
-
المجموعة: قراءة فقط (4)
-
الآخرون: قراءة فقط (4)
كيفية التحكم بصلاحيات الملفات باستخدام الأمر chmod
يُستخدم الأمر chmod لتغيير صلاحيات الملفات والمجلدات. وهناك طريقتان رئيسيتان لاستخدامه:
-
الطريقة الرقمية:
bashchmod 755 index.phpهذا الأمر يمنح المالك صلاحيات كاملة (rwx)، والمجموعة والآخرين صلاحيات القراءة والتنفيذ فقط (r-x).
-
الطريقة الرمزية:
bashchmod u+x script.shهذا الأمر يضيف صلاحية التنفيذ للمستخدم (المالك) فقط.
دور صلاحيات الملفات في حماية مواقع الويب
عند بناء أو إدارة موقع ويب، يصبح من الضروري التأكد من أن صلاحيات الملفات والمجلدات محددة بشكل دقيق لمنع أي هجمات إلكترونية محتملة. من أبرز هذه التهديدات:
1. هجمات رفع الملفات الخبيثة (Malicious File Uploads)
عندما يُسمح للمستخدمين برفع ملفات على الخادم، كأن يكون هناك نموذج لرفع الصور، فإن المهاجم قد يرفع ملفًا يحتوي على كود ضار (مثل ملف PHP يحتوي على أوامر لتنفيذ عمليات اختراق). في حال كان هذا الملف قابلًا للتنفيذ (بسبب صلاحيات غير مشددة)، فإن المهاجم يستطيع تنفيذ الكود على السيرفر والتحكم به.
لمنع ذلك، يجب تعيين صلاحيات المجلدات التي تُرفع إليها الملفات على نحو يمنع تنفيذ أي ملفات بداخلها. على سبيل المثال، يمكن تعيين الصلاحية 644 للملفات و755 للمجلدات، مع تعطيل التنفيذ على مجلدات الرفع.
2. الحماية من الحقن البرمجي (Code Injection)
عندما ينجح المهاجم في الوصول إلى ملف PHP أو JavaScript ويقوم بحقن كود خبيث بداخله، فقد يستطيع تنفيذ أوامر عن بعد، أو سرقة بيانات المستخدمين. إذا تم ضبط الصلاحيات بحيث لا يُمكن لأي طرف غير موثوق تعديل ملفات الموقع، فإن هذا النوع من الهجمات يُصبح شبه مستحيل.
3. حماية ملفات التكوين الحساسة (Configuration Files)
ملفات مثل .env وwp-config.php في ووردبريس تحتوي على معلومات حساسة مثل بيانات الدخول إلى قاعدة البيانات وكلمات المرور. يجب حمايتها عبر:
-
تعيين صلاحيات قراءة فقط للمالك (مثلاً 600)
-
منع الوصول إليها من خلال إعدادات الخادم مثل Apache أو Nginx
-
استخدام أوامر لمنع ظهورها في المتصفح
أفضل الممارسات لتأمين صلاحيات الملفات في مواقع الويب
فيما يلي قائمة بالإجراءات المثلى التي يُنصح باتباعها لضمان حماية فعالة من خلال الصلاحيات:
| الملف/المجلد | الصلاحيات المقترحة | الملاحظات |
|---|---|---|
| ملفات PHP | 644 | تُقرأ وتُكتب فقط من قبل المالك |
| مجلدات الموقع | 755 | ضروري للتنقل داخل المجلدات |
| ملفات التكوين (config) | 600 | تمنع القراءة والكتابة من قبل أي شخص آخر |
| مجلدات التحميل | 755 | يجب منع تنفيذ السكربتات ضمنها |
| ملفات .htaccess | 644 | لا يجب أن تكون قابلة للكتابة من قِبل المجموعة أو الآخرون |
| ملفات النسخ الاحتياطي | 600 أو أقل | يفضل تخزينها خارج المجلد الرئيسي للموقع |
تطبيق الصلاحيات باستخدام سكربتات تلقائية
من المفيد استخدام سكربت Shell أو أوامر مبرمجة ضمن نظام CI/CD لضبط الصلاحيات بعد كل تحديث للموقع. مثال:
bashfind /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
chmod 600 /var/www/html/.env
هذا السكربت يضمن تطبيق الصلاحيات الصحيحة تلقائيًا على جميع الملفات والمجلدات بعد كل تحديث.
العلاقة بين صلاحيات الملفات ونظام التحكم في الوصول (Access Control)
إلى جانب صلاحيات الملفات، تستخدم أنظمة التشغيل ما يُعرف بنظام التحكم الإضافي (ACL – Access Control List) الذي يسمح بمنح صلاحيات مخصصة لأفراد أو خدمات معينة. على سبيل المثال، يمكن السماح لحساب معين بقراءة ملف معين دون منحه صلاحيات كاملة.
يُعتبر هذا النظام متقدمًا ويُستخدم في بيئات استضافة كبيرة أو أنظمة متعددة المستخدمين، وهو مناسب لحالات مثل تشغيل سكربتات cron أو أدوات صيانة تلقائية تتطلب صلاحيات معينة.
الثغرات الناتجة عن صلاحيات غير مشددة
عدد كبير من الهجمات الناجحة على مواقع شهيرة كان سببها الأساسي صلاحيات ملفات غير مشددة. في حالات عديدة، ترك مسؤولو المواقع ملفات إدارة أو نسخ احتياطية بصلاحيات عامة مثل 777 (والتي تعني أن الجميع يمكنه القراءة والكتابة والتنفيذ)، مما أدى إلى تمكين المخترقين من تحميل ملفات خبيثة أو سرقة بيانات.
أبرز الثغرات الأمنية التي تستغل ضعف صلاحيات الملفات تشمل:
-
Remote Code Execution (RCE)
-
Local File Inclusion (LFI)
-
Privilege Escalation
-
File Disclosure
آلية العمل في أنظمة إدارة المحتوى (CMS)
أنظمة مثل ووردبريس، جوملا، ودروبال تعتمد على بنية ملفات ومجلدات محددة. وللأسف، كثير من المستخدمين يمنحون صلاحيات مفرطة لبعض المجلدات لتسهيل عملية التحديث أو تحميل الإضافات. هذا السلوك يُعد من أخطر ما يمكن أن يهدد أمن الموقع.
في ووردبريس مثلاً:
-
مجلد
wp-content/uploadsيجب ألا تكون فيه صلاحيات تنفيذ -
ملف
wp-config.phpيجب أن يكون بصلاحيات 600 -
المجلدات الأساسية مثل
wp-adminيجب ألا تُعدل صلاحياتها إلى777تحت أي ظرف
تقنيات إضافية لتعزيز أمان الملفات
بالإضافة إلى ضبط الصلاحيات، يمكن اتخاذ خطوات أخرى لتعزيز الحماية، مثل:
-
تفعيل أوامر mod_security في Apache لمنع أنماط مشبوهة من الطلبات
-
استخدام Web Application Firewall (WAF) مثل Cloudflare لمنع وصول البرمجيات الخبيثة
-
تشفير الملفات الحساسة أو وضعها في مجلدات خارج الوصول العام
-
استخدام أوامر مثل
chattr +iلجعل الملفات غير قابلة للتعديل حتى من قبل المستخدم الجذر
الخلاصة الفنية
صلاحيات الملفات ليست مجرد تفاصيل تقنية ثانوية، بل هي عنصر أساسي وحاسم في بنية الحماية الرقمية لمواقع الويب. ضبط الصلاحيات بشكل دقيق ومتقن يساعد في صد آلاف الهجمات الإلكترونية الشائعة ويقلل من سطح الهجوم المفتوح أمام القراصنة. عدم الاكتراث بهذه النقطة قد يؤدي إلى عواقب كارثية تشمل اختراق الخادم، تسريب البيانات، تدمير السمعة الرقمية، وانقطاع الخدمات.
يجب أن يكون ضبط الصلاحيات جزءًا من خطة أمن المعلومات المتكاملة لكل موقع ويب، إلى جانب المراقبة الدائمة والتحديث المستمر واستخدام بروتوكولات التشفير والحماية متعددة الطبقات.
المراجع:
-
Linux Documentation Project: https://tldp.org
-
OWASP Secure Coding Practices: https://owasp.org

