De acordo com o meu entendimento, os formatos populares de syslog são:
RFC 3124 (syslog BSD):
Formato: < priority > timestamp hostname application: message
Exemplo: <133>Fev 25 14:09:07 webserver syslogd: restart
RFC 5424 (syslog IETF):
Formato: < prioridade >VERSÃO ISOTIMESTAMP HOSTNAME APLICAÇÃO PID MESSAGEID DADOS ESTRUTURADOS MSG
Exemplo: <34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 - BOM'su root' falhou para lonvick em /dev/pts/8
Mas vamos ver os formatos de log de outras empresas:
Cisco:
Exemplo: *18 de janeiro 03:02:42: %LINEPROTO-5-UPDOWN: Protocolo de linha na interface GigabitEthernet0/0, estado alterado para inativo
Fortinet (Aqui você pode ver syslog no par chave-valor. Isso é mesmo syslog?)
Exemplo: <190>date=2015-03-30 time=14:42:11 logid=0508020503 type=utm subtype=emailfilter eventtype=smtp level=information vd="root" sessionid=83879670 srcip=12.130.136.122 srcport=48137 dstip=xxxx dstport=25 proto=6 service=SMTP profile="EF_Example" action=log-only from="[email protected]" to="mail2@xx" sender="[email protected] " destinatário="mail2@xx" sendbyte=15369 rcvdbyte=46 direction=outgoing msg="general email log" subject="Novos Treinamentos para Certificação Trend Micro" size="15360" attachment=no
- Isso significa que o formato syslog pode ser modificado de acordo com suas necessidades. Então, como os softwares SIEM podem analisar esses logs se diferentes empresas seguem diferentes formatos de syslog?.
- Qual é o sentido de ter um RFC, então, se diferentes empresas seguem diferentes práticas de registro?
- Minha última pergunta, esses formatos são mesmo syslog?
Como uma resposta muito curta: porque um RFC não altera a base de código existente escrita em 15-25 anos.
Todos os tipos de formatos Syslog foram desenvolvidos e usados desde o início dos anos 80 (AFAIK o conceito originou-se no sendmail, e o primeiro daemon syslog fazia parte do 4.3 BSD em 1986). Com as Guerras do Unix e o fim do BSD, todos estavam livres para construir o que precisavam e havia pouco incentivo para padronizar qualquer coisa. Um padrão mínimo teria sido "tudo o que o syslogd do BSD pode processar", e mesmo assim muitas implementações se desviaram disso, por exemplo, para adicionar key=value ou suporte TCP.
A RFC 3124 é uma RFC informativa de 2001. Não é normativa (no sentido de "isto é Syslog e qualquer outra coisa não é"), mas adota a abordagem "veja o que está lá fora e descreva um pequeno terreno comum".
A RFC 5424 como padrão proposto tem essa abordagem normativa. Mas é de 2009, e mesmo naquela época é "apenas mais um padrão opcional", pois era (e ainda é) praticamente impossível alterar todo o código existente e útil por aí.