Az összes előforduló esemény naplózása minden vállalati rendszer egyik legfontosabb funkciója. A naplók lehetővé teszik a felmerülő problémák megoldását, az információs rendszerek működésének auditálását, valamint az információbiztonsági események kivizsgálását. A Zimbra OSE részletes naplókat is vezet a működéséről. Tartalmaznak minden adatot a szerver teljesítményétől a felhasználók általi e-mailek küldéséig és fogadásáig. A Zimbra OSE által generált naplók olvasása azonban meglehetősen nem triviális feladat. Ebben a cikkben egy konkrét példán keresztül elmondjuk, hogyan kell olvasni a Zimbra OSE naplókat, és hogyan lehet azokat központosítani.
A Zimbra OSE az összes helyi naplót az /opt/zimbra/log mappában tárolja, és a naplók a /var/log/zimbra.log fájlban is megtalálhatók. Ezek közül a legfontosabb a mailbox.log. Rögzíti az összes műveletet, amely a levelezőszerveren történik. Ide tartozik az e-mailek továbbítása, a felhasználói hitelesítési adatok, a sikertelen bejelentkezési kísérletek és egyebek. A mailbox.log bejegyzései egy szöveges karakterlánc, amely tartalmazza az esemény időpontját, az esemény szintjét, a szál számát, amelyben az esemény történt, a felhasználónevet és az IP-címet, valamint az esemény szöveges leírását .
A naplózási szint jelzi, hogy az esemény milyen mértékben befolyásolja a szerver működését. Alapértelmezés szerint 4 eseményszint van: INFO, WARN, ERROR és FATAL. Nézzünk meg minden szintet növekvő súlyossági sorrendben.
- INFORMÁCIÓ – Az ezen a szinten zajló események általában a Zimbra OSE fejlődéséről való tájékoztatást szolgálják. Az ezen a szinten lévő üzenetek jelentéseket tartalmaznak egy postafiók létrehozásáról vagy törléséről stb.
- FIGYELMEZTETÉS - az ilyen szintű események olyan helyzetekről tájékoztatnak, amelyek potenciálisan veszélyesek, de nem befolyásolják a szerver működését. Például a WARN szint egy sikertelen felhasználói bejelentkezési kísérletről szóló üzenetet jelöl.
- HIBA – ez az eseményszint a naplóban olyan helyi jellegű hiba előfordulásáról tájékoztat, amely nem zavarja a szerver működését. Ez a szint jelezheti azt a hibát, amelyben az egyes felhasználók indexadatai megsérültek.
- FATAL – ez a szint olyan hibákat jelez, amelyek miatt a szerver nem tud normálisan működni. Például a FATAL szint egy olyan rekordra vonatkozik, amely azt jelzi, hogy nem tud csatlakozni a DBMS-hez.
A levelezőszerver naplófájlja minden nap frissül. A fájl legfrissebb verziója mindig a Mailbox.log nevet viseli, míg az adott dátumra vonatkozó naplók nevében szerepel egy dátum, és az archívumban találhatók. Például mailbox.log.2020-09-29.tar.gz. Ez sokkal könnyebbé teszi a tevékenységnaplók biztonsági mentését és a naplókban való keresést.
A rendszergazda kényelmét szolgálja, hogy az /opt/zimbra/log/ mappa más naplókat is tartalmaz. Csak olyan bejegyzéseket tartalmaznak, amelyek bizonyos Zimbra OSE-elemekhez kapcsolódnak. Például az audit.log csak a felhasználói hitelesítéssel kapcsolatos rekordokat tartalmazza, a clamd.log a víruskereső működésével kapcsolatos adatokat stb. Mellesleg, egy kiváló módszer a Zimbra OSE szerver megvédésére a behatolóktól
Példa arra, hogy az audit.log hogyan jeleníti meg a kétszer hibásan beírt jelszót és a sikeres bejelentkezési kísérletet.
A Zimbra OSE naplói rendkívül hasznosak lehetnek a különféle kritikus hibák okainak azonosításában. Kritikus hiba bekövetkeztekor a rendszergazdának általában nincs ideje elolvasni a naplókat. A szerver mielőbbi visszaállítása kötelező. Később azonban, amikor a kiszolgáló biztonsági másolatot készít, és sok naplót generál, nehéz lehet megtalálni a szükséges bejegyzést egy nagy fájlban. A hibarekord gyors megtalálásához elegendő ismerni a szerver újraindításának időpontját, és találni egy bejegyzést a naplókban ebből az időpontból. Az előző bejegyzés rögzíti a fellépő hibát. A hibaüzenetet a FATAL kulcsszóra keresve is megtalálhatja.
A Zimbra OSE naplók lehetővé teszik a nem kritikus hibák azonosítását is. Ha például kezelői kivételeket szeretne keresni, kereshet a kezelői kivételre. A kezelők által generált hibákat gyakran egy veremkövetés kíséri, amely megmagyarázza, mi okozta a kivételt. A levélkézbesítéssel kapcsolatos hibák esetén a keresést az LmtpServer kulcsszóval érdemes kezdeni, a POP vagy IMAP protokollokkal kapcsolatos hibák kereséséhez pedig az ImapServer és Pop3Server kulcsszavakat.
A naplók segíthetnek az információbiztonsági incidensek kivizsgálásában is. Nézzünk egy konkrét példát. Szeptember 20-án az egyik alkalmazott vírussal fertőzött levelet küldött egy ügyfélnek. Ennek eredményeként az ügyfél számítógépén lévő adatok titkosításra kerültek. Az alkalmazott azonban esküszik, hogy nem küldött semmit. Az incidens kivizsgálásának részeként a vállalati biztonsági szolgálat bekéri a rendszergazdától a vizsgált felhasználóhoz tartozó, szeptember 20-i levelezőszerver naplóit. Az időbélyegnek köszönhetően a rendszergazda megtalálja a szükséges naplófájlt, kivonja a szükséges információkat és továbbítja a biztonsági szakembereknek. Azok viszont átnézik, és megállapítják, hogy az IP-cím, amelyről ezt a levelet küldték, megegyezik a felhasználó számítógépének IP-címével. A CCTV felvételei megerősítették, hogy az alkalmazott a levél elküldésekor a munkahelyén tartózkodott. Ezek az adatok elegendőek voltak ahhoz, hogy információbiztonsági szabályok megsértésével vádolják és kirúgják.
Példa az egyik fiók rekordjainak kibontására a Mailbox.log naplóból egy külön fájlba
Minden sokkal bonyolultabbá válik, ha több szerveres infrastruktúráról van szó. Mivel a naplók gyűjtése helyben történik, a velük való munka egy többkiszolgálós infrastruktúrában nagyon kényelmetlen, ezért szükség van a naplók gyűjtésének központosítására. Ezt úgy teheti meg, hogy beállít egy gazdagépet a naplók gyűjtésére. Nincs különösebb szükség dedikált gazdagép hozzáadására az infrastruktúrához. Bármely levelezőszerver működhet csomópontként a naplók gyűjtéséhez. Esetünkben ez a Mailstore01 csomópont lesz.
Ezen a szerveren az alábbi parancsokat kell beírnunk:
sudo su – zimbra
zmcontrol stop
exit
sudo /opt/zimbra/libexec/zmfixperms -e -v
Szerkessze az /etc/sysconfig/rsyslog fájlt, és állítsa be a SYSLOGD_OPTIONS=”-r -c 2″
Szerkessze az /etc/rsyslog.conf fájlt, és törölje a megjegyzéseket a következő sorokból:
$ModLoad imudp
$UDPServerRun 514
Írja be a következő parancsokat:
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
A zmprov gacf | paranccsal ellenőrizheti, hogy minden működik-e grep zimbraLogHostnév. A parancs végrehajtása után meg kell jelennie a naplókat gyűjtő gazdagép nevének. A módosításhoz be kell írnia a zmprov mcf zimbraLogHostname mailstore01.company.ru parancsot.
Az összes többi infrastruktúra-kiszolgálón (LDAP, MTA és más levelezőtárolók) futtassa a zmprov gacf |grep zimbraLogHostname parancsot, hogy megtekinthesse annak a gazdagépnek a nevét, amelyre a naplókat küldi. A módosításhoz írja be a zmprov mcf zimbraLogHostname mailstore01.company.ru parancsot is.
Ezenkívül minden szerveren be kell írnia a következő parancsokat:
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
Ezt követően minden napló rögzítésre kerül az Ön által megadott szerveren, ahol azok kényelmesen megtekinthetők. Ezenkívül a Zimbra OSE adminisztrátori konzolon a kiszolgálók állapotával kapcsolatos információkat tartalmazó képernyőn a futó Logger szolgáltatás csak a mailstore01 szerverhez fog megjelenni.
Az adminisztrátor másik fejfájása egy adott e-mail nyomon követése lehet. Mivel a Zimbra OSE-ben az e-mailek egyszerre több különböző eseményen mennek keresztül: víruskereső, levélszemétszűrő stb., mielőtt elfogadják vagy elküldik őket, a rendszergazda számára, ha az e-mail nem érkezik meg, meglehetősen problémás lehet annak nyomon követése, hogy melyik szakaszban. elveszett.
A probléma megoldásához használhat egy speciális szkriptet, amelyet Viktor Dukhovny információbiztonsági szakember fejlesztett ki, és amelyet a Postfix fejlesztői ajánlottak. Ez a szkript összefűzi a naplók bejegyzéseit egy adott folyamathoz, és ennek köszönhetően lehetővé teszi egy adott levél elküldésével kapcsolatos összes bejegyzés gyors megjelenítését az azonosítója alapján. Működését a Zimbra OSE összes verzióján tesztelték, a 8.7-től kezdve. Íme a forgatókönyv szövege.
#! /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";
}
A szkript Perlben van írva, és futtatásához el kell mentenie egy fájlba összeválogatni.pl, tedd végrehajthatóvá, majd futtasd a fájlt, amely megadja a naplófájlt, és a pgrep segítségével bontsa ki a keresett levél azonosító információit collate.pl /var/log/zimbra.log | pgrep '[e-mail védett]> '. Az eredmény a levél kiszolgálón való mozgásáról szóló információkat tartalmazó sorok szekvenciális kimenete.
# 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
A Zextras Suite szolgáltatással kapcsolatos minden kérdésével forduljon a Zextras képviselőjéhez, Ekaterina Triandafilidihez e-mailben. [e-mail védett]
Forrás: will.com