−Tabla de Contenidos
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
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>