Zimbra OSE журналдарымен қалай жұмыс істеу керек

Барлық болып жатқан оқиғаларды тіркеу кез келген корпоративтік жүйенің ең маңызды функцияларының бірі болып табылады. Журналдар туындайтын мәселелерді шешуге, ақпараттық жүйелердің жұмысын тексеруге, сондай-ақ ақпараттық қауіпсіздік инциденттерін зерттеуге мүмкіндік береді. Zimbra OSE сонымен қатар оның жұмысының егжей-тегжейлі журналдарын жүргізеді. Олар сервер жұмысынан бастап пайдаланушылардың электрондық хаттарды жіберуіне және қабылдауына дейінгі барлық деректерді қамтиды. Дегенмен, Zimbra OSE жасаған журналдарды оқу өте маңызды емес тапсырма болып табылады. Бұл мақалада нақты мысалды пайдалана отырып, Zimbra OSE журналдарын қалай оқу керектігін, сондай-ақ оларды орталықтандырылған ету жолын айтамыз.

Zimbra OSE журналдарымен қалай жұмыс істеу керек
Zimbra OSE барлық жергілікті журналдарды /opt/zimbra/log қалтасында сақтайды және журналдарды /var/log/zimbra.log файлында да табуға болады. Олардың ішіндегі ең маңыздысы mailbox.log. Ол пошта серверінде орын алатын барлық әрекеттерді жазады. Оларға электрондық хаттарды жіберу, пайдаланушының аутентификация деректері, сәтсіз кіру әрекеттері және т.б. кіреді. Mailbox.log ішіндегі жазбалар - бұл оқиға болған уақытты, оқиға деңгейін, оқиға болған ағын нөмірін, пайдаланушы аты мен IP мекенжайын, сондай-ақ оқиғаның мәтіндік сипаттамасын қамтитын мәтін жолы. .

Zimbra OSE журналдарымен қалай жұмыс істеу керек

Журнал деңгейі оқиғаның сервер жұмысына әсер ету дәрежесін көрсетеді. Әдепкі бойынша 4 оқиға деңгейі бар: INFO, WARN, ERROR және FATAL. Барлық деңгейлерді ауырлық дәрежесінің жоғарылау ретімен қарастырайық.

  • INFO - Бұл деңгейдегі оқиғалар әдетте Zimbra OSE барысы туралы хабарлауға арналған. Бұл деңгейдегі хабарлар пошта жәшігін жасау немесе жою туралы есептерді және т.б.
  • ЕСКЕРТУ - осы деңгейдегі оқиғалар ықтимал қауіпті, бірақ сервер жұмысына әсер етпейтін жағдайлар туралы хабарлайды. Мысалы, ЕСКЕРТУ деңгейі сәтсіз пайдаланушы кіру әрекеті туралы хабарды белгілейді.
  • ҚАТЕ – журналдағы бұл оқиға деңгейі жергілікті сипаттағы және сервер жұмысына кедергі келтірмейтін қатенің пайда болуы туралы хабарлайды. Бұл деңгей жеке пайдаланушының индекс деректері бүлінген қатені белгілей алады.
  • ӨЛІМСІЗ – бұл деңгей сервер қалыпты жұмысын жалғастыра алмайтын қателерді көрсетеді. Мысалы, FATAL деңгейі ДҚБЖ қосылу мүмкін еместігін көрсететін жазба үшін болады.

Пошта серверінің журнал файлы күн сайын жаңартылып отырады. Файлдың соңғы нұсқасында әрқашан Mailbox.log атауы болады, ал белгілі бір күнге арналған журналдардың атауында күні болады және мұрағатта болады. Мысалы, mailbox.log.2020-09-29.tar.gz. Бұл әрекет журналдарының сақтық көшірмесін жасауды және журналдар арқылы іздеуді әлдеқайда жеңілдетеді.

Жүйе әкімшісіне ыңғайлы болу үшін /opt/zimbra/log/ қалтасында басқа журналдар бар. Олар тек арнайы Zimbra OSE элементтеріне қатысты жазбаларды қамтиды. Мысалы, audit.log тек пайдаланушының аутентификациясы туралы жазбаларды қамтиды, clamd.log антивирустың жұмысы туралы деректерді және т.б. Айтпақшы, Zimbra OSE серверін зиянкестерден қорғаудың тамаша әдісі Fail2Ban арқылы серверді қорғау, ол тек audit.log негізінде жұмыс істейді. Сондай-ақ пәрменді орындау үшін cron тапсырмасын қосу жақсы тәжірибе болып табылады grep -ir «жарамсыз құпия сөз» /opt/zimbra/log/audit.logкүнделікті кіру сәтсіздігі туралы ақпаратты алу үшін.

Zimbra OSE журналдарымен қалай жұмыс істеу керек
Audi.log екі рет қате енгізілген құпия сөзді және сәтті кіру әрекетін көрсететін мысал.

Zimbra OSE журналдары әртүрлі маңызды сәтсіздіктердің себептерін анықтауда өте пайдалы болуы мүмкін. Маңызды қате орын алған кезде, әдетте әкімшінің журналдарды оқуға уақыты болмайды. Серверді мүмкіндігінше тез қалпына келтіру қажет. Дегенмен, кейінірек сервер сақтық көшірме жасап, көптеген журналдарды жасағанда, үлкен файлда қажетті жазбаны табу қиын болуы мүмкін. Қате жазбасын жылдам табу үшін сервердің қайта іске қосылған уақытын білу және осы уақыттағы журналдардан жазбаны табу жеткілікті. Алдыңғы жазба орын алған қатенің жазбасы болады. Қате туралы хабарды FATAL кілт сөзін іздеу арқылы да табуға болады.

Zimbra OSE журналдары сонымен қатар маңызды емес сәтсіздіктерді анықтауға мүмкіндік береді. Мысалы, өңдеуші ерекшеліктерін табу үшін өңдеуші ерекшеліктерін іздеуге болады. Көбінесе өңдеушілер жасаған қателер ерекше жағдайға не себеп болғанын түсіндіретін стек ізімен бірге жүреді. Поштаны жеткізу кезінде қателер болған жағдайда іздеуді LmtpServer кілт сөзінен бастау керек, ал POP немесе IMAP протоколдарына қатысты қателерді іздеу үшін ImapServer және Pop3Server кілт сөздерін пайдалануға болады.

Журналдар ақпараттық қауіпсіздік оқиғаларын тергеу кезінде де көмектесе алады. Нақты мысалды қарастырайық. 20 қыркүйекте қызметкерлердің бірі клиентке вирус жұқтырған хат жіберген. Нәтижесінде клиенттің компьютеріндегі деректер шифрланған. Алайда қызметкер ештеңе жіберген жоқ деп ант береді. Оқиғаны тексеру аясында кәсіпорынның қауіпсіздік қызметі жүйе әкімшісінен тексеріліп жатқан пайдаланушымен байланысты 20 қыркүйекке арналған пошта серверінің журналдарын сұрайды. Уақыт белгісінің арқасында жүйе әкімшісі қажетті журнал файлын тауып, қажетті ақпаратты шығарып, қауіпсіздік мамандарына береді. Олар, өз кезегінде, оны қарап шығып, осы хат жіберілген IP мекенжайы пайдаланушы компьютерінің IP мекенжайына сәйкес келетінін анықтайды. Бейнебақылау камералары хат жіберілген кезде қызметкердің жұмыс орнында болғанын растады. Бұл деректер оны ақпараттық қауіпсіздік ережелерін бұзды деп айыптап, жұмыстан шығаруға жеткілікті болды. 

Zimbra OSE журналдарымен қалай жұмыс істеу керек
Mailbox.log журналынан бөлек файлға тіркелгілердің бірі туралы жазбаларды шығару мысалы

Көп серверлік инфрақұрылымға келгенде бәрі әлдеқайда күрделене түседі. Журналдар жергілікті түрде жиналатындықтан, олармен көп серверлік инфрақұрылымда жұмыс істеу өте ыңғайсыз, сондықтан журналдарды жинауды орталықтандыру қажеттілігі туындайды. Мұны журналдарды жинау үшін хостты орнату арқылы жасауға болады. Инфрақұрылымға арнайы хост қосудың қажеті жоқ. Кез келген пошта сервері журналдарды жинауға арналған түйін ретінде әрекет ете алады. Біздің жағдайда бұл Mailstore01 түйіні болады.

Бұл серверде біз төмендегі пәрмендерді енгізуіміз керек:

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

/etc/sysconfig/rsyslog файлын өңдеңіз және SYSLOGD_OPTIONS=”-r -c 2″ параметрін орнатыңыз

/etc/rsyslog.conf өңдеңіз және келесі жолдарға түсініктеме алыңыз:
$ModLoad imudp
$UDPServerRun 514

Мына пәрмендерді енгізіңіз:

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

Барлығының жұмыс істеп тұрғанын zmprov gacf | пәрмені арқылы тексеруге болады grep zimbraLogHostname. Пәрменді орындағаннан кейін журналдарды жинайтын хосттың аты көрсетілуі керек. Оны өзгерту үшін zmprov mcf zimbraLogHostname mailstore01.company.ru пәрменін енгізу керек.

Барлық басқа инфрақұрылым серверлерінде (LDAP, MTA және басқа пошта қоймалары) журналдар жіберілетін хосттың атын көру үшін zmprov gacf |grep zimbraLogHostname пәрменін іске қосыңыз. Оны өзгерту үшін zmprov mcf zimbraLogHostname mailstore01.company.ru пәрменін де енгізуге болады.

Сондай-ақ әрбір серверде келесі пәрмендерді енгізу керек:

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

Осыдан кейін барлық журналдар сіз көрсеткен серверде жазылады, оларды ыңғайлы көруге болады. Сондай-ақ, Zimbra OSE әкімші консолінде серверлердің күйі туралы ақпараты бар экранда іске қосылған Logger қызметі тек mailstore01 сервері үшін көрсетіледі.

Zimbra OSE журналдарымен қалай жұмыс істеу керек

Әкімшінің тағы бір бас ауруы белгілі бір электрондық поштаны қадағалау болуы мүмкін. Zimbra OSE жүйесіндегі электрондық пошталар бірден бірнеше түрлі оқиғалардан өтетіндіктен: әкімшіге қабылданар немесе жіберілмес бұрын антивирус, спам және т.б. арқылы сканерлеу, егер электрондық пошта келмесе, қай кезеңде қадағалау қиын болуы мүмкін. жоғалып кетті.

Бұл мәселені шешу үшін ақпараттық қауіпсіздік маманы Виктор Духовный әзірлеген және Postfix әзірлеушілеріне пайдалануға ұсынылған арнайы сценарийді пайдалануға болады. Бұл сценарий белгілі бір процесс үшін журналдардағы жазбаларды біріктіреді және осының арқасында оның идентификаторы негізінде белгілі бір әріпті жіберуге байланысты барлық жазбаларды жылдам көрсетуге мүмкіндік береді. Оның жұмысы 8.7 бастап Zimbra OSE барлық нұсқаларында сынақтан өтті. Міне, сценарий мәтіні.

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

Сценарий Perl тілінде жазылған және оны іске қосу үшін оны файлға сақтау керек collate.pl, оны орындалатын етіп жасаңыз, содан кейін журнал файлын көрсететін файлды іске қосыңыз және іздеген хаттың сәйкестендіру ақпаратын шығару үшін pgrep пайдаланыңыз. collate.pl /var/log/zimbra.log | pgrep '[электрондық пошта қорғалған]>'. Нәтиже сервердегі хаттың қозғалысы туралы ақпаратты қамтитын жолдардың дәйекті шығысы болады.

# 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-ке қатысты барлық сұрақтар бойынша сіз Zextras өкілі Екатерина Триандафилидиге электрондық пошта арқылы хабарласа аласыз. [электрондық пошта қорғалған]

Ақпарат көзі: www.habr.com