miércoles, 5 de agosto de 2015

Archivo de ejemplo para configuración de Rsyslog como cliente.

En el tema anterior vimos la lógica para el envío de archivos log, dependiendo de su tipo y criticidad. en este punto trataremos de como configurar un cliente y como se debe optimizar para el envío de solo la información necesaria.
#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#                       For more information see
#                       /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html

#################
#### MODULES ####
#################

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability

# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514


###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf


###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.info              @@syslog.dominio.com
auth,authpriv.*                 /var/log/auth.log
*.notice;auth,authpriv.none     @@syslog.dominio.com
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          @@syslog.dominio.com
user.*                          -/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err

#
# Logging for INN news system.
#
news.crit                       /var/log/news/news.crit
news.err                        /var/log/news/news.err
news.notice                     -/var/log/news/news.notice
#
# Some "catch-all" log files.
#
*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          @@192.168.200.249 # mismo servidor pero por ip

#
# Emergencies are sent to everybody logged in.
#
*.emerg                         *

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#       news.=crit;news.=err;news.=notice;\
#       *.=debug;*.=info;\
#       *.=notice;*.=warn       /dev/tty8

# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
# you must invoke `xconsole' with the `-file' option:
#
#    $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
#      busy site..
#
daemon.*;mail.*;\
        news.err;\
        *.=debug;*.=info;\
        *.=notice;*.=warn       |/dev/xconsole
viendo la anterior información debemos desglosar para comprende su funcionamiento:
En este caso hay 2 funciones, una el envió de archivos locales y la otra el envío hacia nuestro servidor syslog. en este caso lo enviaremos por TCP por comodidad y flexibilidad.
>auth,authpriv.info @@syslog.dominio.com | autenticación
todo lo que se relacione con autenticación, inicio de sesión y comandos sudo es configurado con estas líneas. en este caso si queremos que envíe todo ponemos * después del punto, sin embargo a los fines de no sobrecargar de información que se considere innecesaria se coloca al final el adjetivo info, para indicar que todo los niveles desde info en adelante serán los que se van a enviar al archivo syslog
>*.notice;auth,authpriv.none @@syslog.dominio.com | General
todos los archivos, sean daeon, kernel y otros serán enviados con esta sentencia, igualmente se coloca al final el adjetivo info, para indicar que todo los niveles desde info en adelante serán los que se van a enviar al archivo syslog. en este caso hay un punto y coma, lo cual significa que se obviaran ciertos parámetros, en cuyo caso es la autenticación que ha sido colocada aparte.
>user.* @@ssyslog.dominio.com | procesos
En este caso se indicará las aplicaciones de usuario. si no se quiere mucha información se puede configurar en notice, poniendo los mas relevantes, pero en líneas generales, este es el archivo que menos conflictos dá, a menos que se tenga un apache o un LDAP muy concurrido en cuyo caso se puede colocar la sentencia ya recomendada

Teniendo estas sencillas configuraciones ya se puede controlar el envío de información y depurar hacia nuestro servidor syslog.

Espero les sirva de ejemplo.
Nota adicional:
Archivo para PFSense
*.notice;user.err;auth,authpriv.none @192.168.200.249
auth,authpriv.info @192.168.200.249
local0.err @@192.168.200.249
local3.err @@192.168.200.249
local7.err @@192.168.200.249

 
!ntp,ntpd,ntpdate
#*.*                                %/var/log/ntpd.log
#!ppp
#*.*                                %/var/log/ppp.log
#!pptps
#*.*                                %/var/log/pptps.log
#!poes
#*.*                                %/var/log/poes.log
#!l2tps
#*.*                                %/var/log/l2tps.log
#!racoon
#*.*                                %/var/log/ipsec.log
#!openvpn
#*.*                                %/var/log/openvpn.log
#!apinger
#*.*                                %/var/log/apinger.log
#!relayd
#*.*                                 %/var/log/relayd.log
#!hostapd
#*.*                                 %/var/log/wireless.log
#!ntpd,racoon,openvpn,pptps,poes,l2tps,relayd,hostapd
local0.*                            %/var/log/filter.log
local3.*                            %/var/log/vpn.log
local4.*                            %/var/log/portalauth.log
local7.*                            %/var/log/dhcpd.log
*.notice;kern.debug;lpr.info;mail.crit;                %/var/log/system.log
news.err;local0.none;local3.none;local4.none;            %/var/log/system.log
local7.none                            %/var/log/system.log
security.*                            %/var/log/system.log
auth.info;authpriv.info;daemon.info                %/var/log/system.log
auth.info;authpriv.info                     |exec /usr/local/sbin/sshlockout_pf 15
*.emerg                                *
 
Para evitar mensajes syslog en consola
Ejecutamos:
dmesg -n 1
y para hacer permanentes los cambios
editamos
nano /etc/rc.local

tambien en algunas versiones de syslog podemos agregar la línea 

KLOGD_OPTIONS="-2 -c 1"

martes, 4 de agosto de 2015

Guía de configuración Rsyslog

Fichero /etc/syslog.conf




La configuración del servicio syslogd se realiza por medio del fichero /etc/syslog.conf que especifica como tratar la información de logs
  • Controla los mensajes que se muestran y donde se muestran
Cada entrada consiste en los campos facilidadnivel y acción separados por tabuladores, como en los siguientes ejemplos:
facilidad.nivelacción
facilidad1,facilidad2.nivelacción
facilidad1.nivel1;facilidad2.nivel2acción
*.nivelacción
facilidad.=nivelacción
facilidad.!nivelacción
...

  • facilidad indica el programa que genera los logs, nivel el nivel de logs y acción lo que se hace con ellos, por ejemplo mail.info        /var/log/mail.infoindica que los mensajes de prioridad info o superior del sistema de mail se guarden en el fichero /var/log/mail.info
  • El símbolo # indica comentario
  • Se permiten el uso de comodines, como *= y !
    • * representa todas las aplicaciones o todos los niveles
    • = delante de un nivel indica que sólo se traten los mensajes de ese nivel
    • ! delante de un nivel indica que se traten todos los niveles menos el especificado
  • Ejemplo, guarda todos los mensajes del nivel debug en el fichero /var/log/debug:*.=debug         -/var/log/debug
    • el guión delante del nombre del fichero indica que no se sincronice el fichero después de cada escritura (aumenta la velocidad)
  • Para más información, ver las páginas de manual de syslogd y syslog.conf

Facilidad

Se usan los siguientes:

FacilidadUso
authSistema de autenticación, incluyendo loginsu y getty
authprivProgramas de autorización privados
croncron y at
daemonDemonios del sistema
ftpDemonio de ftp
kernMensajes generados por el kernel
local0-7Reservado para uso local
lprSistema de impresión
mailSistema de mail
markMensajes internos de syslogd (no usable por aplicaciones)
newsSistema de news en la red
syslogMensajes del demonio de syslog
userAplicaciones de usuario
uucpSistema UUCP
*Todas las facilidades menos mark

Niveles

Los niveles de prioridad son los siguientes (en orden ascendente)
NivelUso
debugMensajes generados en la depuración de un programa
infoMensajes informativos
noticeMensajes no críticos que requieren investigación adicional
warningMensajes de aviso
errOtros errores
critCondiciones críticas como errores hardware
alertCondiciones que se deberían resolver rápidamente
emergCondiciones de pánico muy importantes
Además, none permite anular facilidades:
*.debug;mail.none

Acciones


Pueden indicarse diversas acciones

AcciónUso
n_ficheroRuta absoluta al fichero donde se guardan los mensajes
n_terminalEscribe los mensajes en el terminal
@host o @ipHost remoto donde su syslogd recoge los mensajes
user1, user2Escribe los mensajes a los usuarios si están conectados
*Todos los usuarios conectados reciben los mensajes
Por defecto, syslogd no acepta mensajes de otros hosts
  • Para que los acepte debe iniciarse con la opción -r (cambiarlo en /etc/init.d/sysklogd)
  • La opción -h permite que syslogd reenvíe mensajes recibidos de una máquina para otra
  • Ver el manual de syslogd para más detalles

Ejemplos de configuración


  1. Envía todos los mensajes críticos y superiores (critalert y emerg) a todos los usuarios conectados *.crit                *
  2. Envía los mensajes info y  notice, menos los de autorización, al fichero messages
*.=info;*.=notice;auth,authpriv.none        -/var/log/messages
  1. Envía los mensajes de info y superiores de demonios y autorización a un sistema remoto daemon,auth.info                @otrohost
se ha de aclarar que un @ envía los paquetes 587 udp y @@ indica tcp

NOTA: Cuando modificamos el fichero de configuración, debemos reiniciar el syslogd

[Comando logger]

Permite enviar mensajes al sistema de log del sistema (p.e. para usar desde scripts2)
  • Sintaxis:logger opciones -p prioridad mensaje
  • prioridad se especifica de la forma facilidad.nivel (por defecto, usa user.notice)
  • Para las opciones, ver la página de manual
Ejemplos:
  • Envía un mensaje con nivel err al sistema de mail logger -p mail.err "Prueba de mail.err"
  • Registra el mensaje del fichero /etc/motd en auth.notice, poniéndole una etiqueta TESTlogger -p auth.notice -t TEST -f /etc/motd

Archivo de de ejemplo configuración a ser pegado en el archivo de configuración de rsyslog



###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.crit                     @@syslog.dominio.com
user.err                                 @@syslog.dominio.com
*.notice;cron,auth,authpriv,user.none     @@syslog.dominio.com
auth,authpriv.*                  /var/log/auth.log
*.*;auth,authpriv.none           -/var/log/syslog
#cron.*                          /var/log/cron.log
daemon.*                         -/var/log/daemon.log
kern.*                           -/var/log/kern.log
lpr.*                            -/var/log/lpr.log
mail.*                           -/var/log/mail.log
user.*                           -/var/log/user.log


como se aprecia en el anterior ejemplo, podemos configurar niveles respecto a que queremos que se envíe a nuestro servidor de syslog. por ejemplo acá se quiere que envíe información noticias en adelante para todos los eventos "*"  pero no para cron auth authpriv y user, pero configuramos user para que mande datos del nivel err y superiores y auth y authpriv cuando algun log sea critico en adelante.

Sepan disculpar si es un poco enreversado, pero una vez comprendan la lógic se que se les hará sencillo.