Kumaha damel sareng log Zimbra OSE

Log sadaya kajadian anu lumangsung mangrupikeun salah sahiji fungsi anu paling penting dina sistem perusahaan. Log ngamungkinkeun anjeun pikeun ngajawab masalah anu muncul, ngaudit operasi sistem inpormasi, sareng ogé nalungtik insiden kaamanan inpormasi. Zimbra OSE ogé ngajaga log detil operasi na. Éta kalebet sadaya data tina kinerja server pikeun ngirim sareng nampi email ku pangguna. Sanajan kitu, maca log dihasilkeun Zimbra OSE mangrupakeun tugas rada non-trivial. Dina tulisan ieu, nganggo conto khusus, kami bakal nyarioskeun ka anjeun kumaha cara maca log Zimbra OSE, ogé kumaha cara ngajantenkeunana terpusat.

Kumaha damel sareng log Zimbra OSE
Zimbra OSE nyimpen sadaya log lokal dina folder /opt/zimbra/log, sareng log ogé tiasa dipendakan dina file /var/log/zimbra.log. Anu paling penting nyaéta mailbox.log. Éta ngarékam sadaya tindakan anu lumangsung dina server mail. Ieu kalebet pangiriman email, data auténtikasi pangguna, usaha login gagal, sareng anu sanésna. Éntri dina mailbox.log mangrupikeun senar téks anu ngandung waktos kajadian éta lumangsung, tingkat kajadian, nomer utas dimana éta kajadian, nami pangguna sareng alamat IP, ogé déskripsi téks ngeunaan kagiatan éta. .

Kumaha damel sareng log Zimbra OSE

Tingkat log nunjukkeun darajat pangaruh kajadian dina operasi server. Sacara standar aya 4 tingkat acara: INFO, WARN, ERROR sareng FATAL. Hayu urang nempo sagala tingkatan dina ngaronjatkeun urutan severity.

  • INFO - Kajadian dina tingkat ieu biasana dimaksudkeun pikeun nginpokeun ngeunaan kamajuan Zimbra OSE. Pesen dina tingkat ieu kalebet laporan ngeunaan nyiptakeun atanapi ngahapus kotak surat, sareng saterasna.
  • PERHATOSAN - acara tingkat ieu ngawartosan ngeunaan kaayaan anu berpotensi bahaya, tapi teu mangaruhan operasi server. Contona, tingkat WARN nandaan pesen ngeunaan usaha login pamaké gagal.
  • ERROR - tingkat acara ieu dina log informs ngeunaan lumangsungna kasalahan anu lokal di alam jeung teu ngaganggu operasi server. Tingkat ieu tiasa nunjukkeun kasalahan dimana data indéks pangguna individu parantos rusak.
  • FATAL - tingkat ieu nunjukkeun kasalahan alatan nu server teu bisa neruskeun beroperasi normal. Contona, tingkat FATAL bakal pikeun rékaman nunjukkeun henteu mampuh pikeun nyambung ka DBMS.

File log server mail diropéa unggal dinten. Versi panganyarna tina file salawasna boga ngaran Mailbox.log, bari log pikeun titimangsa nu tangtu boga tanggal dina ngaran jeung dikandung dina arsip. Contona mailbox.log.2020-09-29.tar.gz. Ieu ngagampangkeun pikeun nyadangkeun log kagiatan sareng milarian log.

Pikeun genah administrator sistem, folder / opt / zimbra / log / ngandung log séjén. Éta ngan ukur kalebet éntri anu aya hubunganana sareng unsur Zimbra OSE khusus. Contona, audit.log ngan ngandung rékaman ngeunaan auténtikasi pamaké, clamd.log ngandung data ngeunaan operasi antipirus, jeung saterusna. Ku jalan kitu, hiji metodeu alus teuing ngajaga server Zimbra OSE ti intruders panyalindungan server maké Fail2Ban, nu ngan jalan dumasar kana audit.log. Éta ogé prakték anu saé pikeun nambihan tugas cron pikeun ngaéksekusi paréntah grep -ir "sandi henteu sah" /opt/zimbra/log/audit.logpikeun nampa informasi gagal login poean.

Kumaha damel sareng log Zimbra OSE
Conto kumaha audit.log nunjukkeun kecap akses anu lepat dua kali sareng usaha login anu suksés.

Log di Zimbra OSE tiasa pisan mangpaat dina ngaidentipikasi panyabab sagala rupa gagal kritis. Dina momen nalika kasalahan kritis lumangsung, administrator biasana teu boga waktu pikeun maca log. Ieu diperlukeun pikeun mulangkeun server pas mungkin. Nanging, engké, nalika server nyadangkeun sareng ngahasilkeun seueur log, tiasa sesah milarian éntri anu diperyogikeun dina file anu ageung. Dina raraga gancang manggihan rékaman kasalahan, éta cukup pikeun nyaho waktu nu server ieu restarted sarta manggihan entri dina log dating ti waktu ieu. Éntri saméméhna bakal rékaman kasalahan anu lumangsung. Anjeun ogé tiasa mendakan pesen kasalahan ku milarian kecap konci FATAL.

Zimbra OSE log ogé ngidinan Anjeun pikeun ngaidentipikasi gagal non-kritis. Contona, pikeun manggihan pengecualian pawang, anjeun tiasa milarian pengecualian pawang. Seringna, kasalahan anu dihasilkeun ku pawang dibarengan ku jejak tumpukan anu ngajelaskeun naon anu nyababkeun pengecualian. Upami aya kasalahan dina pangiriman surat, anjeun kedah ngamimitian milarian ku kecap konci LmtpServer, sareng pikeun milarian kasalahan anu aya hubunganana sareng protokol POP atanapi IMAP, anjeun tiasa nganggo kecap konci ImapServer sareng Pop3Server.

Log ogé tiasa ngabantosan nalika nalungtik insiden kaamanan inpormasi. Hayu urang nempo conto husus. Dina 20 Séptémber, salah sahiji karyawan ngirim surat anu katépaan virus ka klien. Hasilna, data dina komputer klien énkripsi. Tapi, pagawé sumpah yén anjeunna henteu ngirim nanaon. Salaku bagian tina panyelidikan kana kajadian éta, jasa kaamanan perusahaan nyuhunkeun ti administrator sistem log server mail kanggo 20 Séptémber anu aya hubunganana sareng pangguna anu ditalungtik. Hatur nuhun kana stempel waktos, administrator sistem mendakan file log anu diperyogikeun, nimba inpormasi anu diperyogikeun sareng mindahkeun ka spesialis kaamanan. Jalma, kahareupna kasampak ngaliwatan eta sarta manggihan yén alamat IP ti mana surat ieu dikirim pakait jeung alamat IP tina komputer pamaké. Rakaman CCTV negeskeun yén karyawan éta aya di tempat damel nalika suratna dikirim. Data ieu cukup pikeun nuduh anjeunna ngalanggar aturan kaamanan inpormasi sareng nyéépkeun anjeunna. 

Kumaha damel sareng log Zimbra OSE
Conto ékstraksi rékaman ngeunaan salah sahiji akun tina Mailbox.log log kana file anu misah

Sagalana janten langkung pajeulit lamun datang ka infrastruktur multi-server. Kusabab log dikumpulkeun sacara lokal, damel sareng aranjeunna dina prasarana multi-server henteu pikaresepeun pisan sareng ku kituna peryogi pikeun sentralisasi koleksi log. Ieu tiasa dilakukeun ku nyetél host pikeun ngumpulkeun log. Henteu aya kabutuhan khusus pikeun nambihan host khusus kana infrastruktur. Sakur server mail tiasa janten titik pikeun ngumpulkeun log. Dina kasus urang, ieu bakal titik Mailstore01.

Dina server ieu urang kedah ngalebetkeun paréntah di handap ieu:

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

Édit file /etc/sysconfig/rsyslog, sareng atur SYSLOGD_OPTIONS = ”-r -c 2″

Édit /etc/rsyslog.conf sareng cabut koméntar baris di handap ieu:
$ModLoad imudp
$UDPServerRun 514

Lebetkeun paréntah ieu:

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

Anjeun tiasa pariksa yen sagalana berpungsi ngagunakeun paréntah zmprov gacf | grep zimbraLogHostname. Saatos ngalaksanakeun paréntah, nami host anu ngumpulkeun log kedah ditingalikeun. Pikeun ngarobah éta, anjeun kudu ngasupkeun paréntah zmprov mcf zimbraLogHostname mailstore01.company.ru.

Dina sadaya pangladén infrastruktur anu sanés (LDAP, MTA sareng toko surat anu sanés), jalankeun paréntah zmprov gacf |grep zimbraLogHostname pikeun ningali nami host anu dikirimkeun log. Pikeun ngarobah éta, anjeun ogé tiasa ngalebetkeun paréntah zmprov mcf zimbraLogHostname mailstore01.company.ru

Anjeun ogé kedah ngalebetkeun paréntah di handap ieu dina unggal 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

Saatos ieu, sadaya log bakal dirékam dina server anu anjeun pikahoyong, dimana aranjeunna tiasa ditingali kalayan gampang. Ogé, dina konsol administrator Zimbra OSE, dina layar sareng inpormasi ngeunaan status server, jasa Logger anu ngajalankeun bakal ditingalikeun ngan ukur pikeun server mailstore01.

Kumaha damel sareng log Zimbra OSE

Lieur anu sanés pikeun pangurus tiasa ngalacak email khusus. Kusabab email di Zimbra OSE ngaliwat sababaraha acara anu béda sakaligus: nyeken ku antipirus, antispam, sareng saterasna, sateuacan ditampi atanapi dikirim, pikeun pangurus, upami emailna henteu sumping, éta tiasa janten masalah pikeun ngalacak dina tahap naon. éta leungit.

Pikeun ngabéréskeun masalah ieu, anjeun tiasa nganggo skrip khusus, anu dikembangkeun ku spesialis kaamanan inpormasi Viktor Dukhovny sareng disarankeun pikeun dianggo ku pamekar Postfix. Skrip ieu ngahijikeun éntri tina log pikeun prosés anu khusus sareng, kusabab ieu, ngamungkinkeun anjeun gancang ningalikeun sadaya éntri anu aya hubunganana sareng ngirim surat khusus dumasar kana identifier na. Karyana parantos diuji dina sadaya vérsi Zimbra OSE, mimitian ti 8.7. Ieu téks naskah.

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

Skrip ditulis dina Perl sareng pikeun ngajalankeunana anjeun kedah nyimpen kana file collate.pl, jantenkeun tiasa dieksekusi, teras jalankeun file anu netepkeun file log sareng nganggo pgrep pikeun nimba inpormasi idéntifikasi surat anu anjeun milarian collate.pl /var/log/zimbra.log | pgrep'[email dijaga]>’. Hasilna bakal kaluaran sequential tina garis ngandung émbaran ngeunaan gerakan surat dina 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

Kanggo sadaya patarosan anu aya hubunganana sareng Zextras Suite, anjeun tiasa ngahubungi Perwakilan Zextras Ekaterina Triandafilidi ku email. [email dijaga]

sumber: www.habr.com