Necesidad de un servidor Rsyslog centralizado
Cada sistema *NIX tiene algún tipo de función de registro que producirá registros de texto que se pueden escribir en una ubicación arbitraria en un dispositivo de almacenamiento (normalmente, de forma predeterminada en una partición de disco local). Ahora, esto es esencial pero también puede producir problemas como:
- Debe tener espacio de almacenamiento adecuado en el servidor local para guardar los registros.
- Debes poner en marcha la rotación para evitar que crezcan demasiado.
- Si los registros contienen información confidencial, como el número de tarjeta de crédito, desea que se almacenen en una ubicación segura, preferiblemente no en el servidor local.
- Puede perder los registros si se produce un desastre en el servidor y los datos no se pueden recuperar.
Para evitar todos estos problemas, podemos usar un servidor syslog centralizado. El servidor syslog centralizado proporciona la seguridad, el almacenamiento adecuado, la función de copia de seguridad centralizada, etc.
La publicación describe los pasos para configurar Rsyslog para enviar archivos de registro a un servidor remoto mediante TCP y UDP.
Configuración del servidor Rsyslog centralizado
1. Edite /etc/rsyslog.conf y descomente las siguientes líneas:
Para TCP;
# vi /etc/rsyslog.conf $ModLoad imtcp $InputTCPServerRun 514
Para UDP;
# vi /etc/rsyslog.conf $ModLoad imudp $UDPServerRun 514Nota :Puede usar el modo TCP y UDP para transferir registros al servidor rsyslog remoto. Pero recomendaría usar UDP ya que es mucho más fácil en el servidor del cliente en términos de rendimiento. El único inconveniente de usar UDP es que se pueden perder algunos mensajes de registro si el servidor está demasiado ocupado para recibir los paquetes UDP. Use TCP donde sus registros sean críticos; de lo contrario, quédese con UDP.
2. Guarde el archivo y reinicie el servicio rsyslog.
# service rsyslog restart ### CentOS/RHEL 6 # systemctl restart rsyslog ### CentOS/RHEL 7
Configuración del cliente Rsyslog
1. Edite /etc/rsyslog.conf en el servidor del cliente y agregue las siguientes líneas. Cuando antepone su host remoto con un solo @ símbolo, está utilizando UDP. Para usar TCP, use @@ en su lugar.
Para UDP
# vi /etc/rsyslog.conf # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional #*.* @remote-host:514 *.* @x.x.x.x:514
Para TCP
# vi /etc/rsyslog.conf # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional #*.* @@remote-host:514 *.* @@x.x.x.x:514
Aquí, reemplace x.x.x.x con su servidor rsyslog centralizado. Si no desea enviar registros con todas las gravedades incluidas (*.*), puede editar la última línea con algo como:
*.info @x.x.x.x:514
2. Guarde el archivo y reinicie el servicio rsyslog.
# service rsyslog restart ### CentOS/RHEL 6 # systemctl restart rsyslog ### CentOS/RHEL 7
Verificación de la configuración
Puede utilizar el “registrador ” para generar un mensaje de registro manualmente y ver si el servidor syslog remoto lo recibe correctamente.
En el servidor del cliente:
# logger "Test message from the system `hostname`"
En el servidor rsyslog centralizado:
# tail /var/log/messages June 15 12:32:01 geeklab root: Test message from the system geeklab
Ejecutar Rsyslog en un puerto no estándar
Si desea ejecutar rsyslog en un puerto que no sea el puerto predeterminado 514, deberá realizar cambios adicionales en selinux. Para ver la configuración actual de los puertos SELinux para rsyslog:
# semanage port -l| grep syslog syslog_tls_port_t tcp 6514, 10514 syslog_tls_port_t udp 6514, 10514 syslogd_port_t tcp 601, 20514 syslogd_port_t udp 514, 601, 20514
Para agregar un puerto UDP 541 a SELinux, use el comando:
# semanage port -a -t syslogd_port_t -p udp 541
Verifique si el puerto se agrega a la configuración de SELinux:
# semanage port -l| grep syslog syslog_tls_port_t tcp 6514, 10514 syslog_tls_port_t udp 6514, 10514 syslogd_port_t tcp 601, 20514 syslogd_port_t udp 541, 514, 601, 20514