Com configurar el client Rsyslog per enviar registres al servidor Rsyslog a CentOS 7


La gestió de registres és un dels components més crítics en una infraestructura de xarxa. Els missatges de registre es generen constantment per nombrosos programaris del sistema, com ara utilitats, aplicacions, dimonis, serveis relacionats amb la xarxa, el nucli, els dispositius físics, etc.

Els fitxers de registre resulten útils en cas de resoldre problemes del sistema Linux, supervisar el sistema i revisar la seguretat i els problemes del sistema.

Rsyslog és un programa de registre de codi obert, que és el mecanisme de registre més popular en un gran nombre de distribucions de Linux. També és el servei de registre predeterminat a CentOS 7 o RHEL 7.

El dimoni Rsyslog de CentOS es pot configurar per executar-se com a servidor per recollir missatges de registre de diversos dispositius de xarxa. Aquests dispositius actuen com a clients i estan configurats per transmetre els seus registres a un servidor rsyslog.

Tanmateix, el servei Rsyslog també es pot configurar i iniciar en mode client. Aquesta configuració indica al dimoni rsyslog que reenviï missatges de registre a un servidor Rsyslog remot mitjançant els protocols de transport TCP o UDP. El servei Rsyslog també es pot configurar per executar-se com a client i com a servidor al mateix temps.

En aquest tutorial descriurem com configurar un dimoni Rsyslog CentOS/RHEL 7 per enviar missatges de registre a un servidor Rsyslog remot. Aquesta configuració garanteix que l'espai de disc de la vostra màquina es pugui conservar per emmagatzemar altres dades.

El lloc on gairebé tots els fitxers de registre s'escriuen per defecte a CentOS és la ruta del sistema /var. També és recomanable crear sempre una partició separada per al directori /var, que es pugui fer créixer dinàmicament, per tal de no esgotar la partició /(arrel).

Un client Rsyslog sempre envia els missatges de registre en text sense format, si no s'especifica el contrari. No hauríeu de configurar un client Rsyslog per transmetre missatges de registre per Internet o xarxes que no estan sota el vostre control complet.

  1. Procediment d'instal·lació de CentOS 7.3
  2. Procediment d'instal·lació de RHEL 7.3
  3. Configura un servidor Rsyslog a CentOS/RHEL 7

Pas 1: verifiqueu la instal·lació de Rsyslog

1. Per defecte, el dimoni Rsyslog ja està instal·lat i funcionant en un sistema CentOS 7. Per verificar si el servei rsyslog està present al sistema, emet les ordres següents.

# rpm -q | grep rsyslog
# rsyslogd -v

2. Si el paquet Rsyslog no està instal·lat a CentOS, executeu l'ordre següent per instal·lar el servei.

# yum install rsyslog

Pas 2: configureu el servei Rsyslog com a client

3. Per tal que el dimoni Rsyslog instal·lat en un sistema CentOS 7 actuï com a client de registre i encamine tots els missatges de registre generats localment a un servidor Rsyslog remot, modifiqueu el fitxer de configuració rsyslog de la següent manera:

Primer obriu el fitxer de configuració principal per editar-lo.

# vi /etc/rsyslog.conf

A continuació, afegiu la línia següent al final del fitxer, tal com es mostra a l'extracte següent.

*. *  @192.168.10.254:514

A la línia anterior, assegureu-vos que substituïu l'adreça IP del FQDN del servidor rsyslog remot en conseqüència. La línia anterior indica al dimoni Rsyslog que enviï tots els missatges de registre, independentment de la instal·lació o la gravetat, a l'amfitrió amb l'IP 192.168.10.254 a través del port 514/UDP.

4. Si el servidor de registre remot està configurat per escoltar només en connexions TCP o voleu utilitzar un protocol de xarxa de transport fiable, com ara TCP, afegiu un altre caràcter @ davant de l'amfitrió remot tal com es mostra a l'exemple següent:

*. *  @@logs.domain.lan:514

El Linux rsyslog també permet tenir alguns caràcters especials, com ara = o !, que es poden prefixar als nivells de prioritat per indicar \només aquesta prioritat per a signe igual i\no aquesta prioritat ni superior a aquesta.

Algunes mostres de qualificadors de nivell de prioritat Rsyslog a CentOS 7:

  • kern.info = registres del nucli amb prioritat d'informació i superior.
  • kern.=info = només missatges del nucli amb prioritat d'informació.
  • kern.info;kern.!err = només missatges del nucli amb informació, avís i prioritats d'avís.
  • kern.debug;kern.!=warning = totes les prioritats del nucli excepte advertència.
  • kern.* = tots els missatges de prioritats del nucli.
  • kern.none = no registreu cap missatge relacionat amb les instal·lacions del nucli independentment de la prioritat.

Per exemple, suposant que voleu enviar només missatges d'una instal·lació específica a un servidor de registre remot, com ara tots els missatges de correu relacionats, independentment del nivell de prioritat, afegiu la línia següent al fitxer de configuració rsyslog:

mail.* @192.168.10.254:514 

5. Finalment, per aplicar la nova configuració, cal reiniciar el servei Rsyslog per tal que el dimoni reculli els canvis, executant l'ordre següent:

# systemctl restart rsyslog.service

6. Si per alguns motius el dimoni Rsyslog no està habilitat durant el temps d'arrencada, emet l'ordre següent per habilitar el servei a tot el sistema:

# systemctl enable rsyslog.service

Pas 3: envieu els registres d'Apache i Nginx a un servidor de registre remot

7. El servidor HTTP Apache es pot configurar per enviar missatges de registre a un servidor Syslog remot afegint la línia següent al fitxer de configuració principal, tal com s'il·lustra a l'exemple següent.

# vi /etc/httpd/conf/httpd.conf

Al fitxer de configuració principal d'Apache, afegiu la línia següent.

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

La línia obligarà el dimoni HTTP a escriure els missatges de registre internament al fitxer de registre del sistema de fitxers, però també processarà els missatges a través d'una utilitat de canalització a registre, que els enviarà a un servidor Syslog distant, marcant-los com a provinents del local1. instal·lació.

8. Si també voleu dirigir els missatges de registre d'errors d'Apache a un servidor Syslog remot, afegiu una regla nova com la que es presenta a l'exemple anterior, però assegureu-vos de substituir el nom del fitxer de registre httpd i el nivell de gravetat del fitxer de registre per coincideix amb la prioritat d'error, tal com es mostra a la mostra següent:

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. Un cop hàgiu afegit les línies anteriors, heu de reiniciar el dimoni Apache per aplicar els canvis, emetent l'ordre següent:

# systemctl restart httpd.service                 

10. A partir de la versió 1.7.1, el servidor web Nginx té capacitats integrades per registrar directament els seus missatges a un servidor Syslog remot, afegint les següents línies de codi a un fitxer de configuració nginx.

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

Per a un servidor IPv6, utilitzeu el format de sintaxi següent per incloure l'adreça IPv6.

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. Al servidor Rsyslog remot, heu de fer el canvi següent al fitxer de configuració rsyslog per rebre els registres enviats pel servidor web Apache.

local1.* @Apache_IP_address:514

Això és tot! Heu configurat correctament el dimoni Rsyslog perquè s'executi en mode client i, a més, heu indicat al servidor HTTP Apache o a Nginx que reenviï els seus missatges de registre a un servidor syslog remot.

En cas que el sistema es bloquegi, hauríeu de poder investigar el problema inspeccionant el contingut dels fitxers de registre que s'emmagatzemen al servidor Syslog remot.