تركيب mod_security ليس بالامر الصعب اطلاقاً. وحتى اضافة القوانين بل وكتابة القوانين الخاصة كذالك ولكن أن تكتب قوانين بشكل احترافي هذا هو الصعب فعلاً. من خلال تجربتي وكتابتي لقوانين المودسكيورتي بسبب بيئة عملي, وأيضاً من خلال اطلاعي على الكثير الكثير من المستندات الخاصة بالمودسكيورتي. استطعت أن اخرج بأهم  النقاط من أجل مودسكيورتي أفضل.

mod_security

 

جميع ماهو مذكور في هذا الموضوع عبارة عن تجارب وخبرة شخصية. وليس بالضروري او الاجباري اتباعها. قمت بتقسيم الموضوع على شكل نقاط ,كل نقطة تحوي شرح سريع لها. دعونا نبدأ…

فهم معنى الأداء الجيد

المودسكيورتي يعتبر من الأمور الحساسة جداً. استخدامة بشكل غير مدروس قد يضر مواقعك كثيراً من عدة نواحي مثل الارشفة وعناكب البحث, عدد الزوار, تعطل بعض الخواص في موقعك بسبب تعارض بعض القوانين مع الخواص المعنية.
ليس هذا فقط. بل قد يؤثر على أداء الخادم بالسلب. مثل تهنيق خادم الاباتشي او استهلاك عالي لأحدى موارد الخادم مثل CPU, RAM, I/O.

ايضاً قد يسبب مشاكل اخرى مثل تقلص سرعة الاستجابة وتنفيذ الطلبات.
لذى من الضروري جداً ان تكون القوانين مكتوبة بشكل صحيح واخذت الوقت الجيد للأختبار.

تخصيص القوانين

القصود بتخصيص القوانين, وهنا اقصد انة من الضروري جداً قبل ان تبدأ بكتابة قوانينك الخاصة او استخدام قوانين جاهزة. هو تحديد في ماذا انت تحتاج المودسكيورتي وماهي بيئة العمل ومانوع المواقع التي تعمل على الخادم.

وكمثال توضيحي
خادم اباتشي يدعم php فقط, المواقع المستضافة مدونة wordpress فقط, العدد 1
خادم يدعم php و perl, استضافة مواقع مشتركة, العدد 150 موقع

لاحظ ان بالمثال الاول سوف نحتاج لقوانين المودسكيورتي الاساسية مع قوانين خاصة بسكربت الورد بريس وهنا القوانين سوف تكون لها علاقة مع php و mysql

اما في المثال الثاني سوف نحتاج ايضاً للقوانين الاساسية مع قوانين شاملة نوعاً ما, وهنا سوف يتم استخدام الريجيكس كثيراً وسوف تحتاج لمعرفة طريقة تنفيذ الهجمات على برامج الويب لتستطيع من كتابة قوانين عامة قوية.

اذن هنا النتيجة ان استخدام القوانين حسب الحاجة وبيئة العمل. وليس “قوانين والسلام” لان هذا قد يضرك بدل من ان ينفعك.

فهم طريقة عمل مواقعك الالكترونية

كل مافهمت برنامج او برامج موقعك او مواقعك كل ما تمكنت من كتابة قوانين مناسبة وصحيحة. السبب انك ببساطة عند فهمك الجيد للبرنامج المستخدم في موقعك سوف تعرف نقاط ضعف البرنامج وتعرف ايضاً من اين قد تأتيك الهجمات.

فهم الهجومات المتوقعة

عندما تفهم البرامج المستخدمة في مواقعك, وتفهم الهجمات المتوقعة على هذه البرامج هنا سوف تعلم تماماً اي قوانين انت تحتاج.

تحديد امكانيات محطة العمل الخاصة بك

استخدام قوانين كثيرة يعني مشاكل متوقعة اكثر. وهذا كلة يزيد من استهلاك الموارد. لذى يجب عليك في حالة قلة الموارد ان تستخدم قوانين قليلة ومفيدة لطبيعة موقعك او مواقعك لتجنب الاستهلاك العالي والمشاكل.

فصل الاعدادات عن كونفق الاباتشي الاساسي

ملف كونفق الاباتشي الاساسي وهو httpd.con. بعض مدراء الخوادم يقومون بوضع اعدادات المودسكيورتي في httpd.conf وهذا حقيقة يعتبر خطأ. ويفضل ان يكون ملف اعدادات المودسكيورتي في ملف خاص ويتم ادخالة في httpd.conf على شكل Included file راجع ايضاً كل من “ترتيب القوانين” و “تقسيم القوانين إلى عدة ملفات”.

ترتيب القوانين

خادم الاباتسي يقرأ ملفات الاعدادات وغيرها من الملفات الدمجة بالاباتشي كـ Included files من الأعلا إلى الأسفل. اذن يفضل ترتيب القوانين حسب الدور في المعالجة. وكمثال بسيط, لنفرض ان لديك كذا قانون وظيفتهم فحص اليوزر اجنت وفحص الرابط واستغلالات SQL-Inj واخيراً فحص المجسم ‘body’ بهذه الحالة يفضل وبشدة ترتيب بهذا الشكل ‘من الأعلا إلى الأسفل’

  1. قوانين فحص اليوزر اجنت
  2. قوانين فحص الروابط
  3. قواين فحص استغلالات SQL Injection
  4. قوانين فحص المجسم

بهذا سوف يتم فحص الطلب بالترتيب الصحيح.

قسيم القوانين إلى عدة ملفات

من خلال تجربتي لتقسيم ملفات المودسكيورتي إلى عدة ملفات هو سهولة مراجعة القوانين وهي على السيرفر من قبل موظفينك او الفريق الذي يعمل معك. هذا غير ان التقسيم الجيد سوف يعطيك ترتيب واضح لمحتوى كل ملف. الفائدة الاخرى هي سرعة قراءة محتوى الملف من قبل الاباتشي. ولا تنسى ان تقوم بإدخال الملفات على الاباتشي بالترتيب الصحيح ليتم قراءة الملفات حسب الترتيب وتقوم بإدخالهم في ملف اعدادات المودسكيورتي على شكل Included files  (مرة اخرى, الاباتشي يقرأ الاعدادات من الاعلا إلى الأسفل).

تخصيص ID لأغلب القوانين

المودسكيورتي يمكنك من إنشاء رقم خاص تعريفي بكل قانون ويعتبر ID القانون, هذا يعتمد على unique_id_module
وهو موديول تابع للأباتشي. فائدة هذه الميزة متعددة اولاً في عمليات التسجيل والتنقيح وايضاً في عمليات تعطيل قانون معين على مسار معين او ملف معين وهذه سوف تحتاجها بكل الاحوال اذا كان الخادم لإستضافة المواقع المشتركة.

ملفات التسجيل

في المودسكيورتي ملفت التسجيل او log files تعمل بصالحك. ولكن استخدامك الخاطئ لها قد تأتي عليك بنتائج سلبية جداً. ملفات التسجيل في المودسكيورتي تعمل باسلوب التسجيل الحي, اي في حال حصل شيء مع المودسكيورتي يقوم بتسجيلة فوراً.

المشكلة هنا اذا كان لديك الكثير من القوانين التي تحتوي على مشاكل او اخطاء بطريقة او بأخرى هنا سوف يحصل ضغط كبير على ملفات التسجيل لانها مشغولة بتسجيل الاحداث. خصوصاً اذا كان السيرفر مشغول. وتتفاقم المشكلة كل ما ضاعفت مرحلة التسجيل.

المودسكيورتي بالوضع العادي يحمل ملفين للتسجيل Audit log و debug log

1. الأول AUDIT LOG
هذا بالعربية يسمى “سجل التدقيق او ملف التدقيق”. وهو الملف المسؤل عن تسجيل الاحداث لمراجعتها عند الحاجة لها. ويحتوي على الكثير من المعلومات. وبالعادة هذا الملف يكبر حجمة بسرعة كبيرة, بسبب كمية المعلومات التي يتم تسجيلها.

هذا ملف يعمل باسلوبيين وهم serial و concurrent.
الوضع الأول يقوم بالتسجيل بداخل ملف واحد لكل المواقع او الـ Virtual hosts
الوضع الثاني يقوم بإستخدام ملف منفصل لكل Virtual host ويتم استخدام الملف الاساسي للتسجيل كملف index.

شخصياً انصح باستخدام الوضع الاول لخفتة اثناء المعالجة.

SecAuditEngine
وهذا هو يحدد مسألة تسجيل جميع الاحداث ام لا. وافضل خيار لهذا الدايركتيف هو RelevantOnly بحيث يتم تسجيل الأخطاء والتحذيرات فقط لاغير. بهذا تقلص عدد الاحداث المسجلة وتسجل ماتحتاج لة فعلاً.

SecAuditLogParts
هذا يحدد الاجزاء التي سوف يقوم بوضعها في كل حدث يتم تسجيلة. يفضل مراجعة مستندات modsecurity بهذا الخصوص لتختار بنفسك ما تحتاج الية في تسجيل الاحداث. وما لا تحتاجة بشكل ضروري لا تضعة.

2. الثاني DEBUG LOG
ملف التنقيح وهذا يستخدم لمراجعة الاحداث المسجلة بداخلة من اجل تحسين القوانين واصلاح المشاكل وغيرها من امور التنقيح والتطوير. الملف هذا يعمل باسلوب المستويات. والمستويات تبدا من 0 وتنتهي بالرقم 9
0 يعني ان لا يتم تسجيل اي شيء
9 يسجل كل شيء بتفاصيل دقيقة

كل ما اخترت رقم اعلا كل مازاد الضغط وكثرت المعلومات في ملف التنقيح. استخدامك لمستوى عالي سوف يسبب لك مشاكل قد تصل لتهنيق خادم الاباتشي.

اذا كنت في مرحلة تطوير واختبار القوانين انصحك باستخدام المستوى 5
وبعد الانتهاء من مرحلة التطوير والاختبار اجعل المستوى 3 كحد اقصى للحفاظ على اداء الاباتشي و عدم رفع مستوى ال I/O

واخيراً وليس اخراً في هذه الفقرة. ضع ملفات التسجيل في قرص صليب سريع ويفضل ان يكون هذا القرص لايحتوي على قواعد البيانات لان قواعد البيانات تستهلك I/O عالي جداً. هذا ينصح بة لكل ملفات التسجيل وليس modsecurity فقط.
شخصياً اضع جميع ملفات التسجيل على شريحة SSD Card بسعة 32GB. بسبب السرعة العالية التي توفرها شرائح SSD

استخدام RegEx نظيفة

القصد في هذه الفقرة ان تستخدم الريجيكس بشكل صحيح وبدون أي اخطاء. وفي نفس الوقت عليك ان لا تستخدم امثلة معقدة بالريجيكس, لان معالجتها سوف تكون موضوع صعب في خوادم الويب المشغولة. بالطبع سوف تضطر لإستخدام قوانين مبنية على ريجيكس معقد خصوصاً في جزء قوانين ال SQL-Inj ولكن عليك ان لا تكثر منها.

استخدام ردود الفعل الصحيحة

في المودسكيورتي هنالك ردود فعل اثنان الأول هو default action وهذا هو رد الفعل الافتراضي لأي قانون لا يستخدم رد فعل خاص بة. والثاني هو custom action وهذا هو رد فعل خاص قانون معين تكتبة بجانب القانون. عند كتابة رد الفعل هنالك diractives تدخلها في رد الفعل وهنا هو محور الفقرة هذه. عليك ان تستخدم الدايركتيفس المناسبة للقانون.

مثلاً الدايركتيف log ليس كل القوانين بحاجة لأن يتم تسجيلها في ملفات التسجيل. وهنا عليك ان تستغني عن log في القوانين التي لا تحتاجها. وهكذا.

الابتعاد عن الكلمات المتداولة والعشوائية في القوانين

على سبيل المثال كلمة vb اغلب المواقع العربية تحمل المسار domain.com/vb. اذن هنا من الخطأ ان تمنع كلمة vb في الروابط لانك سوف تسبب مشاكل كثيرة لمواقعك او عملائك.
فحاول قدر الامكان ان تقلص عدد هذه الكلمات التي قد تستخدم في الروابط السليمة والنظيفة. او في محتوى الصفحة.

أصلاح القوانين المسببة للمشاكل

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

ادخل القوانين على منصة تجريبية قبل استخدمها في المنصة الاساسية

قبل ان تقوم بتركيب القوانين على المنصة الاساسية. يفضل وبشدة تركيبها وتجربتها على منصة تجريبية للفحص المشاكل واصلاحها ان وجد. والتأكد من نظافة القوانين وفعاليتها. هذا يوفر لك استقرار اكبر ومشاكل اقل, في كلا الحالتين ان كانت القوانين من كتابتك او جاهزة.

تابع جديد المودسكيورتي اول باول

المودسيكورتي يعتبر من البرمجيات السريعة في التطوير وبين فترة واخرى يتم اضافة ميزة جديدة او دايركتيف جديد لوظيفة معينة وهكذا. وافضل مكان لمتابعة جديد المودسكيورتي هو القائمة البريدية الخاصة بالمودسكيورتي وتجدها في موقع المودسكيورتي. هذا غير انة احيانا يتم اكتشاف ثغرات في المودسكيورتي تسبب في تخطي المودسكيورتي او بعض الثغرات تكون عبارة عن DoS. لهذا متابعة جديد اي برنامج تستخدمة وتعتمد علية هو امر ضروري ومفيد.

اخيراً قد اقوم بالمستقبل بتحديث الموضوع بإضافة المزيد او انشاء كتيب صغير يحتوي على نصائح بشكل معمق اكثر ويكون المستند محدث باستمرار بكل جديد.

شكراً لقراءتك.

تحياتي, مصطفى البازي.

عن الكاتب:


مصطفى البازي, مدير شبكات وسيرفرات (ويندوز و لينكس) و مدوّن مهتم بالأمن المعلوماتي, التجارة الالكترونية والأنظمة المفتوحة المصدر.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn