Com crear un servidor de registre centralitzat amb Rsyslog a CentOS/RHEL 7


Per tal que l'administrador del sistema identifiqui o solucioni un problema en un sistema de servidor CentOS 7 o RHEL 7, ha de conèixer i visualitzar els esdeveniments que han passat al sistema en un període de temps específic a partir dels fitxers de registre emmagatzemats al sistema al /var. directori /log.

El servidor syslog d'una màquina Linux pot actuar com un punt de control central a través d'una xarxa on tots els servidors, dispositius de xarxa, encaminadors, commutadors i la majoria dels seus serveis interns que generen registres, ja siguin relacionats amb problemes interns específics o només missatges informatius poden enviar els seus registres. .

En un sistema CentOS/RHEL 7, el dimoni Rsyslog és el servidor de registre principal preinstal·lat, seguit del dimoni de diari de Systemd (journald).

El servidor Rsyslog està construït com a servei d'arquitectura client/servidor i pot assolir ambdues funcions simultàniament. Es pot executar com a servidor i recopilar tots els registres transmesos per altres dispositius de la xarxa o es pot executar com a client enviant tots els esdeveniments interns del sistema registrats a un servidor Syslog de punt final remot.

Quan rsyslog es configura com a client, els registres es poden emmagatzemar localment en fitxers del sistema de fitxers local o es poden enviar de forma remota en lloc d'escriure'ls en fitxers emmagatzemats a la màquina o escriure fitxers de registre d'esdeveniments localment i enviar-los a un servidor syslog remot a el mateix temps.

El servidor Syslog opera qualsevol missatge de registre utilitzant l'esquema següent:

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

R. Les dades d'instal·lació o tipus estan representades pels processos interns del sistema que genera els missatges. A Linux els processos interns (instal·lacions) que generen registres estan estandarditzats de la següent manera:

  • auth = missatges generats pels processos d'autenticació (inici de sessió).
  • cron= missatges generats per processos programats (crontab).
  • dimoni = missatges generats pels dimonis (serveis interns).
  • kernel = missatges generats pel propi nucli de Linux.
  • correu = missatges generats per un servidor de correu.
  • syslog = missatges generats pel propi dimoni rsyslog.
  • lpr = missatges generats per impressores locals o un servidor d'impressió.
  • local0 - local7 = missatges personalitzats definits per un administrador (local7 normalment s'assigna per a Cisco o Windows).

B. Els nivells de prioritat (gravetat) també estan estandarditzats. Cada prioritat s'assigna amb una abreviatura estàndard i un número tal com es descriu a continuació. La setena prioritat és el nivell més alt de tots.

  • emerg = Emergència – 0
  • alerta = Alertes – 1
  • err = Errors – 3
  • warn = Advertiments – 4
  • avís = Notificació – 5
  • info = Informació – 6
  • debug = Depuració – 7

Paraules clau especials de Rsyslog:

  • * = totes les instal·lacions o prioritats
  • cap = les instal·lacions no tenen prioritats donades Per exemple: mail.none

C. La tercera part de l'esquema syslog està representada per la directiva destinació. El dimoni Rsyslog pot enviar missatges de registre per escriure'ls en un fitxer del sistema de fitxers local (principalment en un fitxer al directori /var/log/) o per canalitzar-los a un altre procés local o enviar-los a una consola d'usuari local (a stdout) , o enviar el missatge a un servidor Syslog remot mitjançant el protocol TCP/UDP, o fins i tot descartar el missatge a /dev/null.

Per poder configurar CentOS/RHEL 7 com a servidor de registre central, primer hem de comprovar i assegurar-nos que la partició /var on es registren tots els fitxers de registre sigui prou gran (uns quants GB com a mínim) per poder emmagatzemar tots els fitxers de registre. fitxers de registre que seran enviats per altres dispositius. És una bona decisió utilitzar una unitat separada (LVM, RAID) per muntar el directori /var/log/.

  1. Procediment d'instal·lació de CentOS 7.3
  2. Procediment d'instal·lació de RHEL 7.3

Com configurar Rsyslog al servidor CentOS/RHEL 7

1. De manera predeterminada, el servei Rsyslog s'instal·la automàticament i s'ha d'executar a CentOS/RHEL 7. Per comprovar si el dimoni s'ha iniciat al sistema, emet l'ordre següent amb privilegis d'arrel.

# systemctl status rsyslog.service

Si el servei no s'executa de manera predeterminada, executeu l'ordre següent per iniciar el dimoni rsyslog.

# systemctl start rsyslog.service

2. Si el paquet rsyslog no està instal·lat al sistema que voleu utilitzar com a servidor de registre centralitzat, emeteu l'ordre següent per instal·lar el paquet rsyslog.

# yum install rsyslog

3. El primer pas que hem de fer al sistema per poder configurar el dimoni rsyslog com a servidor de registre centralitzat, perquè pugui rebre missatges de registre per a clients externs, és obrir i editar, amb el vostre editor de text preferit, la configuració principal. fitxer de /etc/rsyslog.conf, tal com es presenta a l'extracte següent.

# vi /etc/rsyslog.conf

Al fitxer de configuració principal de rsyslog, cerqueu i descomenteu les línies següents (elimineu el signe de l'etiqueta # al principi de la línia) per tal de proporcionar recepció de transport UDP al servidor Rsyslog a través del port 514. UDP és el protocol estàndard utilitzat per a la transmissió de registres per Rsyslog.

$ModLoad imudp 
$UDPServerRun 514

4. El protocol UDP no té la sobrecàrrega TCP, la qual cosa fa que sigui més ràpid per transmetre dades que el protocol TCP. D'altra banda, el protocol UDP no garanteix la fiabilitat de les dades transmeses.

Tanmateix, si necessiteu utilitzar el protocol TCP per a la recepció de registres, heu de cercar i descomentar les línies següents del fitxer /etc/rsyslog.conf per tal de configurar el dimoni Rsyslog per lligar i escoltar un sòcol TCP al port 514. Les preses d'escolta TCP i UDP per a la recepció es poden configurar en un servidor Rsyslog simultàniament.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. Al pas següent, no tanqueu el fitxer encara, creeu una plantilla nova que s'utilitzarà per rebre missatges remots. Aquesta plantilla indicarà al servidor local Rsyslog on desar els missatges rebuts enviats pels clients de la xarxa syslog. La plantilla s'ha d'afegir abans de l'inici del bloc GLOBAL DIRECTIVES tal com s'il·lustra a l'extracte següent.

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

La directiva $template RemoteLogs de dalt indica al dimoni Rsyslog que reculli i escrigui tots els missatges de registre rebuts en fitxers diferents, en funció del nom de la màquina client i de la instal·lació de client remota (aplicació) que ha generat els missatges en funció de les propietats definides que es presenten a la configuració de la plantilla. : %HOSTNAME% i %PROGRAMNAME%.

Tots aquests fitxers de registre s'escriuran al sistema de fitxers local en un fitxer dedicat anomenat pel nom d'amfitrió de la màquina client i s'emmagatzemaran al directori /var/log/.

La regla de redirecció & ~ indica al servidor Rsyslog local que deixi de processar el missatge de registre rebut i descarti els missatges (no els escrigui als fitxers de registre interns).

El nom de RemoteLogs és un nom arbitrari donat a aquesta directiva de plantilla. Podeu utilitzar el nom que trobeu més adequat per a la vostra plantilla.

Per escriure tots els missatges rebuts dels clients en un únic fitxer de registre anomenat després de l'adreça IP del client remot, sense filtrar la instal·lació que ha generat el missatge, utilitzeu l'extracte següent.

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

Un altre exemple de plantilla on tots els missatges amb la marca d'auth facility es registraran en una plantilla anomenada TmplAuth.

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

A continuació es mostra un extracte d'una definició de plantilla del servidor Rsyslog 7:

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

L'extracte de la plantilla anterior també es pot escriure com:

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

Per escriure plantilles complexes de Rsyslog, llegiu el manual del fitxer de configuració de Rsyslog emetent l'ordre man rsyslog.conf o consulteu la documentació en línia de Rsyslog.

6. Després d'haver editat el fitxer de configuració Rsyslog amb la vostra pròpia configuració, tal com s'ha explicat anteriorment, reinicieu el dimoni Rsyslog per aplicar els canvis emetent l'ordre següent:

# service rsyslog restart

7. A hores d'ara, el servidor Rsyslog s'hauria de configurar per actuar com un servidor de registre centralitzat i registrar missatges dels clients Syslog. Per verificar els sòcols de xarxa Rsyslog, executeu l'ordre netstat amb privilegis d'arrel i utilitzeu grep per filtrar la cadena rsyslog.

# netstat -tulpn | grep rsyslog 

8. Si teniu SELinux habilitat a CentOS/RHEL 7, envieu l'ordre següent per configurar SELinux perquè permeti el trànsit rsyslog en funció del tipus de sòcol de xarxa.

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

9. Si el tallafoc està habilitat i actiu, executeu l'ordre següent per afegir les regles necessàries per obrir els ports rsyslog a Firewalld.

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

Això és tot! Rsyslog ara està configurat en mode servidor i pot centralitzar els registres de clients remots. Al següent article, veurem com configurar el client Rsyslog al servidor CentOS/RHEL 7.

Utilitzant el servidor Rsyslog com a punt central de control dels missatges de registre remots, podeu inspeccionar els fitxers de registre i observar l'estat de salut dels clients o depurar els problemes del client més fàcilment quan els sistemes es col·loquen o estan sota algun tipus d'atac.