Nola lan egin Zimbra OSE erregistroekin

Gertatzen diren gertaera guztien erregistroa edozein sistema korporatiboren funtzio garrantzitsuenetako bat da. Erregistroek sortzen diren arazoak konpontzeko, informazio sistemen funtzionamendua ikuskatzeko eta informazioaren segurtasuneko gorabeherak ikertzeko aukera ematen dute. Zimbra OSEk bere funtzionamenduaren erregistro zehatzak ere gordetzen ditu. Datu guztiak biltzen dituzte zerbitzariaren errendimendutik erabiltzaileek mezu elektronikoak bidali eta jaso arte. Hala ere, Zimbra OSEk sortutako erregistroak irakurtzea ez da hutsala zeregina. Artikulu honetan, adibide zehatz bat erabiliz, Zimbra OSE erregistroak nola irakurtzen diren esango dizugu, baita zentralizatuak nola egin ere.

Nola lan egin Zimbra OSE erregistroekin
Zimbra OSE-k tokiko erregistro guztiak /opt/zimbra/log karpetan gordetzen ditu, eta erregistroak /var/log/zimbra.log fitxategian ere aurki daitezke. Horietatik garrantzitsuena mailbox.log da. Posta-zerbitzarian gertatzen diren ekintza guztiak erregistratzen ditu. Besteak beste, mezu elektronikoen transmisioa, erabiltzailearen autentifikazio-datuak, huts egin zuen saioa hasteko saiakerak eta beste batzuk. Mailbox.log-eko sarrerak testu-kate bat dira, eta bertan gertaera gertatu zen unea, gertaeraren maila, gertaera gertatu zen hari-zenbakia, erabiltzailearen izena eta IP helbidea, baita gertaeraren testu-deskribapena ere. .

Nola lan egin Zimbra OSE erregistroekin

Erregistro-mailak gertaerak zerbitzariaren funtzionamenduan duen eragin-maila adierazten du. Lehenespenez 4 gertaera maila daude: INFO, WARN, ERROR eta FATAL. Ikus ditzagun maila guztiak larritasunaren hurrenkeraren arabera.

  • INFORMAZIOA - Maila honetako ekitaldiek normalean Zimbra OSEren aurrerapenari buruz informatzea dute helburu. Maila honetako mezuek postontzi bat sortzeari edo ezabatzeari buruzko txostenak, etab.
  • WARN - Maila honetako gertaerek arriskutsuak izan daitezkeen egoerei buruz informatzen dute, baina ez dute zerbitzariaren funtzionamenduan eragiten. Esate baterako, WARN mailak erabiltzaileak saioa hasteko huts egin duen saiakera bati buruzko mezu bat markatzen du.
  • ERROREA - erregistroko gertaera-maila honek izaera lokala duen eta zerbitzariaren funtzionamendua oztopatzen ez duen errore baten agerraldiari buruz informatzen du. Maila honek erabiltzaile baten indizearen datuak hondatu diren errore bat markatu dezake.
  • FATAL - maila honek akatsak adierazten ditu zerbitzariak ezin duelako normal funtzionatzen jarraitu. Adibidez, FATAL maila DBMSra konektatzeko ezintasuna adierazten duen erregistro baterako izango da.

Posta-zerbitzariaren erregistro-fitxategia egunero eguneratzen da. Fitxategiaren azken bertsioak Mailbox.log izena du beti, eta data jakin bateko erregistroek, berriz, data bat dute izenean eta artxiboan daude. Adibidez, mailbox.log.2020-09-29.tar.gz. Horrek asko errazten du jardueren erregistroen babeskopiak egitea eta erregistroen bidez bilaketak egitea.

Sistema-administratzailearen erosotasunerako, /opt/zimbra/log/ karpetak beste erregistro batzuk ditu. Zimbra OSE elementu espezifikoekin erlazionatutako sarrerak bakarrik sartzen dituzte. Adibidez, audit.log-ek erabiltzaileen autentifikazioari buruzko erregistroak baino ez ditu, clamd.log-ek antibirusaren funtzionamenduari buruzko datuak eta abar. Bide batez, Zimbra OSE zerbitzari bat intrusioetatik babesteko metodo bikaina da zerbitzariaren babesa Fail2Ban erabiliz, audit.log-en oinarrituta funtzionatzen duena. Agindua exekutatzeko cron zeregin bat gehitzea ere praktika ona da grep -ir "pasahitz baliogabea" /opt/zimbra/log/audit.logegunero saioa hasteko hutsegitearen informazioa jasotzeko.

Nola lan egin Zimbra OSE erregistroekin
Audit.log-ek bi aldiz gaizki sartutako pasahitza eta saioa hasteko saiakera arrakastatsua erakusten duen adibide bat.

Zimbra OSE-ko erregistroak oso erabilgarriak izan daitezke hainbat akats kritikoen arrazoiak identifikatzeko. Akats kritiko bat gertatzen den unean, administratzaileak normalean ez du erregistroak irakurtzeko astirik. Beharrezkoa da zerbitzaria leheneratu lehenbailehen. Hala ere, geroago, zerbitzaria babeskopia egiten denean eta erregistro asko sortzen dituenean, zaila izan daiteke fitxategi handi batean beharrezko sarrera aurkitzea. Errore-erregistro bat azkar aurkitzeko, nahikoa da zerbitzaria noiz berrabiarazi den jakitea eta garai hartako erregistroetan sarrera bat aurkitzea. Aurreko sarrera gertatutako akatsaren erregistroa izango da. Errore-mezua ere aurki dezakezu FATAL gako-hitza bilatuz.

Zimbra OSE erregistroek akats ez-kritikoak identifikatzeko aukera ematen dute. Adibidez, kudeatzaileen salbuespenak bilatzeko, kudeatzailearen salbuespena bilatu dezakezu. Askotan, kudeatzaileek sortutako akatsak salbuespena zerk eragin duen azaltzen duen pila-arrasto batekin batera joaten dira. Posta bidaltzean akatsak izanez gero, zure bilaketa LmtpServer gako-hitzarekin hasi beharko zenuke, eta POP edo IMAP protokoloekin lotutako akatsak bilatzeko, ImapServer eta Pop3Server gako-hitzak erabil ditzakezu.

Erregistroak ere lagungarri izan daitezke informazioaren segurtasuneko gorabeherak ikertzen direnean. Ikus dezagun adibide zehatz bat. Irailaren 20an, langileetako batek birusak kutsatutako gutun bat bidali zion bezero bati. Ondorioz, bezeroaren ordenagailuko datuak zifratu egin ziren. Hala ere, langileak ez duela ezer bidali zin egiten du. Gertakariaren ikerketaren baitan, enpresaren segurtasun zerbitzuak sistemaren administratzaileari eskatzen dio ikertzen ari den erabiltzaileari lotutako posta-zerbitzariaren erregistroak irailaren 20rako. Denbora-zigiluari esker, sistema-administratzaileak beharrezko erregistro-fitxategia aurkitzen du, beharrezko informazioa ateratzen du eta segurtasun-espezialistei transferitzen die. Horiek, berriz, bertan begiratu eta gutun hori bidali zen IP helbidea erabiltzailearen ordenagailuaren IP helbidearekin bat datorrela aurkitzen dute. CCTV-ren irudiek baieztatu zuten langilea bere lantokian zegoela gutuna bidali zutenean. Datu hauek nahikoa izan ziren informazioaren segurtasun arauak urratu izana leporatzeko eta kaleratzeko. 

Nola lan egin Zimbra OSE erregistroekin
Mailbox.log-etik kontuetako bati buruzko erregistroak fitxategi bereizi batera ateratzeko adibide bat

Dena askoz konplikatuagoa bihurtzen da zerbitzari anitzeko azpiegiturari dagokionez. Erregistroak lokalean biltzen direnez, haiekin zerbitzari anitzeko azpiegitura batean lan egitea oso deserosoa da eta, beraz, erregistroen bilketa zentralizatzeko beharra dago. Hau erregistroak biltzeko ostalari bat ezarriz egin daiteke. Ez dago azpiegiturari ostalari dedikatu bat gehitzeko behar berezirik. Edozein posta zerbitzariak erregistroak biltzeko nodo gisa jardun dezake. Gure kasuan, hau Mailstore01 nodoa izango da.

Zerbitzari honetan beheko komandoak sartu behar ditugu:

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

Editatu /etc/sysconfig/rsyslog fitxategia eta ezarri SYSLOGD_OPTIONS="-r -c 2β€³

Editatu /etc/rsyslog.conf eta kendu iruzkinak lerro hauek:
$ModLoad imudp
$UDPServerRun 514

Sartu komando hauek:

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

Dena funtzionatzen ari dela egiaztatu dezakezu zmrov gacf | komandoa erabiliz grep zimbraLogHostname. Komandoa exekutatu ondoren, erregistroak biltzen dituen ostalariaren izena bistaratu behar da. Aldatzeko, zmprov mcf zimbraLogHostname mailstore01.company.ru komandoa sartu behar duzu.

Beste azpiegitura zerbitzari guztietan (LDAP, MTA eta beste posta-denda batzuetan), exekutatu zmprov gacf |grep zimbraLogHostname komandoa, erregistroak bidaltzen zaizkion ostalariaren izena ikusteko. Aldatzeko, zmprov mcf zimbraLogHostname komandoa ere sar dezakezu mailstore01.company.ru

Zerbitzari bakoitzean komando hauek ere sartu behar dituzu:

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

Horren ondoren, erregistro guztiak zuk zehaztutako zerbitzarian grabatuko dira, non eroso ikusi ahal izateko. Era berean, Zimbra OSE administratzailearen kontsolan, zerbitzarien egoerari buruzko informazioa duen pantailan, martxan dagoen Logger zerbitzua mailstore01 zerbitzariarentzat soilik bistaratuko da.

Nola lan egin Zimbra OSE erregistroekin

Administratzaile baten beste buruhauste bat posta elektroniko zehatz baten jarraipena izan daiteke. Zimbra OSE-n mezu elektronikoak hainbat gertaera aldi berean pasatzen direnez: antibirusen bidez eskaneatzea, spamaren aurkakoa, eta abar, onartu edo bidali baino lehen, administratzailearentzat, mezu elektronikoa iristen ez bada, nahiko arazotsua izan daiteke zein fasetan jarraitzea. galdu zen.

Arazo hau konpontzeko, script berezi bat erabil dezakezu, Viktor Dukhovny informazio segurtasun espezialistak garatua eta Postfix garatzaileek erabiltzeko gomendatua. Script honek prozesu zehatz baterako erregistroetako sarrerak kateatzen ditu eta, horregatik, gutun jakin bat bidaltzearekin lotutako sarrera guztiak azkar bistaratzeko aukera ematen du bere identifikatzailearen arabera. Bere lana Zimbra OSEren bertsio guztietan probatu da, 8.7tik hasita. Hona hemen gidoiaren testua.

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

Scripta Perl-en idatzita dago eta exekutatzeko fitxategi batean gorde behar duzu bildu.pl, egin exekutagarria, eta gero exekutatu fitxategia erregistro-fitxategia zehaztuz eta pgrep erabiliz bilatzen ari zaren gutunaren identifikazio-informazioa ateratzeko collate.pl /var/log/zimbra.log | pgrep '[posta elektroniko bidez babestua]>'. Emaitza zerbitzarian letraren mugimenduari buruzko informazioa duten lerroen irteera sekuentziala izango da.

# 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

Zextras Suite-rekin lotutako galdera guztietarako, Zextras Ekaterina Triandafilidi-ko ordezkariarekin harremanetan jar zaitezke posta elektronikoz [posta elektroniko bidez babestua]

Iturria: www.habr.com