Visu notiekoÅ”o notikumu reÄ£istrÄÅ”ana ir viena no svarÄ«gÄkajÄm jebkuras korporatÄ«vÄs sistÄmas funkcijÄm. ŽurnÄli ļauj risinÄt raduÅ”Äs problÄmas, auditÄt informÄcijas sistÄmu darbÄ«bu, kÄ arÄ« izmeklÄt informÄcijas droŔības incidentus. Zimbra OSE arÄ« glabÄ detalizÄtus žurnÄlus par savu darbÄ«bu. Tie ietver visus datus, sÄkot no servera veiktspÄjas lÄ«dz lietotÄju e-pasta ziÅojumu sÅ«tÄ«Å”anai un saÅemÅ”anai. TomÄr Zimbra OSE Ä£enerÄto žurnÄlu lasÄ«Å”ana ir diezgan nenozÄ«mÄ«gs uzdevums. Å ajÄ rakstÄ, izmantojot konkrÄtu piemÄru, mÄs jums pateiksim, kÄ lasÄ«t Zimbra OSE žurnÄlus, kÄ arÄ« tos centralizÄt.
Zimbra OSE visus vietÄjos žurnÄlus saglabÄ mapÄ /opt/zimbra/log, un žurnÄlus var atrast arÄ« failÄ /var/log/zimbra.log. VissvarÄ«gÄkais no tiem ir mailbox.log. Tas reÄ£istrÄ visas darbÄ«bas, kas notiek pasta serverÄ«. Tie ietver e-pasta ziÅojumu pÄrsÅ«tÄ«Å”anu, lietotÄja autentifikÄcijas datus, neveiksmÄ«gus pieteikÅ”anÄs mÄÄ£inÄjumus un citus. Ieraksti mailbox.log ir teksta virkne, kurÄ ir ietverts notikuma laiks, notikuma lÄ«menis, pavediena numurs, kurÄ notika notikums, lietotÄjvÄrds un IP adrese, kÄ arÄ« notikuma teksta apraksts. .
ŽurnÄla lÄ«menis norÄda notikuma ietekmes pakÄpi uz servera darbÄ«bu. PÄc noklusÄjuma ir 4 notikumu lÄ«meÅi: INFO, WARN, ERROR un FATAL. ApskatÄ«sim visus lÄ«meÅus pieaugoÅ”Ä smaguma secÄ«bÄ.
- INFORMÄCIJA ā Ŕī lÄ«meÅa pasÄkumi parasti ir paredzÄti, lai informÄtu par Zimbra OSE gaitu. ZiÅojumi Å”ajÄ lÄ«menÄ« ietver ziÅojumus par pastkastes izveidi vai dzÄÅ”anu utt.
- BRÄŖDINÄJUMS - Å”Äda lÄ«meÅa notikumi informÄ par situÄcijÄm, kas ir potenciÄli bÄ«stamas, bet neietekmÄ servera darbÄ«bu. PiemÄram, WARN lÄ«menis apzÄ«mÄ ziÅojumu par neveiksmÄ«gu lietotÄja pieteikÅ”anÄs mÄÄ£inÄjumu.
- KÄ»ÅŖDA ā Å”is notikuma lÄ«menis žurnÄlÄ informÄ par kļūdas raÅ”anos, kas pÄc bÅ«tÄ«bas ir lokÄla un netraucÄ servera darbÄ«bu. Å is lÄ«menis var atzÄ«mÄt kļūdu, kurÄ ir bojÄti atseviŔķa lietotÄja indeksa dati.
- FATAL ā Å”is lÄ«menis norÄda uz kļūdÄm, kuru dÄļ serveris nevar turpinÄt normÄli darboties. PiemÄram, FATAL lÄ«menis bÅ«s ierakstam, kas norÄda uz nespÄju izveidot savienojumu ar DBVS.
Pasta servera žurnÄlfails tiek atjauninÄts katru dienu. Faila jaunÄkajai versijai vienmÄr ir nosaukums Mailbox.log, savukÄrt noteikta datuma žurnÄlu nosaukumÄ ir datums, un tie atrodas arhÄ«vÄ. PiemÄram, mailbox.log.2020-09-29.tar.gz. Tas ievÄrojami atvieglo darbÄ«bu žurnÄlu dublÄÅ”anu un meklÄÅ”anu žurnÄlos.
SistÄmas administratora ÄrtÄ«bÄm mapÄ /opt/zimbra/log/ ir citi žurnÄli. Tie ietver tikai ierakstus, kas attiecas uz konkrÄtiem Zimbra OSE elementiem. PiemÄram, audit.log satur tikai ierakstus par lietotÄja autentifikÄciju, clamd.log satur datus par antivÄ«rusa darbÄ«bu utt. Starp citu, lieliska metode Zimbra OSE servera aizsardzÄ«bai no iebrucÄjiem ir
PiemÄrs tam, kÄ audit.log parÄda divreiz nepareizi ievadÄ«tu paroli un veiksmÄ«gu pieteikÅ”anÄs mÄÄ£inÄjumu.
Zimbra OSE žurnÄli var bÅ«t ļoti noderÄ«gi, lai noteiktu dažÄdu kritisku kļūmju cÄloÅus. BrÄ«dÄ«, kad notiek kritiska kļūda, administratoram parasti nav laika lasÄ«t žurnÄlus. Ir nepiecieÅ”ams pÄc iespÄjas ÄtrÄk atjaunot serveri. TomÄr vÄlÄk, kad serveris ir dublÄts un Ä£enerÄ daudz žurnÄlu, var bÅ«t grÅ«ti atrast vajadzÄ«go ierakstu lielÄ failÄ. Lai Ätri atrastu kļūdas ierakstu, pietiek zinÄt laiku, kurÄ serveris tika restartÄts, un žurnÄlos atrast ierakstu, kas datÄts ar Å”o laiku. IepriekÅ”Äjais ieraksts bÅ«s raduÅ”Äs kļūdas ieraksts. Kļūdas ziÅojumu var atrast arÄ«, meklÄjot atslÄgvÄrdu FATAL.
Zimbra OSE žurnÄli arÄ« ļauj identificÄt nekritiskas kļūmes. PiemÄram, lai atrastu apdarinÄtÄja izÅÄmumus, varat meklÄt apdarinÄtÄja izÅÄmumu. Bieži vien apdarinÄtÄju radÄ«tajÄm kļūdÄm tiek pievienota steka izsekoÅ”ana, kas izskaidro izÅÄmuma cÄloni. Ja rodas kļūdas ar pasta piegÄdi, sÄciet meklÄÅ”anu ar atslÄgvÄrdu LmtpServer, savukÄrt, lai meklÄtu kļūdas, kas saistÄ«tas ar POP vai IMAP protokoliem, varat izmantot atslÄgvÄrdus ImapServer un Pop3Server.
ŽurnÄli var arÄ« palÄ«dzÄt, izmeklÄjot informÄcijas droŔības incidentus. ApskatÄ«sim konkrÄtu piemÄru. 20. septembrÄ« viens no darbiniekiem nosÅ«tÄ«jis klientam ar vÄ«rusu inficÄtu vÄstuli. RezultÄtÄ dati klienta datorÄ tika Å”ifrÄti. TaÄu darbinieks zvÄr, ka neko nav sÅ«tÄ«jis. Notikuma izmeklÄÅ”anas ietvaros uzÅÄmuma droŔības dienests sistÄmas administratoram pieprasa pasta servera žurnÄlus par 20.septembri, kas saistÄ«ti ar izmeklÄjamo lietotÄju. Pateicoties laika zÄ«mogam, sistÄmas administrators atrod nepiecieÅ”amo žurnÄla failu, izvelk nepiecieÅ”amo informÄciju un nodod to droŔības speciÄlistiem. Tie, savukÄrt, to izpÄta un konstatÄ, ka IP adrese, no kuras tika nosÅ«tÄ«ta Ŕī vÄstule, atbilst lietotÄja datora IP adresei. VideonovÄroÅ”anas materiÄli apstiprinÄja, ka darbinieks vÄstules nosÅ«tÄ«Å”anas brÄ«dÄ« atradÄs savÄ darba vietÄ. Ar Å”iem datiem pietika, lai viÅu apsÅ«dzÄtu informÄcijas droŔības noteikumu pÄrkÄpÅ”anÄ un atlaistu no darba.
PiemÄrs ierakstu izvilkÅ”anai par vienu no kontiem no žurnÄla Mailbox.log atseviÅ”Ä·Ä failÄ
Viss kļūst daudz sarežģītÄks, ja runa ir par vairÄku serveru infrastruktÅ«ru. TÄ kÄ Å¾urnÄli tiek vÄkti lokÄli, darbs ar tiem vairÄku serveru infrastruktÅ«rÄ ir ļoti neÄrts un tÄpÄc ir nepiecieÅ”ams centralizÄt žurnÄlu vÄkÅ”anu. To var izdarÄ«t, iestatot resursdatoru žurnÄlu vÄkÅ”anai. Nav Ä«paÅ”as vajadzÄ«bas infrastruktÅ«rai pievienot Ä«paÅ”u resursdatoru. JebkurÅ” pasta serveris var darboties kÄ mezgls žurnÄlu vÄkÅ”anai. MÅ«su gadÄ«jumÄ tas bÅ«s Mailstore01 mezgls.
Å ajÄ serverÄ« mums jÄievada Å”Ädas komandas:
sudo su ā zimbra
zmcontrol stop
exit
sudo /opt/zimbra/libexec/zmfixperms -e -v
RediÄ£Äjiet failu /etc/sysconfig/rsyslog un iestatiet SYSLOGD_OPTIONS=ā-r -c 2ā³
RediÄ£Äjiet /etc/rsyslog.conf un atÅemiet komentÄrus no Å”ÄdÄm rindiÅÄm:
$ModLoad imudp
$UDPServerRun 514
Ievadiet Å”Ädas komandas:
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
Varat pÄrbaudÄ«t, vai viss darbojas, izmantojot komandu zmprov gacf | grep zimbraLogHostname. PÄc komandas izpildes ir jÄparÄda resursdatora nosaukums, kas apkopo žurnÄlus. Lai to mainÄ«tu, jÄievada komanda zmprov mcf zimbraLogHostname mailstore01.company.ru.
Visos citos infrastruktÅ«ras serveros (LDAP, MTA un citos pasta veikalos) palaidiet komandu zmprov gacf |grep zimbraLogHostname, lai redzÄtu resursdatora nosaukumu, kuram tiek nosÅ«tÄ«ti žurnÄli. Lai to mainÄ«tu, varat arÄ« ievadÄ«t komandu zmprov mcf zimbraLogHostname mailstore01.company.ru
KatrÄ serverÄ« jÄievada arÄ« Å”Ädas komandas:
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
PÄc tam visi žurnÄli tiks ierakstÄ«ti jÅ«su norÄdÄ«tajÄ serverÄ«, kur tos varÄs Ärti apskatÄ«t. ArÄ« Zimbra OSE administratora konsolÄ ekrÄnÄ ar informÄciju par serveru statusu darbojoÅ”ais Logger pakalpojums tiks parÄdÄ«ts tikai serverim mailstore01.
VÄl viena administratora galvassÄpes var bÅ«t konkrÄta e-pasta izsekoÅ”ana. TÄ kÄ e-pastiem Zimbra OSE vienlaikus notiek vairÄki dažÄdi notikumi: skenÄÅ”ana, izmantojot pretvÄ«rusu, pretsurogÄtpastu un tÄ tÄlÄk, pirms to pieÅemÅ”anas vai nosÅ«tÄ«Å”anas administratoram, ja e-pasts nepienÄk, var bÅ«t diezgan problemÄtiski izsekot, kurÄ posmÄ. tas tika pazaudÄts.
Lai atrisinÄtu Å”o problÄmu, varat izmantot Ä«paÅ”u skriptu, ko izstrÄdÄjis informÄcijas droŔības speciÄlists Viktors Dukhovny un ieteicis lietot Postfix izstrÄdÄtÄji. Å is skripts savieno ierakstus no konkrÄta procesa žurnÄliem un ļauj Ätri parÄdÄ«t visus ierakstus, kas saistÄ«ti ar konkrÄtas vÄstules nosÅ«tÄ«Å”anu, pamatojoties uz tÄs identifikatoru. TÄs darbÄ«ba ir pÄrbaudÄ«ta visÄs Zimbra OSE versijÄs, sÄkot no 8.7. Å eit ir skripta teksts.
#! /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";
}
Skripts ir rakstÄ«ts programmÄ Perl, un, lai to palaistu, tas ir jÄsaglabÄ failÄ salÄ«dzinÄt.pl, padariet to izpildÄmu un pÄc tam palaidiet failu, norÄdot žurnÄlfailu un izmantojot pgrep, lai izvilktu meklÄtÄs vÄstules identifikÄcijas informÄciju collate.pl /var/log/zimbra.log | pgrep '[e-pasts aizsargÄts]>'. RezultÄts bÅ«s secÄ«ga rindu izvade, kas satur informÄciju par burta kustÄ«bu 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
Par visiem jautÄjumiem, kas saistÄ«ti ar Zextras Suite, varat sazinÄties ar Zextras pÄrstÄvi Jekaterinu Triandafilidi pa e-pastu [e-pasts aizsargÄts]
Avots: www.habr.com