我希望能够过滤 Linux 计算机上 Syslog 中的特定条目。例如,我希望能够过滤用户身份验证失败或成功,或访问敏感信息等。
我认为我必须首先获取所有可能的 Syslog 消息的列表,像这样,但用于 Syslog 消息。
答案1
这样的列表是不可能的,因为与 Windows 事件(具有静态的 ID 列表、每个 ID 的特定模板以及仅填写参数)不同,系统日志消息只是自由格式的文本。
即使要枚举单个程序的可能消息,也需要搜索其源代码以查找syslog()
调用,这些调用可能通过自定义函数间接进行,通过各种库(例如 log4net)进行,或者根本不使用 syslog(例如各种程序使用 systemd-journal 函数)。因此,这需要对每个程序的源代码有特定的了解,并且无法在整个 Linux 发行版的规模上轻松实现自动化——这必须是自动化的,因为新版本可能有不同的消息。
(systemd 日志确实有可选的消息 ID 和包含描述和翻译的“目录”文件。它仍然是可选的,并且使用很少见。)
实际上,即使是 Windows 事件消息列表也只涵盖标准操作系统组件和 MS Office 之类的东西。它们无法可能涵盖第三方软件可能记录的所有消息,这些软件可能会安装自己的目录和事件 ID,甚至提交自由格式的消息。