Cara nggarap log Zimbra OSE

Log kabeh acara sing kedadeyan minangka salah sawijining fungsi sing paling penting ing sistem perusahaan. Log ngidini sampeyan ngatasi masalah sing muncul, audit operasi sistem informasi, lan uga nyelidiki kedadeyan keamanan informasi. Zimbra OSE uga nyimpen log rinci babagan operasi. Iki kalebu kabeh data saka kinerja server kanggo ngirim lan nampa email dening pangguna. Nanging, maca log sing digawe dening Zimbra OSE minangka tugas sing ora pati penting. Ing artikel iki, nggunakake conto tartamtu, kita bakal pitutur marang kowe carane maca log Zimbra OSE, uga carane nggawe terpusat.

Cara nggarap log Zimbra OSE
Zimbra OSE nyimpen kabeh log lokal ing folder /opt/zimbra/log, lan log uga bisa ditemokake ing file /var/log/zimbra.log. Sing paling penting yaiku mailbox.log. Iki nyathet kabeh tumindak sing kedadeyan ing server mail. Iki kalebu transmisi email, data otentikasi pangguna, upaya login gagal, lan liya-liyane. Entri ing mailbox.log minangka senar teks sing ngemot wektu kedadeyan, tingkat acara, nomer utas sing kedadeyan, jeneng pangguna lan alamat IP, uga deskripsi teks acara kasebut. .

Cara nggarap log Zimbra OSE

Tingkat log nuduhake tingkat pengaruh acara ing operasi server. Kanthi gawan, ana 4 level acara: INFO, WARN, ERROR lan FATAL. Ayo ndeleng kabeh level kanthi nambah tingkat keruwetan.

  • INFO - Acara ing tingkat iki biasane dimaksudake kanggo ngandhani babagan kemajuan Zimbra OSE. Pesen ing tingkat iki kalebu laporan babagan nggawe utawa mbusak kothak layang, lan liya-liyane.
  • PÈNGET - acara saka tingkat iki ngandhani bab kahanan sing duweni potensi mbebayani, nanging ora mengaruhi operasi saka server. Contone, level WARN nandhani pesen babagan nyoba mlebu pangguna sing gagal.
  • ERROR - tingkat acara iki ing log ngandhani babagan kedadeyan kesalahan sing sifate lokal lan ora ngganggu operasi server. Tingkat iki bisa menehi tandha kesalahan nalika data indeks pangguna individu wis rusak.
  • FATAL - tingkat iki nuduhake kasalahan amarga server ora bisa terus operate normal. Contone, tingkat FATAL bakal kanggo rekaman sing nuduhake ora bisa nyambung menyang DBMS.

File log server mail dianyari saben dina. Versi paling anyar saka berkas iki tansah duwe jeneng Mailbox.log, nalika log kanggo tanggal tartamtu duwe tanggal ing jeneng lan ana ing arsip. Contone mailbox.log.2020-09-29.tar.gz. Iki nggawe luwih gampang kanggo nggawe serep log kegiatan lan nggoleki log.

Kanggo nyenengake administrator sistem, folder /opt/zimbra/log/ ngemot log liyane. Dheweke mung kalebu entri sing ana hubungane karo unsur Zimbra OSE tartamtu. Contone, audit.log mung ngemot cathetan babagan otentikasi pangguna, clamd.log ngemot data babagan operasi antivirus, lan liya-liyane. Miturut cara, cara sing apik kanggo nglindhungi server Zimbra OSE saka penyusup yaiku pangayoman server nggunakake Fail2Ban, sing mung dianggo adhedhasar audit.log. Iki uga praktik sing apik kanggo nambah tugas cron kanggo nglakokake perintah kasebut grep -ir "sandi ora sah" /opt/zimbra/log/audit.logkanggo nampa informasi gagal login saben dina.

Cara nggarap log Zimbra OSE
Conto carane audit.log nuduhake sandhi sing salah ngetik kaping pindho lan nyoba mlebu sukses.

Log ing Zimbra OSE bisa migunani banget kanggo ngenali panyebab saka macem-macem kegagalan kritis. Ing wayahe nalika ana kesalahan kritis, administrator biasane ora duwe wektu kanggo maca log. Dibutuhake kanggo mulihake server sanalika bisa. Nanging, mengko, nalika server serep lan ngasilake akeh log, bisa dadi angel kanggo nemokake entri sing dibutuhake ing file gedhe. Supaya cepet nemokake rekaman kesalahan, cukup ngerti wektu nalika server diwiwiti maneh lan golek entri ing log sing diwiwiti saka wektu iki. Entri sadurunge bakal dadi cathetan kesalahan sing kedadeyan. Sampeyan uga bisa nemokake pesen kesalahan kanthi nggoleki tembung kunci FATAL.

Log Zimbra OSE uga ngidini sampeyan ngenali kegagalan sing ora kritis. Contone, kanggo nemokake pangecualian pawang, sampeyan bisa nelusuri pangecualian pawang. Asring, kesalahan sing digawe dening panangan diiringi tilak tumpukan sing nerangake apa sing nyebabake pangecualian. Yen ana kesalahan nalika ngirim surat, sampeyan kudu miwiti panelusuran nganggo tembung kunci LmtpServer, lan kanggo nggoleki kesalahan sing ana gandhengane karo protokol POP utawa IMAP, sampeyan bisa nggunakake tembung kunci ImapServer lan Pop3Server.

Log uga bisa mbantu nalika nyelidiki kedadeyan keamanan informasi. Ayo katon ing conto tartamtu. Tanggal 20 September, salah sawijining karyawan ngirim surat sing kena infeksi virus menyang klien. AkibatΓ©, data ing komputer klien dienkripsi. Nanging, karyawan kasebut sumpah yen dheweke ora ngirim apa-apa. Minangka bagΓ©an saka investigasi babagan kedadeyan kasebut, layanan keamanan perusahaan njaluk saka administrator sistem log server mail kanggo 20 September sing ana gandhengane karo pangguna sing diselidiki. Thanks kanggo cap wektu, administrator sistem nemokake file log sing dibutuhake, ngekstrak informasi sing dibutuhake lan ditransfer menyang spesialis keamanan. Dadi, goleki lan goleki manawa alamat IP sing dikirim layang iki cocog karo alamat IP komputer pangguna. Rekaman CCTV dikonfirmasi manawa karyawan kasebut ana ing papan kerja nalika surat kasebut dikirim. Data iki cukup kanggo nuduh dheweke nglanggar aturan keamanan informasi lan murub dheweke. 

Cara nggarap log Zimbra OSE
Conto ngekstrak cathetan babagan salah sawijining akun saka Mailbox.log log menyang file sing kapisah

Kabeh dadi luwih rumit nalika nerangake infrastruktur multi-server. Wiwit log diklumpukake sacara lokal, nggarap prasarana multi-server banget ora trep lan mulane ana perlu kanggo sentralisasi koleksi log. Iki bisa ditindakake kanthi nyetel host kanggo ngumpulake log. Ora perlu nambah host khusus kanggo infrastruktur kasebut. Sembarang server mail bisa tumindak minangka simpul kanggo ngumpulake log. Ing kasus kita, iki bakal dadi simpul Mailstore01.

Ing server iki kita kudu ngetik printah ing ngisor iki:

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

Sunting file /etc/sysconfig/rsyslog, lan atur SYSLOGD_OPTIONS=”-r -c 2β€³

Sunting /etc/rsyslog.conf lan copot komentar baris ing ngisor iki:
$ModLoad imudp
$UDPServerRun 514

Ketikake perintah ing ngisor iki:

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

Sampeyan bisa mriksa manawa kabeh bisa digunakake kanthi nggunakake perintah zmprov gacf | grep zimbraLogHostname. Sawise nglakokake perintah kasebut, jeneng host sing ngumpulake log kudu ditampilake. Kanggo ngganti, sampeyan kudu ngetik printah zmprov mcf zimbraLogHostname mailstore01.company.ru.

Ing kabeh server infrastruktur liyane (LDAP, MTA lan toko surat liyane), jalanake printah zmprov gacf |grep zimbraLogHostname kanggo ndeleng jeneng host sing dikirim log. Kanggo ngganti, sampeyan uga bisa ngetik printah zmprov mcf zimbraLogHostname mailstore01.company.ru

Sampeyan uga kudu ngetik printah ing ngisor iki ing saben 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

Sawise iki, kabeh log bakal direkam ing server sing sampeyan nemtokake, sing bisa dideleng kanthi gampang. Uga, ing konsol administrator Zimbra OSE, ing layar kanthi informasi babagan status server, layanan Logger sing mlaku bakal ditampilake mung kanggo server mailstore01.

Cara nggarap log Zimbra OSE

Liyane sirah kanggo administrator bisa nglacak email tartamtu. Wiwit email ing Zimbra OSE ngliwati sawetara acara sing beda-beda bebarengan: mindhai kanthi antivirus, antispam, lan liya-liyane, sadurunge ditampa utawa dikirim, kanggo pangurus, yen email ora teka, bisa dadi masalah kanggo nglacak ing tahap apa. iku ilang.

Kanggo ngatasi masalah iki, sampeyan bisa nggunakake skrip khusus, sing dikembangake dening spesialis keamanan informasi Viktor Dukhovny lan dianjurake kanggo digunakake dening pangembang Postfix. Skrip iki nggabungake entri saka log kanggo proses tartamtu lan, amarga iki, ngidini sampeyan kanthi cepet nampilake kabeh entri sing ana gandhengane karo ngirim layang tartamtu adhedhasar pengenal. Karya kasebut wis diuji ing kabeh versi Zimbra OSE, wiwit saka 8.7. Punika teks 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 ing Perl lan kanggo mbukak sampeyan kudu nyimpen menyang file collate.pl, nggawe eksekusi, banjur mbukak file sing nemtokake file log lan nggunakake pgrep kanggo extract informasi identifikasi huruf sing sampeyan goleki collate.pl /var/log/zimbra.log | pgrep'[email dilindhungi]>'. Asil kasebut bakal dadi output baris sing ngemot informasi babagan gerakan huruf ing 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 kabeh pitakonan sing ana gandhengane karo Zextras Suite, sampeyan bisa ngubungi Perwakilan Zextras Ekaterina Triandafilidi liwat email. [email dilindhungi]

Source: www.habr.com