10.2. SELinux 和 journald
在
systemd 中,journald 守护进程(也称为 systemd-journal)是 syslog 工具的替代选择,它是一个收集和存储日志数据的系统服务。它根据从内核接收的日志信息、使用 libc syslog () 函数、系统服务的标准和错误输出,或使用其原生 API 来创建和维护结构化和索引日志。它以安全的方式为每个日志消息隐式收集大量元数据字段。
systemd-journal 服务可与 SELinux 一起使用以提高安全性。SELinux 控制进程仅允许进程执行它们所设计的操作;有时,根据策略编写者的安全目标,有时更少一些。例如,SELinux 可防止被破坏的 ntpd 进程执行除处理网络时间以外的操作。但是,ntpd 进程会发送 syslog 消息,以便 SELinux 允许被入侵的进程继续发送这些消息。被破坏的 ntpd 可能会格式化 syslog 消息以匹配其他守护进程,并可能会出错管理员甚至更糟糕的实用程序,读取 syslog 文件以破坏整个系统。
systemd-journal 守护进程会验证所有日志消息,另外还添加了 SELinux 标签。然后可以轻松地检测日志消息中的不一致情况,并在发生之前防止这种类型的攻击。您可以使用 journalctl 实用程序查询 systemd 日志的日志。如果没有指定命令行参数,则运行此实用程序会列出日志的完整内容,从最旧的条目开始。要查看系统上生成的所有日志,包括系统组件的日志,请以 root 用户身份执行 journalctl。如果您以非 root 用户身份执行它,则输出将仅限于与当前登录用户相关的日志。
例 10.2. 使用 journalctl列出日志
可以使用
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
journalctl 列出与特定 SELinux 标签相关的所有日志。例如,以下命令列出了 system_u:system_r:policykit_t:s0 标签下记录的所有日志:
有关
journalctl 的更多信息,请参阅 journalctl(1) 手册页。