نصائح أمان التثبيت
From LimeSurvey Manual
عام
يرجى ملاحظة أننا نأخذ المسائل الأمنية على محمل الجد ونتفاعل معها بسرعة. لذلك، إذا كنت تعرف أي مشكلات أمنية في LimeSurvey، فيرجى إبلاغنا بذلك عن طريق فتح تقرير خطأ في متتبع الأخطاء لدينا (يرجى وضع علامة على الخطأ بالخطورة أو الفئة 'security').
لمزيد من التفاصيل، يرجى الاطلاع على سياسة الأمان الخاصة بنا للإبلاغ عن المشكلات الأمنية/الثغرات.
تقييد الوصول على خادم الويب
إذا كنت تستخدم Apache، فإن LimeSurvey يتضمن ملفات htaccess مختلفة للتقييد. تأكد من السماح باستخدام ملفات htaccess المضمّنة عبر AllowOverride.
مع خادم ويب آخر، أو إذا كنت تريد استخدام AllowOverride None: فيجب عليك
- (اختياري) تعطيل الوصول إلى جميع الملفات في application وprotected وframework وthemes/*/views
- تعطيل الوصول إلى الملفات التي حمّلها المستخدم /upload/surveys/.*/fu_[a-z0-9]
- (اختياري) تعطيل الوصول إلى الملفات القابلة للتنفيذ في دليل التحميل
يمكنك العثور على مثال لخادم nginx في الأسئلة الشائعة العامة
أذونات الملفات في Linux
إذا كنت تستخدم خادم Linux، فإن ضبط أذونات الملفات بشكل مناسب مطلوب لتأمين تثبيت LimeSurvey الخاص بك.
حقائق أساسية حول أذونات الملفات في Linux/*nix
نظام التشغيل Linux/*nix متعدد المستخدمين. وهذا يعني أنه، إلى جانب حسابك الشخصي، قد توجد حسابات مستخدمين أخرى على النظام، وعليك الانتباه إلى الأذونات التي تمنحها للمستخدمين الآخرين.
ضع في اعتبارك أن حساب 'root' سيُمنح دائمًا إذن الوصول إلى ملفاتك (بغض النظر عن أذونات الملفات التي تضبطها) لأنه مستخدم المسؤول الأعلى.
يعمل خادم الويب (الذي يشغّل LimeSurvey) أيضًا تحت هوية (مستخدم) معينة. في Linux، يكون هذا عادةً المستخدم 'www' أو 'www-data' (في Debian/Ubuntu) أو 'apache' أو 'nobody'. ومع ذلك، تستخدم بعض شركات الاستضافة أنظمة (مثل suexec) تتيح تشغيل نصوص LimeSurvey البرمجية باستخدام مستخدمك الشخصي. وبالطبع، يجب أن يملك مستخدم خادم الويب الحق في قراءة ملفات LimeSurvey. ومع ذلك، يجب أن تكون مجموعة فرعية صغيرة فقط من الأدلة الفرعية في LimeSurvey قابلة للكتابة من قبل مستخدم خادم الويب.
ضبط أذونات الملفات على نظام Linux مُدار ذاتيًا
إذا كنت تدير إعدادات خادم الويب ونظام التشغيل الخاص بك (أي أنك مالك الخادم الفعلي أو تستأجر خادمًا افتراضيًا لديك عليه وصول root)، فيمكنك الأخذ بالتوصيات التالية.
يمكنك أولاً تعيين المالك والمجموعة لملفات LimeSurvey الخاصة بك بحيث يسهل ذلك إعداد أذونات الملفات. من الاستراتيجيات الممكنة تعيين مالك ملفات LimeSurvey إلى اسم المستخدم الخاص بك، ومجموعة ملفات LimeSurvey إلى مجموعة خادم الويب. عادةً ما تحتوي مجموعة خادم الويب هذه على حساب خادم الويب فقط (وربما حساب مشرف موقع آخر). على سبيل المثال، إذا كان اسم المستخدم الخاص بك 'myaccount' ومستخدم خادم الويب هو 'apache' في المجموعة 'apache'، فيمكنك من خلال الوصول إلى الصدفة (shell) استخدام الأمر التالي: $ chown -R myaccount:apache limesurvey/. بعد ذلك، قم بضبط أذونات الملفات والأدلة الفرعية.
لكي يعمل النص البرمجي بشكل صحيح، يلزم توفر إذن الكتابة لبعض الأدلة:
- يتطلب الدليل /limesurvey/application/config إذن القراءة والكتابة لحفظ إعدادات تهيئة التطبيق
- يُستخدم الدليل /limesurvey/tmp وأدلته الفرعية للاستيراد/التحميل، ويجب ضبطه على القراءة والكتابة لخادم الويب الخاص بك
- يجب أيضًا ضبط إذن القراءة والكتابة للدليل upload/ وجميع أدلته الفرعية لتمكين تحميل الصور وملفات الوسائط
- يمكن ضبط جميع الأدلة والملفات الأخرى على للقراءة فقط
ضبط أذونات الملفات على خادم ويب مستضاف
نظرًا لصعوبة وجود إجراء قياسي لتأمين تطبيق ويب في بيئة مستضافة، فإن الأمر صعب إلى حد ما لأن البيئات المستضافة تختلف في جوانب كثيرة.
في حالة الخادم المُدار، يحتاج الخادم إلى إذن الكتابة في بعض الأدلة لكي يعمل النص البرمجي بشكل صحيح:
- يُستخدم الدليل /limesurvey/tmp للاستيراد/التحميل، ويجب ضبطه على القراءة والكتابة لخادم الويب الخاص بك
- يجب أيضًا ضبط القراءة والكتابة للدليل upload/ وجميع أدلته الفرعية لخادم الويب الخاص بك لتمكين تحميل الصور وملفات الوسائط
- يجب ضبط الأدلة والملفات الأخرى على للقراءة فقط
- بحسب إعدادات خادم الويب لديك، سيتعين عليك تنفيذ chmod على المجلدات القابلة للكتابة بالقيمة 755 أو 777 لجعلها قابلة للكتابة من قبل خادم الويب. جرّب 755 أولاً، وإذا لم تنجح فقم بـ'الترقية' إلى 777
- يمكنك أيضًا محاولة إزالة إذن القراءة عن المستخدمين الآخرين للملف config.php بضبط أذونات هذا الملف على 750 - وإذا لم تنجح، فقم بـ'الترقية' إلى 755
أذونات الملفات في Windows
إذا كنت تستخدم خادم Windows، فعليك التأكد من أن مجلد admin يسمح لمالك عملية خادم الويب بكتابة الملفات في هذا الدليل. يمكن ضبط بقية الملفات على القراءة فقط والتنفيذ.
مسائل أمنية أخرى
ما يلي هو مجرد توصيات. يُعد LimeSurvey بشكل عام آمنًا جدًا بدون هذه الإجراءات الإضافية. ولكن إذا كنت تجمع بيانات شديدة الحساسية، فقد يساعد قدر بسيط من الأمان الإضافي:
استخدام SSL
نوصي عمومًا باستخدام SSL لبيانات الاستبيان الحساسة. يمكنك عادةً تفعيل SSL عن طريق إعداد خادم الويب بشكل صحيح واستخدام شهادة SSL. إذا قمت بتفعيل SSL، فيجب عليك فرض استخدام SSL في جميع الأوقات من الإعدادات العامة في LimeSurvey. بالإضافة إلى ذلك، يمكنك تفعيل استخدام ملفات تعريف الارتباط 'الآمنة' فقط عن طريق تعديل الخيار المعني في الملف config.php.
الوصول إلى الملف config.php
يحتوي الملف /application/config/config.php على اسم المستخدم وكلمة المرور لخادم قاعدة البيانات الخاص بك. وهذا يشكل بعض المخاطر الأمنية، خاصة إذا كنت تستخدم حساب دخول يتمتع بصلاحيات إدارية عالية على قاعدة البيانات. في حال حدوث خطأ ما يؤدي إلى إرجاع محتوى ملف PHP هذا إلى متصفح أحد المستخدمين، فقد تتعرض كلمة سر قاعدة البيانات وتفاصيل أخرى للخطر (لكن هذا سيناريو بعيد الاحتمال جدًا). أفضل طريقة لتقليل المخاطر هي إنشاء حساب دخول مخصص يملك صلاحيات محددة فقط على قاعدة بيانات LimeSurvey الخاصة بك.
هناك طريقة أخرى لتأمين هذه المعلومات، وهي وضع المعلومات الموجودة في الملف /application/config/config.php في دليل خارج نطاق الويب، أي بالنسبة لمستخدمي Apache هو الدليل الأعلى من المجلد htdocs (المعروف أيضًا باسم public_html أو www). بشكل أساسي، ستستخدم الملف config.php، ولكن مع سطر واحد فقط فيه، وهو سطر يضمّن الملف الذي يحتوي على معلومات الإعدادات الفعلية (مثال: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). قم بإزالة جميع معلومات الإعدادات الفعلية من الملف /application/config/config.php والصقها في الملف الآخر (configreal.php) المذكور في الملف /application/config/config.php. يجب أن يكون هذا الملف الآخر موجودًا في دليل خارج نطاق الويب. عندها لن يحتوي الملف /application/config/config.php على كلمات مرور قاعدة البيانات وغيرها، بل فقط على اسم الملف الذي يحتوي على معلومات قاعدة البيانات.
وهذا يجنّبك الحاجة إلى تغيير جميع الملفات الأخرى التي تضمّن الملف /application/config/config.php، لأن config.php 'يعيد توجيهها' نحو ملف الإعدادات الموجود في دليل خارج نطاق الويب والذي يتضمن جميع معلومات الإعدادات الفعلية.
كذلك، لا تستخدم "admin" أو "administrator" كمستخدم افتراضي. انتقل إلى قاعدة بيانات MySQL الخاصة بك (أو القاعدة التي ثبّتّ فيها LimeSurvey) وغيّر اسم المستخدم الافتراضي "admin" إلى ما تفضله (مثل "admin_xyz"). سيصبح من الأصعب بكثير تخمين اسم المستخدم الجديد للمدير. تذكّر أن هذا أحد المتغيرين اللذين يمكن للمتسللين استخدامهما للوصول. أما كلمة المرور الخاصة بالمدير فهي المتغير الآخر. لذا اختر كليهما بعناية فائقة.
سياسة أمان المحتوى (CSP)
إخلاء مسؤولية - إن سياسة أمان المحتوى (CSP) الموضحة هنا مجرد مثال، وليست مخصصة للاستخدام كما هي حرفياً. الغرض منها أن تكون نقطة انطلاق، ويجب عليك تكييفها بما يناسب احتياجاتك واختبارها جيداً.
<IfModule mod_headers.c>
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'none'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i"
</IfModule>