
syslog-ng es la solución de gestión de registros que mejora el rendimiento de su solución sistema de Gestión de Eventos e Información de Seguridad (SIEM) al reducir la cantidad y mejorar la calidad de los datos que alimentan su SIEM.
Hoy les muestro como desplegar un servidor syslog-ng sobre una arquitectura de contenedores
Partiendo de la infraestructura siguiente:
Configuración del syslog-ng como Servidor
Nos conectamos al servidor que hospedara el syslog-ng
1 | $ ssh -l root -p 22 192.168.0.27 |
Instalamos syslog-ng
1 | root@syslog-ng:~# apt -yq install gpm syslog-ng |
Accedemos al archivo de configuración principal
1 | root@syslog-ng:~# vim /etc/syslog-ng/syslog-ng.conf |
y añadimos en las opciones generales las opciones siguientes:
1 2 3 | keep_hostname(yes); chain_hostnames(on); create_dirs(yes); |
Quedando de la siguiente manera:
1 2 3 4 5 | options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no); dns_cache(no); owner("root"); group("adm"); perm(0640); stats_freq(0); bad_hostname("^gconfd$"); keep_hostname(yes);chain_hostnames(on);create_dirs(yes); }; |
Cree un archivo para configurar la recepción de los servicios:
1 | root@syslogng:~# vim /etc/syslog-ng/conf.d/services_logs.conf |
Dentro de dicho archivo configure los servicios de la forma siguiente:
1 2 3 4 5 6 7 8 9 10 11 | source net_squid { tcp(ip(0.0.0.0) port(1020)); }; destination log_squid { file("/var/log/$HOST/squid/access.log"); }; log { source(net_squid); destination(log_squid); }; source net_mail { tcp(ip(0.0.0.0) port(1021)); }; destination log_mail { file("/var/log/$HOST/mail.log"); }; log { source(net_mail); destination(log_mail); }; source net_dns { tcp(ip(0.0.0.0) port(1022)); }; destination log_dns { file("/var/log/$HOST/named.log"); }; log { source(net_dns); destination(log_dns); }; |
Y listo, se reinicia el servicio
1 | root@syslogng:~# systemctl restart syslog-ng |
Configuración del syslog-ng como transmisor
Ahora accedemos a cada servidor a configurar el syslog-ng como cliente en cada uno de los servidores
Servidor DNS
1 | $ ssh -l root -p 22 192.168.0.20 |
Instalamos syslog-ng
1 | root@dns:~# apt -yq install gpm syslog-ng |
Creamos un archivo para configurar el envio de los logs del servicio
1 | root@dns:~# vim /etc/syslog-ng/conf.d/dns.conf |
dentro le ponemos lo siguiente
1 2 3 | source src_dns { file("/var/log/named/named.log"); }; destination dst_dns { tcp("192.168.0.27" port(1022)); }; log { source(src_dns); destination(dst_dns); }; |
reiniciamos el servicio
1 | root@dns:~# systemctl restart syslog-ng |
En el servidor de syslog-ng, veremos los logs reenviados en:
1 | root@syslog-ng:~# tail -f /var/log/DNS/named.log |
Servidor MAIL
1 | $ ssh -l root -p 22 192.168.0.22 |
Instalamos syslog-ng
1 | root@mail:~# apt -yq install gpm syslog-ng |
Creamos un archivo para configurar el envio de los logs del servicio
1 | root@mail:~# vim /etc/syslog-ng/conf.d/mail.conf |
dentro le ponemos lo siguiente
1 2 3 | source src_mail { file("/var/log/mail.log"); }; destination dst_mail { tcp("192.168.0.27" port(1021)); }; log { source(src_mail); destination(dst_mail); }; |
reiniciamos el servicio
1 | root@mail:~# systemctl restart syslog-ng |
En el servidor de syslog-ng, veremos los logs reenviados en:
1 | root@syslog-ng:~# tail -f /var/log/MAIL/mail.log |
Servidor PROXY
1 | $ ssh -l root -p 22 192.168.0.24 |
Instalamos syslog-ng
1 | root@proxy:~# apt -yq install gpm syslog-ng |
Creamos un archivo para configurar el envio de los logs del servicio
1 | root@proxy:~# vim /etc/syslog-ng/conf.d/proxy.conf |
dentro le ponemos lo siguiente
1 2 3 | source src_squid { file("/var/log/squid/access.log" multi-line-mode(indented)); }; destination dst_squid { tcp("172.30.0.27" port(1020)); }; log { source(src_squid); destination(dst_squid); flags(final);}; |
reiniciamos el servicio
1 | root@proxy:~# systemctl restart syslog-ng |
En el servidor de syslog-ng, veremos los logs reenviados en:
1 | root@syslog-ng:~# tail -f /var/log/PROXY/squid/access.log |
Y esto es todo.
Ya de esta forma tendran un servidor centralizado de los logs de los servicios.
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0
muy buen post; ya llevo tiempo usando esta herramienta; sería bueno extenderlo con una entrada para los logs estándar de los servidores (messages, syslog, user, auth, btmp, etc) y crear desde el mismo syslog-ng algún tipo de script que compactara los logs cada cierto tiempo. Sld2
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
En este sitio hay una solución como la que comentas, date una vuelta por aquí: https://www.sysadminsdecuba.com/2018/05/como-configurar-un-server-de-logs-en-linux-y-configurar-tus-clientes-correctamente/