##我的理解
在 *nix 服务器上,我们使用 来配置发送日志facility.severity
,其中facility
是系统(我们称之为)“组件”的名称,例如内核、身份验证等;是severity
设施记录的每个日志的“级别”,例如info
(信息)日志、crit
(关键)日志。
因此,如果我想发送内核关键日志,我将使用kern.crit
.
设施和严重性的组合被称为优先级,例如......
- 优先级 = kern.crit
- 设施=紧缩
- 严重程度=暴击
##问题
有称为 的“设施local0
” local7
。
这些设施到底是什么local#
?我具体询问的是local6
,因为它通常是我在搜索中找到的最常见的一个。
我的问题实际上是因为我正在配置 Snort(SourceFire 入侵传感器)来发送日志,所以我想知道facility
使用哪个。不过,我的问题并不是 Snort 特有的,因为local#
设施无处不在;例如,在 Cisco 和 IBM 的 WebSphere Application Server 上。
##研究
RFC3164
,这是定义 syslog 协议的地方,仅表示:local6 - local use 6
这并没有真正描述它,而不是:
auth - security/authorization messages
- 在 Ubuntu 中,
man syslog
显示:
LOG_LOCAL0 到 LOG_LOCAL7 保留供本地使用
还有,模糊。
答案1
基本信息
这些设施local0
是local7
syslog 为用户提供的“自定义”未使用的设施。如果开发人员创建应用程序并希望将其记录到 syslog,或者如果您希望将任何内容的输出重定向到 syslog(例如 Apache 日志),则可以选择将其发送到任何设施local#
。然后,您可以使用/etc/syslog.conf
(或/etc/rsyslog.conf
) 将发送到该文件的日志保存local#
到文件,或将其发送到远程服务器。
回答我的问题
我问这个问题是因为我想将日志发送到外部服务器,所以我想知道选择哪一个,而不是“将日志写入设施local#
”。我必须返回 Snort 文档来了解他们正在向local#
设施写入什么内容。
答案2
Local#
设施专用于本地使用,并且没有任何标准定义(如 RFC)哪个设施由哪个应用程序使用。所以你可以选择任何你想要的。当然,某些应用程序及其开发人员同意使用特定的工具,但这不是官方标准(例如 sudo - LOCAL2、Snort - LOCAL5,...)。