ausearch
作者:互联网
这是许多新系统管理员提出的关键问题之一:
如何审核文件事件,如读/写等? 如何使用audit查看谁在Linux中更改了文件?
答案是使用2.6内核的审计系统。 现代Linux内核(2.6.x)附带auditd守护程序。 它负责将审计记录写入磁盘。 在启动期间,此守护程序将读取/etc/audit.rules中的规则。 您可以打开/etc/audit.rules文件并进行更改,例如设置审核文件日志位置和其他选项。 默认文件足以开始使用auditd。
要使用审计功能,您需要使用以下实用程序
=> auditctl - 一个帮助控制内核审计系统的命令。 您可以获取状态,并在内核审计系统中添加或删除规则。 使用以下命令完成在文件上设置监视:
=> ausearch - 一个可以根据不同搜索条件查询事件的审计守护程序日志的命令。
=> aureport - 生成审计系统日志摘要报告的工具。
请注意,所有说明都在CentOS 4.x和Fedora Core以及RHEL 4/5 Linux上进行了测试。
任务:安装审计包
审计包中包含用于存储和搜索由Linux 2.6内核中的审计子系统生成的审计记录的用户空间实用程序。CentOS / Red Hat和Fedora核心包括审计rpm包。 使用yum或up2date命令安装包
# yum install audit
要么
# up2date install audit
启动时自动启动审计服务
# ntsysv
要么
# chkconfig auditd on
现在开始服务:
# /etc/init.d/auditd start
如何在文件上设置监视以进行审核?
我们假设您要审核/ etc / passwd文件。 您需要键入命令,如下所示:
# auditctl -w /etc/passwd -p war -k password-file
哪里,
-w / etc / passwd :在给定路径上插入文件系统对象的监视,即名为/ etc / passwd的监视文件
-p war :为文件系统监视设置权限筛选器。 它可以是r用于读取,w用于写入,x用于执行,a用于追加。
-k password-file :在/ etc / passwd文件(watch)上设置过滤器密钥。 密码文件是一个filterkey(文本字符串,最长可达31个字节)。 它可以唯一标识手表生成的审计记录。 搜索审计日志时需要使用密码文件字符串或短语。
简而言之,您正在监视(读取为正在观看)任何可能对文件执行写入,追加或读取操作的任何人(包括系统调用)的/ etc / passwd文件。
等待一段时间或作为普通用户运行命令,如下所示:
$ grep 'something' /etc/passwd
$ vi /etc/passwd
以下是更多示例:
文件系统审核规则
使用任意filterkey“shadow-file”在“/ etc / shadow”上添加一个监视,该监视器生成“shadow”上的“读取,写入,执行和追加”记录
# auditctl -w /etc/shadow -k shadow-file -p rwxa
系统调用审计规则
下一个规则禁止审计mount syscall出口
# auditctl -a exit,never -S mount
文件系统审核规则
添加一个带有NULL过滤键的监视“tmp”,该键在“/ tmp”上生成记录“执行”(适用于Web服务器)
# auditctl -w /tmp -pe -k webserver-watch-tmp
使用PID的系统调用审计规则
要查看名为sshd(pid - 1005)的程序所做的所有系统调用:
# auditctl -a entry,always -S all -F pid=1005
如何找出谁更改或访问了文件/ etc / passwd?
使用ausearch命令如下:
# ausearch -f /etc/passwd
要么
# ausearch -f /etc/passwd | less
要么
# ausearch -f /etc/passwd -i | less
哪里,
-f / etc / passwd:仅搜索此文件
-i :将数字实体解释为文本。 例如,uid将转换为帐户名称。
输出:
----
type = PATH msg = audit(03/16/2007 14:52:59.985:55):name = / etc / passwd flags = follow,open inode = 23087346 dev = 08:02 mode = file,644 ouid = root ogid = root rdev = 00:00
type = CWD msg = audit(03/16/2007 14:52:59.985:55):cwd = / webroot / home / lighttpd
type = FS_INODE msg = audit(03/16/2007 14:52:59.985:55):inode = 23087346 inode_uid = root inode_gid = root inode_dev = 08:02 inode_rdev = 00:00
type = FS_WATCH msg = audit(03/16/2007 14:52:59.985:55):watch_inode = 23087346 watch = passwd filterkey = password-file perm = read,write,append perm_mask = read
type = SYSCALL msg = audit(03/16/2007 14:52:59.985:55):arch = x86_64 syscall = open success = yes exit = 3 a0 = 7fbffffcb4 a1 = 0 a2 = 2 a3 = 6171d0 items = 1 pid = 12551 auid = unknown(4294967295)uid = lighttpd gid = lighttpd euid = lighttpd suid = lighttpd fsuid = lighttpd egid = lighttpd sgid = lighttpd fsgid = lighttpd comm = grep exe = / bin / grep
让我们试着了解输出
audit(03/16/2007 14:52:59.985:55) :审核日志时间
uid = lighttpd gid = lighttpd :数字格式的用户ID。 通过将-i选项传递给命令,您可以将大多数数值数据转换为人类可读格式。 在我们的示例中,用户使用lighttpd grep命令打开文件
exe =“/ bin / grep” :命令grep用于访问/ etc / passwd文件
perm_mask = read:文件已打开以进行读取操作
因此,从日志文件中,您可以清楚地看到谁使用grep读取文件或使用vi / vim文本编辑器对文件进行了更改。Log提供了大量其他信息。 您需要阅读手册页和文档以了解原始日志格式。
其他有用的例子
搜索带有日期和时间戳的事件。 如果省略日期,则假设今天。 如果省略时间,现在假设。 使用24小时制时间而不是AM或PM来指定时间。 示例日期是10/24/05。 时间的一个例子是18:00:00。
# ausearch -ts today -k password-file
# ausearch -ts 3/12/07 -k password-file
使用-x选项搜索与给定可执行文件名匹配的事件。 例如,找出谁使用rm命令访问/ etc / passwd:
# ausearch -ts today -k password-file -x rm
# ausearch -ts 3/12/07 -k password-file -x rm
搜索具有给定用户名(UID)的事件。 例如,找出用户vivek(uid 506)是否尝试打开/ etc / passwd:
# ausearch -ts today -k password-file -x rm -ui 506
# ausearch -k password-file -ui 506
标签:审计,ausearch,passwd,lighttpd,etc,file 来源: https://blog.51cto.com/15061935/2653882