مع الزيادة في شعبية الجرائم الإلكترونية ، هناك حاجة ملحة للشركات للحصول على حماية أفضل ضد القراصنة. يعتبر نظام الوقاية من التسلل (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
لتحديث الحزم المتاحة في نظامك.

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

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

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

6. بمجرد اكتمال التثبيت ، قم بتشغيل الأمر systemctl status
أدناه للتحقق من حالة خدمة suricata
.
فيما يلي، يمكنك رؤية أن خدمة Suricata نشطة (تعمل)

تكوين 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.

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

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

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

الآن قم بتشغيل الأمر kill
أدناه لإعلام عملية Suricata الخاصة بك ($(pidof suricata)
) بتحديث القواعد بدون إعادة تشغيل.
الأمر يرسل إشارة محددة من قبل المستخدم (-usr2
) إلى معرف العملية المحدد، ثم يقوم Suricata بتنفيذ ما يلي تلقائيًا:
- تحميل تكوين جديد لتحديث المتغيرات والقيم في القواعد.
- تحميل قواعد جديدة
- بناء محرك الكشف الجديد
- تبديل محركات الكشف القديمة والجديدة
- التأكد من تحديث جميع الخيوط
- تحرير محرك الكشف القديم
تحديث مجموعات قواعد Suricata
ميزة إعادة تحميل القواعد الفورية جاهزة، ولكن لن تكون ذات فائدة ما لم تقم بتحديث مجموعات القواعد الخاصة بك. بشكل افتراضي، يحتوي حزمة Suricata على مجموعة قواعد محدودة تكتشف فقط أكثر بروتوكولات الإنترنت شيوعًا الموجودة في الدليل /etc/suricata/rules.
\begin{Arabic}
في هذه النقطة، ستتلقى رسالة خطأ لا توجد ملفات قواعد تتناسب مع النمط، مثل الرسالة أدناه، في كل مرة تحاول فيها بدء استخدام خدمة Suricata. تشير هذه الرسالة إلى عدم وجود مجموعات قواعد لـ Suricata لاستخدامها.

لحل هذا الخطأ، قدم ملفات مجموعات القواعد إلى نسخة Suricata الخاصة بك. لحسن الحظ، يحتوي Suricata على أداة تسمى suricata-update
التي ستساعدك في الحصول على المزيد من مجموعات القواعد من مقدمي خدمات آخرين.
1. قم بتشغيل الأمر أدناه للحصول على تحديث لنسخة Suricata الخاصة بك.
كما يمكن رؤيته أدناه، يشير الإخراج إلى أن أمر suricata-update
قد حصل على القواعد عن طريق الاتصال بـ https://rules.emergingthreats.net/open/. ثم يحفظ الأمر القواعد الجديدة في دليل /var/lib/suricata/rules/.
يقوم الإخراج أيضًا بطباعة ما يلي:
- إجمالي عدد (31737) من مجموعات القواعد
- عدد القواعد التي تم تمكينها (24355)
- عدد القواعد التي تمت إضافتها(31737)/إزالتها(0).

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

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

وأخيرًا، قم بإعادة تشغيل الأمر suricata-update
لتحميل مجموعة القواعد الجديدة التي تم اختيارها.
التحقق من صحة تكوين Suricata
لقد قمت بتكوين Suricata وحتى أضفت مجموعات قواعد، لذا حان الوقت للتحقق من التغييرات الخاصة بك والتأكد من أن كل شيء يعمل كما هو متوقع. يحتوي حزمة Suricata على خدمة تحقق مدمجة تتيح لك رؤية أي انحرافات عن التكوين الحالي.
قم بتشغيل الأمر suricata
أدناه للتحقق من التغييرات في ملف تكوين Suricata (-c /etc/suricata/suricata.yaml
). يعرض الأمر أيضًا جميع رسائل التحقق (-v
).
تُخبر العلمة -T
Suricata بتشغيله في “وضع الاختبار” و “أعلى لأسفل”. كلا الوضعين لهما قواعد أكثر صرامة لمطابقة الحزم وأقل احتمالًا لوجود إيجابيات خاطئة.
نظرًا لأن Suricata هو جدار ناري قابل للتكوين بشكل كبير، فقد يستغرق الاختبار عدة دقائق لاكتماله. إذا لم تظهر أي أخطاء، سترى إخراجًا مماثلًا لتلك التي تظهر رسالة كاملة.

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

اختبار قواعد Suricata
الآن بعد تحقق ملفات تكوين Suricata الخاصة بك، يمكنك تشغيل Suricata لمعرفة ما إذا كانت تعمل بشكل صحيح. ستستخدم Suricata لاختبار ET Open (2100498) باستخدام أمر curl
لاكتشاف النشاط/المرور المشبوه.
الآن، لديك نسخة Suricata لديها أكثر من 30،000 قاعدة قواعد حصلت عليها Suricata من مجموعات قواعد مختلفة. لذا، لا يمكن أن يتناسب اختبار كامل لجميع القواعد مع شرحها في هذا البرنامج التعليمي.
1. قم بتشغيل أمر curl
أدناه لتوليد بعض حركة المرور/طلبات HTTP/أنشطة من موقع TestMyNIDS. TestMyNIDS هو مشروع تعليم إلكتروني مخصص لدعم اختبارات NIDS والتحقق منها، والمقارنة بينها. يوفر الموقع منصة فريدة للتحليل المقارن لـ NIDS والأدوات ذات الصلة.
يمكنك استخدام هذا الموقع لاختبار أي نشاط/مرور مشبوه لمعرفة ما إذا كانت مجموعة القواعد الخاصة بك تعمل كما هو متوقع.
تم تصميم بيانات الاستجابة لتحفيز إنذار كاذب يتظاهر بأنه مستخدم Linux/Unix root. وهذا المستخدم root على نظام قد يكون قد تم اختراقه.

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

3. الآن، قم بتشغيل أمر jq
أدناه لفحص ملف eve.log. يُستخدم ملف eve.log أيضًا لتسجيل الأحداث ولكن بتنسيق JSON (/var/log/suricata/eve.json
). إنه من ملفات eve.json و fast.log التي ستشير إليها للمرور على حركة المرور المشبوهة والمحاولات المحظورة. بمجرد العثور عليها، اتخذ الإجراءات اللازمة.
أدناه، يمكنك رؤية “signature_id”: 2100498 في الإخراج، وهو معرف توقيع التنبيه الذي حددته في الأمر.
يمكنك أيضًا رؤية “community_id”: “1:ETRbv54GHTVCayHTUR5OIovK4gh2=” في الإخراج، وهو معرف تدفق المجتمع الذي قمت بإعداده في ملف /etc/suricata/suricata.yaml.
هذا community_id مفيد عند استخدام Suricata بالتزامن مع أدوات أخرى مثل Elasticsearch للحصول على “كومة مراقبة الأمان” بتكلفة معقولة.

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