GNU/Linux >> Tutoriales Linux >  >> Debian

Instale un servidor de registro centralizado con Rsyslog en Debian 9

En Linux, los archivos de registro son archivos que contienen mensajes sobre las funciones del sistema que utilizan los administradores del sistema para identificar posibles problemas en las máquinas. Los registros ayudan a los administradores a visualizar los eventos que ocurrieron en el sistema durante períodos de tiempo. Por lo general, todos los archivos de registro se guardan en /var/log directorio en Linux. En esta ubicación, hay varios tipos de archivos de registro para almacenar varios mensajes, como un archivo de registro para registrar eventos del sistema, un archivo de registro para mensajes relacionados con la seguridad, otros archivos de registro dedicados al kernel, usuarios o trabajos cron. El objetivo principal de los archivos de registro es solucionar problemas del sistema. La mayoría de los archivos de registro en Linux están controlados por el servicio rsyslogd. En las versiones más recientes de las distribuciones de Linux, los archivos de registro también son controlados y administrados por el servicio del sistema journald, que forma parte del programa de inicialización de systemd. Los registros almacenados por el daemon de diario están escritos en formato binario y son principalmente volátiles, almacenados en RAM y en un búfer de anillo en /run/log/journal/. Sin embargo, el servicio de diario también se puede configurar para almacenar permanentemente los mensajes de Syslog.

En Linux, el servidor rsyslog se puede configurar para ejecutar un administrador de registro central, en forma de modelo de cliente de servicio, y enviar mensajes de registro a través de la red a través de protocolos de transporte TCP o UDP o recibir registros de dispositivos de red, servidores, enrutadores, conmutadores o otros sistemas o dispositivos integrados que generan registros.

El demonio Rsyslog se puede configurar para ejecutarse como cliente y servidor al mismo tiempo. Configurado para ejecutarse como un servidor, Rsyslog escuchará en el puerto predeterminado 514 TCP y UDP y comenzará a recopilar mensajes de registro que los sistemas remotos envían a través de la red. Como cliente, Rsyslog enviará a través de la red los mensajes de registro internos a un servidor Ryslog remoto a través de los mismos puertos TCP o UDP.

Rsyslog filtrará los mensajes de syslog según las propiedades y acciones seleccionadas. Los filtros de rsyslog son los siguientes:

  1. Archivadores de establecimiento o prioridad
  2. Filtros basados ​​en propiedades
  3. Filtros basados ​​en expresiones

La instalación El filtro está representado por el subsistema interno de Linux que produce los registros. Se clasifican como se presenta a continuación:

  • autorización/autorizaciónpriv =mensajes producidos por procesos de autenticación
  • cron =registros relacionados con tareas cron
  • demonio =mensajes relacionados con los servicios del sistema en ejecución
  • núcleo =Mensajes del kernel de Linux
  • correo =mensajes del servidor de correo
  • registro del sistema =mensajes relacionados con syslog u otros demonios (el servidor DHCP envía registros aquí)
  • lpr =impresoras o mensajes del servidor de impresión
  • local0 - local7 =mensajes personalizados bajo el control del administrador

La prioridad o gravedad los niveles se asignan a una palabra clave y un número como se describe a continuación.

  • emergencia =Emergencia – 0
  • alerta =Alertas – 1
  • err =Errores – 3
  • advertir =Advertencias – 4
  • aviso =Notificación – 5
  • información =Información – 6
  • depuración =Depuración - 7 nivel más alto

También hay algunas palabras clave especiales de Rsyslog disponibles, como el asterisco (* ) firmar para definir todas
facilidades o prioridades, la ninguna palabra clave que no especifica prioridades, el signo igual (= ) que selecciona solo esa prioridad y el signo de exclamación (! ) que niega una prioridad.

La parte de acción del syslog está representada por el destino declaración. El destino de un mensaje de registro puede ser un archivo almacenado en el sistema de archivos, un archivo en la ruta del sistema /var/log/, otra entrada de proceso local a través de una canalización con nombre o FIFO. Los mensajes de registro también pueden dirigirse a los usuarios, desecharse en un agujero negro (/dev/null) o enviarse a la salida estándar o a un servidor syslog remoto a través del protocolo TCP/UDP. Los mensajes de registro también se pueden almacenar en una base de datos, como MySQL o PostgreSQL.

Configurar Rsyslog como servidor

El demonio Rsyslog se instala automáticamente en la mayoría de las distribuciones de Linux. Sin embargo, si Rsyslog no está instalado en su sistema, puede ejecutar uno de los siguientes comandos para instalar el servicio> necesitará privilegios de root para ejecutar los comandos.

En distribuciones basadas en Debian:

sudo apt-get install rsyslog

En distribuciones basadas en RHEL como CentOS:

sudo yum install rsyslog

Para verificar si el demonio Rsyslog se inicia en un sistema, ejecute los siguientes comandos, según la versión de su distribución.

En distribuciones de Linux más nuevas con systemd:

systemctl status rsyslog.service

En versiones anteriores de Linux con init:

service rsyslog status
/etc/init.d/rsyslog status

Para iniciar el demonio rsyslog, emita el siguiente comando.

En versiones anteriores de Linux con init:

service rsyslog start
/etc/init.d/rsyslog start

En las últimas distribuciones de Linux:

systemctl start rsyslog.service

Para configurar un programa rsyslog para que se ejecute en modo servidor, edite el archivo de configuración principal en /etc/rsyslog.conf. En este archivo, realice los siguientes cambios como se muestra en el ejemplo a continuación.

sudo vi /etc/rsyslog.conf

Ubique y elimine el comentario eliminando el hashtag (#) de las siguientes líneas para permitir la recepción de mensajes de registro UDP en el puerto 514. De forma predeterminada, syslog utiliza el puerto UDP para enviar y recibir mensajes.

$ModLoad imudp 
$UDPServerRun 514

Debido a que el protocolo UDP no es confiable para intercambiar datos a través de una red, puede configurar Rsyslog para enviar mensajes de registro a un servidor remoto a través del protocolo TCP. Para habilitar el protocolo de recepción TCP, abra /etc/rsyslog.conf archivo y descomente las siguientes líneas como se muestra a continuación. Esto permitirá que el demonio rsyslog se enlace y escuche en un socket TCP en el puerto 514.

$ModLoad imtcp 
$InputTCPServerRun 514

Ambos protocolos se pueden habilitar en rsyslog para ejecutarse al mismo tiempo.

Si desea especificar a qué remitentes permite el acceso al demonio rsyslog, agregue la siguiente línea después de las líneas de protocolo habilitadas:

$AllowedSender TCP, 127.0.0.1, 10.110.50.0/24, *.yourdomain.com

También deberá crear una nueva plantilla que será analizada por el demonio rsyslog antes de recibir los registros entrantes. La plantilla debe indicar al servidor Rsyslog local dónde almacenar los mensajes de registro entrantes. Defina la plantilla justo después de $AllowedSender línea como se muestra en el siguiente ejemplo.

$template Incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.*  ?Incoming-logs
& ~

  Para registrar solo los mensajes generados por la función kern, use la siguiente sintaxis.

kern.*   ?Incoming-logs

Los registros recibidos son analizados por la plantilla anterior y se almacenarán en el sistema de archivos local en el directorio /var/log/, en archivos con el nombre de la instalación del cliente del nombre de host del cliente que produjo los mensajes:%HOSTNAME% y %PROGRAMNAME% variables.

Los siguientes &~ La regla de redirección configura el demonio Rsyslog para guardar los mensajes de registro entrantes solo en los archivos anteriores especificados por los nombres de las variables. De lo contrario, los registros recibidos se seguirán procesando y también se almacenarán en el contenido de los registros locales, como el archivo /var/log/syslog.

Para agregar una regla para descartar todos los mensajes de registro relacionados con el correo, puede usar la siguiente instrucción.

mail.* ~

Otras variables que se pueden usar para generar nombres de archivos son:%syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$año%, %$mes%, %$día%

A partir de la versión 7 de Rsyslog, se puede usar un nuevo formato de configuración para declarar una plantilla en un servidor Rsyslog.

Una muestra de plantilla de la versión 7 puede verse como se muestra en las líneas a continuación.

template(name="MyTemplate" type="string"
         string="/var/log/%FROMHOST-IP%/%PROGRAMNAME:::secpath-replace%.log"
        )

  Otro modo en el que puede escribir la plantilla anterior también puede ser como se muestra a continuación:

template(name="MyTemplate" type="list") {
    constant(value="/var/log/")
    property(name="fromhost-ip")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

Para aplicar los cambios realizados en el archivo de configuración de rsyslog, debe reiniciar el demonio para cargar la nueva configuración.

sudo service rsyslog restart
sudo systemctl restart rsyslog

Para comprobar qué sockets rsyslog en estado de escucha están abiertos en un sistema Debian Linux, puede ejecutar netstat comando con privilegios de root. Pase los resultados a través de una utilidad de filtro, como grep .

sudo netstat –tulpn | grep rsyslog

Tenga en cuenta que también debe abrir los puertos Rsyslog en el firewall para permitir que se establezcan las conexiones entrantes.

En las distribuciones basadas en RHEL con Firewalld activado, emita los siguientes comandos:

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

En las distribuciones basadas en Debian con el cortafuegos UFW activo, emita los siguientes comandos:

ufw allow 514/tcp
ufw allow 514/udp

Reglas de cortafuegos de iptables:

iptables -A INPUT -p tcp -m tcp --dport 514 -j ACCEPT
iptables -A INPUT -p udp --dport 514 -j ACCEPT

Configurar Rsyslog como cliente

Para permitir que el demonio rsyslog se ejecute en modo cliente y envíe mensajes de registro locales a un servidor Rsyslog remoto, edite /etc/rsyslog.conf archivo y agregue una de las siguientes líneas:

*. *  @IP_REMOTE_RSYSLOG_SERVER:514
*. *  @FQDN_RSYSLOG_SERVER:514

Esta línea permite que el servicio Rsyslog envíe todos los registros internos a un servidor Rsyslog distante en el puerto UDP 514.

Para enviar los registros a través del protocolo TCP, use la siguiente plantilla:

*. *  @@IP_reomte_syslog_server:514

Para enviar solo registros relacionados con cron con todas las prioridades a un servidor rsyslog, use la siguiente plantilla:

cron.* @ IP_reomte_syslog_server:514

En los casos en que no se pueda acceder al servidor Rsyslog a través de la red, agregue las siguientes líneas al archivo /etc/rsyslog.conf en el lado del cliente para almacenar temporalmente los registros en un archivo almacenado en disco, hasta que el servidor se conecte.

$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

Para aplicar las reglas anteriores, se debe reiniciar el demonio Rsyslog para que actúe como cliente.


Debian
  1. Cómo configurar el servidor Rsyslog en Debian 11

  2. Cómo instalar el servidor Redis en Debian 11

  3. Cómo instalar MySQL 8.0/5.7 en Debian 11/Debian 10

  4. Instalar Cockpit en Debian 9

  5. Instale phpMyAdmin en Debian 11 con Nginx

Instale WordPress 5 con Apache en Debian 9

Cómo monitorear archivos de registro con Graylog v3.1 en Debian 10

Cómo instalar MySQL 8 en Debian 10

Cómo instalar el servidor FTP vsftpd con TLS en Debian 10

¡Administración centralizada de registros instalando rsyslog en Debian 11!

Cómo instalar Nginx con PHP-FPM en Debian 11