如何从应用程序登录到 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 审计系统的用户空间组件。它是 负责将审计记录写入磁盘。查看日志 使用
ausearch
或aureport
实用程序完成。配置 审计系统或加载规则是使用 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?的主要内容,如果未能解决你的问题,请参考以下文章