Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

05 - Syslog (514)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Syslog (UDP 514)

1. Definição e Histórico

O syslog é o protocolo padrão para envio de mensagens de log em redes IP. Originalmente desenvolvido por Eric Allman em 1983 como parte do sendmail (BSD 4.2), foi formalizado como padrão na RFC 3164 (2001) e revisado na RFC 5424 (2009, versão atual). Opera sobre:

  • UDP 514 — padrão histórico, ainda amplamente usado. Sem garantia de entrega.
  • TCP 514 — em algumas implementações (rsyslog, syslog-ng) para entrega confiável.
  • TCP 6514 — syslog sobre TLS (RFC 5425), recomendado em produção.

O syslog é ubíquo em sistemas Unix e equipamentos de rede. Todo roteador, switch, firewall, servidor Linux e a maioria dos appliances emitem logs via syslog. Em Windows, o Event Viewer pode retransmitir para syslog via ferramentas como NXLog ou WinCollect.

2. Formato da Mensagem Syslog (RFC 5424)

Uma mensagem syslog tem formato textual estruturado:

<PRI>VERSION TIMESTAMP HOSTNAME APP-NAME PROCID MSGID [SD-ID] MSG

Exemplo Real

<134>1 2024-01-15T12:30:45.123Z router-core-01 bgp 5678 ID47 [origin software="rsyslogd" swVersion="8.2102.0"] BGP session to peer 203.0.113.5 went down

Decomposição

Campo Valor Descrição
PRI 134 Priority = (facility × 8) + severity
VERSION 1 Versão do protocolo
TIMESTAMP 2024-01-15T12:30:45.123Z ISO 8601 com timezone
HOSTNAME router-core-01 Origem da mensagem
APP-NAME bgp Aplicação que gerou
PROCID 5678 PID ou identificador
MSGID ID47 Tipo de mensagem
STRUCTURED DATA [origin software=...] Dados estruturados (chave=valor)
MSG BGP session... Texto livre da mensagem

PRI (Priority)

Calculado como (Facility × 8) + Severity. No exemplo, 134 = 16 × 8 + 6 = facility local0, severity info. Equivalente decimal permite ao servidor priorizar, filtrar e rotear.

3. Facilities

A facility indica qual subsistema gerou a mensagem. As 24 facilities padronizadas:

Código Facility Origem típica
0 kern Mensagens do kernel
1 user Aplicativos genéricos
2 mail Subsistema de email (postfix)
3 daemon Daemons do sistema (cron, sshd)
4 auth Segurança/login (login, su)
5 syslog Interno do syslogd
9 cron Agendador cron
10 authpriv Segurança privada (senhas)
16-23 local0-local7 Uso local (customizável)

Cisco por padrão usa local7 para seus logs (configurável). Aplicações customizadas frequentemente usam local0 a local6.

4. Severities (RFC 5424)

A severidade indica a importância da mensagem. Existem 8 níveis, do mais grave (0) ao mais detalhado (7):

Código Nome Descrição Exemplo
0 Emergency Sistema inutilizável Kernel panic
1 Alert Ação imediata requerida Disco cheio crítico
2 Critical Condição crítica Falha de hardware
3 Error Erro Falha ao abrir arquivo
4 Warning Aviso Disco > 80%
5 Notice Normal mas significativo Login de root
6 Informational Mensagem informativa Interface subiu
7 Debug Mensagem de debug Detalhes de protocolo

Em prática, a maioria dos equipamentos só emite até o nível 6 (info); debug é habilitado sob demanda. Quando você configura "logging level informational", está dizendo ao syslog para aceitar mensagens 0-6.

5. Implementações de Servidores Syslog

syslog-ng (Balabit / One Identity)

Servidor syslog flexível, com suporte a TCP, TLS, destinos complexos (SQL, MongoDB, Kafka, Elasticsearch), filtros poderosos. Configuração declarativa.

# /etc/syslog-ng/syslog-ng.conf
source s_network {
    udp(ip("0.0.0.0") port(514));
    tcp(ip("0.0.0.0") port(514));
    syslog(ip("0.0.0.0") port(6514) tls(peer-verify(required-trusted) ca-dir('/etc/syslog-ng/ca.d')));
};

filter f_cisco { facility(local7); };
filter f_critical { level(emerg..err); };

destination d_cisco { file("/var/log/cisco/$HOST.log" create-dirs(yes)); };
destination d_elastic { elasticsearch(client-mode("http") server("localhost:9200") index("syslog")); };

log { source(s_network); filter(f_cisco); destination(d_cisco); };
log { source(s_network); filter(f_critical); destination(d_alerts); };

rsyslog

Servidor syslog padrão em distribuições modernas (RHEL, Debian, Ubuntu). Mais rápido que syslog-ng em alta carga, suporta RELP (Reliable Event Logging Protocol) sobre TCP.

# /etc/rsyslog.conf
$ModLoad imudp
$ModLoad imtcp
$UDPServerRun 514
$InputTCPServerRun 514

# Encaminhar para servidor central
*.* @@logs.example.com:6514   # @ = UDP, @@ = TCP

# Templates personalizados
template(name="RemoteLog" type="string" string="/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")

# Encaminhar Cisco para arquivo separado
if $fromhost-ip startswith "10.0." and $syslogfacility-text == "local7" then {
    action(type="omfile" dynaFile="RemoteLog")
    stop
}

systemd-journald

Substituto parcial em systemd (modernas distros Linux). Captura logs estruturados em formato binário. Compatível com syslog via forward.

6. Sistemas de Centralização (SIEM)

O syslog é o protocolo de coleta; o processamento é feito por plataformas de análise:

Splunk

Plataforma comercial líder em análise de logs. Indexador poderoso, busca SPL (Search Processing Language). Pode receber syslog via coletor (heavy forwarder, universal forwarder) ou diretamente via UDP/TCP.

Elastic Stack (ELK)

  • Logstash/Beats — coleta e parsing.
  • Elasticsearch — indexação e busca.
  • Kibana — visualização.

Open source, escalável, popular em ambientes modernos.

Graylog

Plataforma open-source baseada em Elasticsearch/OpenSearch, com interface rica, fluxos de processamento visual, alertas.

SIEMs Comerciais

  • IBM QRadar, Micro Focus ArcSight, LogRhythm, Securonix, Exabeam.

Syslog como base

Todos esses SIEMs recebem syslog como protocolo de ingestão principal. Para integração, é fundamental padronizar formato (RFC 5424), relógio (via NTP) e naming de host.

7. Boas Práticas em Produção

Usar TCP ou RELP em vez de UDP

UDP pode perder mensagens em caso de congestionamento ou buffer cheio. Em produção:

  • TCP 514 com RELP para entrega garantida.
  • TLS (porta 6514) para confidencialidade.

Separar Logs por Origem

Mantenha arquivos separados por host ou tipo de equipamento:

/var/log/remote/routers/router-sp-01.log
/var/log/remote/switches/sw-access-01.log
/var/log/remote/firewalls/fw-edge-01.log

Rotação de Logs

# /etc/logrotate.d/syslog-remote
/var/log/remote/*/*.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 0640 syslog adm
}

Sincronização de Tempo (NTP)

Logs sem timestamps precisos são inúteis para correlação de incidentes. Toda origem de syslog deve rodar NTP sincronizado com a mesma fonte.

Filtragem de Logs Ruidosos

Alguns equipamentos geram logs excessivos. Filtrar no servidor syslog reduz volume:

# Descartar mensagens repetitivas
:msg, contains, "interface link down due to BFD" stop
:msg, contains, "STP BLOCK" ~

TLS Mútuo (mTLS)

Em ambientes de alta segurança, configurar certificados cliente no emissor e servidor no coletor. Garante que apenas emissores autorizados enviem logs (evita injeção de logs falsos).

8. Diagnóstico e Troubleshooting

Testar envio de syslog

# Do Linux
logger -p local0.info -t test "Mensagem de teste"

# Com netcat
echo "<134>1 $(date -u +%Y-%m-%dT%H:%M:%S+00:00) meu-host test - - Teste" | nc -u -w1 192.168.99.10 514

Capturar tráfego syslog

sudo tcpdump -ni eth0 -vvv 'port 514 or port 6514'
sudo tcpdump -ni eth0 'udp port 514' -A

Verificar se servidor está recebendo

# rsyslog em modo debug
rsyslogd -dn

# Ver filas internas
ss -lun | grep 514

# Logs do rsyslog
journalctl -u rsyslog -f

Cisco: testar syslog

send log teste

Deve gerar uma mensagem com facilidade local7 (default).

9. Tabela Resumo

Conceito Valor
RFC atual 5424 (substitui 3164)
RFC syslog TLS 5425
Porta UDP 514
Porta TCP 514 (rsyslog, syslog-ng)
Porta TLS 6514
Porta RELP 2514
Facilities 24 (0-23)
Severities 8 (0-7)
PRI (facility × 8) + severity

10. Conclusão

O syslog é o tecido conectivo da observabilidade em infraestruturas de TI. Apesar de sua idade (mais de 40 anos desde o syslog original do sendmail), permanece como o padrão universal de coleta de logs — todo equipamento de rede, servidor Linux e a maioria dos appliances emitem syslog. A versão RFC 5424 modernizou o formato com timestamps ISO 8601, dados estruturados e codificação UTF-8. Em conjunto com TLS (RFC 5425) e TCP/RELP, oferece entrega confiável e segura para ambientes corporativos. Para engenheiros, dominar syslog é fundamental: configurar origens, centralizar em servidores dedicados (rsyslog, syslog-ng), rotear para SIEMs (Splunk, ELK, Graylog), filtrar ruído e correlacionar com timestamps NTP. Sem syslog centralizado, o troubleshooting de redes distribuídas é praticamente impossível — é a base de qualquer estratégia de observability moderna.