المقدمة
الدروس السابقة في هذه السلسلة قد قدمت لك الإرشادات حول كيفية تثبيت وتكوين Suricata. كما شرحت كيفية استخدام Filebeat لإرسال التنبيهات من خادم Suricata الخاص بك إلى خادم Elastic Stack، لاستخدامها مع وظيفته المدمجة لإدارة المعلومات والأحداث الأمنية (SIEM).
في هذا الدرس النهائي في السلسلة، ستقوم بإنشاء قواعد Kibana المخصصة وتوليد التنبيهات ضمن لوحات SIEM في Kibana. بمجرد وجود القواعد في المكان وفهمك لمكان وكيفية تصفية سجلات Suricata باستخدام Kibana، ستستكشف كيفية إنشاء وإدارة الحالات باستخدام أدوات تحليل الجدول الزمني في Kibana.
بحلول نهاية هذا الدرس، ستمتلك نظام SIEM يمكنك استخدامه لتتبع وتحقيق الأحداث الأمنية عبر جميع خوادم الشبكة الخاصة بك.
المتطلبات المسبقة
إذا كنت تتابع سلسلة الدروس هذه، يجب أن تكون قد حصلت بالفعل على خادم بذاكرة وصول عشوائي (RAM) بحجم 4 جيجابايت على الأقل ومعالجين (CPUs) اثنين، ومستخدم غير جذر مُكوّن. لأغراض هذا الدليل، يمكنك إعداد هذا عن طريق اتباع دلائل إعداد الخادم الأولية الخاصة بنا لأحد الأنظمة التشغيل التالية: Ubuntu 20.04، Debian 11، أو Rocky Linux 8، حسب نظام التشغيل الذي تفضله.
سيكون لديك أيضًا حاجة لتثبيت وتشغيل Suricata على خادمك. إذا كنت بحاجة إلى تثبيت Suricata على خادمك، يمكنك القيام بذلك باستخدام أحد البرامج التعليمية التالية حسب نظام التشغيل الخاص بك:
- Ubuntu 20.04: كيفية تثبيت Suricata على Ubuntu 20.04
- Debian 11: كيفية تثبيت Suricata على Debian 11
- Rocky Linux 8: كيفية تثبيت Suricata على Rocky Linux 8
ستحتاج أيضًا إلى خادم يعمل بالتراكم الأساسي المرن (Elastic Stack) ومُكوّن بحيث يمكن لبرنامج Filebeat إرسال السجلات من خادم Suricata الخاص بك إلى Elasticsearch. إذا كنت بحاجة إلى إنشاء خادم Elastic Stack، استخدم أحد البرامج التعليمية من القائمة التالية التي تتطابق مع نظام التشغيل الخاص بك:
- أوبونتو 20.04: كيفية بناء نظام إدارة المعلومات والأحداث الأمنية (SIEM) باستخدام Suricata ومكدس Elastic على أوبونتو 20.04
- ديبيان 11: كيفية بناء نظام إدارة المعلومات والأحداث الأمنية (SIEM) باستخدام Suricata ومكدس Elastic على ديبيان 11
- Rocky Linux 8: كيفية بناء نظام إدارة المعلومات والأحداث الأمنية (SIEM) باستخدام Suricata ومكدس Elastic على روكي لينكس 8
تأكد من قدرتك على تسجيل الدخول إلى كيبانا على خادم Elasticsearch الخاص بك، وتوجد أحداث في لوحات تحكم Suricata Alerts and Events المختلفة.
بمجرد وجود جميع المتطلبات الأساسية، افتح نفق SSH إلى خادم كيبانا الخاص بك وقم بتسجيل الدخول إلى كيبانا باستخدام متصفحك باستخدام بيانات الاعتماد التي أنشأتها في البرنامج التعليمي السابق.
الخطوة 1 — تمكين مفاتيح API في Elasticsearch
قبل أن تتمكن من إنشاء قواعد وتنبيهات وجداول زمنية في كيبانا، تحتاج إلى تمكين إعداد وحدة أمان xpack.
افتح ملف /etc/elasticsearch/elasticsearch.yml الخاص بك باستخدام nano أو المحرر الذي تفضله.
أضف السطر المميز الموضح أدناه إلى نهاية الملف:
. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
احفظ وأغلق الملف عند الانتهاء من التحرير. إذا كنت تستخدم nano، يمكنك القيام بذلك باستخدام CTRL+X، ثم Y و ENTER للتأكيد.
أعد تشغيل Elasticsearch الآن بحيث يتم تطبيق الإعداد الجديد.
أنت الآن جاهز لتكوين القواعد، وفحص التنبيهات، وإنشاء الجداول الزمنية والحالات في كيبانا.
الخطوة ٢ — إضافة القواعد إلى كيبانا
لاستخدام وظيفة SIEM في كيبانا مع بيانات حدث Suricata، ستحتاج إلى إنشاء قواعد ستولد تنبيهات حول الأحداث الواردة. قم بزيارة لوحة المعايير في صفحة تطبيق الأمان في كيبانا لإنشاء القواعد أو استيرادها.
لأغراض هذا البرنامج التعليمي، سنستخدم التواقيع التالية لاكتشاف حركة المرور الموجهة إلى خادم على منافذ غير متطابقة (حركة SSH و HTTP و TLS على التوالي):
alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)
alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)
alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)
إذا كنت تستخدم تواقيعك الخاصة، أو تلك من مجموعة قواعد، تأكد من قدرتك على توليد التنبيهات والوصول إلى الأحداث المقابلة في لوحات معلومات Suricata الافتراضية في كيبانا.
الآن قم بزيارة صفحة القواعد في تطبيق الأمان في كيبانا http://localhost:5601/app/security/rules/. انقر على زر إنشاء قاعدة جديدة في أعلى الصفحة على اليمين.
تأكد من تحديد بطاقة نوع القاعدة الاستعلام المخصص. انتقل إلى حقل الإدخال الاستعلام المخصص والصق ما يلي فيه:
rule.id: "1000000" or rule.id :"1000001"
تأكد من أن قيم rule.id
تتطابق مع قيمة sid
لـ Suricata للهجوم أو الهجمات التي ترغب في تنبيه حولها.
غير قائمة المعاينة السريعة إلى الشهر الماضي ثم انقر على معاينة النتائج. بافتراض وجود أحداث متطابقة في سجلات Suricata الخاصة بك، ستقوم الصفحة بالتحديث مباشرةً مع رسم بياني يوضح التنبيهات من الشهر الماضي. يجب أن تشبه صفحتك لقطة الشاشة التالية:
انقر على متابعة للمتابعة في إضافة اسم إلى حقل اسم القاعدة، الذي يُطلب لكل قاعدة تقوم بإضافتها. أضف اسمًا إلى حقل اسم القاعدة. في هذا المثال، سنستخدم وصف الرسالة من قاعدة Suricata SSH TRAFFIC on non-SSH port
. أضف أيضًا وصفًا للقاعدة. سنستخدم التحقق من محاولات الاتصال بـ SSH على منافذ غير قياسية
في هذا المثال.
يمكنك أيضًا توسيع القسم إعدادات متقدمة وإضافة تفاصيل حول القاعدة. على سبيل المثال، يمكنك إضافة شرح حول كيفية التعامل مع تنبيه تم إنشاؤه بواسطة القاعدة، أو الربط بمقالات الباحثين الأمنيين حول نوع هجوم معين.
عندما تنتهي من إضافة اسم القاعدة والوصف، والحقول الإضافية الاختيارية، انقر فوق متابعة للمتابعة إلى الخطوة 3 في إنشاء القاعدة.
اترك إعدادات القسم التالي جدول القاعدة مع قيمها الافتراضية وانقر على متابعة.
أخيرًا، في خطوة إجراءات القاعدة، انقر على إنشاء وتنشيط القاعدة.
سيتم توجيهك إلى صفحة جديدة تظهر تفاصيل حول القاعدة:
ملاحظة: قد يستغرق بضع دقائق لظهور بيانات التنبيه في البداية. يحدث هذا التأخير لأن الجدول الزمني الافتراضي للقاعدة هو تشغيل كل 5 دقائق.
إذا كانت هناك قواعد Suricata أخرى ترغب في الحصول على تنبيهات حولها، كرر الخطوات أعلاه، واستبدل معرف التوقيع sid
في استعلام Kibana المخصص rule.id
الميدان.
بمجرد وجود قاعدة أو قواعد في المكان، أنت جاهز للمتابعة إلى الخطوة التالية حيث ستفحص التنبيهات وتقوم بإنشاء حالة أو حالات لإدارتها.
الخطوة 3 — إنشاء جدول زمني لتتبع التنبيهات المتعلقة بحركة مرور SSH
الآن بعد أن لديك قاعدة أو قواعد مكونة لتوليد تنبيهات في تطبيق SIEM في Kibana ، ستحتاج إلى طريقة لتجميع وإدارة التنبيهات بشكل أكبر. للبدء ، قم بزيارة لوحة تحكم التنبيهات في Kibana: http://127.0.0.1:5601/app/security/alerts.
تأكد من أنك قد قمت بتوليد بعض حركة المرور غير الصالحة التي تتطابق مع توقيع Suricata أو التواقيع التي تستخدمها. على سبيل المثال ، يمكنك تنشيط قاعدة Suricata المثالية sid:1000000
عن طريق تشغيل أمر مثل الآتي من جهازك المحلي:
سيحاول هذا الأمر الاتصال بالخادم الخاص بك باستخدام SSH على البورت 80 بدلاً من البورت الافتراضي 22 ويجب أن يؤدي إلى تنبيه. قد يستغرق بضع دقائق حتى يظهر التنبيه في Kibana ، حيث يجب أن يتم معالجته بواسطة Elasticsearch والقاعدة التي قمت بإنشائها في Kibana.
فيما بعد ، ستضيف حقل comnunity_id
إلى جدول التنبيهات الذي يتم عرضه في أسفل الصفحة. تذكر من البرنامج التعليمي الأول أن هذا الحقل يتم إنشاؤه بواسطة Suricata ويمثل عناوين IP ومنافذ فريدة تم تضمينها في تدفق الشبكة. انقر فوق زر Fields وفي الصندوق الحواري النموذجي الذي يظهر ، أدخل network.community_id
ثم حدد مربع الاختيار بجانب اسم الحقل:
أغلق النموذج وسيتم إضافة الحقل إلى جدول التنبيهات. الآن قم بتمرير الماوس فوق أي من التنبيهات التي تحمل نفس قيمة community_id
وانقر على أيقونة Add to timeline investigation. سيضمن هذا أن يتم إضافة جميع التنبيهات التي تشترك في community_id
الذي أضافته Suricata إلى الحدث إلى الجدول الزمني لإجراء المزيد من التحقيق:
ثم انقر على الرابط Untitled Timeline في أسفل يسار المتصفح الخاص بك. سيقوم هذا الرابط بأخذك إلى صفحة تعرض فقط التنبيهات التي تحتوي على حقل Suricata community_id
الذي ترغب في التحقيق فيه.
تعرض صفحة الجدول الزمني تفاصيل أكثر حول الحزم الفردية المرتبطة بتنبيه أو تدفق شبكة. يمكنك استخدام الجدول الزمني للحصول على فكرة أفضل حول متى بدأ تدفق الشبكة المشبوه، ومن أين جاء، ومدى مدته.
انقر فوق الزر All data sources على الجانب الأيمن من الصفحة وحدد الزر Detection Alerts، ثم انقر Save. ستقوم هذه الخيارات بتقييد الجدول الزمني لعرض التنبيهات التي يولدها Kibana فقط. بدون هذا الخيار، ستتم تضمين تنبيهات Suricata أيضًا في الجدول الزمني.
لحفظ الجدول الزمني الجديد الخاص بك، انقر على أيقونة القلم في أعلى يسار صفحة الجدول الزمني. يبرز اللقطة الشاشية التالية مكان العثور على أيقونة القلم وزر All data sources:
يمكنك إضافة نص إلى حقل الوصف إذا كانت هناك معلومات إضافية ترغب في إضافتها إلى الجدول الزمني. بمجرد الانتهاء من تحرير اسم الجدول الزمني والوصف، انقر فوق زر Save في أسفل يمين الحوار النمطي.
كرر الخطوات أعلاه لإنشاء جداول زمنية للتنبيهات الأخرى التي ترغب في فحصها بمزيد من التفصيل لاحقًا.
في الخطوة التالية، ستستخدم عروض جداول الزمني الخاصة بك لربط التنبيهات بتطبيقات Cases في Kibana في مجموعة أدوات SIEM.
الخطوة ٤ — إنشاء وإدارة حالات SIEM
في الخطوة السابقة، قمت بإنشاء جدول زمني لتجميع التنبيهات الفردية والحزم معًا استنادًا إلى حقل community_id
في Suricata. في هذا القسم من البرنامج التعليمي، ستقوم بإنشاء حالة لتتبع وإدارة التنبيهات في الجدول الزمني الخاص بك.
لإنشاء حالة جديدة من الجدول الزمني الخاص بك، تأكد من أنك في صفحة الجدول الزمني في متصفحك. انقر على زر المرفقة بالحالة في أعلى الصفحة، ثم انقر على زر المرفقة بحالة جديدة من القائمة التي تظهر.
سيتم توجيهك إلى صفحة حيث يمكنك إدخال معلومات حول الحادث الذي تقوم بالتحقيق فيه. في لقطة الشاشة النموذجية التالية، تكون الحالة هي تنبيهات مثالنا عن حركة SSH على منفذ SSH غير مشفر:
املأ الحقول باسم وصفي وعلامة أو علامات اختيارية. في هذا المثال، اسم الحالة هو حركة SSH على منفذ غير مشفر من 203.0.113.5
لأن هذا هو نوع المرور والمضيف الذي نقوم بالتحقيق فيه. مع العديد من الأحداث للتحقيق في نظام SIEM الخاص بك، سيساعدك نظام التسمية مثل هذا في تتبع الحالات والجداول الزمنية والتنبيهات لأن الاسم سيتوافق مع تنبيه Kibana ومع حقل رسالة توقيع Suricata.
انتقل إلى أسفل الصفحة وانقر فوق زر إنشاء حالة. سيتم تحويل متصفحك إلى صفحة تعرض الحالة المحفوظة. يمكنك إضافة تعليقات بتنسيق Markdown مع معلومات إضافية، بالإضافة إلى تحرير الحالة من هذه الصفحة.
بعد ذلك، انقر فوق الرابط في الوصف للانتقال إلى الجدول الزمني للحالة التي قمت بإضافتها في الخطوة السابقة من هذا البرنامج التعليمي.
بالنسبة لكل تنبيه ترغب في تضمينه في الحالة، انقر على أيقونة إجراءات إضافية على التنبيه. انقر إضافة إلى الحالة الحالية.
انقر فوق اسم الحالة في النافذة المنبثقة لإضافة التنبيه إلى الحالة. تأكد من تحديد الحالة التي تتوافق مع الجدول الزمني والتنبيهات التي تقوم بالتحقيق فيها. كرر إضافة كل تنبيه في القائمة إلى الحالة الحالية.
الآن انتقل إلى تطبيق الحالات مرة أخرى في Kibana](http://localhost:5601/app/security/cases) باستخدام القائمة التنقل على الجانب الأيسر من الصفحة. انقر فوق حالتك ولاحظ كيف يتم سرد التنبيهات التي قمت بإضافتها في تفاصيل الحالة:
من هنا يمكنك التمرير إلى أسفل الحالة وإضافة أي معلومات إضافية ترغب في ذلك. على سبيل المثال، أي خطوات قمت باتخاذها للتحقيق في تنبيه أو تنبيهات، التغييرات في تكوين Suricata مثل قاعدة جديدة أو محررة، التصعيد إلى عضو آخر في الفريق أو أي شيء آخر يتعلق بالحالة.
بمجرد أن تشعر بالراحة في إنشاء حالات لأنواع مختلفة من التنبيهات التي ترغب في تتبعها، يمكنك الآن استخدام أدوات SIEM في Kibana لتنظيم وتنسيق التحقيق في أي تنبيه في موقع واحد مركزي.
الختام
في هذا البرنامج التعليمي، قمت بتعزيز نظام Suricata و Elastic Stack SIEM الحالي الخاص بك عن طريق إضافة قواعد إلى Kibana التي تولد تنبيهات حول حركة مرور محددة من الاهتمام. كما قمت بإنشاء جدول زمني أو جداول زمنية لتجميع مجموعات من التنبيهات بناءً على community_id
الخاص بها. وأخيرًا، قمت بإنشاء حالة وربطت الجدول الزمني الخاص بك بها، جنبًا إلى جنب مع التنبيهات الفردية المهمة.
مع وجود هذا النظام SIEM في مكانه، يمكنك الآن تتبع الأحداث الأمنية عبر أنظمتك بمقياس تقريبي لأي حجم تقريبًا. كلما أصبحت أكثر توافقًا مع Suricata وتتبع التنبيهات التي يولدها في Kibana SIEM الخاص بك، ستتمكن من تخصيص تنبيهات Suricata والإجراءات الافتراضية التي يتخذها لتناسب شبكتك الخاصة.
لمزيد من المعلومات حول أدوات SIEM في Kibana، قم بزيارة الصفحة الرسمية وثائق Elastic Security. تشرح الأدلة الموجودة هناك كيفية استخدام القواعد، والتنبيهات، والجداول الزمنية، والحالات بتفصيل أكبر.
بالنسبة لواجهة SIEM أكثر خفة، قد تكون مهتمًا أيضًا بـ EveBox، التي تقدم جميع بيانات حدث Suricata ووظائف SIEM على صفحة واحدة.