0Pricing
Cyber Security Academy · درس

قواعد التوقيع باستخدام Snort وSuricata

كتابة قواعد الشبكة وقراءتها.

قواعد التوقيع باستخدام Snort وSuricata درس مجاني في Cyber Security Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cyber Security Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.

Snort وSuricata

يُعد Snort وSuricata محركي IDS/IPS مفتوحي المصدر الأبرز. ويتشاركان لغة قواعد متوافقة إلى حد كبير، ولذلك تعمل القاعدة المكتوبة لأحدهما عادةً على الآخر.

يضيف Suricata تعدد الخيوط، ومحللات البروتوكولات الأصلية، واستخراج الملفات، والتسجيل الغني (EVE JSON)، كما حدّث Snort 3 محركه بالطريقة نفسها. ويمنحكم تعلم صياغة القواعد مرة واحدة قدرة على الاستفادة من كليهما.

بنية القاعدة

تتكون كل قاعدة من جزأين: رأس وجسم من الخيارات محاط بأقواس. يحدد الرأس الإجراء والبروتوكول واتجاه حركة المرور، بينما يحدد الجسم ما يجب مطابقته وكيفية الإبلاغ عنه.

alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
  msg:"WEB suspicious request"; \
  content:"/admin.php"; http_uri; \
  sid:1000001; rev:1; )

حقول الترويسة

تُقرأ الترويسة من اليسار إلى اليمين:

  • action — alert، drop، reject، pass
  • protocol — tcp، udp، icmp، ip (أو بروتوكولات التطبيقات في Suricata: http، dns، tls)
  • عنوان IP/منفذ المصدر وعنوان IP/منفذ الوجهة
  • direction — -> أحادي الاتجاه، أو <> ثنائي الاتجاه

تأتي متغيرات مثل $HOME_NET و$EXTERNAL_NET من ملف الإعداد، ولذلك تظل القواعد قابلة للنقل بين المواقع.

drop tcp any any -> $HOME_NET 22 ( msg:"SSH blocked"; sid:1000002; rev:1; )

الإجراءات: التنبيه مقابل الإسقاط

يحدد الإجراء سلوك IDS أو IPS لهذه القاعدة:

  • alert — تسجيل الحدث وإرسال إشعار، من دون إيقاف حركة المرور (IDS)
  • drop — إسقاط الحزمة بصمت (IPS، في الوضع المضمّن فقط)
  • reject — إسقاط الحزمة وإرسال إعادة ضبط TCP أو رسالة ICMP تفيد بعدم إمكانية الوصول
  • pass — السماح صراحةً، مع تجاوز القواعد اللاحقة

يصبح المحرّك نفسه IDS أو IPS بحسب ما إذا كان منشورًا في الوضع المضمّن وبحسب الإجراءات التي تستخدمونها.

مطابقة المحتوى

تطابق الكلمة المفتاحية content نمطًا من البايتات داخل الحمولة. يُكتب النص بين علامتي اقتباس، بينما تُكتب البيانات الثنائية بين علامتي pipe بصيغة hex.

تجعل كلمات تحديد الموضع المطابقة أكثر دقة: تقيّد offset وdepth وdistance وwithin الموضع الذي يمكن أن يظهر فيه النمط، مما يحسّن الدقة والأداء معًا.

alert tcp any any -> $HOME_NET any ( \
  msg:"Malware magic bytes"; \
  content:"|4D 5A|"; offset:0; depth:2; \
  sid:1000003; rev:1; )

المخازن المؤقتة اللاصقة

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

  • http_uri — URI الطلب
  • http_header — ترويسات الطلب/الاستجابة
  • http_user_agent — User-Agent
  • tls_sni / dns_query — اسم خادم TLS / استعلام DNS

وهذا أكثر موثوقية بكثير من البحث عن سلسلة فرعية في الحزمة بأكملها.

alert http any any -> any any ( \
  msg:"Suspicious user agent"; \
  http.user_agent; content:"sqlmap"; nocase; \
  sid:1000004; rev:1; )

PCRE وnocase

عندما لا تكفي السلاسل النصية الثابتة، توفر pcre تعبيرات نمطية متوافقة مع Perl. اقرنوا مرشحًا أوليًا منخفض التكلفة باستخدام content مع pcre حتى لا يُشغَّل التعبير النمطي إلا على الحزم المرشحة، مع الحفاظ على الأداء.

يجعل المعدّل nocase مطابقة المحتوى غير حساسة لحالة الأحرف، وهو أمر مهم للترويسات والحقول التي يتحكم فيها المستخدم ويمكن للمهاجمين تغييرها.

alert http any any -> $HOME_NET any ( \
  msg:"SQLi attempt in URI"; \
  http.uri; content:"select"; nocase; \
  pcre:"/union\s+select/i"; \
  sid:1000005; rev:1; )

كلمات التدفق والحالة

يقيّد الخيار flow نطاق القاعدة وفق حالة الاتصال واتجاهه، مما يقلل الإيجابيات الكاذبة والتكلفة.

  • established — يعمل فقط على جلسات TCP المكتملة
  • to_server / to_client — اتجاه الطلب مقابل الاستجابة

تجنّب مطابقة استجابات الخادم إلا عندما تكون الجلسة established وفي اتجاه to_client إطلاق القاعدة على الحزم الشاردة أو المنتحلة المصدر.

alert tcp $HOME_NET any -> $EXTERNAL_NET any ( \
  msg:"Beacon response"; \
  flow:established,to_client; \
  content:"|00 01 02 03|"; \
  sid:1000006; rev:1; )

البيانات الوصفية: sid وrev وmsg وreference

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

  • sid — معرّف فريد للتوقيع (استخدموا 1000000+ للقواعد المحلية)
  • rev — رقم المراجعة، ويُزاد مع كل تعديل
  • msg — نص التنبيه الذي يراه المحللون
  • classtype — الفئة التي تحدد الأولوية
  • reference — رابط إلى CVE أو نشرة أمنية

تتيح لكم قيم sid الثابتة وقيم rev المتزايدة تتبّع القواعد وتحديثها من دون تعطيل لوحات المعلومات وقواعد الكبت.

alert tcp any any -> $HOME_NET 445 ( \
  msg:"EternalBlue exploit attempt"; \
  flow:to_server,established; content:"|FF|SMB"; \
  classtype:attempted-admin; \
  reference:cve,2017-0144; sid:1000007; rev:2; )

الاختلافات بين Snort وSuricata

على الرغم من توافق القواعد بينهما، يختلف المحرّكان في الإمكانات:

  • Suricata متعدد الخيوط، ويحلل بروتوكولات التطبيقات أصليًا، ويستخرج الملفات، ويحسب JA3، ويصدر JSON بصيغة EVE
  • Snort 3 أعاد كتابة محرّكه لتحسين الأداء وتوفير نظام إضافات معياري

بعض الكلمات المفتاحية خاصة بمحرّك معين. تضيف Suricata كلمات مفتاحية لطبقة التطبيقات (tls.sni وdns.query وhttp.method) وميزات dataset/flowbits. عند مشاركة القواعد، استهدفوا القاسم المشترك الأدنى أو حافظوا على مجموعات قواعد خاصة بكل محرّك.

تقييد المعدل والعتبات

لمنع قاعدة من إغراق وحدة التحكم، طبّقوا العتبات. لا يُطلِق detection_filter القاعدة إلا بعد وقوع N من الأحداث خلال نافذة زمنية، بينما يحدّ threshold مع limit من حجم التنبيهات.

وهذا ضروري لاكتشاف هجمات القوة الغاشمة وعمليات الفحص، إذ لا يكون الحدث الواحد ذا دلالة، بينما تكون الدفعة المتتابعة هي الإشارة المهمة.

alert tcp any any -> $HOME_NET 22 ( \
  msg:"SSH brute force"; flow:to_server; \
  detection_filter:track by_src, count 5, seconds 60; \
  sid:1000008; rev:1; )

تحقق سريع

اقرؤوا قاعدة وتوقّعوا سلوكها.

مراجعة

يمكنكم الآن قراءة توقيعات Snort/Suricata وكتابتها:

  • القاعدة = الترويسة (الإجراء، والبروتوكول، والمصدر/الوجهة، والاتجاه) + خيارات جسم القاعدة
  • يحدد الإجراء سلوك IDS أو IPS: alert وdrop وreject وpass
  • تطابق content، مع offset/depth وبصيغة hex، بايتات الحمولة
  • تطابق المخازن المؤقتة اللاصقة (http.uri وtls.sni وdns.query) حقول البروتوكول التي جرى تحليلها
  • يتعامل pcre وnocase مع الأنماط المتغيرة
  • يقيّد flow النطاق وفق الحالة والاتجاه
  • تحافظ sid/rev/msg/reference على قابلية صيانة القواعد
  • تخفف العتبات ضوضاء هجمات القوة الغاشمة وعمليات الفحص

التالي: اكتشاف التهديدات من دون أي توقيع على الإطلاق.

الأسئلة الشائعة

هل درس «قواعد التوقيع باستخدام Snort وSuricata» مجاني؟

نعم — نص درس «قواعد التوقيع باستخدام Snort وSuricata» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cyber Security Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.

ماذا ستتعلم في «قواعد التوقيع باستخدام Snort وSuricata»؟

كتابة قواعد الشبكة وقراءتها. تتمرن على Cyber Security Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cyber Security Academy؟

لا تُشترط خبرة سابقة. Cyber Security Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «قواعد التوقيع باستخدام Snort وSuricata»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cyber Security Academy هذا؟

نعم. كل درس في Cyber Security Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مفاهيم IDS وIPS
  2. قواعد التوقيع باستخدام Snort وSuricata
  3. الكشف عن الشذوذ والسلوك
  4. الضبط والنشر
← العودة إلى Cyber Security Academy