Herramientas de usuario

Herramientas del sitio


Barra lateral

manuales:nagios:capacitacion:correlacion_de_eventos:syslog_ng

Syslog-NG

Sobre Syslog-NG

Syslog-NG es un sistema para el envío de mensajes de registro en una red.

Es útil registrar, por ejemplo:

  • Un intento de acceso con contraseña equivocada
  • Un acceso correcto al sistema
  • Anomalías: variaciones en el funcionamiento normal del sistema
  • Alertas cuando ocurre alguna condición especial
  • Información sobre las actividades del sistema operativo
  • Errores del hardware o el software

También es posible registrar el funcionamiento normal de los programas; por ejemplo, guardar cada acceso que se hace a un servidor web, aunque esto suele estar separado del resto de alertas.

Puede logguear tanto por UDP como por TCP, teniendo compatibilidad con el viejo syslog, soportando a su vez muchas mas opciones y tareas que el syslog comun.

Explicacion tecnica simple

Syslog-NG se compone en capas de funcionamiento

Osea tengo en primer lugar opciopnes generales, luego fuentes de donde obtener datos de los registros, ya sean locales, externos por red (udp, tcp, archivos de texto), y luego tenemos destinos y filtros configurados, uniendolos forman los registros de sistema

Tareas

Se instalo el software syslog-ng dentro de un servidor Debian.

apt-get install syslog-ng

En la instalacion como resultante se tiene el siguiente archivo de configuracion principal

/etc/syslog-ng/syslog-ng.conf

Clientes

En los clientes se procedió a configurar el syslog convencional para que loggueara por UDP hacia el servidor syslog.

syslog-ng.conf

syslog-ng.conf
destination syslog_server {
    tcp( "10.1.1.2" port(514) );
};
 
filter      f_local6       { facility(local6); };
 
filter f_auth {
    facility(auth, authpriv);
};
log { 
    source(src);
    filter(f_auth);
    destination(syslog_server);
};
 
log { 
    source(src);
    filter(f_local6);
    destination(syslog_server);
};

syslog.conf

syslog.conf
auth.*;authpriv.*;auth.notice;auth.error;auth.info;authpriv.none;     @10.1.1.2
local6.*                @10.1.1.2

/etc/profile.local

Esto es para logguear todos los comandos que ejecutan los usuarios, funciona aunque ejecuten un sudo o un su sin perder el rastro del usuario original, siempre y cuando no modifiquen la variable de entorno.

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

Configuración del Servidor

Debian GNU/Linux Etch

Archivo /etc/syslog-ng/syslog-ng.conf

Opciones generales, fuentes de donde obtener información, filtros y destinos paracada filtro

options {
      long_hostnames(off);
      # doesn't actually help on Solaris, log(3) truncates at 1024 chars
      log_msg_size(8192);
      # buffer just a little for performance
      # sync(1); <- Deprecated - use flush_lines() instead
      flush_lines(1);
      # memory is cheap, buffer messages unable to write (like to loghost)
      log_fifo_size(16384);
      # Hosts we don't want syslog from
      #bad_hostname("^(ctld.|cmd|tmd|last)$");
      # The time to wait before a dead connection is reestablished (seconds)
      time_reopen(10);
      #Use DNS so that our good names are used, not hostnames
      use_dns(no);
      dns_cache(yes);
      #Use the whole DNS name
      use_fqdn(no);
      keep_hostname(no);
      chain_hostnames(no);
      #Read permission for everyone
      perm(0644);
      # The default action of syslog-ng 1.6.0 is to log a STATS line
      # to the file every 10 minutes.  That's pretty ugly after a while.
      # Change it to every 12 hours so you get a nice daily update of
      # # how many messages syslog-ng missed (0).
      stats(43200000);
};

# Log Interno
source interno {
        # message generated by Syslog-NG
        internal();
        # standard Linux log source (this is the default place for the syslog()
        # function to send logs to)
        unix-stream("/dev/log");
        # messages from the kernel
        file("/proc/kmsg" log_prefix("kernel: "));
};

# Create destination to LogZilla
destination d_logzilla {
   program("/usr/local/nagios/syslog/scripts/db_insert.pl"
   template("$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n")
   );
};
source externo {
        # use the following line if you want to receive remote UDP logging messages
        # (this is equivalent to the "-r" syslogd flag)
        # Ampliamos el limite de conexiones para recibir gran cantidad de datos de LOGS externos
        udp(ip(0.0.0.0) port(514));
        tcp(ip(0.0.0.0) port(514)  max-connections(150) );
};

# Tell syslog-ng to log to our new destination 
log {
    source(externo);
    destination(d_logzilla);
};

# Alertas de Nagios Eventdb

destination d_eventdb {
    pipe(
        "/usr/local/nagios/var/rw/syslog-ng.pipe",
        template("$HOST\t$SOURCEIP\t$PRI\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n")
        template_escape(no)
    );
};

log {
    source(externo);
    destination(d_eventdb);
};

PHP-Syslog-ng

Para la visualizacion de los logs via web, busqueda y demas operaciones para su administracion se instalo, configuro y modifico a necesidad parte de codigo del sofware php-syslog-ng que provee de una interfaz web con soporte de busquedas y que servia para cubrir la necesidad planteada.

Una vez instalado se configuro el apache para su puesta en marcha de la siguiente manera (se omitieron las directivas de autenticacion).

Alias /syslog "/usr/local/php-syslog-ng/html"
<Directory "/usr/local/php-syslog-ng/html">
    Options All
    Order allow,deny
    Allow from all
    SSLRequireSSL
    AllowOverride None
</Directory>

Integración con Nagios

manuales/nagios/capacitacion/correlacion_de_eventos/syslog_ng.txt · Última modificación: 2017/07/21 13:04 por cayu