إجراء الكشف عن اختراق الشبكة باستخدام Azure Network Watcher والأدوات مفتوحة المصدر

تعد عمليات التقاط الحزم مكونا رئيسيا لتنفيذ أنظمة الكشف عن اختراق الشبكة (IDSs) وتنفيذ مراقبة أمان الشبكة. تقوم العديد من أدوات IDS مفتوحة المصدر بمعالجة التقاط حزمة البيانات والبحث عن تواقيع الاختراقات المحتملة للشبكة والنشاط الضار. باستخدام التقاطات الحزمة التي يوفرها Azure Network Watcher، يمكنك تحليل شبكتك بحثا عن الاختراقات أو الثغرات الأمنية الضارة.

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

السيناريو

توضح هذه المقالة كيفية إعداد بيئتك لإجراء الكشف عن اختراق الشبكة باستخدام Network Watcher و Suricata و Elastic Stack.

يمنحك Network Watcher التقاطات الحزمة لإجراء الكشف عن اختراق الشبكة. تعالج Suricata التقاط الحزمة وتشغيل التنبيهات استنادا إلى الحزم التي تطابق مجموعة قواعدها من التهديدات. يخزن Suricata هذه التنبيهات في ملف سجل على جهازك المحلي.

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

رسم تخطيطي يوضح سيناريو تطبيق ويب بسيط.

يمكنك إعداد كل من الأدوات مفتوحة المصدر على جهاز Azure الظاهري (VM)، حتى تتمكن من إجراء هذا التحليل داخل بيئة شبكة Azure الخاصة بك.

تثبيت Suricata

  1. في المحطة الطرفية سطر الأوامر للجهاز الظاهري الخاص بك، قم بتشغيل الأوامر التالية:

    sudo add-apt-repository ppa:oisf/suricata-stable
    sudo apt-get update
    sudo apt-get install suricata
    
  2. للتحقق من التثبيت، شغّل الأمر suricata -h لمشاهدة القائمة الكاملة للأوامر.

للحصول على طرق أخرى للتثبيت، راجع دليل التشغيل السريع لتثبيت Suricata.

تنزيل مجموعة قواعد التهديدات الناشئة

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

قم بتنزيل مجموعة القواعد وانسخها في الدليل:

wget https://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
tar zxf emerging.rules.tar.gz
sudo cp -r rules /etc/suricata/

معالجة التقاط حزمة البيانات باستخدام Suricata

لمعالجة التقاطات الحزمة باستخدام Suricata، قم بتشغيل الأمر التالي:

sudo suricata -c /etc/suricata/suricata.yaml -r <location_of_pcapfile>

للتحقق من التنبيهات الناتجة، اقرأ ملف fast.log :

tail -f /var/log/suricata/fast.log

إعداد Elastic Stack

تحتوي السجلات التي تنتجها Suricata على معلومات قيمة حول ما يحدث على شبكتك، ولكن ملفات السجل هذه ليست أسهل قراءة وفهم. من خلال توصيل Suricata ب Elastic Stack، يمكنك إنشاء لوحة معلومات Kibana للبحث عن الرؤى من سجلاتك ورسمها البياني وتحليلها واستخلاصها.

تثبيت Elasticsearch

  1. يتطلب الإصدار 5.0 من Elastic Stack والإصدارات الأحدث Java 8. شغّل الأمر java -version للتحقق من إصدارك. إذا لم يكن لديك Java مثبتا، فراجع الوثائق على مجموعات تطوير Java المدعومة من Azure.

  2. نزّل الحزمة الثنائية الصحيحة لنظامك:

    curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.deb
    sudo dpkg -i elasticsearch-5.2.0.deb
    sudo /etc/init.d/elasticsearch start
    

    يمكنك العثور على أساليب التثبيت الأخرى على صفحة ويب Elastic لتثبيت Elasticsearch.

  3. تحقق من تشغيل Elasticsearch باستخدام هذا الأمر:

    curl http://127.0.0.1:9200
    

    يجب أن تحصل على استجابة مشابهة لهذا المثال:

    {
    "name" : "Angela Del Toro",
    "cluster_name" : "elasticsearch",
    "version" : {
        "number" : "5.2.0",
        "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe",
        "build_timestamp" : "2016-01-27T13:32:39Z",
        "build_snapshot" : false,
        "lucene_version" : "6.1.0"
    },
    "tagline" : "You Know, for Search"
    }
    

لمزيد من الإرشادات حول تثبيت Elasticsearch، راجع صفحة الويب Elastic حول التثبيت.

تثبيت Logstash

  1. تثبيت Logstash عن طريق تشغيل الأوامر التالية:

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb
    sudo dpkg -i logstash-5.2.0.deb
    
  2. تكوين Logstash للقراءة من إخراج ملف eve.json . إنشاء ملف logstash.conf باستخدام هذا الأمر:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. أضف المحتوى التالي إلى الملف. تأكد من صحة المسار إلى ملف eve.json .

    input {
    file {
        path => ["/var/log/suricata/eve.json"]
        codec =>  "json"
        type => "SuricataIDPS"
    }
    
    }
    
    filter {
    if [type] == "SuricataIDPS" {
        date {
        match => [ "timestamp", "ISO8601" ]
        }
        ruby {
        code => "
            if event.get('[event_type]') == 'fileinfo'
            event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0])
            end
        "
        }
    
        ruby{
        code => "
            if event.get('[event_type]') == 'alert'
            sp = event.get('[alert][signature]').to_s.split(' group ')
            if (sp.length == 2) and /\A\d+\z/.match(sp[1])
                event.set('[alert][signature]', sp[0])
            end
            end
            "
        }
    }
    
    if [src_ip]  {
        geoip {
        source => "src_ip"
        target => "geoip"
        #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat"
        add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
        add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
        }
        mutate {
        convert => [ "[geoip][coordinates]", "float" ]
        }
        if ![geoip.ip] {
        if [dest_ip]  {
            geoip {
            source => "dest_ip"
            target => "geoip"
            #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat"
            add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
            add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
            }
            mutate {
            convert => [ "[geoip][coordinates]", "float" ]
            }
        }
        }
    }
    }
    
    output {
    elasticsearch {
        hosts => "localhost"
    }
    }
    
  4. امنح الأذونات الصحيحة لملف eve.json بحيث يمكن ل Logstash استيعاب الملف:

    sudo chmod 775 /var/log/suricata/eve.json
    
  5. ابدأ تشغيل Logstash عن طريق تشغيل هذا الأمر:

    sudo /etc/init.d/logstash start
    

لمزيد من الإرشادات حول تثبيت Logstash، راجع وثائق Elastic الرسمية.

تثبيت Kibana

  1. شغّل الأوامر التالية لتثبيت Kibana:

    curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz
    tar xzvf kibana-5.2.0-linux-x86_64.tar.gz
    
  2. قم بتشغيل Kibana باستخدام هذه الأوامر:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. اعرض واجهة ويب Kibana بالانتقال إلى http://localhost:5601.

    لهذا السيناريو، نمط الفهرس المستخدم لسجلات Suricata هو logstash-*.

  4. إذا كنت تريد عرض لوحة معلومات Kibana عن بعد، فقم بإنشاء قاعدة مجموعة أمان شبكة واردة (NSG) تسمح بالوصول إلى المنفذ 5601.

أنشئ لوحة معلومات Kibana

توفر هذه المقالة نموذج لوحة معلومات لعرض الاتجاهات والتفاصيل في التنبيهات الخاصة بك. لاستخدامه:

  1. قم بتنزيل ملف لوحة المعلومات وملف المرئيات وملف البحث المحفوظ.

  2. في علامة التبويب Management في Kibana، انتقل إلى الكائنات المحفوظة واستورد جميع الملفات الثلاثة. بعد ذلك، في علامة التبويب لوحة المعلومات ، يمكنك فتح نموذج لوحة المعلومات وتحميلها.

يمكنك أيضا إنشاء المرئيات ولوحات المعلومات الخاصة بك المصممة خصيصا للمقاييس التي تهمك. اقرأ المزيد حول إنشاء مرئيات Kibana من وثائق Kibana الرسمية.

لقطة شاشة تعرض لوحة معلومات Kibana.

تصور سجلات تنبيه أنظمة الكشف عن اختراق الشبكة (IDS)

يوفر نموذج لوحة المعلومات عدة مرئيات لسجلات تنبيه Suricata:

  • التنبيه بواسطة GeoIP: خريطة توضح توزيع التنبيهات حسب بلدها/منطقتها الأصلية استنادا إلى الموقع الجغرافي (يحددها IP).

    لقطة شاشة تعرض خريطة لتنبيهات IP الجغرافية.

  • أهم 10 تنبيهات: ملخص للتنبيهات العشرة الأكثر تشغيلا ووصفها. يؤدي تحديد تنبيه فردي إلى تصفية لوحة المعلومات إلى المعلومات المتعلقة بهذا التنبيه المحدد.

    لقطة شاشة تعرض التنبيهات التي يتم تشغيلها بشكل متكرر.

  • عدد التنبيهات: العدد الإجمالي للتنبيهات التي تم تشغيل مجموعة القواعد لها.

    لقطة شاشة تعرض عدد التنبيهات.

  • Top 20 ScrIP - Alerts, Top 20 DestIP - Alerts, Top 20 SrcPort - Alerts, Top 20 DestPort - Alerts: المخططات الدائرية التي تعرض المصادر والوجهات لأعلى 20 IPs والمنافذ التي تم تشغيل التنبيهات عليها. يمكنك التصفية على عناوين IP أو منافذ معينة لمعرفة عدد وأنواع التنبيهات التي يتم تشغيلها.

    لقطة شاشة تعرض المخططات الدائرية لأهم 20 IPs ومنافذ تم تشغيل التنبيهات عليها.

  • ملخص التنبيه: جدول يلخص تفاصيل محددة لكل تنبيه. يمكنك تخصيص هذا الجدول لإظهار معلمات أخرى ذات أهمية لكل تنبيه.

    تظهر لقطة الشاشة جدول ملخص مع تفاصيل حول التنبيهات الفردية.

لمزيد من المعلومات حول إنشاء مرئيات ولوحات معلومات مخصصة، راجع وثائق Kibana الرسمية.

الخاتمة

من خلال الجمع بين التقاطات الحزمة من Network Watcher وأدوات IDS مفتوحة المصدر مثل Suricata، يمكنك إجراء الكشف عن اختراق الشبكة لمجموعة واسعة من التهديدات.

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

  • التفاعل مع شبكتك وحمايتها من محاولات التسلل الضارة.
  • إنشاء قواعد لمنع عمليات الاختراق المستقبلية إلى شبكتك.

الخطوة التالية

تعرف على كيفية تشغيل التقاطات الحزمة استنادا إلى التنبيهات: