كيفية بناء SIEM باستخدام Suricata ومجموعة Elastic على Rocky Linux 8

المقدمة

الدروس السابقة في هذه السلسلة قامت بتوجيهك خلال تثبيت وتكوين وتشغيل Suricata كنظام كشف التسلل (IDS) والوقاية من التسلل (IPS). كما تعلمت أيضًا عن قواعد Suricata وكيفية إنشاء قواعد خاصة بك.

في هذا البرنامج التعليمي، ستقوم باكتشاف كيفية دمج Suricata مع Elasticsearch و Kibana و Filebeat لبدء إنشاء أداة إدارة معلومات وأحداث الأمان (SIEM) الخاصة بك باستخدام مجموعة Elastic و Rocky Linux 8. تُستخدم أدوات SIEM لجمع وتجميع وتخزين وتحليل بيانات الأحداث للبحث عن تهديدات الأمان والأنشطة المشبوهة على شبكاتك وخوادمك.

المكونات التي ستستخدمها لبناء أداة SIEM الخاصة بك هي:

  • Elasticsearch لتخزين وفهرسة وترابط والبحث في الأحداث الأمنية التي تأتي من خادم Suricata الخاص بك.
  • Kibana لعرض وتصفح سجلات الأحداث الأمنية التي تم تخزينها في Elasticsearch.
  • Filebeat لتحليل ملف سجل Suricata’s eve.json وإرسال كل حدث إلى Elasticsearch للمعالجة.
  • Suricata لفحص حركة المرور على شبكتك بحثًا عن أحداث مشبوهة، وإما تسجيلها أو إسقاط الحزم غير الصالحة.

أولاً، ستقوم بتثبيت وتكوين Elasticsearch وKibana مع بعض إعدادات المصادقة المحددة. ثم ستقوم بإضافة Filebeat إلى نظام Suricata الخاص بك لإرسال سجلاته eve.json إلى Elasticsearch.

وأخيرًا، ستتعلم كيفية الاتصال بـ Kibana باستخدام SSH ومتصفح الويب الخاص بك، ثم تحميل والتفاعل مع لوحات Kibana التي تعرض أحداث وتنبيهات Suricata.

المتطلبات الأساسية

إذا كنت تتابع سلسلة الدروس هذه، فيجب أن يكون لديك بالفعل Suricata يعمل على خادم Rocky Linux. سيُشار إلى هذا الخادم باسم خادم Suricata الخاص بك.

سوف تحتاج أيضًا إلى خادم ثانٍ لاستضافة Elasticsearch و Kibana. سيُشار إلى هذا الخادم باسم خادم Elasticsearch الخاص بك. يجب أن يكون هذا الخادم خادم Rocky Linux 8 مع:

  • ذاكرة وصول عشوائي بحجم 4 جيجابايت و 2 وحدة معالجة مركزية مكونة باستخدام مستخدم sudo غير جذري. يمكنك تحقيق ذلك عن طريق اتباع إعداد الخادم الأولي مع Rocky Linux 8.

لأغراض هذا البرنامج التعليمي، يجب أن تكون كلتا الخوادم قادرة على التواصل باستخدام عناوين IP الخاصة. يمكنك استخدام شبكة افتراضية خاصة مثل WireGuard لربط الخوادم الخاصة بك، أو استخدام مزود خدمة سحابية يتميز بوجود شبكة خاصة بين الخوادم. يمكنك أيضًا اختيار تشغيل Elasticsearch و Kibana و Filebeat و Suricata على نفس الخادم للتجربة.

الخطوة 1 — تثبيت Elasticsearch و Kibana

الخطوة الأولى في هذا البرنامج التعليمي هي تثبيت Elasticsearch و Kibana على خادم Elasticsearch الخاص بك. للبدء، أضف مفتاح Elastic GPG إلى خادمك باستخدام الأمر التالي:

  1. sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

بعد ذلك، قم بإنشاء ملف elasticsearch.repo في الدليل /etc/yum/yum.repos.d الخاص بك بمحتويات الأمر التالي، باستخدام vi أو المحرر الذي تفضله. يضمن هذا استخدام مستودعات Elasticsearch الآخذة في الاعتبار عند تثبيت حزم جديدة عبر yum:

  1. sudo vi /etc/yum.repos.d/elasticsearch.repo
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

إذا كنت تستخدم vi، عند الانتهاء من إجراء التغييرات، اضغط ESC ثم :x لحفظ التغييرات في الملف والخروج.

الآن، قم بتثبيت Elasticsearch و Kibana باستخدام الأمر dnf. اضغط Y لقبول أي رسائل استفسار حول بصمات مفتاح GPG:

  1. sudo dnf install --enablerepo=elasticsearch elasticsearch kibana

الخيار --enablerepo يُستخدم لتجاوز الإعداد الافتراضي المعطل في ملف /etc/yum.repos.d/elasticsearch.repo. هذا النهج يضمن عدم ترقية حزم Elasticsearch و Kibana عن طريق الخطأ عند تثبيت تحديثات حزم أخرى على الخادم الخاص بك.

بمجرد الانتهاء من تثبيت الحزم، ابحث وسجل عنوان IP الخاص لخادمك باستخدام الأمر ip address show:

  1. ip -brief address show

ستتلقى مخرجات مشابهة للتالي:

Output
lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 159.89.122.115/20 10.20.0.8/16 2604:a880:cad:d0::e56:8001/64 fe80::b832:69ff:fe46:7e5d/64 eth1 UP 10.137.0.5/16 fe80::b883:5bff:fe19:43f3/64

واجهة الشبكة الخاصة في هذه المخرجات هي الجهاز المميز باللون الأصفر eth1، بعنوان IPv4 10.137.0.5. اسم الجهاز وعناوين IP الخاصة قد تكون مختلفة. بغض النظر عن اسم الجهاز الخاص بك وعنوان IP الخاص، ستكون العناوين من الكتل المحجوزة التالية:

  • 10.0.0.0 إلى 10.255.255.255 (البادئة 10/8)
  • 172.16.0.0 إلى 172.31.255.255 (البادئة 172.16/12)
  • 192.168.0.0 إلى 192.168.255.255 (البادئة 192.168/16)

إذا كنت ترغب في معرفة المزيد حول كيفية تخصيص هذه الكتل، قم بزيارة مواصفات RFC 1918

تسجيل عنوان IP الخاص بخادم Elasticsearch الخاص بك (في هذه الحالة 10.137.0.5). سيتم الإشارة إلى هذا العنوان باسم your_private_ip في بقية هذا البرنامج التعليمي. كما لاحظ اسم واجهة الشبكة، في هذه الحالة eth1. في الجزء التالي من هذا البرنامج التعليمي، ستقوم بتكوين Elasticsearch و Kibana للاستماع إلى الاتصالات على عنوان IP الخاص القادم من خادم Suricata الخاص بك.

الخطوة ٢ — تكوين Elasticsearch

يتم تكوين Elasticsearch لقبول الاتصالات المحلية فقط افتراضيًا. بالإضافة إلى ذلك، لا يوجد أي تفعيل للمصادقة، لذلك لن تتمكن من إرسال السجلات إليه أدوات مثل Filebeat. في هذا الجزء من البرنامج التعليمي، ستقوم بتكوين إعدادات الشبكة لـ Elasticsearch ثم تمكين وحدة الأمان المدمجة في Elasticsearch (xpack).

تكوين شبكة Elasticsearch

نظرًا لأن خوادم Elasticsearch و Suricata الخاصة بك متفرقة، ستحتاج إلى تكوين Elasticsearch للاستماع إلى الاتصالات على واجهة شبكتها الخاصة.

افتح ملف /etc/elasticsearch/elasticsearch.yml باستخدام vi أو محررك المفضل:

  1. sudo vi /etc/elasticsearch/elasticsearch.yml

العثور على السطر المعلق #network.host: 192.168.0.1 بين السطور 50-60 وإضافة سطر جديد بعد ذلك يكوّن إعداد network.bind_host كما هو موضح أدناه:

# بشكل افتراضي، يكون Elasticsearch قابلاً للوصول فقط على localhost. قم بتعيين عنوان
# مختلف هنا لتعريض هذا العقدة على الشبكة:
#
#network.host: 192.168.0.1
network.bind_host: ["127.0.0.1", "your_private_ip"]
#
# بشكل افتراضي، يستمع Elasticsearch لحركة المرور HTTP على أول منفذ مجاني ي
# يبدأ من 9200. قم بتعيين منفذ HTTP محدد هنا:

قم بتعويض عنوان IP الخاص بك بدلاً من العنوان your_private_ip. سيضمن هذا السطر أن يكون Elasticsearch متاحًا لا تزال على عنوانها المحلي بحيث يمكن لـ Kibana الوصول إليه، فضلاً عن عنوان IP الخاص بخادمك.

ثم، انتقل إلى نهاية الملف باستخدام اختصار vi SHIFT+G.

أضف السطور المظللة التالية إلى نهاية الملف:

. . .
discovery.type: single-node
xpack.security.enabled: true

إعداد discovery.type يسمح لـ Elasticsearch بالتشغيل كعقدة واحدة، بدلاً من تشغيله في مجموعة من خوادم Elasticsearch الأخرى. إعداد xpack.security.enabled يقوم بتشغيل بعض ميزات الأمان التي تم تضمينها مع Elasticsearch.

احفظ وأغلق الملف عند الانتهاء من تحريره.

أخيرًا، أضف قواعد جدار حماية لضمان وصول خادم Elasticsearch الخاص بك على واجهة الشبكة الخاصة به. إذا كنت قد اتبعت البرامج التعليمية اللازمة وتستخدم firewalld، قم بتشغيل الأوامر التالية:

  1. sudo firewall-cmd --permanent --zone=internal --change-interface=eth1
  2. sudo firewall-cmd --permanent --zone=internal --add-service=elasticsearch
  3. sudo firewall-cmd --permanent --zone=internal --add-service=kibana
  4. sudo systemctl reload firewalld.service

استبدل اسم واجهة الشبكة الخاصة بك في المكان المخصص لـ eth1 في الأمر الأول إذا كانت لديك واجهة مختلفة. هذا الأمر يغير قواعد الواجهة لاستخدام منطقة Firewalld internal، وهي أكثر انفتاحًا من المنطقة الافتراضية public.

الأوامر التالية تضيف قواعد للسماح بحركة مرور Elasticsearch على المنفذين 9200 و 9300، بالإضافة إلى حركة مرور Kibana على المنفذ 5601.

الأمر النهائي يعيد تحميل خدمة Firewalld مع تطبيق القواعد الدائمة الجديدة.

بعد ذلك، ستقوم بتشغيل خدمة Elasticsearch ومن ثم ستقوم بتكوين كلمات المرور لاستخدامها مع وحدة الأمان xpack.

بدء Elasticsearch

الآن بعد تكوين الشبكة وإعدادات الأمان xpack لـ Elasticsearch، يجب عليك بدء تشغيله ليتم تنفيذ التغييرات.

قم بتشغيل Elasticsearch باستخدام الأمر التالي systemctl:

  1. sudo systemctl start elasticsearch.service

بمجرد الانتهاء من بدء تشغيل Elasticsearch، يمكنك المتابعة إلى الجزء التالي من هذا البرنامج التعليمي حيث ستقوم بإنشاء كلمات مرور للمستخدمين الافتراضيين التي تم بناؤها في Elasticsearch.

تكوين كلمات مرور Elasticsearch

الآن بعد تمكين الإعداد xpack.security.enabled، تحتاج إلى إنشاء كلمات مرور للمستخدمين الافتراضيين لـ Elasticsearch. يتضمن Elasticsearch أداة في الدليل /usr/share/elasticsearch/bin يمكنها توليد كلمات مرور عشوائية تلقائيًا لهؤلاء المستخدمين.

قم بتشغيل الأمر التالي لـ cd إلى الدليل ثم قم بتوليد كلمات مرور عشوائية لجميع المستخدمين الافتراضيين:

  1. cd /usr/share/elasticsearch/bin
  2. sudo ./elasticsearch-setup-passwords auto

ستتلقى إخراجًا مثل التالي. عندما يُطلب منك المتابعة، اضغط y ثم RETURN أو ENTER:

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = eWqzd0asAmxZ0gcJpOvn

Changed password for user kibana_system
PASSWORD kibana_system = 1HLVxfqZMd7aFQS6Uabl

Changed password for user kibana
PASSWORD kibana = 1HLVxfqZMd7aFQS6Uabl

Changed password for user logstash_system
PASSWORD logstash_system = wUjY59H91WGvGaN8uFLc

Changed password for user beats_system
PASSWORD beats_system = 2p81hIdAzWKknhzA992m

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = 85HF85Fl6cPslJlA8wPG

Changed password for user elastic
PASSWORD elastic = 6kNbsxQGYZ2EQJiqJpgl

لن تتمكن من تشغيل الأداة مرة أخرى، لذا تأكد من تسجيل هذه الكلمات المرور في مكان آمن. ستحتاج إلى استخدام كلمة مرور المستخدم kibana_system في الجزء التالي من هذا البرنامج التعليمي، وكلمة مرور المستخدم elastic في الخطوة تكوين Filebeat في هذا البرنامج التعليمي.

في هذه المرحلة من البرنامج التعليمي، لقد انتهيت من تكوين Elasticsearch. يشرح القسم التالي كيفية تكوين إعدادات شبكة Kibana ووحدة الأمان xpack الخاصة بها.

الخطوة 3 — تكوين Kibana

في الجزء السابق من هذا البرنامج التعليمي، قمت بتكوين Elasticsearch للاستماع إلى الاتصالات على عنوان IP الخاص بخادم Elasticsearch الخاص بك. ستحتاج إلى القيام بنفس الشيء لـ Kibana بحيث يمكن لـ Filebeats على خادم Suricata الخاص بك الوصول إليه.

أولاً، ستمكين وظيفة أمان xpack في Kibana عن طريق إنشاء بعض الأسرار التي ستستخدمها Kibana لتخزين البيانات في Elasticsearch. ثم ستقوم بتكوين إعدادات الشبكة وتفاصيل المصادقة الخاصة بـ Kibana للاتصال بـ Elasticsearch.

تمكين xpack.security في Kibana

للبدء في إعدادات أمان xpack في Kibana، تحتاج إلى إنشاء بعض مفاتيح التشفير. تستخدم Kibana هذه المفاتيح لتخزين بيانات الجلسة (مثل الكوكيز)، بالإضافة إلى لوحات المعلومات المحفوظة وعرض البيانات في Elasticsearch.

يمكنك إنشاء المفاتيح التشفيرية المطلوبة باستخدام أداة kibana-encryption-keys المضمنة في الدليل /usr/share/kibana/bin. قم بتشغيل الأمر التالي للانتقال إلى الدليل ثم إنشاء المفاتيح:

  1. cd /usr/share/kibana/bin/
  2. sudo ./kibana-encryption-keys generate -q --force

تُقدم العلامة -q لتكتم تعليمات الأداة، وستضمن العلامة --force أن تنشئ مفاتيح جديدة. يجب أن تتلقى مخرجات مشابهة للتالي:

Output
xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585 xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b

انسخ هذه المفاتيح الثلاثة في مكان آمن. الآن ستقوم بإضافتها إلى ملف التكوين /etc/kibana/kibana.yml الخاص بـ Kibana.

افتح الملف باستخدام vi أو المحرر الذي تفضله:

  1. sudo vi /etc/kibana/kibana.yml

انتقل إلى نهاية الملف باستخدام الاختصار SHIFT+G في vi. ألصق الأسطر الثلاثة xpack التي قمت بنسخها في نهاية الملف:

/etc/kibana/kibana.yml
. . .

# تحديد الإعدادات المحلية المستخدمة لجميع النصوص التي يمكن ترجمتها، وتنسيقات التواريخ والأرقام.
# اللغات المدعومة هي: الإنجليزية - en، افتراضيًا، الصينية - zh-CN.
#i18n.locale: "en"

xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585
xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef
xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b

احتفظ بالملف مفتوحًا وانتقل إلى الجزء التالي حيث ستقوم بتكوين إعدادات الشبكة لـ Kibana.

تكوين شبكة Kibana

لتكوين شبكة Kibana بحيث تكون متاحة على عنوان IP الخاص بخادم Elasticsearch الخاص بك، ابحث عن السطر المعلق #server.host: "localhost" في /etc/kibana/kibana.yml. السطر قريب من بداية الملف. أضف سطرًا جديدًا بعد ذلك بعنوان IP الخاص بالخادم الخاص بك، كما هو موضح أدناه:

/etc/kibana/kibana.yml
# يتم خدمة Kibana من خلال خادم خلفي. هذا الإعداد يحدد المنفذ المستخدم.
#server.port: 5601

# يحدد العنوان الذي سيقوم خادم Kibana بربطه به. عناوين IP وأسماء الأجهزة الأمانية هي قيمتان صالحتان.
# الافتراضي هو 'localhost'، مما يعني عادة أن الآلات البعيدة لن تتمكن من الاتصال.
# للسماح بالاتصال من مستخدمين عن بعد، قم بتعيين هذا المعلم إلى عنوان غير عنوان الدورة الذاتية.
#server.host: "localhost"
server.host: "your_private_ip"

استبدل عنوان IP الخاص بك بدلاً من your_private_ip.

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

تكوين اعتمادات كيبانا

هناك طريقتان لتعيين اسم المستخدم وكلمة المرور التي يستخدمها كيبانا للمصادقة على إيليستيك سيرتش. الطريقة الأولى هي تحرير ملف التكوين /etc/kibana/kibana.yml وإضافة القيم هناك. الطريقة الثانية هي تخزين القيم في متجر كيبانا keystore، وهو ملف مخفي يمكن لكيبانا استخدامه لتخزين الأسرار.

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

إذا كنت تفضل تحرير الملف بدلاً من ذلك، فإن الإعدادات التي يجب تكوينها فيه هي elasticsearch.username و elasticsearch.password.

إذا اخترت تحرير ملف التكوين، فتخطى باقي الخطوات في هذا القسم.

لإضافة سر إلى متجر الأسرار باستخدام أداة kibana-keystore، انتقل أولاً إلى دليل /usr/share/kibana/bin. بعد ذلك، قم بتشغيل الأمر التالي لتعيين اسم المستخدم لكيبانا:

  1. cd /usr/share/kibana/bin
  2. sudo ./kibana-keystore add elasticsearch.username

سوف تتلقى رسالة مماثلة للتالية:

Username Entry
Enter value for elasticsearch.username: *************

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

الآن كرر العملية، هذه المرة لحفظ كلمة المرور. تأكد من نسخ كلمة المرور للمستخدم kibana_system الذي قمت بإنشائه في الجزء السابق من هذا البرنامج التعليمي. للإشارة، في هذا البرنامج التعليمي، الكلمة السرية المثالية هي 1HLVxfqZMd7aFQS6Uabl.

قم بتشغيل الأمر التالي لتعيين كلمة المرور:

  1. sudo ./kibana-keystore add elasticsearch.password

عند الطلب، الصق كلمة المرور لتجنب أي أخطاء في النسخ:

Password Entry
Enter value for elasticsearch.password: ********************

بدء تشغيل كيبانا

الآن بعد أن قمت بتكوين الشبكة وإعدادات الأمان xpack لكيبانا، بالإضافة إلى إضافة بيانات اعتماد إلى مستودع المفاتيح، تحتاج إلى بدء تشغيله ليتم تطبيق التغييرات.

قم بتشغيل الأمر التالي من systemctl لإعادة تشغيل كيبانا:

  1. sudo systemctl start kibana.service

بمجرد بدء تشغيل كيبانا، يمكنك المتابعة إلى الجزء التالي من هذا البرنامج التعليمي حيث ستقوم بتكوين Filebeat على خادم Suricata الخاص بك لإرسال سجلاته إلى Elasticsearch.

الخطوة 4 — تثبيت Filebeat

الآن بعد تكوين عمليات Elasticsearch وKibana بالإعدادات الصحيحة للشبكة والمصادقة، الخطوة التالية هي تثبيت وإعداد Filebeat على خادم Suricata.

للبدء في تثبيت Filebeat، أضف مفتاح Elastic GPG إلى خادم Suricata الخاص بك باستخدام الأمر التالي:

  1. sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

بعد ذلك، قم بإنشاء ملف elasticsearch.repo في الدليل /etc/yum/yum.repos.d الخاص بك بالمحتويات التالية، باستخدام vi أو المحرر المفضل لديك:

  1. sudo vi /etc/yum.repos.d/elasticsearch.repo
/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

عندما تنتهي من إجراء التغييرات، قم بحفظ الملف والخروج. الآن، قم بتثبيت حزمة Filebeat باستخدام الأمر dnf:

  1. sudo dnf install --enablerepo=elasticsearch filebeat

بعد ذلك، ستحتاج إلى تكوين Filebeat للاتصال بكل من Elasticsearch وKibana. افتح ملف التكوين /etc/filebeat/filebeat.yml باستخدام vi أو المحرر المفضل لديك:

  1. sudo vi /etc/filebeat/filebeat.yml

ابحث عن قسم Kibana في الملف حوالي السطر 100. أضف سطرًا بعد السطر المعلق #host: "localhost:5601" الذي يشير إلى عنووان IP الخاص بمثيل Kibana والمنفذ:

/etc/filebeat/filebeat.yml
. . .
# بدءاً من إصدار Beats 6.0.0، تحميل اللوحات عبر واجهة برمجة التطبيقات في Kibana.
# هذا يتطلب تكوين نقطة نهاية Kibana.
setup.kibana:

  # استضافة Kibana
  # يمكن ترك البنية التحتية والمنفذ وسيتم ضبطها على القيمة الافتراضية (http و 5601)
  # في حال قمت بتحديد مسار إضافي، فإن البنية التحتية مطلوبة: http://localhost:5601/path
  # يجب دائمًا تحديد عناوين IPv6 كما يلي: https://[2001:db8::1]:5601
  #host: "localhost:5601"
  host: "your_private_ip:5601"

. . .

هذا التغيير سيضمن أن يمكن لـ Filebeat الاتصال بـ Kibana لإنشاء مؤشرات SIEM المختلفة ولوحات القيادة وخطوط المعالجة في Elasticsearch للتعامل مع سجلات Suricata الخاصة بك.

المرحلة التالية هي البحث عن قسم Elasticsearch Output في الملف حول السطر 130 تقريبًا وتحرير إعدادات hosts و username و password لتتطابق مع قيم الخادم Elasticsearch الخاص بك:

output.elasticsearch:
  # مصفوفة من الخوادم للاتصال بها.
  hosts: ["your_private_ip:9200"]

  # بروتوكول - إما `http` (الافتراضي) أو `https`.
  #protocol: "https"

  # بيانات اعتماد المصادقة - إما مفتاح API أو اسم المستخدم/كلمة المرور.
  #api_key: "id:api_key"
  username: "elastic"
password: "6kNbsxQGYZ2EQJiqJpgl"

. . .

استبدل عنوان IP الخاص بخادم Elasticsearch الخاص بك في السطر hosts . قم بفك تأمين الحقل username واتركه مضبوطًا على مستخدم elastic . قم بتغيير حقل password من changeme إلى كلمة مرور المستخدم elastic التي أنشأتها في القسم Configuring Elasticsearch Passwords من هذا البرنامج التعليمي.

احفظ وأغلق الملف عند الانتهاء من تحريره. المرحلة التالية هي تمكين وحدة Suricata المدمجة في Filebeats باستخدام الأمر التالي:

  1. sudo filebeat modules enable suricata

الآن بعد أن تم تكوين Filebeat للاتصال بـ Elasticsearch و Kibana، مع تمكين وحدة Suricata، فإن الخطوة التالية هي تحميل لوحات القيادة SIEM وخطوط الأنابيب إلى Elasticsearch.

قم بتشغيل الأمر filebeat setup . قد يستغرق تحميل كل شيء بضع دقائق:

  1. sudo filebeat setup

بمجرد اكتمال الأمر، يجب أن تتلقى إخراجًا مثل التالي:

Output
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable) Loaded dashboards Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead. See more: https://www.elastic.co/guide/en/machine-learning/current/index.html It is not possble to load ML jobs into an Elasticsearch 8.0.0 or newer using the Beat. Loaded machine learning job configurations Loaded Ingest pipelines

إذا لم تكن هناك أخطاء، استخدم الأمر systemctl لبدء تشغيل Filebeat. سيبدأ بإرسال الأحداث من سجل eve.json لـ Suricata إلى Elasticsearch بمجرد تشغيله.

  1. sudo systemctl start filebeat.service

الآن بعد تكوين Filebeat و Kibana و Elasticsearch لمعالجة سجلات Suricata الخاصة بك، آخر خطوة في هذا البرنامج التعليمي هي الاتصال بـ Kibana واستكشاف لوحات المعلومات الأمنية وإدارة الأحداث.

الخطوة 5 — التنقل في لوحات معلومات الأمان الأمنية في Kibana

Kibana هو المكون الرسومي للمكدس المرن. ستستخدم Kibana مع متصفحك لاستكشاف بيانات حدث وتنبيه Suricata. نظرًا لتكوين Kibana ليكون متاحًا فقط عبر عنوان IP الخاص بخادم Elasticsearch الخاص بك، ستحتاج إلى استخدام نفق SSH للاتصال بـ Kibana.

الاتصال بـ Kibana عبر SSH

SSH لديه خيار -L الذي يتيح لك توجيه حركة المرور الشبكية عبر منفذ محلي عبر اتصاله بعنوان IP ومنفذ بعيد على الخادم. ستستخدم هذا الخيار لتوجيه حركة المرور من متصفحك إلى مثيل Kibana الخاص بك.

في نظام التشغيل Linux و macOS والإصدارات المحدثة من Windows 10 والإصدارات الأحدث، يمكنك استخدام عميل SSH المضمن لإنشاء النفق. ستستخدم هذا الأمر في كل مرة ترغب في الاتصال بـ Kibana. يمكنك إغلاق هذا الاتصال في أي وقت ثم تشغيل أمر SSH مرة أخرى لإعادة إنشاء النفق.

قم بتشغيل الأمر التالي في وحدة التحكم على سطح مكتب أو كمبيوتر محمول محلي لإنشاء النفق SSH إلى Kibana:

  1. ssh -L 5601:your_private_ip:5601 sammy@203.0.113.5 -N

المعاملات المختلفة ل SSH هي:

  • يقوم العلم -L بتوجيه حركة المرور إلى النظام المحلي على البورت 5601 إلى الخادم البعيد.
  • الجزء your_private_ip:5601 من الأمر يحدد الخدمة على خادم Elasticsearch الخاص بك حيث سيتم توجيه حركة المرور إليها. في هذه الحالة، تكون تلك الخدمة هي Kibana. تأكد من استبدال عنوان IP الخاص بخادم Elasticsearch الخاص بك بدلاً من your_private_ip.
  • عنوان 203.0.113.5 هو عنوان الآي بي العام الذي تستخدمه للاتصال بالخادم الخاص بك وإدارته. استبدل عنوان IP العام الخاص بخادم Elasticsearch الخاص بك مكانه.
  • العلم -N يُوجه SSH بعدم تشغيل أمر مثل شل تفاعلي /bin/bash، وبدلاً من ذلك يحتفظ فقط بفتح الاتصال. يُستخدم عمومًا عند إعادة توجيه المنافذ مثلما في هذا المثال.

إذا كنت ترغب في إغلاق النفق في أي وقت، اضغط CTRL+C.

على نظام Windows، يجب أن تشبه وحدة التحكم الخاصة بك اللقطة الشاشة التالية:

ملاحظة: قد يُطلب منك إدخال كلمة مرور إذا لم تكن تستخدم مفتاح SSH. اكتبها أو الصقها في النافذة واضغط ENTER أو RETURN.

على macOS و Linux، ستكون واجهة الطرفية الخاصة بك مشابهة لما هو موضح في الصورة الشاشة التالية:

بمجرد الاتصال بخادم Elasticsearch الخاص بك عبر SSH مع توجيه المنفذ في المكان، افتح متصفحك وقم بزيارة http://127.0.0.1:5601. ستتم إعادة توجيهك إلى صفحة تسجيل الدخول لـ Kibana:

إذا لم يتمكن متصفحك من الاتصال بـ Kibana، فستتلقى رسالة مثل الرسالة التالية في واجهة الطرفية الخاصة بك:

Output
channel 3: open failed: connect failed: No route to host

تشير هذه الخطأ إلى أن نفق SSH الخاص بك غير قادر على الوصول إلى خدمة Kibana على الخادم الخاص بك. تأكد من أنك قد حددت العنوان IP الخاص الصحيح لخادم Elasticsearch الخاص بك وأعد تحميل الصفحة في متصفحك.

قم بتسجيل الدخول إلى خادم Kibana الخاص بك باستخدام elastic كاسم مستخدم، وكلمة المرور التي نسختها سابقًا في هذا البرنامج التعليمي للمستخدم.

تصفح لوحات معلومات SIEM في Kibana

بمجرد تسجيل الدخول إلى Kibana، يمكنك استكشاف لوحات Suricata التي قام Filebeat بتكوينها لك.

في حقل البحث في أعلى صفحة الترحيب بـ Kibana، أدخل مصطلحات البحث type:dashboard suricata. سيعيد هذا البحث نتيجتين: لوحات الأحداث والتنبيهات في Suricata كما هو موضح في الصورة الشاشة التالية:

انقر على النتيجة [Filebeat Suricata] مراجعة الأحداث لزيارة لوحة التحكم Kibana التي تظهر نظرة عامة على جميع الأحداث التي تم تسجيلها بواسطة Suricata:

لزيارة لوحة تحكم تنبيهات Suricata، كرر البحث أو انقر على رابط Alerts المضمن في لوحة الأحداث. يجب أن تكون صفحتك مشابهة للصورة التالية:

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

كما أن لدى Kibana مجموعة مدمجة من لوحات التحكم الأمنية التي يمكنك الوصول إليها باستخدام القائمة في الجانب الأيسر من نافذة المتصفح. انتقل إلى لوحة التحكم الشبكة للحصول على نظرة عامة على الأحداث المعروضة على الخريطة، بالإضافة إلى بيانات مجتمعة حول الأحداث على شبكتك. يجب أن تكون لوحة التحكم الخاصة بك مشابهة للصورة التالية:

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

الختام

في هذا البرنامج التعليمي قمت بتثبيت وتكوين Elasticsearch و Kibana على خادم منفصل. قمت بتكوين كلتا الأدوات لتكون متاحة على عنوان IP خاص. كما قمت بتكوين إعدادات المصادقة لـ Elasticsearch و Kibana باستخدام وحدة الأمان xpack المضمنة مع كل أداة.

بعد الانتهاء من خطوات تكوين Elasticsearch و Kibana، قمت أيضًا بتثبيت وتكوين Filebeat على خادم Suricata الخاص بك. قمت باستخدام Filebeat لملء لوحات التحكم الخاصة بـ Kibana وبدء إرسال سجلات Suricata إلى Elasticsearch.

أخيرًا، قمت بإنشاء نفق SSH إلى خادم Elasticsearch الخاص بك وتسجيل الدخول إلى Kibana. حددت لوحات التحكم الجديدة لـ Suricata Events وAlerts، بالإضافة إلى لوحة الشبكة.

البرنامج التعليمي الأخير في هذه السلسلة سيقودك خلال استخدام وظائف SIEM في Kibana لمعالجة تنبيهات Suricata الخاصة بك. فيه، ستستكشف كيفية إنشاء حالات لتتبع التنبيهات المحددة، والجداول الزمنية لربط تدفقات الشبكة، والقواعد لمطابقة أحداث Suricata المحددة التي ترغب في تتبعها أو تحليلها بمزيد من التفصيل.

Source:
https://www.digitalocean.com/community/tutorials/how-to-build-a-siem-with-suricata-and-elastic-stack-on-rocky-linux-8