Zimbra OSE бүртгэлтэй хэрхэн ажиллах талаар

Бүх болж буй үйл явдлыг бүртгэх нь аливаа корпорацийн системийн хамгийн чухал функцүүдийн нэг юм. Бүртгэлүүд нь шинээр гарч ирж буй асуудлуудыг шийдвэрлэх, мэдээллийн системийн ажиллагааг шалгах, мэдээллийн аюулгүй байдлын зөрчлийг судлах боломжийг олгодог. Zimbra OSE нь үйл ажиллагааныхаа нарийвчилсан бүртгэлийг хөтөлдөг. Эдгээрт серверийн гүйцэтгэлээс эхлээд хэрэглэгчдийн имэйл илгээх, хүлээн авах хүртэлх бүх өгөгдлийг багтаасан болно. Гэсэн хэдий ч Zimbra OSE-ийн үүсгэсэн логуудыг унших нь маш энгийн ажил биш юм. Энэ нийтлэлд тодорхой жишээ ашиглан Zimbra OSE бүртгэлийг хэрхэн унших, мөн тэдгээрийг хэрхэн төвлөрүүлэх талаар танд хэлэх болно.

Zimbra OSE бүртгэлтэй хэрхэн ажиллах талаар
Zimbra OSE нь бүх локал бүртгэлийг /opt/zimbra/log хавтсанд хадгалдаг ба логуудыг /var/log/zimbra.log файлаас олж болно. Эдгээрээс хамгийн чухал нь mailbox.log юм. Энэ нь шуудангийн сервер дээр тохиолддог бүх үйлдлийг бүртгэдэг. Үүнд имэйл дамжуулах, хэрэглэгчийн баталгаажуулалтын өгөгдөл, нэвтрэх амжилтгүй оролдлого болон бусад зүйлс орно. Mailbox.log дахь оруулгууд нь үйл явдал болсон цаг, үйл явдлын түвшин, үйл явдал болсон хэлхээний дугаар, хэрэглэгчийн нэр, IP хаяг, мөн үйл явдлын текстийн тайлбарыг агуулсан текст мөр юм. .

Zimbra OSE бүртгэлтэй хэрхэн ажиллах талаар

Бүртгэлийн түвшин нь тухайн үйл явдлын серверийн үйл ажиллагаанд үзүүлэх нөлөөллийн түвшинг илэрхийлдэг. Анхдагч байдлаар 4 үйл явдлын түвшин байдаг: INFO, WARN, ERROR, FATAL. Бүх түвшинг хүндийн зэрэглэлээр нэмэгдүүлэх дарааллаар авч үзье.

  • МЭДЭЭЛЭЛ - Энэ түвшний үйл явдлууд нь ихэвчлэн Zimbra OSE-ийн явцын талаар мэдээлэх зорилготой байдаг. Энэ түвшний зурвасууд нь шуудангийн хайрцаг үүсгэх, устгах гэх мэт тайлангуудыг агуулдаг.
  • АНХААРУУЛГА - энэ түвшний үйл явдлууд нь аюултай байж болзошгүй нөхцөл байдлын талаар мэдээлдэг боловч серверийн үйл ажиллагаанд нөлөөлөхгүй. Жишээлбэл, WARN түвшин нь хэрэглэгчийн амжилтгүй нэвтрэх оролдлогын тухай мессежийг тэмдэглэдэг.
  • ERROR - бүртгэлийн энэ үйл явдлын түвшин нь серверийн үйл ажиллагаанд саад учруулахгүй, орон нутгийн шинж чанартай алдаа гарсан тухай мэдээлдэг. Энэ түвшин нь тухайн хэрэглэгчийн индексийн өгөгдөл гэмтсэн алдааг тэмдэглэж болно.
  • FATAL - энэ түвшин нь сервер хэвийн ажиллаж чадахгүй байгаа алдааг илтгэнэ. Жишээлбэл, DBMS-тэй холбогдох боломжгүй байгааг харуулсан бичлэгийн хувьд FATAL түвшин байх болно.

Мэйл серверийн бүртгэлийн файл өдөр бүр шинэчлэгддэг. Файлын хамгийн сүүлийн хувилбар нь үргэлж Mailbox.log нэртэй байдаг бол тодорхой огнооны логууд нэрэндээ огноотой бөгөөд архивт хадгалагддаг. Жишээ нь mailbox.log.2020-09-29.tar.gz. Энэ нь үйл ажиллагааны бүртгэлийг нөөцлөх, бүртгэлээр хайхад илүү хялбар болгодог.

Системийн администраторын тав тухыг хангах үүднээс /opt/zimbra/log/ хавтсанд бусад бүртгэлүүд байдаг. Эдгээр нь зөвхөн Zimbra OSE элементүүдтэй холбоотой оруулгуудыг агуулдаг. Жишээлбэл, audit.log нь зөвхөн хэрэглэгчийн баталгаажуулалтын талаарх мэдээллийг агуулдаг, clamd.log нь вирусны эсрэг үйлдлийн талаарх мэдээллийг агуулдаг гэх мэт. Дашрамд хэлэхэд Zimbra OSE серверийг халдагчдаас хамгаалах маш сайн арга юм Fail2Ban ашиглан серверийн хамгаалалт, энэ нь зөвхөн audit.log дээр тулгуурлан ажилладаг. Мөн командыг гүйцэтгэх cron даалгавар нэмэх нь сайн туршлага юм grep -ir "хүчингүй нууц үг" /opt/zimbra/log/audit.logөдөр бүр нэвтрэх алдааны мэдээллийг хүлээн авах.

Zimbra OSE бүртгэлтэй хэрхэн ажиллах талаар
Audi.log нь нууц үгээ хоёр удаа буруу оруулсан, нэвтрэх оролдлогыг амжилттай харуулсан жишээ.

Zimbra OSE дахь бүртгэлүүд нь янз бүрийн ноцтой алдааны шалтгааныг тодорхойлоход маш их хэрэгтэй байдаг. Чухал алдаа гарсан үед администратор ихэвчлэн бүртгэлийг унших цаг байдаггүй. Серверийг аль болох хурдан сэргээх шаардлагатай. Гэсэн хэдий ч, дараа нь сервер нөөцөлж, олон бүртгэл үүсгэх үед том файлаас шаардлагатай оруулгыг олоход хэцүү байж болно. Алдааны бүртгэлийг хурдан олохын тулд серверийг дахин эхлүүлсэн цагийг мэдэхэд хангалттай бөгөөд энэ үеийн бүртгэлээс бичлэгийг олоход хангалттай. Өмнөх оруулга нь гарсан алдааны бичлэг байх болно. Та мөн FATAL гэсэн түлхүүр үгийг хайж алдааны мэдэгдлийг олох боломжтой.

Zimbra OSE бүртгэлүүд нь чухал бус алдааг тодорхойлох боломжийг танд олгоно. Жишээлбэл, зохицуулагчийн онцгой тохиолдлыг олохын тулд та зохицуулагчийн онцгой тохиолдлыг хайж болно. Ихэнхдээ зохицуулагчийн үүсгэсэн алдааг үл хамаарах зүйл юунаас үүдэлтэй болохыг тайлбарласан стекийн мөр дагалддаг. Захидал хүргэхэд алдаа гарсан тохиолдолд LmtpServer түлхүүр үгээр хайлтаа эхлүүлэх ба POP эсвэл IMAP протоколтой холбоотой алдааг хайхын тулд ImapServer болон Pop3Server түлхүүр үгсийг ашиглаж болно.

Бүртгэл нь мэдээллийн аюулгүй байдлын зөрчлийг судлахад тусалж чадна. Тодорхой жишээг авч үзье. Есдүгээр сарын 20-нд ажилчдын нэг нь үйлчлүүлэгч рүүгээ вирусын халдвартай захидал илгээсэн байна. Үүний үр дүнд үйлчлүүлэгчийн компьютер дээрх өгөгдөл шифрлэгдсэн байна. Гэтэл ажилтан юу ч явуулаагүй гэж тангараглаж байна. Уг үйл явдлын мөрдөн байцаалтын хүрээнд аж ахуйн нэгжийн аюулгүй байдлын үйлчилгээ нь шалгагдаж буй хэрэглэгчтэй холбоотой 20-р сарын XNUMX-ны өдрийн мэйл серверийн бүртгэлийг системийн администратороос хүссэн байна. Цагийн тэмдгийн ачаар системийн администратор шаардлагатай бүртгэлийн файлыг олж, шаардлагатай мэдээллийг задалж, аюулгүй байдлын мэргэжилтнүүдэд шилжүүлдэг. Тэд эргээд үүнийг хараад, энэ захидал илгээсэн IP хаяг нь хэрэглэгчийн компьютерийн IP хаягтай тохирч байгааг олж мэдээрэй. Захидлыг илгээх үед ажилтан ажлын байрандаа байсныг камерын камерын бичлэгээс баталжээ. Энэ мэдээлэл нь түүнийг мэдээллийн аюулгүй байдлын дүрмийг зөрчсөн гэж буруутгаж, ажлаас нь халахад хангалттай байсан. 

Zimbra 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

Үүний дараа бүх бүртгэл таны заасан сервер дээр бичигдэх бөгөөд тэдгээрийг үзэхэд хялбар болно. Мөн Zimbra OSE администраторын консол дээр серверүүдийн төлөвийн талаарх мэдээлэл бүхий дэлгэц дээр ажиллаж байгаа Logger үйлчилгээг зөвхөн mailstore01 серверт харуулах болно.

Zimbra OSE бүртгэлтэй хэрхэн ажиллах талаар

Администраторын өөр нэг толгойны өвчин бол тодорхой имэйлийг хянах явдал юм. Zimbra OSE дахь имэйлүүд хэд хэдэн өөр үйл явдлуудыг нэг дор дамждаг тул хүлээн авах эсвэл илгээхээс өмнө администраторын хувьд вирусны эсрэг, спам гэх мэтээр сканнердах, хэрэв имэйл ирэхгүй бол ямар шатанд байгааг хянах нь нэлээд асуудалтай байж болно. алдсан байсан.

Энэ асуудлыг шийдэхийн тулд та мэдээллийн аюулгүй байдлын мэргэжилтэн Виктор Духовныйгийн боловсруулсан тусгай скриптийг ашиглаж, Postfix хөгжүүлэгчид ашиглахыг зөвлөж байна. Энэ скрипт нь тодорхой үйл явцын бүртгэлийн оруулгуудыг нэгтгэдэг бөгөөд үүний ачаар тодорхой үсэг илгээхтэй холбоотой бүх оруулгуудыг танигч дээр үндэслэн хурдан харуулах боломжийг олгодог. Түүний ажлыг 8.7-аас эхлэн Zimbra OSE-ийн бүх хувилбарууд дээр туршиж үзсэн. Скриптийн текстийг энд оруулав.

#! /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";
}

Скрипт нь Perl хэл дээр бичигдсэн бөгөөд үүнийг ажиллуулахын тулд та үүнийг файлд хадгалах хэрэгтэй 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-ын төлөөлөгч Екатерина Триандафилидитэй имэйлээр холбогдож болно. [имэйлээр хамгаалагдсан]

Эх сурвалж: www.habr.com