Sut i weithio gyda logiau Zimbra OSE

Mae cofnodi'r holl ddigwyddiadau sy'n digwydd yn un o swyddogaethau pwysicaf unrhyw system gorfforaethol. Mae logiau yn eich galluogi i ddatrys problemau sy'n dod i'r amlwg, archwilio gweithrediad systemau gwybodaeth, a hefyd ymchwilio i ddigwyddiadau diogelwch gwybodaeth. Mae Zimbra OSE hefyd yn cadw cofnodion manwl o'i weithrediad. Maent yn cynnwys yr holl ddata o berfformiad gweinyddwyr i anfon a derbyn negeseuon e-bost gan ddefnyddwyr. Fodd bynnag, nid yw darllen y logiau a gynhyrchir gan Zimbra OSE yn dasg ddibwys. Yn yr erthygl hon, gan ddefnyddio enghraifft benodol, byddwn yn dweud wrthych sut i ddarllen logiau Zimbra OSE, yn ogystal Γ’ sut i'w gwneud yn ganolog.

Sut i weithio gyda logiau Zimbra OSE
Mae Zimbra OSE yn storio'r holl logiau lleol yn y ffolder /opt/zimbra/log, a gellir dod o hyd i logiau hefyd yn y ffeil /var/log/zimbra.log. Y pwysicaf o'r rhain yw mailbox.log. Mae'n cofnodi'r holl gamau gweithredu sy'n digwydd ar y gweinydd post. Mae'r rhain yn cynnwys trosglwyddo e-byst, data dilysu defnyddwyr, ymdrechion mewngofnodi a fethwyd, ac eraill. Mae cofnodion yn mailbox.log yn llinyn testun sy'n cynnwys yr amser y digwyddodd y digwyddiad, lefel y digwyddiad, y rhif edefyn y digwyddodd y digwyddiad ynddo, yr enw defnyddiwr a'r cyfeiriad IP, yn ogystal Γ’ disgrifiad testun o'r digwyddiad .

Sut i weithio gyda logiau Zimbra OSE

Mae'r lefel log yn dangos graddau dylanwad y digwyddiad ar weithrediad y gweinydd. Yn ddiofyn mae yna 4 lefel digwyddiad: INFO, WARN, ERROR a FATAL. Gadewch i ni edrych ar bob lefel yn nhrefn difrifoldeb cynyddol.

  • GWYBODAETH - Bwriad digwyddiadau ar y lefel hon fel arfer yw hysbysu am gynnydd Zimbra OSE. Mae negeseuon ar y lefel hon yn cynnwys adroddiadau ar greu neu ddileu blwch post, ac ati.
  • RHYBUDD - mae digwyddiadau o'r lefel hon yn hysbysu am sefyllfaoedd a allai fod yn beryglus, ond nad ydynt yn effeithio ar weithrediad y gweinydd. Er enghraifft, mae lefel WARN yn nodi neges am ymgais mewngofnodi defnyddiwr a fethwyd.
  • GWALL - mae'r lefel digwyddiad hon yn y log yn hysbysu am ddigwyddiad gwall lleol ei natur ac nad yw'n ymyrryd Γ’ gweithrediad y gweinydd. Gall y lefel hon amlygu gwall lle mae data mynegai defnyddiwr unigol wedi'i lygru.
  • ANgheuol - mae'r lefel hon yn nodi gwallau na all y gweinydd barhau i weithredu'n normal oherwydd hynny. Er enghraifft, bydd y lefel FATAL ar gyfer cofnod sy'n nodi'r anallu i gysylltu Γ’'r DBMS.

Mae ffeil log y gweinydd post yn cael ei diweddaru bob dydd. Mae gan y fersiwn ddiweddaraf o'r ffeil yr enw Mailbox.log bob amser, tra bod gan logiau ar gyfer dyddiad penodol ddyddiad yn yr enw ac maent wedi'u cynnwys yn yr archif. Er enghraifft mailbox.log.2020-09-29.tar.gz. Mae hyn yn ei gwneud hi'n llawer haws gwneud copi wrth gefn o logiau gweithgaredd a chwilio trwy logiau.

Er hwylustod gweinyddwr y system, mae'r ffolder /opt/zimbra/log/ yn cynnwys logiau eraill. Dim ond cofnodion sy'n ymwneud ag elfennau Zimbra OSE penodol y maent yn eu cynnwys. Er enghraifft, mae audit.log yn cynnwys cofnodion am ddilysu defnyddwyr yn unig, mae clamd.log yn cynnwys data am weithrediad y gwrthfeirws, ac ati. Gyda llaw, dull ardderchog o amddiffyn gweinydd Zimbra OSE rhag tresmaswyr yw amddiffyniad gweinydd gan ddefnyddio Fail2Ban, sydd ond yn gweithio yn seiliedig ar audit.log. Mae hefyd yn arfer da ychwanegu tasg cron i weithredu'r gorchymyn grep -ir β€žcyfrinair annilysβ€œ /opt/zimbra/log/audit.logi dderbyn gwybodaeth methiant mewngofnodi dyddiol.

Sut i weithio gyda logiau Zimbra OSE
Enghraifft o sut mae audit.log yn dangos cyfrinair a gofnodwyd ddwywaith yn anghywir ac ymgais lwyddiannus i fewngofnodi.

Gall logiau yn Zimbra OSE fod yn hynod ddefnyddiol wrth nodi achosion methiannau critigol amrywiol. Ar hyn o bryd pan fydd gwall critigol yn digwydd, fel arfer nid oes gan y gweinyddwr amser i ddarllen y logiau. Mae'n ofynnol i adfer y gweinydd cyn gynted Γ’ phosibl. Fodd bynnag, yn ddiweddarach, pan fydd y gweinydd wrth gefn ac yn cynhyrchu llawer o logiau, gall fod yn anodd dod o hyd i'r cofnod gofynnol mewn ffeil fawr. Er mwyn dod o hyd i gofnod gwall yn gyflym, mae'n ddigon gwybod yr amser y cafodd y gweinydd ei ailgychwyn a dod o hyd i gofnod yn y logiau sy'n dyddio o'r amser hwn. Bydd y cofnod blaenorol yn gofnod o'r gwall a ddigwyddodd. Gallwch hefyd ddod o hyd i'r neges gwall trwy chwilio am yr allweddair FATAL.

Mae logiau Zimbra OSE hefyd yn caniatΓ‘u ichi nodi methiannau nad ydynt yn hanfodol. Er enghraifft, i ddod o hyd i eithriadau triniwr, gallwch chwilio am eithriad triniwr. Yn aml, mae olion pentwr yn cyd-fynd Γ’ gwallau a gynhyrchir gan y trinwyr sy'n esbonio beth achosodd yr eithriad. Yn achos gwallau wrth ddosbarthu post, dylech ddechrau'ch chwiliad gyda'r allweddair LmtpServer, ac i chwilio am wallau sy'n gysylltiedig Γ’'r protocolau POP neu IMAP, gallwch ddefnyddio'r allweddeiriau ImapServer a Pop3Server.

Gall logiau helpu hefyd wrth ymchwilio i ddigwyddiadau diogelwch gwybodaeth. Gadewch i ni edrych ar enghraifft benodol. Ar Fedi 20, anfonodd un o'r gweithwyr lythyr wedi'i heintio Γ’ firws at gleient. O ganlyniad, amgryptio'r data ar gyfrifiadur y cleient. Fodd bynnag, mae'r gweithiwr yn tyngu nad yw wedi anfon unrhyw beth. Fel rhan o'r ymchwiliad i'r digwyddiad, mae'r gwasanaeth diogelwch menter yn gofyn i weinyddwr y system fod y gweinydd post yn cofnodi ar gyfer Medi 20 sy'n gysylltiedig Γ’'r defnyddiwr sy'n cael ei ymchwilio. Diolch i'r stamp amser, mae gweinyddwr y system yn dod o hyd i'r ffeil log angenrheidiol, yn tynnu'r wybodaeth angenrheidiol ac yn ei throsglwyddo i arbenigwyr diogelwch. Mae'r rheini, yn eu tro, yn edrych drwyddo ac yn canfod bod y cyfeiriad IP y anfonwyd y llythyr hwn ohono yn cyfateb i gyfeiriad IP cyfrifiadur y defnyddiwr. Cadarnhaodd lluniau teledu cylch cyfyng fod y gweithiwr yn ei weithle pan anfonwyd y llythyr. Roedd y data hwn yn ddigon i'w gyhuddo o dorri rheolau diogelwch gwybodaeth a'i danio. 

Sut i weithio gyda logiau Zimbra OSE
Enghraifft o echdynnu cofnodion am un o'r cyfrifon o fewngofnod Mailbox.log i ffeil ar wahΓ’n

Mae popeth yn dod yn llawer mwy cymhleth o ran seilwaith aml-weinydd. Gan fod boncyffion yn cael eu casglu'n lleol, mae gweithio gyda nhw mewn seilwaith aml-weinydd yn anghyfleus iawn ac felly mae angen canoli'r casgliad o foncyffion. Gellir gwneud hyn trwy sefydlu gwesteiwr i gasglu logiau. Nid oes angen ychwanegu gwesteiwr penodol at y seilwaith yn benodol. Gall unrhyw weinydd post weithredu fel nod ar gyfer casglu logiau. Yn ein hachos ni, y nod Mailstore01 fydd hwn.

Ar y gweinydd hwn mae angen i ni nodi'r gorchmynion isod:

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

Golygwch y ffeil /etc/sysconfig/rsyslog, a gosodwch y SYSLOGD_OPTIONS=” -r -c 2β€³

Golygu /etc/rsyslog.conf a dadwneud y llinellau canlynol:
$ModLoad imudp
$UDPSserverRun 514

Rhowch y gorchmynion canlynol:

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

Gallwch wirio bod popeth yn gweithio gan ddefnyddio'r gorchymyn zmprov gacf | grep zimbraLogenwHostname. Ar Γ΄l gweithredu'r gorchymyn, dylid arddangos enw'r gwesteiwr sy'n casglu logiau. Er mwyn ei newid, rhaid i chi nodi'r gorchymyn zmprov mcf zimbraLogHostname mailstore01.company.ru.

Ar bob gweinydd seilwaith arall (LDAP, MTA a storfeydd post eraill), rhedwch y gorchymyn zmprov gacf | grep zimbraLogHostname i weld enw'r gwesteiwr yr anfonir y logiau ato. Er mwyn ei newid, gallwch hefyd nodi'r gorchymyn zmprov mcf zimbraLogHostname mailstore01.company.ru

Rhaid i chi hefyd nodi'r gorchmynion canlynol ar bob gweinydd:

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

Ar Γ΄l hyn, bydd yr holl logiau'n cael eu cofnodi ar y gweinydd a nodwyd gennych, lle gellir eu gweld yn gyfleus. Hefyd, yn y consol gweinyddwr Zimbra OSE, ar y sgrin gyda gwybodaeth am statws gweinyddwyr, bydd y gwasanaeth Logger rhedeg yn cael ei arddangos ar gyfer y gweinydd mailstore01 yn unig.

Sut i weithio gyda logiau Zimbra OSE

Gall cur pen arall i weinyddwr fod yn cadw golwg ar e-bost penodol. Gan fod negeseuon e-bost yn Zimbra OSE yn mynd trwy nifer o wahanol ddigwyddiadau ar unwaith: sganio gan wrthfeirws, antispam, ac yn y blaen, cyn cael eu derbyn neu eu hanfon, ar gyfer y gweinyddwr, os na fydd yr e-bost yn cyrraedd, gall fod yn eithaf problemus olrhain ar ba gam fe'i collwyd.

Er mwyn datrys y broblem hon, gallwch ddefnyddio sgript arbennig, a ddatblygwyd gan yr arbenigwr diogelwch gwybodaeth Viktor Dukhovny ac a argymhellwyd i'w ddefnyddio gan ddatblygwyr Postfix. Mae'r sgript hon yn cydgadwynu cofnodion o logiau ar gyfer proses benodol ac, oherwydd hyn, mae'n caniatΓ‘u ichi arddangos yn gyflym yr holl gofnodion sy'n gysylltiedig ag anfon llythyr penodol yn seiliedig ar ei ddynodwr. Mae ei waith wedi'i brofi ar bob fersiwn o Zimbra OSE, gan ddechrau o 8.7. Dyma destun y sgript.

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

Mae'r sgript wedi'i hysgrifennu yn Perl ac i'w rhedeg mae angen i chi ei chadw mewn ffeil coladu.pl, gwnewch ef yn weithredadwy, ac yna rhedeg y ffeil gan nodi'r ffeil log a defnyddio pgrep i dynnu gwybodaeth adnabod y llythyr yr ydych yn chwilio amdano collate.pl /var/log/zimbra.log | pgrep'[e-bost wedi'i warchod]>'. Y canlyniad fydd allbwn dilyniannol o linellau yn cynnwys gwybodaeth am symudiad y llythyren ar y gweinydd.

# 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

Ar gyfer pob cwestiwn sy'n ymwneud Γ’ Zextras Suite, gallwch gysylltu Γ’ Chynrychiolydd Zextras Ekaterina Triandafilidi trwy e-bost [e-bost wedi'i warchod]

Ffynhonnell: hab.com