إدارة وتحليل سجلات تدفق مجموعة أمان الشبكة في Azure باستخدام Network Watcher و Graylog
هام
في 30 سبتمبر 2027، سيتم إيقاف سجلات تدفق مجموعة أمان الشبكة (NSG). كجزء من هذا الإيقاف، لن تتمكن بعد الآن من إنشاء سجلات تدفق NSG جديدة بدءا من 30 يونيو 2025. نوصي بالترحيل إلى سجلات تدفق الشبكة الظاهرية، والتي تتغلب على قيود سجلات تدفق NSG. بعد تاريخ الإيقاف، لن يتم دعم تحليلات نسبة استخدام الشبكة الممكنة مع سجلات تدفق NSG، وسيتم حذف موارد سجلات تدفق NSG الموجودة في اشتراكاتك. ومع ذلك، لن يتم حذف سجلات سجلات تدفق NSG وستستمر في اتباع نهج الاستبقاء الخاصة بها. لمزيد من المعلومات، راجع الإعلان الرسمي.
توفر سجلات تدفق مجموعة أمان الشبكة معلومات يمكنك استخدامها لفهم دخول وخروج حركة مرور IP لواجهات شبكة Azure. تُظهر سجلات التدفق التدفقات الصادرة والداخلية على أساس قاعدة كل مجموعة أمان شبكة، وواجهة الشبكة التي ينطبق عليها التدفق، ومعلومات 5 مجموعات (المصدر / الوجهة IP، المصدر / المنفذ الوجهة، البروتوكول) حول التدفق، وإذا كانت حركة المرور مسموح به أو مرفوض.
يمكن أن يكون لديك العديد من مجموعات أمان الشبكة في شبكتك مع تمكين تسجيل التدفق. يمكن أن تجعل العديد من مجموعات أمان الشبكة مع تمكين تسجيل التدفق من الصعب تحليل واكتساب رؤى من سجلاتك. توفر هذه المقالة حلاً للإدارة المركزية لسجلات تدفق مجموعة أمان الشبكة هذه باستخدام Graylog، وهي أداة تحليل وإدارة سجل مفتوح المصدر، و Logstash، وهو مسار لمعالجة بيانات مفتوحة المصدر من جانب الخادم.
تحذير
تعمل الخطوات التالية مع الإصدار 1 من سجلات التدفق. للحصول على تفاصيل، راجع مقدمة عن تسجيل التدفق لمجموعات أمان الشبكة. لن تعمل الإرشادات التالية مع الإصدار 2 من ملفات السجل، دون تعديل.
السيناريو
يتم تمكين سجلات تدفق مجموعة أمان الشبكة باستخدام Network Watcher. تتدفق سجلات التدفق إلى تخزين البيانات الثنائية الكبيرة في Azure. يتم استخدام المكون الإضافي Logstash للاتصال ومعالجة سجلات التدفق من تخزين blob وإرسالها إلى Graylog. بمجرد تخزين سجلات التدفق في Graylog، يمكن تحليلها وتصورها في لوحات معلومات مخصصة.
خطوات عملية التثبيت
تفعيل تسجيل تدفق مجموعة أمان الشبكة
بالنسبة لهذا السيناريو، يجب تمكين تسجيل تدفق مجموعة أمان الشبكة على مجموعة أمان شبكة واحدة على الأقل في حسابك. للحصول على إرشادات حول تمكين سجلات تدفق مجموعة أمان الشبكة، راجع المقالة التالية مقدمة لتسجيل التدفق لمجموعات أمان الشبكة .
إعداد Graylog
في هذا المثال، يتم تكوين كل من Graylog وLogstash على خادم Ubuntu، تم نشره في Azure.
- راجع الوثائق من Graylog، للحصول على إرشادات خطوة بخطوة حول كيفية التثبيت على Ubuntu.
- تأكد أيضًا من تهيئة واجهة ويب Graylog باتباع الوثائق .
يستخدم هذا المثال أدنى إعداد من Graylog (أي مثيل واحد من Graylog)، ولكن يمكن تصميم Graylog لتوسيع نطاق الموارد وفقًا لاحتياجات النظام والإنتاج لديك. لمزيد من المعلومات حول الاعتبارات المعمارية أو دليل معماري عميق، راجع وثائق Graylog والدليل المعماري.
يمكن تثبيت Graylog بعدة طرق، اعتمادًا على نظامك الأساسي وتفضيلاتك. للحصول على قائمة كاملة بأساليب التثبيت الممكنة، راجع وثائق Graylog الرسمية. يعمل تطبيق خادم Graylog على توزيعات Linux ويتضمن المتطلبات الأساسية التالية:
- Java SE 8 أو أحدث - وثائق تثبيت JDK
- Elastic Search 2.x (2.1.0 أو أحدث) - وثائق تثبيت Elasticsearch
- MongoDB 2.4 أو أحدث - وثائق تثبيت MongoDB
تثبيت Logstash
يتم استخدام Logstash لتسوية سجلات التدفق المنسقة بتنسيق JSON إلى مستوى مجموعة التدفق. تسطيح سجلات التدفق يجعل تنظيم السجلات والبحث فيها أسهل في Graylog. يتم استخدام الإرشادات التالية لتثبيت Logstash في Ubuntu. للحصول على إرشادات حول كيفية تثبيت هذه الحزمة في Red Hat Enterprise Linux، راجع التثبيت من مستودعات الحزم - yum.
لتثبيت Logstash، قم بتشغيل الأوامر التالية:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg sudo apt-get install apt-transport-https echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list sudo apt-get update && sudo apt-get install logstash
تكوين Logstash لتحليل سجلات التدفق وإرسالها إلى Graylog. قم بإنشاء ملف Logstash.conf:
sudo touch /etc/logstash/conf.d/logstash.conf
أضف المحتوى التالي إلى الملف.
storage_account_name
storage_access_key
قم بتغيير القيم و وcontainer
لتعكس تفاصيل حساب التخزين الخاص بك:input { azureblob { storage_account_name => "mystorageaccount" storage_access_key => "NrUZmx7pJSKaRJzvQbeiZWi5nBRWOTr7Wwr9DrvK7YtDBrADYxT1y0oEExtSlkDnGRt7qcRiZzEBCCyRYND8SxSt" container => "insights-logs-networksecuritygroupflowevent" registry_create_policy => "start_over" codec => "json" file_head_bytes => 21 file_tail_bytes => 9 # Possible options: `do_not_break`, `with_head_tail`, `without_head_tail` break_json_down_policy => 'with_head_tail' break_json_batch_count => 2 interval => 5 } } filter { split { field => "[records]" } split { field => "[records][properties][flows]"} split { field => "[records][properties][flows][flows]"} split { field => "[records][properties][flows][flows][flowTuples]" } mutate { split => { "[records][resourceId]" => "/"} add_field =>{ "Subscription" => "%{[records][resourceId][2]}" "ResourceGroup" => "%{[records][resourceId][4]}" "NetworkSecurityGroup" => "%{[records][resourceId][8]}" } convert => {"Subscription" => "string"} convert => {"ResourceGroup" => "string"} convert => {"NetworkSecurityGroup" => "string"} split => { "[records][properties][flows][flows][flowTuples]" => ","} add_field => { "unixtimestamp" => "%{[records][properties][flows][flows][flowTuples][0]}" "srcIp" => "%{[records][properties][flows][flows][flowTuples][1]}" "destIp" => "%{[records][properties][flows][flows][flowTuples][2]}" "srcPort" => "%{[records][properties][flows][flows][flowTuples][3]}" "destPort" => "%{[records][properties][flows][flows][flowTuples][4]}" "protocol" => "%{[records][properties][flows][flows][flowTuples][5]}" "trafficflow" => "%{[records][properties][flows][flows][flowTuples][6]}" "traffic" => "%{[records][properties][flows][flows][flowTuples][7]}" } add_field => { "time" => "%{[records][time]}" "systemId" => "%{[records][systemId]}" "category" => "%{[records][category]}" "resourceId" => "%{[records][resourceId]}" "operationName" => "%{[records][operationName}}" "Version" => "%{[records][properties][Version}}" "rule" => "%{[records][properties][flows][rule]}" "mac" => "%{[records][properties][flows][flows][mac]}" } convert => {"unixtimestamp" => "integer"} convert => {"srcPort" => "integer"} convert => {"destPort" => "integer"} add_field => { "message" => "%{Message}" } } date { match => ["unixtimestamp" , "UNIX"] } } output { stdout { codec => rubydebug } udp { host => "127.0.0.1" port => 12201 } }
يتكون ملف تكوين Logstash المقدم من ثلاثة أجزاء: الإدخال والتصفية والإخراج. يعين قسم الإدخال مصدر الإدخال للسجلات التي سيعالجها Logstash - في هذه الحالة، ستستخدم مكونا إضافيا لإدخال مدونة Azure (مثبتا في الخطوات التالية) يسمح لنا بالوصول إلى ملفات JSON لسجل تدفق مجموعة أمان الشبكة المخزنة في تخزين blob.
يقوم قسم المرشح بعد ذلك بتسوية كل ملف سجل تدفق بحيث يصبح كل مجموعة تدفق فردية والخصائص المرتبطة بها حدث Logstash منفصل.
أخيرًا، يقوم قسم الإخراج بإعادة توجيه كل حدث Logstash إلى خادم Graylog. لتناسب احتياجاتك الخاصة، قم بتعديل ملف التكوين Logstash، كما هو مطلوب.
إشعار
يفترض ملف التكوين السابق أن خادم Graylog قد تم تكوينه على عنوان IP لاسترجاع المضيف المحلي 127.0.0.1. إذا لم يكن كذلك، فتأكد من تغيير معلمة المضيف في قسم الإخراج إلى عنوان IP الصحيح.
لمزيد من الإرشادات حول تثبيت Logstash، راجع وثائق Logstash.
قم بتثبيت مكون الإدخال Logstash الإضافي لتخزين Azure blob
يسمح لك المكون الإضافي Logstash بالوصول مباشرة إلى سجلات التدفق من حساب تخزين blob المخصص لهم. لتثبيت المكون الإضافي، من دليل تثبيت Logstash الافتراضي (في هذه الحالة / usr / share / logstash / bin)، قم بتشغيل الأمر التالي:
cd /usr/share/logstash/bin
sudo ./logstash-plugin install logstash-input-azureblob
لمزيد من المعلومات حول هذا المكون الإضافي، راجع الوثائق .
قم بإعداد الاتصال من Logstash إلى Graylog
الآن بعد أن قمت بإنشاء اتصال بسجلات التدفق باستخدام Logstash وإعداد خادم Graylog، تحتاج إلى تكوين Graylog لقبول ملفات السجل الواردة.
انتقل إلى واجهة ويب Graylog Server باستخدام عنوان URL الذي قمت بتكوينه له. يمكنك الوصول إلى الواجهة عن طريق توجيه المتصفح إلى
http://<graylog-server-ip>:9000/
للانتقال إلى صفحة التكوين، حدد القائمة المنسدلة النظام في شريط التنقل العلوي جهة اليمين، ثم انقر فوق المدخلات . أو بدلاً من ذلك، انتقل إلى
http://<graylog-server-ip>:9000/system/inputs
لبدء الإدخال الجديد، حدد GELF UDP في القائمة المنسدلة تحديد الإدخال ، ثم املأ النموذج. يرمز GELF إلى تنسيق Graylog Extended Log. تم تطوير تنسيق GELF بواسطة Graylog. لمعرفة المزيد حول مزاياها، راجع وثائق Graylog.
تأكد من ربط الإدخال بعنوان IP الذي قمت بتكوين خادم Graylog عليه. يجب أن يتطابق عنوان IP مع الحقل host لإخراج UDP لملف تكوين Logstash. يجب أن يكون المنفذ الافتراضي هو 12201 . تأكد من أن المنفذ يطابق حقل المنفذ في إخراج UDP المحدد في ملف تكوين Logstash.
بمجرد تشغيل الإدخال، يجب أن تراه يظهر أسفل قسم المدخلات المحلية ، كما هو موضح في الصورة التالية:
لمعرفة المزيد حول إدخالات رسائل Graylog، راجع الوثائق .
بمجرد إجراء هذه التكوينات، يمكنك بدء Logstash لبدء قراءة سجلات التدفق باستخدام الأمر التالي:
sudo systemctl start logstash.service
.
ابحث في رسائل Graylog
بعد إتاحة بعض الوقت لخادم Graylog الخاص بك لجمع الرسائل، يمكنك البحث في الرسائل. للتحقق من الرسائل التي يتم إرسالها إلى خادم Graylog، من صفحة تكوين الإدخالات ، انقر فوق الزر "إظهار الرسائل المستلمة" لإدخال GELF UDP الذي أنشأته. يتم توجيهك إلى شاشة تشبه الصورة التالية:
يؤدي النقر فوق الارتباط الأزرق "٪{Message}" إلى توسيع كل رسالة لإظهار معلمات كل مجموعة تدفق، كما هو موضح في الصورة التالية:
بشكل افتراضي، يتم تضمين كافة حقول الرسائل في البحث إذا لم تحدد حقل رسالة معينا للبحث فيه. إذا كنت ترغب في البحث عن رسائل معينة (أي - مجموعات التدفق من عنوان IP مصدر معين) يمكنك استخدام لغة استعلام بحث Graylog كما هو موثق
تحليل سجلات تدفق مجموعة أمان الشبكة باستخدام Graylog
الآن بعد أن تم إعداد Graylog قيد التشغيل، يمكنك استخدام بعض وظائفه لفهم بيانات سجل التدفق بشكل أفضل. تتمثل إحدى هذه الطرق في استخدام لوحات المعلومات لإنشاء طرق عرض محددة لبياناتك.
إنشاء لوحة معلومات
في شريط التنقل العلوي، حدد لوحات المعلومات أو انتقل إلى
http://<graylog-server-ip>:9000/dashboards/
من هناك، انقر فوق الزر الأخضر إنشاء لوحة التحكم واملأ النموذج القصير بعنوان ووصف لوحة التحكم. اضغط على الزر حفظ لإنشاء لوحة التحكم الجديدة. ترى لوحة تحكم مشابهة للصورة التالية:
إضافة أدوات
يمكنك النقر فوق عنوان لوحة المعلومات لرؤيتها، ولكنها الآن فارغة، نظرا لأننا لم نضف أي عناصر واجهة مستخدم. تعد مخططات Quick Values أداة كتابة سهلة ومفيدة لإضافتها إلى لوحة التحكم، والتي تعرض قائمة بقيم الحقل المحدد وتوزيعها.
انتقل مرة أخرى إلى نتائج البحث الخاصة بإدخال UDP الذي يتلقى سجلات التدفق عن طريق تحديد بحث من شريط التنقل العلوي.
ضمن لوحة نتائج البحث على الجانب الأيمن من الشاشة، ابحث عن علامة التبويب Fields، التي تسرد الحقول المختلفة لكل رسالة من مجموعة تدفق الرسائل الواردة.
حدد أي معلمة مرغوبة ليتم تصورها (في هذا المثال، يتم تحديد مصدر IP). لإظهار قائمة الأدوات الممكنة، انقر فوق السهم الأزرق المنسدل الموجود على يسار الحقل، ثم حدد القيم السريعة لإنشاء الأداة. يجب أن ترى شيئًا مشابهًا للصورة التالية:
من هناك، يمكنك تحديد الزر إضافة إلى لوحة التحكم في الركن الأيمن العلوي من الأداة وتحديد لوحة التحكم المقابلة لإضافتها.
انتقل مرة أخرى إلى لوحة القيادة لرؤية الأداة التي أضفتها للتو.
يمكنك إضافة مجموعة متنوعة من الأدوات الأخرى مثل المدرج التكراري والأعداد إلى لوحة القيادة لتتبع المقاييس المهمة، مثل نموذج لوحة المعلومات الموضحة في الصورة التالية:
لمزيد من الشرح حول لوحات المعلومات والأنواع الأخرى من عناصر واجهة المستخدم، راجع وثائق Graylog.
من خلال دمج Network Watcher مع Graylog، لديك الآن طريقة مريحة ومركزية لإدارة وتصور سجلات تدفق مجموعة أمان الشبكة. يحتوي Graylog على عدد من الميزات القوية الأخرى مثل التدفقات والتنبيهات التي يمكن استخدامها أيضًا لإدارة سجلات التدفق وفهم حركة مرور الشبكة بشكل أفضل. الآن بعد أن قمت بإعداد Graylog وتوصيله بـ Azure، لا تتردد في متابعة استكشاف الوظائف الأخرى التي يوفرها.
الخطوات التالية
تعرف على كيفية تصور سجلات تدفق مجموعة أمان الشبكة باستخدام Power BI من خلال زيارة تصور سجلات تدفقات مجموعة أمان الشبكة باستخدام Power BI .