Kā pārvaldīt sistēmas žurnālus (konfigurēt, pagriezt un importēt datu bāzē) RHEL 7 - 5. daļa


Lai saglabātu savu RHEL 7 sistēmu drošību, jums jāzina, kā uzraudzīt visas darbības, kas notiek šādās sistēmās, pārbaudot žurnāla failus. Tādējādi jūs varēsiet atklāt visas neparastas vai potenciāli ļaunprātīgas darbības un veikt sistēmas traucējummeklēšanu vai veikt citas atbilstošas darbības.

RHEL 7 rsyslogd dēmons ir atbildīgs par sistēmas reģistrēšanu un nolasa tā konfigurāciju no /etc/rsyslog.conf (šis fails norāda noklusējuma vietu visiem sistēmas žurnāliem) un no failiem, kas atrodas /etc/rsyslog.d, ja tādi ir.

Rsyslogd konfigurācija

Lai sāktu, būs noderīga ātra rsyslog.conf pārbaude. Šis fails ir sadalīts 3 galvenajās sadaļās: Moduļi (tā kā rsyslog seko modulārajam dizainam), Globālās direktīvas (tiek izmantotas, lai iestatītu rsyslogd dēmona globālās īpašības) un Noteikumi. Kā jūs droši vien uzminēsiet, šī pēdējā sadaļa norāda, kas tiek reģistrēts vai parādīts (pazīstams arī kā atlasītājs) un kur, un par to mēs pievērsīsimies visā šajā rakstā.

Rsyslog.conf tipiska rinda ir šāda:

Iepriekš redzamajā attēlā mēs varam redzēt, ka atlasītājs sastāv no viena vai vairākiem pāriem Facility: Prioritāte atdalīta ar semikoliem, kur Facility apraksta ziņojuma veidu (skatiet RFC 3164 4.1.1. Sadaļu, lai skatītu pilnu pieejamo iespēju sarakstu rsyslog) un Prioritāte norāda tās smagumu, kas var būt viens no šiem pašsaprotamajiem vārdiem:

  1. atkļūdošana
  2. informācija
  3. paziņojums
  4. brīdinājums
  5. kļūdīties
  6. kritisks
  7. brīdinājums
  8. parādīties

Lai arī pati par sevi tā nav prioritāte, atslēgvārds neviens nenozīmē, ka dotajā iestādē nav prioritātes.

Piezīme: ka noteiktā prioritāte norāda, ka visi šādas prioritātes un augstākas pakāpes ziņojumi ir jāreģistrē. Tādējādi iepriekšējā piemērā esošā rinda uzdod rsyslogd dēmonam reģistrēt visus prioritārās vai augstākas informācijas ziņojumus (neatkarīgi no iespējas), izņemot tos, kas pieder pastam, authpriv un cron pakalpojumiem (netiks ņemti vērā ziņojumi, kas nāk no šīs iespējas) ) to/var/log/messages.

Varat arī sagrupēt vairākas iespējas, izmantojot kolu zīmi, lai visām tām piemērotu vienu un to pašu prioritāti. Tādējādi līnija:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Varētu pārrakstīt kā

*.info;mail,authpriv,cron.none                /var/log/messages

Citiem vārdiem sakot, iespējas mail, authpriv un cron tiek sagrupētas, un visām trim tiek lietots atslēgvārds none.

Lai reģistrētu visus dēmonu ziņojumus vietnē /var/log/tecmint.log, mums jāpievieno šāda rinda vai nu rsyslog.conf, vai arī atsevišķā failā (vieglāk pārvaldāms) /etc/rsyslog.d:

daemon.*    /var/log/tecmint.log

Sāksim restartēt dēmonu (ņemiet vērā, ka pakalpojuma nosaukums nebeidzas ar d):

# systemctl restart rsyslog

Pirms un pēc divu nejaušu dēmonu restartēšanas pārbaudiet mūsu pielāgotā žurnāla saturu:

Kā pašmācības vingrinājumu es iesaku jums izspēlēties ar iespējām un prioritātēm un vai nu reģistrēt papildu ziņojumus esošajos žurnāla failos, vai arī izveidot jaunus, kā norādīts iepriekšējā piemērā.

Žurnālu pagriešana, izmantojot programmu Logrotate

Lai novērstu nebeidzamu žurnālfailu pieaugumu, utilītu logrotate izmanto, lai pagrieztu, saspiestu, noņemtu un alternatīvi pasta žurnālus, tādējādi atvieglojot tādu sistēmu administrēšanu, kuras ģenerē lielu skaitu žurnālfailu.

Logrotate katru dienu darbojas kā cron darbs (/etc/cron.daily/logrotate) un nolasa tā konfigurāciju no /etc/logrotate.conf un no failiem, kas atrodas /etc/logrotate.d, ja tādi ir.

Tāpat kā rsyslog gadījumā, pat ja galvenajā failā varat iekļaut noteiktu pakalpojumu iestatījumus, katram atsevišķa konfigurācijas faila izveide palīdzēs labāk sakārtot iestatījumus.

Apskatīsim tipisku logrotate.conf:

Iepriekš minētajā piemērā logrotate veiks šādas darbības ar/var/loh/wtmp: mēģiniet pagriezt tikai reizi mēnesī, bet tikai tad, ja faila lielums ir vismaz 1 MB, pēc tam izveidojiet pavisam jaunu žurnālfailu ar iestatītām atļaujām līdz 0664 un īpašumtiesības piešķirtas lietotāja root un grupas utmp. Pēc tam saglabājiet tikai vienu arhivēto žurnālu, kā noteikts rotācijas direktīvā:

Apskatīsim vēl vienu piemēru, kas atrodams vietnē /etc/logrotate.d/httpd:

Vairāk par logrotate iestatījumiem varat izlasīt tā rokasgrāmatās (man logrotate.conf). Abi faili tiek nodrošināti kopā ar šo rakstu PDF formātā lasīšanas ērtībai.

Kā sistēmas inženierim, tas būs diezgan atkarīgs no jums, cik ilgi un kādā formātā žurnāli tiks glabāti, atkarībā no tā, vai jums ir/var atsevišķā nodalījumā/loģiskā sējumā. Pretējā gadījumā jūs patiešām vēlaties apsvērt veco žurnālu noņemšanu, lai ietaupītu vietu. No otras puses, jums var būt spiests saglabāt vairākus žurnālus turpmākajai drošības revīzijai atbilstoši jūsu uzņēmuma vai klienta iekšējām politikām.

Protams, žurnālu pārbaude (pat ar tādu rīku palīdzību kā grep un regulāras izteiksmes) var kļūt par diezgan garlaicīgu uzdevumu. Šī iemesla dēļ rsyslog ļauj tos eksportēt datu bāzē (OTB atbalstītās RDBMS ietver MySQL, MariaDB, PostgreSQL un Oracle.

Šajā apmācības sadaļā tiek pieņemts, ka jūs jau esat instalējis MariaDB serveri un klientu tajā pašā lodziņā RHEL 7, kurā tiek pārvaldīti žurnāli:

# yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
# systemctl enable mariadb && systemctl start mariadb

Pēc tam izmantojiet utilītu mysql_secure_installation , lai iestatītu root lietotāja paroli un citus drošības apsvērumus:

Piezīme: Ja nevēlaties izmantot MariaDB saknes lietotāju žurnāla ziņojumu ievietošanai datu bāzē, varat to konfigurēt citā lietotāja kontā. Paskaidrojums par to, kā to izdarīt, neietilpst šīs apmācības darbības jomā, bet ir detalizēti izskaidrots MariaDB zināšanu bāzē. Šajā apmācībā vienkāršības labad izmantosim saknes kontu.

Pēc tam lejupielādējiet skriptu createDB.sql no GitHub un importējiet to savā datu bāzes serverī:

# mysql -u root -p < createDB.sql

Visbeidzot, pievienojiet šādas rindas mapē /etc/rsyslog.conf:

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

Restartējiet rsyslog un datu bāzes serveri:

# systemctl restart rsyslog 
# systemctl restart mariadb

Tagad veiciet dažus uzdevumus, kas modificēs žurnālus (piemēram, pakalpojumu apturēšana un palaišana, piemēram), pēc tam piesakieties savā DB serverī un izmantojiet standarta SQL komandas, lai parādītu un meklētu žurnālos:

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;

Kopsavilkums

Šajā rakstā mēs esam paskaidrojuši, kā iestatīt sistēmas reģistrēšanu, kā pagriezt žurnālus un kā pāradresēt ziņojumus datu bāzē, lai vieglāk meklētu. Mēs ceram, ka šīs prasmes būs noderīgas, gatavojoties RHCE eksāmenam un arī ikdienas pienākumos.

Kā vienmēr, jūsu atsauksmes ir vairāk nekā laipni gaidītas. Lai sazinātos ar mums, izmantojiet zemāk esošo veidlapu.