د زیمبرا OSE لاګونو سره څنګه کار کول

د ټولو پیښو ثبتول د هر کارپوریټ سیسټم یو له خورا مهم دندو څخه دی. لاګز تاسو ته اجازه درکوي چې راپورته کیدونکي ستونزې حل کړئ ، د معلوماتو سیسټمونو عملیات پلټنه وکړئ ، او همدارنګه د معلوماتو امنیت پیښې وڅیړئ. Zimbra OSE د خپلو عملیاتو تفصيلي لاګونه هم ساتي. پدې کې د سرور فعالیت څخه د کاروونکو لخوا بریښنالیکونو لیږلو او ترلاسه کولو پورې ټول معلومات شامل دي. په هرصورت، د زیمبرا OSE لخوا رامینځته شوي لاګ لوستل یو غیر معمولي کار دی. پدې مقاله کې ، د یو ځانګړي مثال په کارولو سره ، موږ به تاسو ته ووایو چې څنګه د زیمبرا OSE لاګونه ولولئ ، او همدارنګه څنګه دوی مرکزي کړئ.

د زیمبرا OSE لاګونو سره څنګه کار کول
Zimbra OSE ټول محلي لاګونه په /opt/zimbra/log فولډر کې ذخیره کوي، او لاګونه هم په /var/log/zimbra.log فایل کې موندل کیدی شي. د دې څخه خورا مهم mailbox.log دی. دا ټول هغه کړنې ثبتوي چې د میل سرور کې پیښیږي. پدې کې د بریښنالیکونو لیږد ، د کارونکي تصدیق کولو ډیټا ، د ننوتلو ناکامې هڅې ، او نور شامل دي. په mailbox.log کې ننوتنې د متن تار دی چې هغه وخت پکې شامل وي چې پیښه رامینځته شوې ، د پیښې کچه ، د موضوع شمیره چې پیښه پکې رامینځته شوې ، د کارونکي نوم او IP پته ، او همدارنګه د پیښې متن توضیحات .

د زیمبرا OSE لاګونو سره څنګه کار کول

د لاګ کچه د سرور په عملیاتو کې د پیښې اغیزې درجې په ګوته کوي. په ډیفالټ کې د پیښې 4 کچې شتون لري: معلومات ، خبرداری ، خطا او وژونکي. راځئ چې د شدت په زیاتوالي کې ټولو کچو ته وګورو.

  • INFO - پدې کچه پیښې معمولا د Zimbra OSE د پرمختګ په اړه د معلوماتو ورکولو لپاره دي. په دې کچه پیغامونو کې د میل باکس د جوړولو یا حذف کولو راپورونه شامل دي، او داسې نور.
  • خبرداری - د دې کچې پیښې د داسې شرایطو په اړه خبر ورکوي چې احتمالي خطرناک دي ، مګر د سرور عملیات اغیزه نه کوي. د مثال په توګه، د WARN کچه د ناکام کاروونکي د ننوتلو هڅې په اړه یو پیغام په نښه کوي.
  • تېروتنه - په لاګ کې د دې پیښې کچه د یوې غلطۍ پیښې په اړه خبر ورکوي چې په طبیعت کې ځایی دی او د سرور په عملیاتو کې مداخله نه کوي. دا کچه کولی شي یوه تېروتنه په نښه کړي په کوم کې چې د انفرادي کارونکي شاخص ډاټا فاسد شوې.
  • FATAL - دا کچه تېروتنې په ګوته کوي چې له امله یې سرور نشي کولی په نورمال ډول کار کولو ته دوام ورکړي. د مثال په توګه، د FATAL کچه به د یو ریکارډ لپاره وي چې د DBMS سره د نښلولو نشتوالی په ګوته کوي.

د میل سرور لاګ فایل هره ورځ تازه کیږي. د فایل وروستۍ نسخه تل د Mailbox.log نوم لري، پداسې حال کې چې د یوې ټاکلې نیټې لپاره لاګونه په نوم کې نیټه لري او په آرشیف کې شتون لري. د مثال په توګه mailbox.log.2020-09-29.tar.gz. دا د فعالیت لاګ بیک اپ کول او د لاګونو له لارې لټون کول خورا اسانه کوي.

د سیسټم مدیر د اسانتیا لپاره، /opt/zimbra/log/ فولډر نور لاګونه لري. په دوی کې یوازې هغه ننوتل شامل دي چې د ځانګړي Zimbra OSE عناصرو سره تړاو لري. د مثال په توګه، audit.log یوازې د کارونکي تصدیق په اړه ریکارډونه لري، clamd.log د انټي ویروس د عملیاتو په اړه معلومات لري، او داسې نور. په هرصورت ، د نفوذ کونکو څخه د زیمبرا OSE سرور ساتلو عالي میتود دی د سرور محافظت د Fail2Ban په کارولو سره، کوم چې یوازې د audit.log پراساس کار کوي. دا هم یو ښه عمل دی چې د قوماندې اجرا کولو لپاره د کرون دنده اضافه کړئ grep -ir "ناسلي پاسورډ" /opt/zimbra/log/audit.logد ورځني ننوتلو ناکامۍ معلوماتو ترلاسه کولو لپاره.

د زیمبرا OSE لاګونو سره څنګه کار کول
یوه بیلګه چې څنګه audit.log دوه ځله غلط داخل شوی پاسورډ ښیې او د ننوتلو بریالۍ هڅه.

په زیمبرا OSE کې ننوتل د مختلف جدي ناکامیو لاملونو پیژندلو کې خورا ګټور کیدی شي. په اوس وخت کې کله چې یوه جدي تېروتنه واقع کیږي، مدیر معمولا د لاګ لوستلو لپاره وخت نلري. دا اړینه ده چې ژر تر ژره سرور بیرته راوباسئ. په هرصورت، وروسته، کله چې سرور بیک اپ وي او ډیری لاګونه رامینځته کوي، نو په لوی فایل کې د اړتیا وړ ننوتلو موندل ستونزمن کیدی شي. د دې لپاره چې د غلطۍ ریکارډ ګړندي ومومئ ، دا کافي ده چې هغه وخت وپیژنئ چې سرور په کوم وخت کې بیا پیل شوی و او د دې وخت نیټې په لاګونو کې ننوتل ومومئ. پخوانۍ ننوتل به د هغه تېروتنې ریکارډ وي چې پیښ شوي. تاسو کولی شئ د FATAL کلیدي کلمې په لټون کولو سره د خطا پیغام هم ومومئ.

د زیمبرا OSE لاګونه تاسو ته اجازه درکوي غیر جدي ناکامۍ وپیژني. د مثال په توګه، د سمبالونکي استثناء موندلو لپاره، تاسو کولی شئ د سمبالونکي استثناء لټون وکړئ. ډیری وختونه، د هینډلرانو لخوا رامینځته شوي غلطۍ د سټیک ټریس سره وي چې دا تشریح کوي چې د استثنا لامل څه دی. د بریښنالیک رسولو سره د غلطیو په صورت کې، تاسو باید خپل لټون د LmtpServer کلیمې سره پیل کړئ، او د POP یا IMAP پروتوکولونو پورې اړوند غلطیو لټون کولو لپاره، تاسو کولی شئ د ImapServer او Pop3Server کلیدي کلمې وکاروئ.

لاګز کولی شي د معلوماتو امنیتي پیښو تحقیق کولو کې هم مرسته وکړي. راځئ چې یو ځانګړی مثال وګورو. د سپتمبر په 20 ، یو کارمند یو پیرودونکي ته په ویروس اخته شوی لیک واستاوه. د پایلې په توګه، د پیرودونکي په کمپیوټر کې ډاټا کوډ شوې. په هرصورت، کارمند قسم کوي چې هغه هیڅ شی نه دی لیږلی. د پیښې په اړه د تحقیقاتو د یوې برخې په توګه، د تصدۍ امنیت خدمت د سیسټم له مدیر څخه د سپتمبر د 20 لپاره د میل سرور لاګونو غوښتنه کوي چې د کارونکي تحقیق سره تړاو لري. د وخت سټمپ څخه مننه، د سیسټم مدیر اړین لاګ فایل پیدا کوي، اړین معلومات استخراجوي او امنیتي متخصصینو ته یې لیږدوي. دوی، په بدل کې، د هغې له لارې وګوري او ومومي چې هغه IP پته چې له هغې څخه دا لیک لیږل شوی د کارونکي کمپیوټر IP پتې سره مطابقت لري. د سي سي ټي وي فوٹیج تایید کړه چې کارمند په خپل کار ځای کې و کله چې لیک لیږل شوی و. دا معلومات کافي وو چې هغه د معلوماتو امنیت قواعدو څخه په سرغړونې تورن کړي او هغه یې ګوښه کړي. 

د زیمبرا OSE لاګونو سره څنګه کار کول
د Mailbox.log څخه په جلا فایل کې د ننوتلو څخه د یو حساب په اړه د ریکارډونو استخراج یوه بیلګه

هرڅه خورا پیچلي کیږي کله چې دا د څو سرور زیربناوو ته راځي. څرنګه چې لاګونه په محلي توګه راټول شوي، نو د دوی سره په څو سرور زیربنا کې کار کول خورا ستونزمن دي او له همدې امله د لاګونو راټولولو مرکزي کولو ته اړتیا ده. دا د لوګو راټولولو لپاره د کوربه په ترتیب کولو سره ترسره کیدی شي. زیربنا ته د وقف شوي کوربه اضافه کولو لپاره کومه ځانګړې اړتیا نشته. هر میل سرور کولی شي د لوګو راټولولو لپاره د نوډ په توګه عمل وکړي. زموږ په قضیه کې، دا به د Mailstore01 نوډ وي.

پدې سرور کې موږ باید لاندې کمانډونه دننه کړو:

sudo su – zimbra 
zmcontrol stop
exit
sudo /opt/zimbra/libexec/zmfixperms -e -v

د /etc/sysconfig/rsyslog فایل سم کړئ، او SYSLOGD_OPTIONS="-r -c 2" تنظیم کړئ

/etc/rsyslog.conf ایډیټ کړئ او لاندې لینونه یې کم کړئ:
$ModLoad imudp
$UDPServerRun 514

لاندې کمانډونه دننه کړئ:

sudo /etc/init.d/rsyslog stop
sudo /etc/init.d/rsyslog start
sudo su – zimbra
zmcontrol start
exit
sudo /opt/zimbra/libexec/zmloggerinit
sudo /opt/zimbra/bin/zmsshkeygen
sudo /opt/zimbra/bin/zmupdateauthkeys

تاسو کولی شئ وګورئ چې هرڅه د zmprov gacf کمانډ په کارولو سره کار کوي grep zimbraLogHostname. د کمانډ اجرا کولو وروسته، د کوربه نوم چې لوګو راټولوي باید ښکاره شي. د دې د بدلولو لپاره، تاسو باید کمانډ داخل کړئ zmprov mcf zimbraLogHostname mailstore01.company.ru.

په نورو ټولو زیربناوو سرورونو (LDAP، MTA او نورو میل پلورنځیو) کې، د zmprov gacf |grep zimbraLogHostname کمانډ چل کړئ ترڅو د کوربه نوم وګورئ چې لاګونه لیږل کیږي. د دې د بدلولو لپاره، تاسو کولی شئ د zmprov mcf zimbraLogHostname mailstore01.company.ru کمانډ هم دننه کړئ

تاسو باید په هر سرور کې لاندې کمانډونه هم دننه کړئ:

sudo su - zimbra
/opt/zimbra/bin/zmsshkeygen
/opt/zimbra/bin/zmupdateauthkeys
exit
sudo /opt/zimbra/libexec/zmsyslogsetup
sudo service rsyslog restart
sudo su - zimbra
zmcontrol restart

له دې وروسته، ټولې لاګونه به په هغه سرور کې ثبت شي چې تاسو یې مشخص کړي، چیرې چې دوی په اسانۍ سره لیدل کیدی شي. همچنان ، د زیمبرا OSE مدیر کنسول کې ، د سرورونو حالت په اړه معلوماتو سره په سکرین کې ، د چلولو لوګر خدمت به یوازې د میل سټور 01 سرور لپاره ښودل شي.

د زیمبرا OSE لاګونو سره څنګه کار کول

د مدیر لپاره بل سر درد کیدی شي د ځانګړي بریښنالیک تعقیب وي. څنګه چې په زیمبرا OSE کې بریښنالیکونه په یوځل کې د ډیری مختلف پیښو څخه تیریږي: د انټي ویروس لخوا سکین کول ، انټي سپیم ، او داسې نور ، مخکې له دې چې ومنل شي یا لیږل شوي ، د مدیر لپاره ، که بریښنالیک ونه رسیږي ، نو په کوم مرحله کې موندل کیدی شي خورا ستونزمن وي. دا ورک شو

د دې ستونزې د حل لپاره، تاسو کولی شئ یو ځانګړی سکریپټ وکاروئ، کوم چې د معلوماتو امنیت متخصص ویکتور دوخوني لخوا رامینځته شوی او د پوسټ فکس پراختیا کونکو لخوا کارولو لپاره وړاندیز شوی. دا سکریپټ د یو ځانګړي پروسې لپاره د لاګونو څخه ننوتنې سره یوځای کوي او د دې له امله تاسو ته اجازه درکوي چې د پیژندونکي پراساس د ځانګړي لیک لیږلو سره تړلې ټولې ننوتنې په چټکۍ سره ښکاره کړئ. د دې کار د Zimbra OSE په ټولو نسخو کې ازمول شوی، د 8.7 څخه پیل کیږي. دلته د سکریپټ متن دی.

#! /usr/bin/perl

use strict;
use warnings;

# Postfix delivery agents
my @agents = qw(discard error lmtp local pipe smtp virtual);

my $instre = qr{(?x)
	A			# Absolute line start
	(?:S+ s+){3} 		# Timestamp, adjust for other time formats
	S+ s+ 		# Hostname
	(postfix(?:-[^/s]+)?)	# Capture instance name stopping before first '/'
	(?:/S+)*		# Optional non-captured '/'-delimited qualifiers
	/			# Final '/' before the daemon program name
	};

my $cmdpidre = qr{(?x)
	G			# Continue from previous match
	(S+)[(d+)]:s+	# command[pid]:
};

my %smtpd;
my %smtp;
my %transaction;
my $i = 0;
my %seqno;

my %isagent = map { ($_, 1) } @agents;

while (<>) {
	next unless m{$instre}ogc; my $inst = $1;
	next unless m{$cmdpidre}ogc; my $command = $1; my $pid = $2;

	if ($command eq "smtpd") {
		if (m{Gconnect from }gc) {
			# Start new log
			$smtpd{$pid}->{"log"} = $_; next;
		}

		$smtpd{$pid}->{"log"} .= $_;

		if (m{G(w+): client=}gc) {
			# Fresh transaction 
			my $qid = "$inst/$1";
			$smtpd{$pid}->{"qid"} = $qid;
			$transaction{$qid} = $smtpd{$pid}->{"log"};
			$seqno{$qid} = ++$i;
			next;
		}

		my $qid = $smtpd{$pid}->{"qid"};
		$transaction{$qid} .= $_
			if (defined($qid) && exists $transaction{$qid});
		delete $smtpd{$pid} if (m{Gdisconnect from}gc);
		next;
	}

	if ($command eq "pickup") {
		if (m{G(w+): uid=}gc) {
			my $qid = "$inst/$1";
			$transaction{$qid} = $_;
			$seqno{$qid} = ++$i;
		}
		next;
	}

	# bounce(8) logs transaction start after cleanup(8) already logged
	# the message-id, so the cleanup log entry may be first
	#
	if ($command eq "cleanup") {
		next unless (m{G(w+): }gc);
		my $qid = "$inst/$1";
		$transaction{$qid} .= $_;
		$seqno{$qid} = ++$i if (! exists $seqno{$qid});
		next;
	}

	if ($command eq "qmgr") {
		next unless (m{G(w+): }gc);
		my $qid = "$inst/$1";
		if (defined($transaction{$qid})) {
			$transaction{$qid} .= $_;
			if (m{Gremoved$}gc) {
				print delete $transaction{$qid}, "n";
			}
		}
		next;
	}

	# Save pre-delivery messages for smtp(8) and lmtp(8)
	#
	if ($command eq "smtp" || $command eq "lmtp") {
		$smtp{$pid} .= $_;

		if (m{G(w+): to=}gc) {
			my $qid = "$inst/$1";
			if (defined($transaction{$qid})) {
				$transaction{$qid} .= $smtp{$pid};
			}
			delete $smtp{$pid};
		}
		next;
	}

	if ($command eq "bounce") {
		if (m{G(w+): .*? notification: (w+)$}gc) {
			my $qid = "$inst/$1";
			my $newid = "$inst/$2";
			if (defined($transaction{$qid})) {
				$transaction{$qid} .= $_;
			}
			$transaction{$newid} =
				$_ . $transaction{$newid};
			$seqno{$newid} = ++$i if (! exists $seqno{$newid});
		}
		next;
	}

	if ($isagent{$command}) {
		if (m{G(w+): to=}gc) {
			my $qid = "$inst/$1";
			if (defined($transaction{$qid})) {
				$transaction{$qid} .= $_;
			}
		}
		next;
	}
}

# Dump logs of incomplete transactions.
foreach my $qid (sort {$seqno{$a} <=> $seqno{$b}} keys %transaction) {
    print $transaction{$qid}, "n";
}

سکریپټ په پرل کې لیکل شوی او د چلولو لپاره تاسو اړتیا لرئ دا په فایل کې خوندي کړئ collate.pl، دا د اجرا وړ کړئ ، او بیا د لاګ فایل مشخص کولو فایل چل کړئ او د هغه لیک پیژندنې معلوماتو استخراج لپاره چې تاسو یې په لټه کې یاست د pgrep په کارولو سره. collate.pl /var/log/zimbra.log | pgrep'[ایمیل خوندي شوی]> '. پایله به د لینونو ترتیبي محصول وي چې په سرور کې د لیک حرکت په اړه معلومات لري.

# collate.pl /var/log/zimbra.log | pgrep '<[email protected]>'
Oct 13 10:17:00 mail postfix/pickup[4089]: 4FF14284F45: uid=1034 from=********
Oct 13 10:17:00 mail postfix/cleanup[26776]: 4FF14284F45: message-id=*******
Oct 13 10:17:00 mail postfix/qmgr[9946]: 4FF14284F45: from=********, size=1387, nrcpt=1 (queue active)
Oct 13 10:17:00 mail postfix/smtp[7516]: Anonymous TLS connection established to mail.*******[168.*.*.4]:25: TLSv1 with cipher ADH-AES256-SHA (256/256 bits)
Oct 13 10:17:00 mail postfix/smtp[7516]: 4FF14284F45: to=*********, relay=mail.*******[168.*.*.4]:25, delay=0.25, delays=0.02/0.02/0.16/0.06, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 878833424CF)
Oct 13 10:17:00 mail postfix/qmgr[9946]: 4FF14284F45: removed
Oct 13 10:17:07 mail postfix/smtpd[21777]: connect from zimbra.******[168.*.*.4]
Oct 13 10:17:07 mail postfix/smtpd[21777]: Anonymous TLS connection established from zimbra.******[168.*.*.4]: TLSv1 with cipher ADH-AES256-SHA (256/256 bits)
Oct 13 10:17:08 mail postfix/smtpd[21777]: 0CB69282F4E: client=zimbra.******[168.*.*.4]
Oct 13 10:17:08 mail postfix/cleanup[26776]: 0CB69282F4E: message-id=zimbra.******
Oct 13 10:17:08 mail postfix/qmgr[9946]: 0CB69282F4E: from=zimbra.******, size=3606, nrcpt=1 (queue active)
Oct 13 10:17:08 mail postfix/virtual[5291]: 0CB69282F4E: to=zimbra.******, orig_to=zimbra.******, relay=virtual, delay=0.03, delays=0.02/0/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
Oct 13 10:17:08 mail postfix/qmgr[9946]: 0CB69282F4E: removed

د Zextras Suite په اړه د ټولو پوښتنو لپاره، تاسو کولی شئ د بریښنالیک له لارې د Zextras استازې Ekaterina Triandafilidi سره اړیکه ونیسئ [ایمیل خوندي شوی]

سرچینه: www.habr.com