据我了解,流行的系统日志格式有:
RFC 3124(BSD 系统日志):
格式: <优先级>时间戳主机名应用:消息
示例: <133>Feb 25 14:09:07 webserver syslogd: restart
RFC 5424(IETF 系统日志):
格式: <优先级>VERSION ISOTIMESTAMP HOSTNAME APPLICATION PID MESSAGEID STRUCTURED-DATA MSG
示例: <34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 - BOM'su root' 在 /dev/pts/8 上为 lonvick 失败
但是让我们看看其他公司的日志格式:
思科:
示例: *Jan 18 03:02:42: %LINEPROTO-5-UPDOWN: 接口 GigabitEthernet0/0 上的线路协议,将状态更改为关闭
Fortinet(在这里你可以看到键值对中的 syslog。这甚至是 syslog 吗?)
示例: <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] "收件人="mail2@xx" sentbyte=15369 rcvdbyte=46 direction=outgoing msg="一般电子邮件日志" subject="Novos Treinamentos para Certificação Trend Micro" size="15360" attachment=no
- 这是否意味着可以根据自己的需要修改 syslog 格式。那么如果不同的公司遵循不同的 syslog 格式,那么 SIEM 软件如何解析这些日志呢?
- 如果不同的公司遵循不同的日志记录实践,那么拥有 RFC 有什么意义呢?
- 我的最后一个问题,这些甚至是系统日志格式吗?
作为一个非常简短的答案:因为 RFC 不会更改 15-25 年内编写的现有代码库。
自 1980 年代初以来,各种 Syslog 格式已经被开发和使用(AFAIK 这个概念起源于 sendmail,第一个 syslog 守护进程是1986 年4.3 BSD的一部分)。随着 Unix 战争和 BSD 的结束,每个人都可以自由地构建他们需要的东西,并且没有什么动力去标准化任何东西。一个最小的标准应该是“BSD syslogd 可以处理的一切”,即使这样,许多实现也有意识地偏离了这个标准,例如添加 key=value 或 TCP 支持。
RFC 3124是 2001 年的信息 RFC。它不是规范性的(在“这是 Syslog 而其他任何东西都不是”的意义上),而是采用“看看那里有什么并描述一个小的共同点”的方法。
作为提议标准的RFC 5424具有这种规范性方法。但它是从 2009 年开始的,即使在那个时候它也只是“另一个可选标准”,因为几乎不可能(现在仍然)改变所有现有的和有用的代码。