Ahoana ny fomba fiasa miaraka amin'ny logs Zimbra OSE

Ny firaketana an-tsoratra ny hetsika rehetra mitranga dia iray amin'ireo asa manan-danja indrindra amin'ny rafitra orinasa rehetra. Ny logs dia ahafahanao mamaha olana mipoitra, manara-maso ny fiasan'ny rafi-baovao, ary manadihady ihany koa ny tranga momba ny fiarovana ny vaovao. Zimbra OSE koa dia mitazona ny mombamomba ny fiasan'izy ireo. Izy ireo dia ahitana ny angon-drakitra rehetra avy amin'ny fahombiazan'ny mpizara mankany amin'ny fandefasana sy fandraisana mailaka ataon'ny mpampiasa. Na izany aza, ny famakiana ny logs novokarin'ny Zimbra OSE dia asa tsy dia misy dikany. Amin'ity lahatsoratra ity, amin'ny fampiasana ohatra manokana, dia holazainay aminao ny fomba famakiana ny logs Zimbra OSE, ary koa ny fomba hahatonga azy ireo ho afovoany.

Ahoana ny fomba fiasa miaraka amin'ny logs Zimbra OSE
Zimbra OSE dia mitahiry ny logs eo an-toerana rehetra ao amin'ny /opt/zimbra/log folder, ary ny logs dia azo jerena ao amin'ny /var/log/zimbra.log file. Ny lehibe indrindra amin'ireo dia mailbox.log. Izy io dia mirakitra ny hetsika rehetra mitranga amin'ny mpizara mailaka. Anisan'izany ny fandefasana mailaka, angon-drakitra fanamarinana ny mpampiasa, ny andrana fidirana tsy nahomby, ary ny hafa. Ny fidirana ao amin'ny mailbox.log dia tady lahatsoratra mirakitra ny fotoana nisehoan'ny hetsika, ny haavon'ny hetsika, ny laharan'ny kofehy nisehoan'ny hetsika, ny anaran'ny mpampiasa sy ny adiresy IP, ary ny famaritana lahatsoratra momba ny hetsika. .

Ahoana ny fomba fiasa miaraka amin'ny logs Zimbra OSE

Ny haavon'ny log dia manondro ny haavon'ny fiantraikan'ny hetsika amin'ny fiasan'ny mpizara. Amin'ny alΓ lan'ny default dia misy ambaratonga hetsika 4: INFO, WARN, ERROR ary FATAL. Andeha hojerentsika ny ambaratonga rehetra amin'ny filaharan'ny fahasarotana.

  • INFO - Ny hetsika amin'ity ambaratonga ity dia matetika natao hampahafantarana ny fivoaran'ny Zimbra OSE. Ny hafatra amin'ity ambaratonga ity dia ahitana tatitra momba ny famoronana na famafana boaty mailaka, sy ny sisa.
  • WARN - ny hetsika amin'ity ambaratonga ity dia mampahafantatra ny toe-javatra mety hampidi-doza, saingy tsy misy fiantraikany amin'ny fiasan'ny mpizara. Ohatra, ny haavon'ny WARN dia manamarika hafatra momba ny fanandramana fidirana mpampiasa tsy nahomby.
  • ERROR - ity haavon'ny hetsika ao amin'ny log ity dia mampahafantatra ny fisian'ny hadisoana eo an-toerana ary tsy manelingelina ny fiasan'ny server. Ity ambaratonga ity dia afaka manefa lesoka izay nahatonga ny angona fanondroan'ny mpampiasa tsirairay simba.
  • FATAL - ity haavo ity dia manondro lesoka izay tsy ahafahan'ny mpizara manohy miasa ara-dalΓ na. Ohatra, ny haavon'ny FATAL dia ho an'ny rakitsoratra manondro ny tsy fahafahana mifandray amin'ny DBMS.

Havaozina isan'andro ny fichier log server mail. Ny dikan-teny farany amin'ny rakitra dia manana anarana Mailbox.log foana, raha toa ka misy daty ao amin'ny anarana ny logs ho an'ny daty iray ary voarakitra ao amin'ny tahiry. Ohatra, mailbox.log.2020-09-29.tar.gz. Izany dia manamora kokoa ny mamerina ny diarin'ny hetsika sy mikaroka amin'ny alΓ lan'ny diary.

Ho fanamorana ny mpitantana ny rafitra dia misy logs hafa ny fampirimana /opt/zimbra/log/. Tsy misy afa-tsy ny fidirana mifandraika amin'ny singa Zimbra OSE manokana. Ohatra, ny audit.log dia tsy misy afa-tsy firaketana momba ny fanamarinana ny mpampiasa, clamd.log dia misy angona momba ny fiasan'ny antivirus, sy ny sisa. Raha ny tokony ho izy, ny fomba tsara indrindra hiarovana ny mpizara Zimbra OSE amin'ny mpanafika dia fiarovana ny mpizara mampiasa Fail2Ban, izay miasa fotsiny mifototra amin'ny audit.log. Fomba tsara ihany koa ny manampy asa cron hanatanterahana ny baiko grep -ir "password tsy mety" /opt/zimbra/log/audit.loghandraisana vaovao tsy fahombiazana amin'ny fidirana isan'andro.

Ahoana ny fomba fiasa miaraka amin'ny logs Zimbra OSE
Ohatra iray amin'ny fomba anehoan'ny audit.log ny tenimiafina nampidirina indroa diso sy ny fanandramana fidirana nahomby.

Ny logs ao amin'ny Zimbra OSE dia mety ho tena ilaina amin'ny famantarana ny antony mahatonga ny tsy fahombiazana isan-karazany. Amin'ny fotoana misy ny hadisoana lehibe, matetika ny mpitantana dia tsy manam-potoana hamakiana ny diary. Ilaina ny mamerina haingana ny mpizara. Na izany aza, taty aoriana, rehefa tafaverina ny mpizara ary mamorona logs be dia be, dia mety ho sarotra ny mahita ny fidirana ilaina amin'ny rakitra lehibe. Mba hahitana haingana ny firaketana diso, dia ampy ny mahafantatra ny fotoana nanombohan'ny mpizara ary hahita fidirana ao amin'ny logs nanomboka tamin'io fotoana io. Ny fidirana teo aloha dia ho firaketana ny fahadisoana nitranga. Azonao atao ihany koa ny mahita ny hafatra diso amin'ny fitadiavana ny teny fanalahidy FATAL.

Ny logs Zimbra OSE dia ahafahanao mamantatra ny tsy fahombiazana tsy mitsikera. Ohatra, raha te hahita maningana amin'ny mpitantana ianao dia azonao atao ny mikaroka maningana amin'ny mpitantana. Matetika, ny lesoka nateraky ny mpitantana dia miaraka amin'ny dian'ny stack izay manazava ny antony nahatonga ny fanavahana. Raha misy hadisoana amin'ny fandefasana mailaka, dia tokony hanomboka ny fikarohanao amin'ny teny fanalahidy LmtpServer ianao, ary raha hikaroka ireo lesoka mifandraika amin'ny protocols POP na IMAP dia azonao ampiasaina ny teny fanalahidy ImapServer sy Pop3Server.

Afaka manampy ihany koa ny logs rehefa manadihady tranga momba ny fiarovana ny vaovao. Andeha isika hijery ohatra manokana. Tamin'ny 20 septambra, nandefa taratasy voan'ny virus ho an'ny mpanjifa iray ny mpiasa iray. Vokatr'izany, ny angon-drakitra ao amin'ny solosain'ny mpanjifa dia voarakotra. Nianiana anefa ilay mpiasa fa tsy nandefa na inona na inona. Ao anatin'ny fanadihadiana momba ny zava-nitranga, ny sampan-draharaha fiarovana orinasa dia mangataka amin'ny mpitantana ny rafitra ny lozisialy mailaka ho an'ny 20 septambra mifandraika amin'ny mpampiasa anaovana fanadihadiana. Noho ny mari-pamantarana fotoana, ny mpitantana ny rafitra dia mahita ny rakitra log ilaina, maka ny fampahalalana ilaina ary mamindra izany amin'ny manam-pahaizana manokana momba ny fiarovana. Ireo indray dia mijery izany ary mahita fa ny adiresy IP nandefasana ity taratasy ity dia mifanaraka amin'ny adiresy IP an'ny solosainan'ny mpampiasa. Nohamafisin’ny CCTV fa tao amin’ny toeram-piasany ilay mpiasa tamin’ny nandefasana ny taratasy. Ampy hiampangana azy ho manitsakitsaka ny lalΓ na momba ny fiarovana ny fampahalalam-baovao sy mandroaka azy io angona io. 

Ahoana ny fomba fiasa miaraka amin'ny logs Zimbra OSE
Ohatra iray amin'ny fakana rakitsoratra momba ny iray amin'ireo kaonty avy amin'ny fidirana Mailbox.log ho rakitra misaraka

Lasa sarotra kokoa ny zava-drehetra raha ny fotodrafitrasa multi-server no resahina. Koa satria angonina eo an-toerana ny lozisialy, ny fiaraha-miasa amin'izy ireo amin'ny fotodrafitrasa maro-server dia tena manahiran-tsaina ary noho izany dia ilaina ny manafoana ny fanangonana logs. Izany dia azo atao amin'ny alalan'ny fametrahana mpampiantrano hanangona logs. Tsy ilaina manokana ny manampy mpampiantrano natokana ho an'ny fotodrafitrasa. Ny mpizara mailaka rehetra dia afaka miasa ho toy ny node amin'ny fanangonana logs. Amin'ny tranga misy antsika, ity no Mailstore01 node.

Amin'ity server ity dia mila miditra ireto baiko manaraka ireto isika:

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

Amboary ny rakitra /etc/sysconfig/rsyslog, ary apetraho ny SYSLOGD_OPTIONS=”-r -c 2β€³

Amboary /etc/rsyslog.conf ary esory ny tsipika manaraka:
$ModLoad imudp
$UDPServerRun 514

Ampidiro ireto didy manaraka ireto:

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

Azonao atao ny manamarina fa mandeha ny zava-drehetra amin'ny alΓ lan'ny baiko zmprov gacf | grep zimbraLogHostname. Aorian'ny fanatanterahana ny baiko dia tokony haseho ny anaran'ny mpampiantrano izay manangona logs. Mba hanovana azy dia tsy maintsy miditra ny baiko zmprov mcf zimbraLogHostname mailstore01.company.ru ianao.

Amin'ny lohamilina fotodrafitrasa hafa rehetra (LDAP, MTA ary fivarotana mailaka hafa), araho ny baiko zmprov gacf |grep zimbraLogHostname hahitana ny anaran'ny mpampiantrano izay handefasana ny log. Raha hanova izany dia azonao atao koa ny mampiditra ny baiko zmprov mcf zimbraLogHostname mailstore01.company.ru

Tsy maintsy ampidirinao koa ireto baiko manaraka ireto amin'ny mpizara tsirairay:

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

Aorian'izany dia horaketina ao amin'ny lohamilina nofaritanao ny logs rehetra, izay azo jerena tsara. Ary koa, ao amin'ny Console Administrator Zimbra OSE, eo amin'ny efijery misy fampahalalana momba ny satan'ny mpizara, ny serivisy Logger mandeha dia tsy haseho afa-tsy amin'ny mpizara mailstore01.

Ahoana ny fomba fiasa miaraka amin'ny logs Zimbra OSE

Ny aretin'andoha iray hafa ho an'ny mpitantana iray dia ny fitazonana mailaka manokana. Satria ny mailaka ao amin'ny Zimbra OSE dia mandalo hetsika isan-karazany indray mandeha: scanning amin'ny antivirus, antispam, sy ny sisa, alohan'ny hanekena na handefasana azy, ho an'ny mpandrindra, raha tsy tonga ny mailaka, dia mety ho manahirana ny mijery amin'ny dingana inona. very izany .

Mba hamahana ity olana ity dia azonao atao ny mampiasa script manokana, izay novolavolain'ny manam-pahaizana manokana momba ny fiarovana ny vaovao Viktor Dukhovny ary natolotry ny mpamorona Postfix hampiasaina. Ity script ity dia mampifandray ireo fidirana avy amin'ny logs ho an'ny dingana iray manokana ary noho izany dia ahafahanao mampiseho haingana ny fidirana rehetra mifandraika amin'ny fandefasana taratasy manokana mifototra amin'ny famantarana azy. Ny asany dia nosedraina tamin'ny dikan-teny rehetra an'ny Zimbra OSE, manomboka amin'ny 8.7. Ity ny lahatsoratry ny script.

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

Ny script dia nosoratana tamin'ny Perl ary mba hampandehanana azy dia mila mitahiry izany amin'ny rakitra iray ianao collate.pl, ataovy azo tanterahana, ary avy eo dia mandehana ilay rakitra manondro ny rakitra log ary mampiasa pgrep hanesorana ny mombamomba ny taratasy tadiavinao. collate.pl /var/log/zimbra.log | pgrep'[email voaaro]>'. Ny vokatr'izany dia vokatra misesy misy andalana misy fampahalalana momba ny fihetsehan'ny taratasy eo amin'ny mpizara.

# 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

Ho an'ny fanontaniana rehetra mifandraika amin'ny Zextras Suite, azonao atao ny mifandray amin'ny solontenan'ny Zextras Ekaterina Triandafilidi amin'ny alΓ lan'ny mailaka. [email voaaro]

Source: www.habr.com