Kā izveidot centralizētu žurnālu serveri ar Rsyslog programmā CentOS/RHEL 7


Lai sistēmas administrators varētu identificēt vai novērst CentOS 7 vai RHEL 7 servera sistēmas problēmu, tai jāzina un jāskatās notikumi, kas sistēmā notika noteiktā laika periodā, no žurnāla failiem, kas sistēmā saglabāti/var/log direktoriju.

Syslog serveris Linux mašīnā var darboties centrālā uzraudzības punktā tīklā, kur visi serveri, tīkla ierīces, maršrutētāji, komutatori un lielākā daļa to iekšējo pakalpojumu, kas ģenerē žurnālus, neatkarīgi no tā, vai tie saistīti ar konkrētu iekšēju problēmu, vai tikai informatīvi ziņojumi, var nosūtīt savus žurnālus. .

CentOS/RHEL 7 sistēmā Rsyslog dēmons ir galvenais iepriekš instalētais žurnāla serveris, kam seko Systemd Journal Daemon (journald).

Rsyslog serveris tiek veidots kā klienta/servera arhitektūras pakalpojums un var vienlaikus sasniegt abas lomas. Tas var darboties kā serveris un apkopot visus žurnālus, ko pārraida citas tīkla ierīces, vai arī tas var darboties kā klients, nosūtot visus iekšējos sistēmas notikumus, kas reģistrēti attālā galapunkta syslog serverī.

Kad rsyslog ir konfigurēts kā klients, žurnālus var lokāli saglabāt lokālās failu sistēmas failos vai tos var nosūtīt attālināti, nevis ierakstīt mašīnā saglabātajos failos vai lokāli rakstīt notikumu žurnāla failus un nosūtīt tos uz attālo syslog serveri vietnē tajā pašā laikā.

Syslog serveris izmanto jebkuru žurnāla ziņojumu, izmantojot šādu shēmu:

type (facility).priority (severity)  destination(where to send the log)

A. Iekārtas vai tipa datus attēlo iekšējie sistēmas procesi, kas ģenerē ziņojumus. Linux iekšējie procesi (iespējas), kas ģenerē žurnālus, tiek standartizēti šādi:

  • auth = autentifikācijas procesos ģenerēti ziņojumi (pieteikšanās).
  • cron = ieplānoto procesu ģenerēti ziņojumi (crontab).
  • dēmons = dēmonu (iekšējie pakalpojumi) ģenerēti ziņojumi.
  • kodols = paša Linux kodola ģenerētie ziņojumi.
  • mail = pasta servera ģenerēti ziņojumi.
  • syslog = ziņojumi, ko ģenerējis pats rsyslog dēmons.
  • lpr = ziņojumi, ko ģenerējuši vietējie printeri vai drukas serveris.
  • local0 - local7 = pielāgoti ziņojumi, ko definējis administrators (local7 parasti tiek piešķirts Cisco vai Windows).

B. Arī prioritārie (smaguma) līmeņi ir standartizēti. Katrai prioritātei tiek piešķirts standarta saīsinājums un numurs, kā aprakstīts tālāk. Septītā prioritāte ir visu augstākais līmenis.

  • emerg = ārkārtas situācija - 0
  • alert = Brīdinājumi - 1
  • err = Kļūdas - 3
  • brīdināt = Brīdinājumi - 4
  • paziņojums = Paziņojums - 5
  • info = Informācija - 6
  • atkļūdošana = atkļūdošana - 7

Īpaši Rsyslog atslēgvārdi:

  • * = visas iespējas vai prioritātes
  • neviens = objektiem nav noteiktas prioritātes, piemēram: mail.none

C. Syslog shēmas trešo daļu attēlo galamērķa direktīva. Rsyslog dēmons var nosūtīt žurnāla ziņojumus, lai tos ierakstītu lokālās failu sistēmas failos (galvenokārt failā/var/log/direktorijā) vai nosūtītu uz citu lokālu procesu vai nosūtītu uz vietējo lietotāju konsoli (uz stdout). vai nosūtiet ziņojumu uz attālo syslog serveri, izmantojot TCP/UDP protokolu, vai pat izmetiet ziņojumu uz/dev/null.

Lai konfigurētu CentOS/RHEL 7 kā centrālo žurnāla serveri, vispirms mums jāpārbauda un jāpārliecinās, vai/var nodalījums, kurā tiek ierakstīts viss žurnāla fails, ir pietiekami liels (vismaz daži GB), lai varētu saglabāt visus žurnālfaili, kurus nosūtīs citas ierīces. Ir labs lēmums izmantot atsevišķu disku (LVM, RAID), lai pievienotu/var/log/direktoriju.

  1. CentOS 7.3 instalēšanas procedūra
  2. RHEL 7.3 Uzstādīšanas procedūra

Kā konfigurēt Rsyslog CentOS/RHEL 7 serverī

1. Pēc noklusējuma pakalpojums Rsyslog tiek automātiski instalēts un tam jādarbojas CentOS/RHEL 7. Lai pārbaudītu, vai dēmons ir palaists sistēmā, izsniedziet šādu komandu ar root tiesībām.

# systemctl status rsyslog.service

Ja pakalpojums pēc noklusējuma nedarbojas, izpildiet zemāk esošo komandu, lai sāktu rsyslog dēmonu.

# systemctl start rsyslog.service

2. Ja pakete rsyslog nav instalēta sistēmā, kuru plānojat izmantot kā centralizētu reģistrēšanas serveri, izdodiet šādu komandu, lai instalētu pakotni rsyslog.

# yum install rsyslog

3. Pirmais solis, kas mums jādara sistēmā, lai konfigurētu rsyslog dēmonu kā centralizētu žurnāla serveri, lai tas varētu saņemt žurnāla ziņojumus ārējiem klientiem, ir atvērt un rediģēt, izmantojot iecienīto teksta redaktoru, galveno konfigurāciju failu no /etc/rsyslog.conf, kā parādīts zemāk esošajā fragmentā.

# vi /etc/rsyslog.conf

Galvenajā rsyslog konfigurācijas failā meklējiet un noņemiet atzīmi no šīm rindām (līnijas sākumā noņemiet atzīmi # ), lai nodrošinātu UDP transporta saņemšanu uz Rsyslog serveri, izmantojot 514 portu. UDP ir standarta protokols, ko izmanto žurnāla pārsūtīšanai, izmantojot Rsyslog.

$ModLoad imudp 
$UDPServerRun 514

4. UDP protokolam nav TCP pieskaitāmās izmaksas, kas padara datu pārraidi ātrāku nekā TCP protokols. No otras puses, UDP protokols nenodrošina pārsūtīto datu uzticamību.

Tomēr, ja žurnālu saņemšanai jāizmanto TCP protokols, jums ir jāmeklē un jāatceļ šādas rindas no faila /etc/rsyslog.conf, lai konfigurētu Rsyslog dēmonu saistīt un klausīties TCP ligzdu 514 portā. TCP un UDP uztveršanas klausīšanās ligzdas vienlaicīgi var konfigurēt Rsyslog serverī.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. Nākamajā solī vēl neaizveriet failu, izveidojiet jaunu veidni, kas tiks izmantota attālo ziņojumu saņemšanai. Šī veidne norādīs vietējam Rsyslog serverim, kur saglabāt syslog tīkla klientu nosūtītās saņemtās ziņas. Veidne jāpievieno pirms bloka GLOBAL DIRECTIVES sākuma, kā parādīts zemāk esošajā fragmentā.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
. ?RemoteLogs & ~

Iepriekš minētā $template RemoteLogs direktīva uzdod Rsyslog dēmonam apkopot un rakstīt visus saņemtos žurnāla ziņojumus atsevišķos failos, pamatojoties uz klienta mašīnas nosaukumu un attālās klienta iespējas (lietojumprogrammu), kas ģenerēja ziņojumus, pamatojoties uz definētajām īpašībām, kas atrodas veidnes konfigurācijā. :% HOSTNAME% un% PROGRAMNAME%.

Visi šie žurnālfaili tiks ierakstīti vietējā failu sistēmā īpašā failā, kas nosaukts pēc klienta mašīnas resursdatora nosaukuma, un saglabāti mapē/var/log/directory.

& ~ Novirzīšanas kārtula uzdod vietējam Rsyslog serverim pārtraukt saņemtā žurnāla ziņojuma apstrādi un atmest ziņojumus (nevis rakstīt tos iekšējos žurnāla failos).

RemoteLogs nosaukums ir patvaļīgs nosaukums, kas piešķirts šai veidņu direktīvai. Jūs varat izmantot jebkuru nosaukumu, kas jūsu veidnei ir vispiemērotākais.

Lai visus saņemtos ziņojumus no klientiem ierakstītu vienā žurnāla failā, kas nosaukts pēc attālā klienta IP adreses, nefiltrējot objektu, kas ģenerēja ziņojumu, izmantojiet zemāk esošo fragmentu.

$template FromIp,"/var/log/%FROMHOST-IP%.log" 
. ?FromIp & ~ 

Vēl viens veidnes piemērs, kurā visi ziņojumi ar autorizācijas karogu tiks reģistrēti veidnē ar nosaukumu “TmplAuth”.

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
authpriv.*   ?TmplAuth

Zemāk ir izvilkuma veidnes veidnes definīcija no Rsyslog 7 servera:

template(name="TmplMsg" type="string"
         string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
        )

Iepriekš minēto veidnes fragmentu var uzrakstīt arī šādi:

template(name="TmplMsg" type="list") {
    constant(value="/var/log/remote/msg/")
    property(name="hostname")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

Lai rakstītu sarežģītas Rsyslog veidnes, izlasiet Rsyslog konfigurācijas faila rokasgrāmatu, izsniedzot komandu man rsyslog.conf vai skatiet Rsyslog tiešsaistes dokumentāciju.

6. Kad esat rediģējis Rsyslog konfigurācijas failu ar saviem iestatījumiem, kā paskaidrots iepriekš, restartējiet Rsyslog dēmonu, lai piemērotu izmaiņas, izsniedzot šādu komandu:

# service rsyslog restart

7. Līdz šim Rsyslog serveris ir jākonfigurē tā, lai tas darbotos ar centralizētu žurnāla serveri un ierakstītu syslog klientu ziņojumus. Lai pārbaudītu Rsyslog tīkla kontaktligzdas, palaidiet komandu netstat ar root tiesībām un izmantojiet grep, lai filtrētu rsyslog virkni.

# netstat -tulpn | grep rsyslog 

8. Ja CentOS/RHEL 7 ir iespējots SELinux, izdodiet šādu komandu, lai konfigurētu SELinux, lai atļautu rsyslog trafiku atkarībā no tīkla ligzdas veida.

# semanage -a -t syslogd_port_t -p udp 514
# semanage -a -t syslogd_port_t -p tcp 514 

9. Ja ugunsmūris ir iespējots un aktīvs, palaidiet zemāk esošo komandu, lai pievienotu nepieciešamos noteikumus rsyslog portu atvēršanai Firewalld.

# firewall-cmd --permanent --add-port=514/tcp
# firewall-cmd --permanent --add-port=514/udp
# firewall-cmd –reload

Tas ir viss! Rsyslog tagad ir konfigurēts servera režīmā un var centralizēt žurnālus no attāliem klientiem. Nākamajā rakstā mēs redzēsim, kā konfigurēt Rsyslog klientu CentOS/RHEL 7 serverī.

Izmantojot Rsyslog serveri kā centrālo uzraudzības punktu attāliem žurnāla ziņojumiem, jūs varat pārbaudīt žurnāla failus un vieglāk novērot klientu veselības stāvokli vai atkļūdot klienta problēmas, kad sistēmas avarē vai ir pakļautas kaut kādam uzbrukumam.