2. لچکدار اسٹیک: سیکیورٹی لاگز کا تجزیہ۔ لاگ اسٹیش

2. لچکدار اسٹیک: سیکیورٹی لاگز کا تجزیہ۔ لاگ اسٹیش

ماضی میں آرٹیکل ہم سے ملاقات ELK اسٹیک، یہ کون سے سافٹ ویئر پروڈکٹس پر مشتمل ہے۔ اور ELK اسٹیک کے ساتھ کام کرتے وقت انجینئر کو پہلا کام جس کا سامنا کرنا پڑتا ہے وہ بعد کے تجزیے کے لیے elasticsearch میں سٹوریج کے لیے لاگ بھیجنا ہے۔ تاہم، یہ صرف ہونٹ سروس ہے، elasticsearch کچھ مخصوص فیلڈز اور اقدار کے ساتھ دستاویزات کی شکل میں لاگ اسٹور کرتا ہے، جس کا مطلب ہے کہ انجینئر کو اینڈ سسٹم سے بھیجے گئے پیغام کو پارس کرنے کے لیے مختلف ٹولز کا استعمال کرنا چاہیے۔ یہ کئی طریقوں سے کیا جا سکتا ہے - ایک پروگرام خود لکھیں جو API کا استعمال کرتے ہوئے ڈیٹا بیس میں دستاویزات شامل کرے، یا ریڈی میڈ حل استعمال کرے۔ اس کورس میں ہم حل پر غور کریں گے۔ لاگسٹ، جو ELK اسٹیک کا حصہ ہے۔ ہم دیکھیں گے کہ ہم اینڈپوائنٹ سسٹمز سے لاگ اسٹاش پر لاگ کیسے بھیج سکتے ہیں، اور پھر ہم تجزیہ کرنے اور Elasticsearch ڈیٹا بیس پر ری ڈائریکٹ کرنے کے لیے ایک کنفیگریشن فائل ترتیب دیں گے۔ ایسا کرنے کے لیے، ہم آنے والے نظام کے طور پر چیک پوائنٹ فائر وال سے لاگز لیتے ہیں۔

کورس میں ELK اسٹیک کی تنصیب کا احاطہ نہیں کیا گیا ہے، کیونکہ اس موضوع پر مضامین کی ایک بڑی تعداد موجود ہے؛ ہم کنفیگریشن کے جز پر غور کریں گے۔

آئیے Logstash کنفیگریشن کے لیے ایک ایکشن پلان بنائیں:

  1. یہ چیک کرنا کہ elasticsearch لاگز کو قبول کرے گا (پورٹ کی فعالیت اور کھلے پن کی جانچ کرنا)۔
  2. ہم اس بات پر غور کرتے ہیں کہ ہم واقعات کو Logstash پر کیسے بھیج سکتے ہیں، ایک طریقہ منتخب کر سکتے ہیں، اور اسے نافذ کر سکتے ہیں۔
  3. ہم Logstash کنفیگریشن فائل میں ان پٹ کو کنفیگر کرتے ہیں۔
  4. ہم لاگ اسٹاش کنفیگریشن فائل میں آؤٹ پٹ کو ڈیبگ موڈ میں کنفیگر کرتے ہیں تاکہ یہ سمجھ سکیں کہ لاگ میسج کیسا لگتا ہے۔
  5. فلٹر ترتیب دینا۔
  6. ElasticSearch میں درست آؤٹ پٹ ترتیب دینا۔
  7. Logstash لانچ ہوتا ہے۔
  8. کبانا میں لاگز کی جانچ کر رہا ہے۔

آئیے ہر ایک نکتے کو مزید تفصیل سے دیکھتے ہیں:

چیک کرنا کہ elasticsearch لاگز کو قبول کرے گا۔

ایسا کرنے کے لیے، آپ curl کمانڈ استعمال کر سکتے ہیں تاکہ اس سسٹم سے Elasticsearch تک رسائی کو چیک کر سکیں جس پر Logstash تعینات ہے۔ اگر آپ کے پاس تصدیق کنفیگر ہے، تو ہم صارف/پاس ورڈ کو curl کے ذریعے بھی منتقل کرتے ہیں، اگر آپ نے اسے تبدیل نہیں کیا ہے تو پورٹ 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 کو لاگ کیسے بھیج سکتے ہیں۔

چیک پوائنٹ مینجمنٹ سرور سے آپ log_exporter یوٹیلیٹی کا استعمال کرتے ہوئے syslog کے ذریعے Logstash کو لاگ بھیج سکتے ہیں، آپ اس کے بارے میں مزید یہاں پڑھ سکتے ہیں۔ آرٹیکل، یہاں ہم صرف وہی کمانڈ چھوڑیں گے جو سٹریم بناتا ہے:

cp_log_export نام شامل کریں check_point_syslog target-server > target-port 5555 protocol tcp فارمیٹ جنرک ریڈ موڈ نیم متحد

> - سرور کا پتہ جس پر Logstash چلتا ہے، ٹارگٹ پورٹ 5555 - وہ پورٹ جس پر ہم لاگ بھیجیں گے، tcp کے ذریعے لاگ بھیجنے سے سرور لوڈ ہوسکتا ہے، اس لیے بعض صورتوں میں udp استعمال کرنا زیادہ درست ہے۔ .

Logstash کنفیگریشن فائل میں INPUT ترتیب دینا

2. لچکدار اسٹیک: سیکیورٹی لاگز کا تجزیہ۔ لاگ اسٹیش

پہلے سے طے شدہ طور پر، کنفیگریشن فائل /etc/logstash/conf.d/ ڈائریکٹری میں واقع ہوتی ہے۔ کنفیگریشن فائل 3 معنی خیز حصوں پر مشتمل ہے: ان پٹ، فلٹر، آؤٹ پٹ۔ میں INPUT ہم اشارہ کرتے ہیں کہ سسٹم لاگ ان کہاں سے لے گا۔ فلٹر لاگ کو پارس کریں - سیٹ اپ کریں کہ پیغام کو فیلڈز اور ویلیوز میں کیسے تقسیم کیا جائے۔ پیداوار ہم آؤٹ پٹ اسٹریم کو ترتیب دیتے ہیں - جہاں تجزیہ شدہ لاگز بھیجے جائیں گے۔

سب سے پہلے، آئیے INPUT کو ترتیب دیں، کچھ اقسام پر غور کریں جو ہو سکتی ہیں - فائل، tcp اور exe۔

Tcp:

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 کے ذریعے کنکشن قبول کرتے ہیں - پورٹ کو فائر وال پالیسی کے ذریعے اجازت ہونی چاہیے۔

قسم => "چیک پوائنٹ"
ہم دستاویز کو نشان زد کرتے ہیں، اگر آپ کے پاس کئی آنے والے کنکشن ہیں تو یہ بہت آسان ہے۔ اس کے بعد، ہر کنکشن کے لیے آپ logical if construct کا استعمال کرتے ہوئے اپنا فلٹر لکھ سکتے ہیں۔

: فائل

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

ترتیبات کی تفصیل:
راستہ => "/var/log/openvas_report/*"
ہم اس ڈائریکٹری کی نشاندہی کرتے ہیں جس میں فائلوں کو پڑھنے کی ضرورت ہے۔

قسم => "اوپن واس"
واقعہ کی قسم۔

start_position => "شروع"
فائل کو تبدیل کرتے وقت، یہ پوری فائل کو پڑھتا ہے؛ اگر آپ "اینڈ" سیٹ کرتے ہیں، تو سسٹم فائل کے آخر میں نئے ریکارڈ کے ظاہر ہونے کا انتظار کرتا ہے۔

Exec:

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

اس ان پٹ کا استعمال کرتے ہوئے، ایک (صرف!) شیل کمانڈ شروع کی جاتی ہے اور اس کی آؤٹ پٹ کو لاگ میسج میں تبدیل کر دیا جاتا ہے۔

کمانڈ => "ls -alh"
وہ کمانڈ جس کی آؤٹ پٹ میں ہماری دلچسپی ہے۔

وقفہ => 30
سیکنڈوں میں انووکیشن وقفہ کمانڈ کریں۔

فائر وال سے لاگ وصول کرنے کے لیے، ہم ایک فلٹر رجسٹر کرتے ہیں۔ ٹی سی پی یا udp, اس بات پر منحصر ہے کہ لاگ اسٹاش کو کیسے بھیجے جاتے ہیں۔

ہم لاگ اسٹاش کنفیگریشن فائل میں آؤٹ پٹ کو ڈیبگ موڈ میں کنفیگر کرتے ہیں تاکہ یہ سمجھ سکیں کہ لاگ میسج کیسا لگتا ہے۔

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 میں درست آؤٹ پٹ ترتیب دینا

فلٹر کنفیگر ہونے کے بعد، آپ لاگز کو ڈیٹا بیس میں اپ لوڈ کر سکتے ہیں۔ لچکدار تلاش:

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 پر بطور ڈیفالٹ کنکشن قبول کرتا ہے۔ ہر دستاویز کو ایک مخصوص انڈیکس میں محفوظ کیا جاتا ہے، اس صورت میں ہم انڈیکس "چیک پوائنٹ-" + موجودہ وقت کی تاریخ میں محفوظ کرتے ہیں۔ ہر انڈیکس میں فیلڈز کا ایک مخصوص سیٹ ہو سکتا ہے، یا پیغام میں نیا فیلڈ ظاہر ہونے پر خود بخود بن جاتا ہے؛ فیلڈ کی ترتیبات اور ان کی قسم میپنگ میں دیکھی جا سکتی ہے۔

اگر آپ کے پاس توثیق کنفیگر ہے (ہم اسے بعد میں دیکھیں گے)، ایک مخصوص انڈیکس پر لکھنے کے لیے اسناد کی وضاحت ہونی چاہیے، اس مثال میں یہ پاس ورڈ "cool" کے ساتھ "tssolution" ہے۔ آپ صرف ایک مخصوص انڈیکس پر لاگ لکھنے کے لیے صارف کے حقوق میں فرق کر سکتے ہیں اور مزید نہیں۔

Logstash لانچ کریں۔

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 checkpoint.conf
2. لچکدار اسٹیک: سیکیورٹی لاگز کا تجزیہ۔ لاگ اسٹیش

Logstash عمل شروع کریں:
سڈو سیسٹمیکٹل لاگ ان شروع کریں

ہم چیک کرتے ہیں کہ عمل شروع ہو گیا ہے:
sudo systemctl status logstash

2. لچکدار اسٹیک: سیکیورٹی لاگز کا تجزیہ۔ لاگ اسٹیش

آئیے چیک کریں کہ آیا ساکٹ اوپر ہے:
netstat -nat |grep 5555

2. لچکدار اسٹیک: سیکیورٹی لاگز کا تجزیہ۔ لاگ اسٹیش

کبانا میں لاگز کی جانچ کر رہا ہے۔

سب کچھ چلنے کے بعد، Kibana پر جائیں - دریافت کریں، اس بات کو یقینی بنائیں کہ ہر چیز صحیح طریقے سے ترتیب دی گئی ہے، تصویر قابل کلک ہے!

2. لچکدار اسٹیک: سیکیورٹی لاگز کا تجزیہ۔ لاگ اسٹیش

تمام لاگز اپنی جگہ پر ہیں اور ہم تمام فیلڈز اور ان کی قدروں کو دیکھ سکتے ہیں!

حاصل يہ ہوا

ہم نے دیکھا کہ Logstash کنفیگریشن فائل کیسے لکھی جائے، اور اس کے نتیجے میں ہمیں تمام فیلڈز اور ویلیوز کا تجزیہ کار ملا۔ اب ہم مخصوص فیلڈز کی تلاش اور سازش کے ساتھ کام کر سکتے ہیں۔ اس کے بعد کورس میں ہم کبانا میں ویژولائزیشن کو دیکھیں گے اور ایک سادہ ڈیش بورڈ بنائیں گے۔ یہ بات قابل ذکر ہے کہ Logstash کنفیگریشن فائل کو بعض حالات میں مسلسل اپ ڈیٹ کرنے کی ضرورت ہوتی ہے، مثال کے طور پر، جب ہم کسی فیلڈ کی ویلیو کو نمبر سے ایک لفظ میں تبدیل کرنا چاہتے ہیں۔ اس کے بعد کے مضامین میں ہم اسے مسلسل کریں گے۔

تو دیکھتے رہیںتار, فیس بک, VK, ٹی ایس حل بلاگ), یینڈیکس زین۔.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں