Registros son un componente crítico de cualquier software o sistema operativo. Los registros generalmente registran las acciones del usuario, los eventos del sistema, la actividad de la red y mucho más, según para qué están destinados. Uno de los sistemas de registro más utilizados en sistemas Linux es rsyslog.
Rsyslog es un sistema de procesamiento de registros potente, seguro y de alto rendimiento que acepta datos de diferentes tipos de fuentes (sistemas / aplicaciones) y los genera en múltiples formatos.
Ha evolucionado de un regular syslog daemon a un sistema de registro de nivel empresarial con todas las funciones. Está diseñado en un modelo cliente / servidor, por lo que puede configurarse como cliente y / o como servidor de registro central para otros servidores, dispositivos de red y aplicaciones remotas.
Para el propósito de esta guía, usaremos los siguientes hosts:
La mayoría de las distribuciones de Linux vienen con
rsyslog paquete preinstalado. En caso de que no esté instalado, puede instalarlo usando su herramienta de administración de paquetes de Linux como se muestra.$ sudo yum update && yum install rsyslog #CentOS 7. $ sudo apt update && apt install rsyslog #Ubuntu 16.04, 18.04.
Una vez rsyslog instalado, debe iniciar el servicio por ahora, habilitarlo para que se inicie automáticamente en el arranque y verificar su estado con el comando systemctl.
$ sudo systemctl start rsyslog. $ sudo systemctl habilita rsyslog. $ sudo systemctl status rsyslog.
El archivo de configuración principal de rsyslog se encuentra en /etc/rsyslog.conf, que carga módulos, define las directivas globales, contiene reglas para procesar mensajes de registro y también incluye todos los archivos de configuración en /etc/rsyslog.d/ para diversas aplicaciones / servicios.
$ sudo vim /etc/rsyslog.conf.
Por defecto, rsyslog usa el diario y imusock módulos para importar mensajes de registro estructurados desde diario systemd y para aceptar mensajes de syslog de aplicaciones que se ejecutan en el sistema local a través de sockets Unix, respectivamente.
Para configurar rsyslog como un servidor de registro central / de red, debe configurar el protocolo (ya sea UDP o TCP o ambos) se utilizará para la recepción de syslog remota, así como el puerto en el que escucha.
Si quieres usar un UDP conexión, que es más rápida pero poco confiable, busque y descomente las líneas a continuación (reemplace 514 con el puerto en el que desea que escuche, esto debe coincidir con la dirección del puerto al que los clientes envían mensajes, lo veremos más al configurar un cliente rsyslog).
$ ModLoad imudp. $ UDPServerRun 514.
Usar TCP conexión (que es más lenta pero más confiable), busque y descomente las líneas a continuación.
$ ModLoad imtcp. $ InputTCPServerRun 514.
En este caso, queremos usar conexiones UDP y TCP al mismo tiempo.
A continuación, debe definir el reglamento para procesar registros remotos en el siguiente formato.
install.severity_level destino (dónde almacenar el registro)
Donde:
*
significa todas las instalaciones.*
significa todos los niveles de gravedad y ninguno implica ningún nivel de gravedad.Usaremos lo siguiente reglamento para recopilar registros de hosts remotos, utilizando el RemoteLogs modelo. Tenga en cuenta que estas reglas deben ir antes que las reglas para procesar mensajes locales, como se muestra en la captura de pantalla.
$ template RemoteLogs, "/ var / log /% HOSTNAME% /% PROGRAMNAME% .log" *. *? RemoteLogs & ~
Mirando lo de arriba reglamento, la primera regla es "$ Template RemoteLogs", / var / log /% HOSTNAME% /% PROGRAMNAME% .log "".
La directiva $ plantilla le dice al demonio rsyslog que recopile y escriba todos los mensajes remotos recibidos en distintos registros en /var/log, basado en el nombre de host (nombre de la máquina del cliente) y la instalación del cliente remoto (programa / aplicación) que generó los mensajes según lo definido por la configuración presente en la plantilla RemoteLogs.
La segunda linea "*. *? RemoteLogs" significa grabar mensajes de todas las instalaciones en todos los niveles de gravedad utilizando el RemoteLogs configuración de la plantilla.
La linea final “& ~” indica a rsyslog que deje de procesar los mensajes una vez que se escriben en un archivo. Si no incluye “& ~”, los mensajes se escribirán en su lugar en los archivos locales.
Hay muchas otras plantillas que puede utilizar, para obtener más información, consulte la página de manual de configuración de rsyslog (man rsyslog.conf) o consulte el Documentación en línea de Rsyslog.
Eso es todo con la configuración del servidor rsyslog. Guarde y cierre el archivo de configuración. Para aplicar los cambios recientes, reinicie el demonio rsyslog con el siguiente comando.
$ sudo systemctl reiniciar rsyslog.
Ahora verifique los sockets de red rsyslog. Utilizar el comando ss (o netstat con las mismas banderas) comando y canalice la salida a grep para filtrar conexiones rsyslogd.
$ sudo ss -tulnp | grep "rsyslog"
Siguiente CentOS 7, si usted tiene SELinux habilitado, ejecute los siguientes comandos para permitir el tráfico rsyslog según el tipo de socket de red.
$ sudo semanage -a -t syslogd_port_t -p udp 514. $ sudo semanage -a -t syslogd_port_t -p tcp 514
Si el sistema tiene un firewall habilitado, debe abrir el puerto 514 para permitir ambos UDP / TCP conexiones al servidor rsyslog, ejecutando.
En CentOS $ sudo firewall-cmd --permanent --add-port = 514 / udp. $ sudo firewall-cmd --permanent --add-port = 514 / tcp. $ sudo firewall-cmd --reload En Ubuntu $ sudo ufw permiten 514 / udp. $ sudo ufw permiten 514 / tcp. $ sudo ufw recargar
Ahora en el sistema cliente, verifique si el servicio rsyslog se está ejecutando o no con el siguiente comando.
$ sudo systemctl status rsyslog.
Si no está instalado, instálelo e inicie el servicio como se mostró anteriormente.
$ sudo yum update && yum install rsyslog #CentOS 7. $ sudo apt update && apt install rsyslog #Ubuntu 16.04, 18.04. $ sudo systemctl start rsyslog. $ sudo systemctl habilita rsyslog. $ sudo systemctl status rsyslog.
Una vez que el servicio rsyslog esté en funcionamiento, abra el archivo de configuración principal donde realizará cambios a la configuración predeterminada.
$ sudo vim /etc/rsyslog.conf.
Para forzar al demonio rsyslog a actuar como un cliente de registro y reenviar todos los mensajes de registro generados localmente al servidor rsyslog remoto, agregue esta regla de reenvío, al final del archivo como se muestra a continuación captura de pantalla.
*. * @@192.168.100.10:514.
La regla anterior enviará mensajes desde todas las instalaciones y en todos los niveles de gravedad. Para enviar mensajes desde una instalación específica, por ejemplo auth, utilice la siguiente regla.
auth. * @@192.168.100.10:514.
Guarde los cambios y cierre el archivo de configuración. Para aplicar la configuración anterior, reinicie el demonio rsyslog.
$ sudo systemctl reiniciar rsyslog.
El último paso es verificar si el rsyslog está recibiendo y registrando mensajes del cliente, en /var/log, en la forma nombre de host / nombre de programa.log.
Ejecutar un comando ls a una lista larga del directorio de registros principal y verifique si hay un directorio llamado ip-172.31.21.58 (o cualquiera que sea el nombre de host de su máquina cliente).
$ ls -l / var / log /
Si el directorio existe, verifique los archivos de registro dentro de él, ejecutando.
$ sudo ls -l / var / log / ip-172-31-21-58 /
Rsyslog es un sistema de procesamiento de registros de alto rendimiento, diseñado en una arquitectura cliente / servidor. Esperamos que pueda instalar y configurar Rsyslog como servidor de registro central / de red y como cliente, como se muestra en esta guía.
También puede consultar las páginas del manual de rsyslog relevantes para obtener más ayuda. No dude en enviarnos sus comentarios o hacernos preguntas.