2. المكدس المرن: تحليل سجلات الأمان. لوغستاش

2. المكدس المرن: تحليل سجلات الأمان. لوغستاش

في الماضي مقالة التقينا كومة الأيائلوما هي المنتجات البرمجية التي تتكون منها. والمهمة الأولى التي يواجهها المهندس عند العمل مع مكدس ELK هي إرسال السجلات للتخزين في Elasticsearch لتحليلها لاحقًا. ومع ذلك، هذا مجرد كلام، حيث تقوم Elasticsearch بتخزين السجلات في شكل مستندات تحتوي على حقول وقيم معينة، مما يعني أنه يجب على المهندس استخدام أدوات مختلفة لتحليل الرسالة المرسلة من الأنظمة النهائية. يمكن القيام بذلك بعدة طرق - اكتب بنفسك برنامجًا يضيف المستندات إلى قاعدة البيانات باستخدام واجهة برمجة التطبيقات، أو استخدم الحلول الجاهزة. في هذه الدورة سننظر في الحل Logstash، وهو جزء من مكدس ELK. سننظر في كيفية إرسال السجلات من أنظمة نقطة النهاية إلى Logstash، ثم سنقوم بإعداد ملف تكوين للتحليل وإعادة التوجيه إلى قاعدة بيانات Elasticsearch. للقيام بذلك، نأخذ السجلات من جدار الحماية Check Point كنظام وارد.

لا تغطي الدورة تثبيت ELK Stack، نظرًا لوجود عدد كبير من المقالات حول هذا الموضوع، سننظر في مكون التكوين.

لنضع خطة عمل لتكوين Logstash:

  1. التحقق من أن Elasticsearch سيقبل السجلات (التحقق من وظائف المنفذ وانفتاحه).
  2. نحن نفكر في كيفية إرسال الأحداث إلى Logstash واختيار الطريقة وتنفيذها.
  3. نقوم بتكوين الإدخال في ملف التكوين Logstash.
  4. نقوم بتكوين الإخراج في ملف تكوين Logstash في وضع التصحيح لفهم شكل رسالة السجل.
  5. إعداد الفلتر.
  6. إعداد الإخراج الصحيح في ElasticSearch.
  7. يتم إطلاق Logstash.
  8. التحقق من السجلات في كيبانا.

دعونا ننظر إلى كل نقطة بمزيد من التفصيل:

التحقق من أن Elasticsearch سيقبل السجلات

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

[elastic@elasticsearch ~]$ curl -u <<user_name>> : <<password>> -sS -XGET "<<ip_address_elasticsearch>>:9200"
{
  "name" : "elastic-1",
  "cluster_name" : "project",
  "cluster_uuid" : "sQzjTTuCR8q4ZO6DrEis0A",
  "version" : {
    "number" : "7.4.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "fc0eeb6e2c25915d63d871d344e3d0b45ea0ea1e",
    "build_date" : "2019-10-22T17:16:35.176724Z",
    "build_snapshot" : false,
    "lucene_version" : "8.2.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
[elastic@elasticsearch ~]$

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

دعونا نلقي نظرة على كيفية إرسال السجلات إلى Logstash من جدار حماية نقطة التفتيش

من خادم إدارة Check Point، يمكنك إرسال السجلات إلى Logstash عبر سجل النظام باستخدام الأداة المساعدة log_exporter، ويمكنك قراءة المزيد عنها هنا مقالة، هنا سنترك فقط الأمر الذي يُنشئ الدفق:

cp_log_export أضف اسمًا check_point_syslog الهدف-الخادم < > منفذ الهدف 5555 بروتوكول TCP، وضع القراءة العام شبه الموحد

< > - عنوان الخادم الذي يعمل عليه Logstash، المنفذ المستهدف 5555 - المنفذ الذي سنرسل إليه السجلات، يمكن لإرسال السجلات عبر TCP تحميل الخادم، لذلك في بعض الحالات يكون استخدام UDP أكثر صحة.

إعداد INPUT في ملف تكوين Logstash

2. المكدس المرن: تحليل سجلات الأمان. لوغستاش

بشكل افتراضي، يوجد ملف التكوين في الدليل /etc/logstash/conf.d/. يتكون ملف التكوين من ثلاثة أجزاء ذات معنى: INPUT، وFILTER، وOUTPUT. في INPUT نشير إلى المكان الذي سيأخذ منه النظام السجلات منقي تحليل السجل - قم بإعداد كيفية تقسيم الرسالة إلى حقول وقيم OUTPUT نقوم بتكوين دفق الإخراج - حيث سيتم إرسال السجلات التي تم تحليلها.

أولاً، لنقم بتكوين INPUT، ونفكر في بعض الأنواع التي يمكن أن تكون - file وtcp وexe.

برنامج التعاون الفني:

input {
tcp {
    port => 5555
    host => “10.10.1.205”
    type => "checkpoint"
    mode => "server"
}
}

الوضع => "الخادم"
يشير إلى أن Logstash يقبل الاتصالات.

المنفذ => 5555
المضيف => "10.10.1.205"
نحن نقبل الاتصالات عبر عنوان IP 10.10.1.205 (Logstash)، المنفذ 5555 - يجب السماح بالمنفذ من خلال سياسة جدار الحماية.

اكتب => "نقطة تفتيش"
نحن نحتفل بالمستند، وهو أمر مريح للغاية إذا كان لديك العديد من الاتصالات الواردة. بعد ذلك، يمكنك كتابة عامل التصفية الخاص بك لكل اتصال باستخدام البنية المنطقية if.

ملف:

input {
  file {
    path => "/var/log/openvas_report/*"
    type => "openvas"
    start_position => "beginning"
    }
}

وصف الإعدادات:
المسار => "/var/log/openvas_report/*"
نشير إلى الدليل الذي يجب قراءة الملفات فيه.

اكتب => "أوبنفاس"
نوع الحدث.

start_position => "البداية"
عند تغيير ملف، يقرأ الملف بأكمله؛ إذا قمت بتعيين "النهاية"، ينتظر النظام ظهور سجلات جديدة في نهاية الملف.

المدير التنفيذي:

input {
  exec {
    command => "ls -alh"
    interval => 30
  }
}

باستخدام هذا الإدخال، يتم إطلاق أمر shell (فقط!) ويتم تحويل مخرجاته إلى رسالة سجل.

الأمر => "لس -alh"
الأمر الذي يهمنا مخرجاته.

الفاصل الزمني => 30
الفاصل الزمني لاستدعاء الأمر بالثواني.

من أجل الحصول على السجلات من جدار الحماية، نقوم بتسجيل مرشح برنامج التعاون الفني أو UDPاعتمادًا على كيفية إرسال السجلات إلى Logstash.

نقوم بتكوين الإخراج في ملف تكوين Logstash في وضع التصحيح لفهم شكل رسالة السجل

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

للقيام بذلك، سوف نستخدم مرشحًا يقوم بإخراج النتيجة إلى stdout لعرض الرسالة الأصلية؛ سيبدو ملف التكوين الكامل في الوقت الحالي كما يلي:

input 
{
         tcp 
         {
                port => 5555
  	  	type => "checkpoint"
    		mode => "server"
                host => “10.10.1.205”
   	 }
}

output 
{
	if [type] == "checkpoint" 
       {
		stdout { codec=> json }
	}
}

قم بتشغيل الأمر للتحقق:
Sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
نرى النتيجة، الصورة قابلة للنقر:

2. المكدس المرن: تحليل سجلات الأمان. لوغستاش

إذا قمت بنسخه سيبدو هكذا:

action="Accept" conn_direction="Internal" contextnum="1" ifdir="outbound" ifname="bond1.101" logid="0" loguid="{0x5dfb8c13,0x5,0xfe0a0a0a,0xc0000000}" origin="10.10.10.254" originsicname="CN=ts-spb-cpgw-01,O=cp-spb-mgmt-01.tssolution.local.kncafb" sequencenum="8" time="1576766483" version="5" context_num="1" dst="10.10.10.10" dst_machine_name="[email protected]" layer_name="TSS-Standard Security" layer_name="TSS-Standard Application" layer_uuid="dae7f01c-4c98-4c3a-a643-bfbb8fcf40f0" layer_uuid="dbee3718-cf2f-4de0-8681-529cb75be9a6" match_id="8" match_id="33554431" parent_rule="0" parent_rule="0" rule_action="Accept" rule_action="Accept" rule_name="Implicit Cleanup" rule_uid="6dc2396f-9644-4546-8f32-95d98a3344e6" product="VPN-1 & FireWall-1" proto="17" s_port="37317" service="53" service_id="domain-udp" src="10.10.1.180" ","type":"qqqqq","host":"10.10.10.250","@version":"1","port":50620}{"@timestamp":"2019-12-19T14:50:12.153Z","message":"time="1576766483" action="Accept" conn_direction="Internal" contextnum="1" ifdir="outbound" ifname="bond1.101" logid="0" loguid="{0x5dfb8c13,

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

إعداد الفلتر

في المرحلة الأخيرة اخترنا kv، يتم عرض تكوين هذا المرشح أدناه:

filter {
if [type] == "checkpoint"{
	kv {
		value_split => "="
		allow_duplicate_values => false
	}
}
}

نختار الرمز الذي سنقسم به الحقل والقيمة - "=". إذا كان لدينا إدخالات متطابقة في السجل، فإننا نحفظ مثيلًا واحدًا فقط في قاعدة البيانات، وإلا فسوف ينتهي بك الأمر بمصفوفة من القيم المتطابقة، أي إذا كانت لدينا الرسالة “foo = some foo=some” فإننا نكتب foo فقط = بعض.

إعداد الإخراج الصحيح في ElasticSearch

بمجرد تكوين عامل التصفية، يمكنك تحميل السجلات إلى قاعدة البيانات elasticsearch:

output 
{
if [type] == "checkpoint"
{
 	elasticsearch 
        {
		hosts => ["10.10.1.200:9200"]
		index => "checkpoint-%{+YYYY.MM.dd}"
    		user => "tssolution"
    		password => "cool"
  	}
}
}

إذا تم توقيع المستند بنوع نقطة التحقق، فإننا نحفظ الحدث في قاعدة بيانات Elasticsearch، التي تقبل الاتصالات على 10.10.1.200 على المنفذ 9200 افتراضيًا. يتم حفظ كل مستند في فهرس محدد، وفي هذه الحالة نحفظ في الفهرس "نقطة تفتيش-" + التاريخ الزمني الحالي. يمكن أن يحتوي كل فهرس على مجموعة محددة من الحقول، أو يتم إنشاؤه تلقائيًا عندما يظهر حقل جديد في رسالة؛ ويمكن عرض إعدادات الحقل ونوعها في التعيينات.

إذا قمت بتكوين المصادقة (سننظر إليها لاحقًا)، فيجب تحديد بيانات الاعتماد للكتابة إلى فهرس معين، في هذا المثال هي "tssolution" مع كلمة المرور "cool". يمكنك التمييز بين حقوق المستخدم في كتابة السجلات لفهرس محدد فقط وليس أكثر.

إطلاق لوجستاش.

ملف تكوين Logstash:

input 
{
         tcp 
         {
                port => 5555
  	  	type => "checkpoint"
    		mode => "server"
                host => “10.10.1.205”
   	 }
}

filter {
        if [type] == "checkpoint"{
	kv {
		value_split => "="
		allow_duplicate_values => false
	}
        }
}

output 
{
if [type] == "checkpoint"
{
 	elasticsearch 
        {
		hosts => ["10.10.1.200:9200"]
		index => "checkpoint-%{+YYYY.MM.dd}"
    		user => "tssolution"
    		password => "cool"
  	}
}
}

نتحقق من ملف التكوين للتأكد من صحته:
/usr/share/logstash/bin//logstash -f signal.conf
2. المكدس المرن: تحليل سجلات الأمان. لوغستاش

ابدأ عملية Logstash:
sudo systemctl start logstash

نتحقق من أن العملية قد بدأت:
حالة sudo systemctl logstash

2. المكدس المرن: تحليل سجلات الأمان. لوغستاش

دعونا نتحقق مما إذا كان المقبس قيد التشغيل:
نتستت -نات |جريب 5555

2. المكدس المرن: تحليل سجلات الأمان. لوغستاش

التحقق من السجلات في كيبانا.

بعد تشغيل كل شيء، انتقل إلى Kibana - Discover، وتأكد من تكوين كل شيء بشكل صحيح، وأن الصورة قابلة للنقر!

2. المكدس المرن: تحليل سجلات الأمان. لوغستاش

جميع السجلات موجودة ويمكننا رؤية جميع الحقول وقيمها!

اختتام

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

ابقي على اتصالتیلیجرام, فيسبوك, VK, مدونة حل TS), ياندكس زين.

المصدر: www.habr.com

إضافة تعليق