Como administradores, personal de soporte IT o encargados del área de redes y sistemas, contamos con algo fundamental para ayudarnos a llevar un control sobre cada suceso que ocurre dentro del sistema tanto a nivel de usuarios como de aplicaciones o del propio sistema y estos son los eventos.
Cada evento registra una serie de elementos que nos ayudan a determinar en detalle cada actividad con valores como fecha, hora, ID, usuario y evento acontecido permitiéndonos así una gestión y administración mucho más centralizada.
Podemos ver que cada registro pertenece a una categoría diferente como del sistema, de seguridad, etc.
En ambientes Linux tenemos a nuestra disposición la utilidad Rsyslog con la cual será posible administrar esto eventos de forma simple y completa.
Rsyslog está en la capacidad de aceptar entradas de una amplia variedad de fuentes, transformarlas y generar resultados para diversos destinos optimizando la gestión IT.
RSYSLOG está en la capacidad de entregar más de un millón de mensajes por segundo a destinos locales cuando se aplica un procesamiento limitado incluyendo destinos remotos.
- Directiva $LocalHostName [name]: Esta directiva nos permite sobrescribir el nombre de host del sistema con el especificado en la directiva. Si la directiva se da varias veces, todas menos la última serán ignoradas.
- Soporte para HDFS de Hadoop agregado.
- Cuenta con un módulo impstat para ejecutar estadísticas periódicas en los contadores Rsyslog.
- Cuenta con el complemento imptcp.
- Incluye un nuevo tipo de módulo "generador de cadenas", usado para acelerar el procesamiento de salida.
- Soporta OSX y Solaris.
- Capacidad de crear analizadores de mensajes personalizados.
- Soporte multi-ruleset para imudp.
- Nueva interfaz de módulo de salida transaccional que proporciona un rendimiento superior.
- Multi-threading
- Compatible con los protocolos TCP, SSL, TLS, RELP
- Soporta MySQL, PostgreSQL, Oracle y más
- Filtra cualquier parte del mensaje syslog
- Formato de salida totalmente configurable
- Adecuado para cadenas de retransmisión de clase empresarial
- Facilidad o Declarantes Prioritarios
- Filtros basados en propiedad
- Filtros basados en expresiones
El filtro de facilidad está representado por el subsistema interno de Linux que es el encargado de producir los registros, tenemos las siguientes opciones:
- auth / authpriv = Son los mensajes producidos por procesos de autenticación
- cron = Son registros asociados a las tareas cron
- daemon = Son mensajes relacionados con los servicios del sistema en ejecución
- kernel = Indican mensajes del kernel de Linux
- mail = Incluye mensajes del servidor de correo
- syslog = Son los mensajes relacionados con syslog u otros daemons
- lpr = Abarca impresoras o mensajes del servidor de impresión
- local0 - local7 = Cuenta los mensajes personalizados bajo control de administrador
- emerg= Emergencia - 0
- alert= Alertas - 1
- err= Errores - 3
- warn= Advertencias - 4
- notice= Notificación - 5
- info= Información - 6
- debbug= Depuración – 7
1. Cómo configurar y verificar el estado de Rsyslog en Linux
El daemon de Rsyslog está instalado automáticamente en la mayoría de las distribuciones de Linux, pero en caso de no ser así, debemos ejecutar los siguientes comandos:
sudo apt-get install Rsyslog
sudo yum install Rsyslog
Podemos verificar el estado actual de Rsyslog ejecutando la siguiente línea:
systemctl status rsyslog.service
service rsyslog status /etc/init.d/rsyslog status
En caso de que el estado del servicio Rsyslog sea inactivo, podremos iniciarlo ejecutando lo siguiente:
systemctl start rsyslog.service
service rsyslog start /etc/init.d/rsyslog start
2. Configuración de Rsyslog en Linux
Para configurar un programa rsyslog con el fin de que sea ejecutado en modo servidor, debemos editar el archivo de configuración en el directorio /etc/rsyslog.conf.
Podremos acceder usando el editor deseado:
sudo nano /etc/rsyslog.conf
Allí efectuaremos los siguientes cambios. Ubicar y descomentar, eliminando el signo (#), de las siguientes líneas para permitir la recepción de mensajes de registro UDP en el puerto 514. Por defecto, el puerto UDP es utilizado por syslog para enviar y recibir mensajes:
$ModLoad imudp $UDPServerRun 514
El protocolo UDP no es confiable para intercambiar datos a través de una red, por ello podemos 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, eliminaremos las siguientes líneas:
$ModLoad imtcp $InputTCPServerRun 514
Esto permitirá que el daemon rsyslog se enlace y escuche en un socket TCP en el puerto 514.
Ambos protocolos se pueden habilitar en rsyslog para ejecutarse de forma simultánea en Linux.
Si es necesario especificar a qué remitentes se les permite el acceso al daemon rsyslog, debemos agregar las siguientes líneas:
$AllowedSender TCP, 127.0.0.1, 192.168.0.5/24, *.dominio.com
En este punto será necesario crear una nueva plantilla la cual será analizada por rsyslog daemon antes de recibir los registros entrantes. Esta plantilla debe indicar al servidor Rsyslog local dónde almacenar los mensajes de registro entrantes. Esta plantilla irá después de la línea $ AllowedSender:
$template Incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?Incoming-logs & ~
Para registrar únicamente los mensajes generados por kern añadiremos lo siguiente. Con lo anterior, los registros recibidos son analizados por la plantilla y serán almacenados en el sistema de archivos local en el directorio /var/log/,en la ruta :% HOSTNAME% y% PROGRAMNAME%.
kern.* ?Incoming-logs
Podemos guardar los cambios usando la combinación de teclas siguiente:
Ctrl +O
Salimos del editor usando:
Ctrl + X
3. Reiniciar el servicio y verificar puertos de Rsyslog en Linux
Cuando efectuemos algún tipo de cambio debemos reiniciar el servicio ejecutando alguna de las siguientes opciones:
sudo service rsyslog restart sudo systemctl restart Rsyslog
Para comprobar los puertos usados por Rsyslog ejecutaremos lo siguiente:
sudo netstat –tulpn | grep rsyslog
Como hemos indicado, el puerto usado será el 514, debemos habilitarlo en el firewall para su uso con las siguientes líneas.
firewall-cmd --permanent --add-port=514/tcp firewall-cmd –reload
ufw allow 514/tcp ufw allow 514/udpSi usamos IPTables:
iptables -A INPUT -p tcp -m tcp --dport 514 -j ACCEPT iptables -A INPUT -p udp --dport 514 -j ACCEPT
De esta forma hemos instalado Rsyslog en Linux para la gestión de los diversos tipos de registros que son generados constantemente en él.