如何从应用程序登录到 AUDITD?

Posted

技术标签:

【中文标题】如何从应用程序登录到 AUDITD?【英文标题】:How to log to AUDITD from application? 【发布时间】:2018-08-31 09:43:50 【问题描述】:

我们正在考虑从 rsyslog 迁移到 auditd,但我还没有找到应用程序应该如何将日志消息输出到 auditd。 (使用 rsyslog 有据可查)。

【问题讨论】:

我投票决定将此问题作为离题结束,因为应该迁移到 unix.stackexchange.com 我现在明白这不是应用程序问题,但其他人也可以提出同样的问题。 @ransh - 如果其他问题不在主题范围内,那么这些问题也应该被否决并关闭。你能引用其中的一些吗?我很乐意关闭离题的。 无法删除。 【参考方案1】:

您将 auditd 理解为日志记录的替代品是不正确的。 Auditd 不是 syslog/rsyslog 类型日志记录的直接替代品。相反,它会根据对内核的系统调用生成日志。

然后man page解释一下:

auditd 是 Linux 审计系统的用户空间组件。它是 负责将审计记录写入磁盘。查看日志 使用ausearchaureport 实用程序完成。配置 审计系统或加载规则是使用 auditctl 实用程序完成的。 在启动过程中,/etc/audit/audit.rules 中的规则被读取 auditctl 并加载到内核中。或者,还有一个 augenrules 读取位于/etc/audit/rules.d/ 中的规则的程序 并将它们编译成audit.rules 文件。审计守护进程本身 有一些管理员可能希望自定义的配置选项。 它们位于auditd.conf 文件中。

还有一个很好的auditd概述,标题为:A Brief Introduction to auditd:

.... 因为它在内核级别运行,这给了我们一个挂钩到我们想要的任何系统操作。我们可以选择在发生特定系统调用时写入日志,无论是 unlink 还是 getpid。我们可以监控对任何文件、所有网络流量以及我们想要的任何东西的访问。细节层次非常惊人,而且由于它在如此低的层次上运行,信息的粒度非常有用。

我还将引导您阅读本教程,标题为:How To Use the Linux Auditing System on CentOS 7。以下是您将从 auditd 获得的日志记录类型的示例。

type=SYSCALL msg=audit(1434371271.277:135496): arch=c000003e syscall=2 success=yes exit=3 a0=7fff0054e929 a1=0 a2=1fffffffffff0000 a3=7fff0054c390 items=1 ppid=6265 pid=6266 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=113 comm="cat" exe="/usr/bin/cat" key="sshconfigchange"

type=CWD msg=audit(1434371271.277:135496):  cwd="/home/sammy"

type=PATH msg=audit(1434371271.277:135496): item=0 name="/etc/ssh/sshd_config" inode=392210 dev=fd:01 mode=0100600 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL

这全部来自单个事件,但通过 auditd 记录了 3 条消息。您可以通过msg=audit(...) 字段判断哪些事件是关联的。

我向您展示这个示例,因为这种类型的日志记录是由内核驱动的,而不是应用程序本身。

注意: Auditd 的真正目的是生成与 Linux 内核交互的审计日志,而 syslog/rsyslog 真正用于来自应用程序本身的通用日志记录。

【讨论】:

嗨,slm,如何在内核中添加额外的系统调用,代表“系统问题”,并由应用程序使用?这是一种有效的方法吗? @slm 说 auditd 和 rsyslog 不可互换并服务于不同的用例是正确的。但请注意,您可以通过 libaudit 从用户空间创建 auditd 日志。例如,Open SSH 服务器就是这样做的。

以上是关于如何从应用程序登录到 AUDITD?的主要内容,如果未能解决你的问题,请参考以下文章

auditd服务,是干啥的?

SELinux系列(十五)—auditd日志使用方法详解

使用 auditd 监控重启/关机执行

apex 如何从一个应用程序中的链接登录到另一个应用程序?

如何将角度应用程序从keycloak登录重定向到特定路线

如何从 AngularJS 应用程序登录到 Google Cloud Logging?