Ki jan yo travay ak Zimbra OSE mòso bwa

Anrejistre tout evènman ki rive yo se youn nan fonksyon ki pi enpòtan nan nenpòt sistèm antrepriz. Logs pèmèt ou rezoud pwoblèm émergentes, odit operasyon an nan sistèm enfòmasyon, epi tou mennen ankèt sou ensidan sekirite enfòmasyon. Zimbra OSE tou kenbe mòso bwa detaye sou operasyon li yo. Yo enkli tout done ki soti nan pèfòmans sèvè pou voye ak resevwa imèl itilizatè yo. Sepandan, li mòso bwa ki te pwodwi pa Zimbra OSE se yon travay olye ki pa trivial. Nan atik sa a, lè l sèvi avèk yon egzanp espesifik, nou pral di w ki jan yo li mòso bwa Zimbra OSE, osi byen ke ki jan yo fè yo santralize.

Ki jan yo travay ak Zimbra OSE mòso bwa
Zimbra OSE estoke tout mòso lokal yo nan katab /opt/zimbra/log, epi yo ka jwenn mòso yo tou nan fichye /var/log/zimbra.log. Pi enpòtan nan sa yo se mailbox.log. Li anrejistre tout aksyon ki fèt sou sèvè lapòs la. Men sa yo enkli transmisyon imèl, done otantifikasyon itilizatè, tantativ konekte echwe, ak lòt moun. Antre nan mailbox.log se yon seri tèks ki gen lè evènman an te fèt, nivo evènman an, nimewo fil kote evènman an te fèt, non itilizatè a ak adrès IP, ansanm ak yon deskripsyon tèks evènman an. .

Ki jan yo travay ak Zimbra OSE mòso bwa

Nivo jounal la endike degre enfliyans evènman an sou operasyon sèvè a. Pa default gen 4 nivo evènman: ENFO, AVÈTISMAN, ERÈ ak FATAL. Ann gade nan tout nivo nan ogmante lòd nan severite.

  • ENFO - Evènman nan nivo sa a anjeneral gen entansyon enfòme sou pwogrè Zimbra OSE. Mesaj nan nivo sa a gen ladan rapò sou kreyasyon oswa efase yon bwat lèt, ak sou sa.
  • WARN - evènman nan nivo sa a enfòme sou sitiyasyon ki potansyèlman danjere, men ki pa afekte operasyon an nan sèvè a. Pou egzanp, nivo WARN make yon mesaj sou yon tantativ itilizatè echwe konekte.
  • ERÈ - nivo evènman sa a nan boutèy la enfòme sou ensidan an nan yon erè ki se lokal nan nati epi ki pa entèfere ak operasyon an nan sèvè a. Nivo sa a ka siyale yon erè kote done endèks yon itilizatè endividyèl vin pèvèti.
  • FATAL - nivo sa a endike erè akòz ki sèvè a pa ka kontinye opere nòmalman. Pou egzanp, nivo FATAL la pral pou yon dosye ki endike enkapasite pou konekte ak DBMS la.

Fichye jounal sèvè lapòs la mete ajou chak jou. Dènye vèsyon an nan fichye a toujou gen non Mailbox.log, pandan y ap mòso bwa pou yon sèten dat gen yon dat nan non an epi yo genyen nan achiv la. Pa egzanp mailbox.log.2020-09-29.tar.gz. Sa fè li pi fasil pou fè bak mòso bwa aktivite ak rechèch nan mòso bwa.

Pou konvenyans nan administratè sistèm lan, /opt/zimbra/log/ katab la gen lòt mòso bwa. Yo gen ladan sèlman antre ki gen rapò ak eleman espesifik Zimbra OSE. Pou egzanp, audit.log gen sèlman dosye sou otantifikasyon itilizatè, clamd.log gen done sou operasyon an nan antivirus, ak sou sa. By wout la, yon metòd ekselan pou pwoteje yon sèvè Zimbra OSE kont entrigan se pwoteksyon sèvè lè l sèvi avèk Fail2Ban, ki jis travay ki baze sou audit.log. Li se tou yon bon pratik pou ajoute yon travay cron pou egzekite kòmandman an grep -ir "modpas envalid" /opt/zimbra/log/audit.logpou resevwa enfòmasyon sou echèk koneksyon chak jou.

Ki jan yo travay ak Zimbra OSE mòso bwa
Yon egzanp sou fason audit.log montre yon modpas antre de fwa mal ak yon tantativ konekte.

Logs nan Zimbra OSE ka trè itil nan idantifye kòz yo nan divès kalite echèk kritik. Nan moman sa a lè yon erè kritik rive, administratè a anjeneral pa gen tan li mòso bwa yo. Li oblije retabli sèvè a pi vit ke posib. Sepandan, pita, lè sèvè a tounen moute ak jenere yon anpil nan mòso bwa, li ka difisil pou jwenn antre obligatwa a nan yon gwo dosye. Yo nan lòd yo jwenn byen vit yon dosye erè, li se ase yo konnen lè a nan ki sèvè a te rekòmanse epi jwenn yon antre nan mòso bwa yo date soti nan tan sa a. Antre anvan an pral yon dosye sou erè ki te fèt la. Ou ka jwenn mesaj erè a tou lè w chèche mo kle FATAL la.

Zimbra OSE mòso bwa pèmèt ou idantifye tou echèk ki pa kritik. Pa egzanp, pou jwenn eksepsyon moun kap okipe yo, ou ka chèche eksepsyon moun ki okipe yo. Souvan, erè ki te pwodwi pa moun kap okipe yo akonpaye pa yon tras pile ki eksplike sa ki te lakòz eksepsyon an. Nan ka ta gen erè ak livrezon lapòs, ou ta dwe kòmanse rechèch ou ak mo kle LmtpServer la, epi chèche erè ki gen rapò ak pwotokòl POP oswa IMAP, ou ka itilize mo kle ImapServer ak Pop3Server.

Jounal yo ka ede tou lè w ap mennen ankèt sou ensidan sekirite enfòmasyon yo. Ann gade yon egzanp espesifik. Nan dat 20 septanm, youn nan anplwaye yo te voye yon lèt ki enfekte ak viris bay yon kliyan. Kòm yon rezilta, done yo sou òdinatè kliyan an te chiffres. Sepandan, anplwaye a fè sèman ke li pa voye anyen. Kòm yon pati nan ankèt la sou ensidan an, sèvis sekirite antrepriz la mande administratè sistèm lan anrejistre sèvè lapòs pou 20 septanm ki asosye ak itilizatè a ke yo te envestige. Mèsi a koupon pou tan an, administratè sistèm lan jwenn dosye log ki nesesè yo, ekstrè enfòmasyon ki nesesè yo epi transfere li bay espesyalis sekirite yo. Moun sa yo ki, nan vire, gade nan li epi yo jwenn ke adrès IP ki soti nan ki lèt sa a te voye koresponn ak adrès IP la nan òdinatè itilizatè a. Pye CCTV konfime ke anplwaye a te nan espas travay li lè yo te voye lèt la. Done sa yo te ase pou akize l de vyole règleman sekirite enfòmasyon ak revoke l. 

Ki jan yo travay ak Zimbra OSE mòso bwa
Yon egzanp èkstraksyon dosye sou youn nan kont yo soti nan boutèy la Mailbox.log nan yon dosye separe

Tout bagay vin pi konplike lè li rive enfrastrikti milti sèvè. Depi mòso bwa yo kolekte lokalman, travay avèk yo nan yon enfrastrikti milti-sèvè se trè enkonvenyan ak Se poutèt sa gen yon bezwen santralize koleksyon an nan mòso bwa. Sa a ka fè pa mete kanpe yon lame kolekte mòso bwa. Pa gen okenn bezwen patikilye ajoute yon lame devwe nan enfrastrikti a. Nenpòt sèvè lapòs ka aji kòm yon ne pou kolekte mòso bwa. Nan ka nou an, sa a pral ne Mailstore01 la.

Sou sèvè sa a nou bezwen antre nan kòmandman ki anba yo:

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

Edite fichye /etc/sysconfig/rsyslog, epi mete SYSLOGD_OPTIONS="-r -c 2″

Edite /etc/rsyslog.conf epi retire liy sa yo:
$ModLoad imudp
$UDPServerRun 514

Mete kòmandman sa yo:

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

Ou ka tcheke ke tout bagay ap travay lè l sèvi avèk lòd la zmprov gacf | grep zimbraLogHostname. Apre yo fin egzekite kòmandman an, yo ta dwe parèt non lame ki kolekte mòso bwa a. Pou chanje li, ou dwe antre nan lòd zmprov mcf zimbraLogHostname mailstore01.company.ru.

Sou tout lòt sèvè enfrastrikti (LDAP, MTA ak lòt magazen lapòs), kouri kòmandman zmprov gacf |grep zimbraLogHostname pou wè non lame kote yo voye mòso yo. Pou chanje li, ou ka tou antre nan lòd la zmprov mcf zimbraLogHostname mailstore01.company.ru

Ou dwe antre tou kòmandman sa yo sou chak sèvè:

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

Apre sa, tout mòso bwa yo pral anrejistre sou sèvè ou espesifye a, kote yo ka fasilman wè yo. Epitou, nan konsole administratè Zimbra OSE a, sou ekran an ak enfòmasyon sou estati a nan serveurs, sèvis la Logger kouri ap parèt sèlman pou sèvè mailstore01 la.

Ki jan yo travay ak Zimbra OSE mòso bwa

Yon lòt tèt fè mal pou yon administratè kapab kenbe tras de yon imèl espesifik. Depi imèl nan Zimbra OSE ale atravè plizyè evènman diferan nan yon fwa: eskanè pa antivirus, antispam, ak sou sa, anvan yo aksepte oswa voye, pou administratè a, si imel la pa rive, li ka byen pwoblèm trase nan ki etap. li te pèdi.

Yo nan lòd yo rezoud pwoblèm sa a, ou ka itilize yon script espesyal, ki te devlope pa espesyalis sekirite enfòmasyon Viktor Dukhovny ak rekòmande pou itilize pa devlopè Postfix. Script sa a konkaten antre nan mòso bwa pou yon pwosesis espesifik epi, akòz sa a, pèmèt ou byen vit montre tout antre ki asosye ak voye yon lèt patikilye ki baze sou idantifyan li yo. Travay li yo te teste sou tout vèsyon Zimbra OSE, kòmanse nan 8.7. Men tèks script la.

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

Se script la ekri nan Perl epi kouri li ou bezwen sove li nan yon dosye kolate.pl, fè li ègzekutabl, ak Lè sa a, kouri dosye a ki espesifye dosye a epi itilize pgrep pou ekstrè enfòmasyon idantifikasyon lèt w ap chèche a. collate.pl /var/log/zimbra.log | pgrep '[imèl pwoteje]> '. Rezilta a pral yon pwodiksyon sekans nan liy ki gen enfòmasyon sou mouvman an nan lèt la sou sèvè a.

# 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

Pou tout kesyon ki gen rapò ak Zextras Suite, ou ka kontakte Reprezantan Zextras Ekaterina Triandafilidi pa imel. [imèl pwoteje]

Sous: www.habr.com