تكوين Suricata كنظام للوقاية من الاختراق (IPS)

مع الزيادة في شعبية الجرائم الإلكترونية ، هناك حاجة ملحة للشركات للحصول على حماية أفضل ضد القراصنة. يعتبر نظام الوقاية من التسلل (IPS) واحدة من أفضل الطرق للدفاع ضد هجمات الكمبيوتر. ولكن قبل تصفح الإنترنت بحثًا عن IPS ، جرب Suricata.

في هذا البرنامج التعليمي ، ستتعلم كيفية تكوين نظام Suricata IPS الذي يعمل بكفاءة عالية على خادم Linux لحماية شبكتك من التهديدات عبر الإنترنت.

جاهز؟ اقرأ وابدأ في حماية شبكتك!

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

سيكون هذا البرنامج التعليمي عرضًا عمليًا. إذا كنت ترغب في المتابعة ، تأكد من أن لديك ما يلي:

  • A Linux server – This demo uses Ubuntu 20.04 LTS, but any Linux distribution will work.
  • A non-root user with sudo privileges.
  • بناءً على تكوينك الشبكي وكيف تنوي استخدام Suricata ، قد تحتاج إلى المزيد أو أقل من وحدة المعالجة المركزية وذاكرة الوصول العشوائي لخادمك. بشكل عام ، كلما خططت لفحص المزيد من حركة المرور ، كلما خصصت المزيد من الموارد لـ Suricata. في بيئة المطور ، خطط لاستخدام ما لا يقل عن 2 وحدات المعالجة المركزية و 8 غيغابايت من ذاكرة الوصول العشوائي للبدء بها حتى يتمكن Suricata من القيام بمهامه دون المساس بجودة الخدمة لجميع المستخدمين.

تثبيت Suricata وإضافةمستودع PPA

Suricata لا يأتي مثبتًا بشكل افتراضي في أوبونتو ، ولكن تثبيت Suricata مشابه لكيفية تثبيت حزم أخرى على النظام الخاص بك.

1. قم بتشغيل الأمر apt update لتحديث الحزم المتاحة في نظامك.

sudo apt update -y
Updating the list of available packages

2. بعد ذلك ، قم بتشغيل الأمر add-apt-repository لإضافة مستودع PPA الذي يتم الاحتفاظ به بواسطة مؤسسة Open Information Security Foundation (OISF). من خلال إضافة مستودع PPA ، ستحصل على أحدث وأستقرارًا لـ Suricata (ppa:oisf/suricata-stable).

sudo add-apt-repository ppa:oisf/suricata-stable
Adding the PPA repository for Suricata

3. قم بإعادة تشغيل الأمر sudo apt update لتحميل مستودع Suricata المضاف حديثًا إلى فهرس الحزم في نظامك.

sudo apt update -y

4. الآن ، قم بتشغيل الأمر sudo apt policy للتحقق من أنك قد قمت بإضافة مستودع Suricata PPA بشكل صحيح. تأكد من رؤية مستودع Suricata PPA في القائمة كما هو موضح أدناه قبل تثبيت Suricata

sudo apt policy
Running the sudo apt policy

5. قم بتشغيل الأمر التالي لـ تثبيت Suricata على نظامك.

sudo apt install suricata -y
Installing Suricata on your system

6. بمجرد اكتمال التثبيت ، قم بتشغيل الأمر systemctl status أدناه للتحقق من حالة خدمة suricata.

sudo systemctl status suricata

فيما يلي، يمكنك رؤية أن خدمة Suricata نشطة (تعمل)

Checking the Suricata service status

تكوين Suricata

تأتي حزمة Suricata مع ملف تكوين يسمى suricata.yaml الموجود في الدليل /etc/suricata. يحتوي هذا الملف التكويني على العديد من الإعدادات المختلفة للعديد من حالات الاستخدام الأخرى. ولكن عليك أن تعلم أن هناك بعض الإعدادات في ملف التكوين الافتراضي يجب أن تقوم بضبطها قبل استخدام Suricata.

الوضع الافتراضي لـ Suricata هو وضع اكتشاف التسلل (IDS) ، الذي يسجل ، ولكنه لا يقطع أي حركة مرور. يُستخدم هذا الوضع عند تكوين والتعرف على Suricata. بمجرد أن تكون أكثر راحة مع Suricata وتفهم أفضل لأنواع حركة Suricata التي ستنبهك إليها ، يمكنك اختيار تشغيل وضع IPS.

يضيف Suricata حقلاً في تنسيق JSON الخاص به (معرف تدفق المجتمع). معرف تدفق المجتمع هو حقل من 8 بايت يتيح لك ربط السجلات التي تم إنشاؤها بواسطة أدوات أخرى. يكون هذا الميزة مفيدًا عند استخدام Suricata بالتزامن مع أدوات أخرى مثل Bro أو Elasticsearch.

1. افتح ملف /etc/suricata/suricata.yaml في محرر النص المفضل لديك.

٢. ابحث عن السطر الذي يقرأ community-id: false وقم بتغييره إلى community-id: true. احفظ التغييرات واخرج من محرر النص.

في كل مرة تفحص فيها الأحداث، سترى معرف تدفق المجتمع في الإخراج الخاص بهم JSON.

Enabling Community ID

بعد ذلك، قم بتشغيل الأمر التالي للعثور على جهاز يحتوي على مسار افتراضي في نظامك (route show default). تقول العلمة -p للأمر ip لطباعة الجهاز بطريقة قابلة للقراءة من الإنسان، بينما تقوم العلمة -j بطباعة الإخراج JSON.

يتم تكوين Suricata لمراقبة حزم من أي واجهة شبكة متاحة افتراضيًا. ولكن يمكنك تغيير هذا السلوك وتحديد واجهة ل Suricata للاستماع إليها عند بدء التشغيل.

 ip -p -j route show default

كما ترى أدناه، يحدد الباراميتر dev الواجهة التي ستستخدمها Suricata لمراقبة حزم. في هذا العرض التوضيحي، الواجهة هي eth0، لكن يمكن أن تكون واجهتك مختلفة، مثل tun0، wlan0، وما إلى ذلك.

Previewing the Network Interface

٤. أخيرًا، افتح ملف التكوين /etc/suricata/suricata.yaml، وابحث عن باراميتر interface تحت القسم af-packet وقم بتعديله وفقًا لذلك. في هذا العرض التوضيحي، تم استخدام eth0 كواجهة لمراقبة حزم البيانات.

احفظ التغييرات، لكن ابق محرر النص مفتوحًا حاليًا.

Editing the /etc/suricata/suricata.yaml configuration file

إعداد ميزة إعادة تحميل القاعدة الحية

لقد قمت الآن بتكوين Suricata، ولكن هذا مجرد بداية حماية شبكتك. عادةً، ترغب في إضافة قواعد على الفور وإعادة تحميل القواعد تلقائيًا. كيف؟ تتيح ميزة إعادة تحميل القواعد الفورية في Suricata تحديث القواعد على الطاير. نتيجة لذلك، لا داعي لإعادة تشغيل Suricata يدويًا بحيث تأخذ القواعد الجديدة مفعولها.

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

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

detect-engine:
  - rule-reload: true
Setting up the Live Rule Reloading

الآن قم بتشغيل الأمر kill أدناه لإعلام عملية Suricata الخاصة بك ($(pidof suricata)) بتحديث القواعد بدون إعادة تشغيل.

الأمر يرسل إشارة محددة من قبل المستخدم (-usr2) إلى معرف العملية المحدد، ثم يقوم Suricata بتنفيذ ما يلي تلقائيًا:

  • تحميل تكوين جديد لتحديث المتغيرات والقيم في القواعد.
  • تحميل قواعد جديدة
  • بناء محرك الكشف الجديد
  • تبديل محركات الكشف القديمة والجديدة
  • التأكد من تحديث جميع الخيوط
  • تحرير محرك الكشف القديم
sudo kill -usr2 $(pidof suricata)

تحديث مجموعات قواعد Suricata

ميزة إعادة تحميل القواعد الفورية جاهزة، ولكن لن تكون ذات فائدة ما لم تقم بتحديث مجموعات القواعد الخاصة بك. بشكل افتراضي، يحتوي حزمة Suricata على مجموعة قواعد محدودة تكتشف فقط أكثر بروتوكولات الإنترنت شيوعًا الموجودة في الدليل /etc/suricata/rules.

\begin{Arabic}
في هذه النقطة، ستتلقى رسالة خطأ لا توجد ملفات قواعد تتناسب مع النمط، مثل الرسالة أدناه، في كل مرة تحاول فيها بدء استخدام خدمة Suricata. تشير هذه الرسالة إلى عدم وجود مجموعات قواعد لـ Suricata لاستخدامها.

Previewing Error Message when No Rulesets Exist

لحل هذا الخطأ، قدم ملفات مجموعات القواعد إلى نسخة Suricata الخاصة بك. لحسن الحظ، يحتوي Suricata على أداة تسمى suricata-update التي ستساعدك في الحصول على المزيد من مجموعات القواعد من مقدمي خدمات آخرين.

1. قم بتشغيل الأمر أدناه للحصول على تحديث لنسخة Suricata الخاصة بك.

sudo suricata-update

كما يمكن رؤيته أدناه، يشير الإخراج إلى أن أمر suricata-update قد حصل على القواعد عن طريق الاتصال بـ https://rules.emergingthreats.net/open/. ثم يحفظ الأمر القواعد الجديدة في دليل /var/lib/suricata/rules/.

يقوم الإخراج أيضًا بطباعة ما يلي:

  • إجمالي عدد (31737) من مجموعات القواعد
  • عدد القواعد التي تم تمكينها (24355)
  • عدد القواعد التي تمت إضافتها(31737)/إزالتها(0).
Updating Your Suricata Rulesets

بعد ذلك، قم بتشغيل الأمر أدناه لعرض جميع مقدمي مجموعات القواعد (list-sources).

يقوم أمر suricata-update بجلب مجموعات القواعد من العديد من مقدمي الخدمات، بما في ذلك مقدمي الخدمات المجانية والتجارية.

sudo suricata-update list-sources

أدناه، يمكنك رؤية جزء صغير من القائمة. انتبه إلى اسم مجموعة قواعد ترغب في جلبها Suricata بشكل خاص. يقوم هذا البرنامج التعليمي بجلب مجموعات قواعد et/open للتوضيح (الخطوة الثالثة).
\end{Arabic}

Listing all ruleset providers

3. قم بتشغيل الأمر أدناه لجلب وتضمين (enable-source) مجموعات القواعد et/open إلى قواعد Suricata الخاصة بك.

sudo suricata-update enable-source et/open
Fetching the et/open rulesets

وأخيرًا، قم بإعادة تشغيل الأمر suricata-update لتحميل مجموعة القواعد الجديدة التي تم اختيارها.

sudo suricata-update

التحقق من صحة تكوين Suricata

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

قم بتشغيل الأمر suricata أدناه للتحقق من التغييرات في ملف تكوين Suricata (-c /etc/suricata/suricata.yaml). يعرض الأمر أيضًا جميع رسائل التحقق (-v).

تُخبر العلمة -T Suricata بتشغيله في “وضع الاختبار” و “أعلى لأسفل”. كلا الوضعين لهما قواعد أكثر صرامة لمطابقة الحزم وأقل احتمالًا لوجود إيجابيات خاطئة.

sudo suricata -T -c /etc/suricata/suricata.yaml -v

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

Validating Your Suricata Configuration: complete

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

Validating Your Suricata Configuration: errors

اختبار قواعد Suricata

الآن بعد تحقق ملفات تكوين Suricata الخاصة بك، يمكنك تشغيل Suricata لمعرفة ما إذا كانت تعمل بشكل صحيح. ستستخدم Suricata لاختبار ET Open (2100498) باستخدام أمر curl لاكتشاف النشاط/المرور المشبوه.

الآن، لديك نسخة Suricata لديها أكثر من 30،000 قاعدة قواعد حصلت عليها Suricata من مجموعات قواعد مختلفة. لذا، لا يمكن أن يتناسب اختبار كامل لجميع القواعد مع شرحها في هذا البرنامج التعليمي.

1. قم بتشغيل أمر curl أدناه لتوليد بعض حركة المرور/طلبات HTTP/أنشطة من موقع TestMyNIDS. TestMyNIDS هو مشروع تعليم إلكتروني مخصص لدعم اختبارات NIDS والتحقق منها، والمقارنة بينها. يوفر الموقع منصة فريدة للتحليل المقارن لـ NIDS والأدوات ذات الصلة.

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

curl http://testmynids.org/uid/index.html

تم تصميم بيانات الاستجابة لتحفيز إنذار كاذب يتظاهر بأنه مستخدم Linux/Unix root. وهذا المستخدم root على نظام قد يكون قد تم اختراقه.

Testing Your Suricata Rules

بعد ذلك، قم بتشغيل أمر grep أدناه لفحص ملف fast.log في الدليل /var/log/suricata/ للبحث عن رسالة تنبيه متطابقة 2100498. يتحقق هذا الأمر من ملف السجل لإنذار المستخدم.

بصورة عامة، بالإضافة إلى ملف fast.log، يجب الانتباه أيضًا إلى ملف eve.log في نفس الدليل.

grep 2100498 /var/log/suricata/fast.log

سترى إخراجًا مماثلاً للمثال أدناه يظهر عنوان IPv4 العام لنظامك.

Examining the fast.log file

3. الآن، قم بتشغيل أمر jq أدناه لفحص ملف eve.log. يُستخدم ملف eve.log أيضًا لتسجيل الأحداث ولكن بتنسيق JSON (/var/log/suricata/eve.json). إنه من ملفات eve.json و fast.log التي ستشير إليها للمرور على حركة المرور المشبوهة والمحاولات المحظورة. بمجرد العثور عليها، اتخذ الإجراءات اللازمة.

jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

أدناه، يمكنك رؤية “signature_id”: 2100498 في الإخراج، وهو معرف توقيع التنبيه الذي حددته في الأمر.

يمكنك أيضًا رؤية “community_id”: “1:ETRbv54GHTVCayHTUR5OIovK4gh2=” في الإخراج، وهو معرف تدفق المجتمع الذي قمت بإعداده في ملف /etc/suricata/suricata.yaml.

هذا community_id مفيد عند استخدام Suricata بالتزامن مع أدوات أخرى مثل Elasticsearch للحصول على “كومة مراقبة الأمان” بتكلفة معقولة.

Examining the eve.log file

الختام

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

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

الآن، لما لا تبني على هذه المعرفة الجديدة؟ ربما تبدأ بـ تثبيت وتكوين سوريكاتا، زيك، ستاك إيلاستيكسيرتش لإعداد “مكدس مراقبة الأمان” الكامل؟

Source:
https://adamtheautomator.com/suricata/