Kif taħdem maż-zkuk Zimbra OSE

L-illoggjar tal-avvenimenti kollha li jseħħu hija waħda mill-aktar funzjonijiet importanti ta' kwalunkwe sistema korporattiva. Iċ-zkuk jippermettulek issolvi problemi emerġenti, tivverifika l-operat tas-sistemi tal-informazzjoni, u tinvestiga wkoll inċidenti tas-sigurtà tal-informazzjoni. Zimbra OSE iżżomm ukoll reġistri dettaljati tal-operat tagħha. Dawn jinkludu d-dejta kollha mill-prestazzjoni tas-server sa tibgħat u tirċievi emails mill-utenti. Madankollu, il-qari tar-zkuk ġġenerati minn Zimbra OSE huwa kompitu pjuttost mhux trivjali. F'dan l-artikolu, bl-użu ta 'eżempju speċifiku, aħna ngħidulek kif taqra zkuk Zimbra OSE, kif ukoll kif tagħmilhom ċentralizzati.

Kif taħdem maż-zkuk Zimbra OSE
Zimbra OSE jaħżen ir-zkuk lokali kollha fil-folder /opt/zimbra/log, u zkuk jistgħu jinstabu wkoll fil-fajl /var/log/zimbra.log. L-aktar importanti minn dawn huwa mailbox.log. Jirreġistra l-azzjonijiet kollha li jseħħu fuq is-server tal-posta. Dawn jinkludu t-trażmissjoni ta' emails, data ta' awtentikazzjoni tal-utent, tentattivi ta' login falluti, u oħrajn. L-entrati f'mailbox.log huma sekwenza ta' test li fiha l-ħin li fih seħħ l-avveniment, il-livell tal-avveniment, in-numru tal-fil li fih seħħ l-avveniment, l-isem tal-utent u l-indirizz IP, kif ukoll deskrizzjoni tat-test tal-avveniment .

Kif taħdem maż-zkuk Zimbra OSE

Il-livell ta' log jindika l-grad ta' influwenza tal-avveniment fuq l-operat tas-server. B'mod awtomatiku hemm 4 livelli ta' avveniment: INFO, WARN, ERROR u FATAL. Ejja nħarsu lejn il-livelli kollha f'ordni dejjem tiżdied ta' severità.

  • INFORMAZZJONI - L-avvenimenti f'dan il-livell huma ġeneralment maħsuba biex jinfurmaw dwar il-progress ta 'Zimbra OSE. Messaġġi f'dan il-livell jinkludu rapporti dwar il-ħolqien jew it-tħassir ta 'kaxxa postali, eċċ.
  • WARN - avvenimenti ta 'dan il-livell jinfurmaw dwar sitwazzjonijiet li huma potenzjalment perikolużi, iżda ma jaffettwawx l-operat tas-server. Pereżempju, il-livell WARN jimmarka messaġġ dwar tentattiv ta' login tal-utent fallut.
  • ŻBALL - dan il-livell ta 'avveniment fil-log jinforma dwar l-okkorrenza ta' żball li huwa ta 'natura lokali u ma jinterferixxix mal-operat tas-server. Dan il-livell jista' jimmarka żball li fih id-dejta tal-indiċi ta' utent individwali tkun saret korrotta.
  • FATAL - dan il-livell jindika żbalji li minħabba fihom is-server ma jistax ikompli jaħdem b'mod normali. Pereżempju, il-livell FATAL se jkun għal rekord li jindika l-inabbiltà li tikkonnettja mad-DBMS.

Il-fajl log tas-server tal-posta jiġi aġġornat kuljum. L-aħħar verżjoni tal-fajl dejjem għandha l-isem Mailbox.log, filwaqt li zkuk għal ċerta data għandhom data fl-isem u jinsabu fl-arkivju. Per eżempju mailbox.log.2020-09-29.tar.gz. Dan jagħmilha ferm aktar faċli li tagħmel backup ta' zkuk ta' attività u tfittex permezz ta' zkuk.

Għall-konvenjenza tal-amministratur tas-sistema, il-folder /opt/zimbra/log/ fih zkuk oħra. Huma jinkludu biss entrati li għandhom x'jaqsmu ma' elementi speċifiċi ta' Zimbra OSE. Pereżempju, audit.log fih biss rekords dwar l-awtentikazzjoni tal-utent, clamd.log fih data dwar l-operat tal-antivirus, eċċ. Mill-mod, metodu eċċellenti ta 'protezzjoni ta' server Zimbra OSE minn intrużi huwa protezzjoni tas-server bl-użu ta’ Fail2Ban, li jaħdem biss ibbażat fuq audit.log. Hija wkoll prattika tajba li żżid kompitu cron biex tesegwixxi l-kmand grep -ir "password invalida" /opt/zimbra/log/audit.logbiex tirċievi informazzjoni dwar il-falliment tal-login ta' kuljum.

Kif taħdem maż-zkuk Zimbra OSE
Eżempju ta' kif audit.log juri password mdaħħla darbtejn ħażin u tentattiv ta' login b'suċċess.

Zkuk f'Zimbra OSE jistgħu jkunu estremament utli fl-identifikazzjoni tal-kawżi ta 'fallimenti kritiċi varji. Fil-mument meta jseħħ żball kritiku, l-amministratur normalment ma jkollux ħin biex jaqra r-zkuk. Huwa meħtieġ li jirrestawra s-server kemm jista 'jkun malajr. Madankollu, aktar tard, meta s-server ikun lura u jiġġenera ħafna zkuk, jista 'jkun diffiċli li ssib l-entrata meħtieġa f'fajl kbir. Sabiex issib malajr rekord ta 'żbalji, huwa biżżejjed li tkun taf il-ħin li fih is-server reġa' nbeda u ssib entrata fir-zkuk li tmur minn dan iż-żmien. Id-dħul preċedenti se jkun rekord tal-iżball li seħħ. Tista' ssib ukoll il-messaġġ ta' żball billi tfittex il-kelma prinċipali FATAL.

Żkuk Zimbra OSE jippermettu wkoll li tidentifika fallimenti mhux kritiċi. Pereżempju, biex issib eċċezzjonijiet ta' handler, tista' tfittex eċċezzjoni ta' handler. Ħafna drabi, l-iżbalji ġġenerati mill-handlers huma akkumpanjati minn traċċa ta 'munzell li tispjega x'ikkawża l-eċċezzjoni. F'każ ta' żbalji fil-kunsinna tal-posta, għandek tibda t-tfittxija tiegħek bil-kelma prinċipali LmtpServer, u biex tfittex żbalji relatati mal-protokolli POP jew IMAP, tista' tuża l-kliem prinċipali ImapServer u Pop3Server.

Iċ-zkuk jistgħu jgħinu wkoll meta jiġu investigati inċidenti tas-sigurtà tal-informazzjoni. Ejja nħarsu lejn eżempju speċifiku. Fl-20 ta’ Settembru, wieħed mill-impjegati bagħat ittra infettata bil-virus lil klijent. Bħala riżultat, id-data fuq il-kompjuter tal-klijent kienet encrypted. Madankollu, l-impjegat jaħlef li ma bagħat xejn. Bħala parti mill-investigazzjoni tal-inċident, is-servizz tas-sigurtà tal-intrapriża jitlob mingħand l-amministratur tas-sistema l-logs tas-server tal-posta għall-20 ta’ Settembru assoċjati mal-utent li qed jiġi investigat. Grazzi għat-timbru tal-ħin, l-amministratur tas-sistema jsib il-fajl tal-ġurnal meħtieġ, jiġbed l-informazzjoni meħtieġa u jittrasferiha lil speċjalisti tas-sigurtà. Dawk, min-naħa tagħhom, iħarsu minnha u jsibu li l-indirizz IP minn fejn intbagħtet din l-ittra jikkorrispondi għall-indirizz IP tal-kompjuter tal-utent. Filmati tas-CCTV ikkonfermaw li l-impjegat kien fuq il-post tax-xogħol tiegħu meta ntbagħtet l-ittra. Din id-dejta kienet biżżejjed biex takkużah li kiser ir-regoli tas-sigurtà tal-informazzjoni u keċċieh. 

Kif taħdem maż-zkuk Zimbra OSE
Eżempju ta 'estrazzjoni ta' rekords dwar wieħed mill-kontijiet mill-log Mailbox.log f'fajl separat

Kollox isir ħafna aktar ikkumplikat meta niġu għall-infrastruttura multi-server. Peress li z-zkuk jinġabru lokalment, il-ħidma magħhom f'infrastruttura b'ħafna servers hija inkonvenjenti ħafna u għalhekk hemm bżonn li tiġi ċentralizzata l-ġbir ta 'zkuk. Dan jista' jsir billi jitwaqqaf host biex jiġbor zkuk. M'hemm l-ebda ħtieġa partikolari li jiżdied host dedikat għall-infrastruttura. Kull server tal-posta jista 'jaġixxi bħala node għall-ġbir ta' zkuk. Fil-każ tagħna, dan se jkun in-node Mailstore01.

Fuq dan is-server għandna bżonn nidħlu l-kmandi hawn taħt:

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

Editja l-fajl /etc/sysconfig/rsyslog, u waqqaf is-SYSLOGD_OPTIONS="-r -c 2″

Editja /etc/rsyslog.conf u neħħi l-kumment tal-linji li ġejjin:
$ModLoad imudp
$UDPServerRun 514

Daħħal il-kmandi li ġejjin:

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

Tista' tiċċekkja li kollox qed jaħdem billi tuża l-kmand zmprov gacf | grep zimbraLogHostname. Wara l-eżekuzzjoni tal-kmand, l-isem tal-host li jiġbor zkuk għandu jintwera. Sabiex tibdelha, trid tidħol fil-kmand zmprov mcf zimbraLogHostname mailstore01.company.ru.

Fuq is-servers l-oħra kollha tal-infrastruttura (LDAP, MTA u ħwienet tal-posta oħra), ħaddem il-kmand zmprov gacf |grep zimbraLogHostname biex tara l-isem tal-host li lejh jintbagħtu r-logs. Biex tibdelha, tista 'wkoll tidħol fil-kmand zmprov mcf zimbraLogHostname mailstore01.company.ru

Trid iddaħħal ukoll il-kmandi li ġejjin fuq kull server:

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

Wara dan, ir-reġistri kollha jiġu rreġistrati fuq is-server li speċifikajt, fejn ikunu jistgħu jaraw b'mod konvenjenti. Ukoll, fil-console ta 'l-amministratur ta' Zimbra OSE, fuq l-iskrin b'informazzjoni dwar l-istatus tas-servers, is-servizz Logger li qed jaħdem se jintwera biss għas-server mailstore01.

Kif taħdem maż-zkuk Zimbra OSE

Uġigħ ta 'ras ieħor għal amministratur jista' jkun li jżomm rekord ta 'email speċifika. Peress li l-emails f'Zimbra OSE jgħaddu minn diversi avvenimenti differenti f'daqqa: skanjar b'antivirus, antispam, eċċ, qabel ma jiġu aċċettati jew mibgħuta, għall-amministratur, jekk l-email ma tasalx, jista' jkun pjuttost problematiku li jiġi rintraċċat f'liema stadju intilfet.

Sabiex issolvi din il-problema, tista 'tuża skript speċjali, li ġie żviluppat mill-ispeċjalista tas-sigurtà tal-informazzjoni Viktor Dukhovny u rakkomandat għall-użu mill-iżviluppaturi ta' Postfix. Din l-iskrittura tikkonkatena entrati minn zkuk għal proċess speċifiku u, minħabba dan, jippermettilek turi malajr l-entrati kollha assoċjati mal-bgħit ta 'ittra partikolari bbażata fuq l-identifikatur tagħha. Ix-xogħol tiegħu ġie ttestjat fuq il-verżjonijiet kollha ta 'Zimbra OSE, li jibda minn 8.7. Hawn hu t-test tal-iskrittura.

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

L-iskrittura hija miktuba bil-Perl u biex titħaddem jeħtieġ li tissejvjah f'fajl kollate.pl, agħmilha eżekutibbli, u mbagħad mexxi l-fajl li tispeċifika l-fajl tal-ġurnal u tuża pgrep biex tiġbed l-informazzjoni ta 'identifikazzjoni tal-ittra li qed tfittex collate.pl /var/log/zimbra.log | pgrep'[protett bl-email]>'. Ir-riżultat se jkun output sekwenzjali ta 'linji li jkun fihom informazzjoni dwar il-moviment tal-ittra fuq is-server.

# 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

Għall-mistoqsijiet kollha relatati ma' Zextras Suite, tista' tikkuntattja lir-Rappreżentant ta' Zextras Ekaterina Triandafilidi bl-email [protett bl-email]

Sors: www.habr.com