当前位置:   article > 正文

Linux系统之audit_linux audit

linux audit

Linux 提供了用来记录系统安全信息的审计系统,使用 audit 系统可以在应用程序执行期间获取比如发生错误的时间,哪个文件导致错误以及原因,什么进程导致了错误等等信息。

用户空间审计系统

Linux内核拥有包括记录系统调用和文件访问等的日志记录事件的能力,管理员可以检查这些日志,确定是否存在安全漏洞,比如多次失败的登录尝试,或者用户对系统文件不成功的访问等。

1、Linux 内核中的几种系统调用

  • User 记录用户空间中产生的事件,它的作用是过滤消息的,内核传递给审计后台进程之前先查询它
  • Task 跟踪应用程序的子进程(fork),当一个任务被创建时,也就是父进程通过 fork 和克隆创建子进程时记录该事件
  • Exit 当一个系统调用结束时判断是否记录该调用
  • Exclude:删除不合格事件,Exclude 是用来过滤消息的,也就是不想看到的消息可以在这里写规则进行过滤。

2、Linux 用户空间审计系统由 auditd、audispd、auditctl、autrace、ausearch 和 aureport 等应用程序组成

  • auditctl : 即时控制审计守护进程的行为的工具,如添加规则等
  • auditd :audit 守护进程负责把内核产生的信息写入到硬盘上,这些信息由应用程序和系统活动触发产生。用户空间审计系统通过 auditd 后台进程接收内核审计系统传送来的审计信息,将信息写入到 /var/log/audit/audit.log
  • aureport : 查看和生成审计报告的工具
  • ausearch : 查找审计事件的工具
  • auditspd : 转发事件通知给其他应用程序,而不是写入到审计日志文件中
  • autrace : 一个用于跟踪进程的命令。类似于 strace,跟踪某一个进程,并将跟踪的结果写入日志文件之中

3、audit架构说明

  • audit 是内核中的一个模块,内核的运行情况都会在 audit 中记录,当然这个记录的规则是由超级用户来设置的
  • 内核的 audit 模块是由应用层的一个应用程序 auditd 来控制的
  • audit 产生的数据都会传送到 auditd 中,然后再由 auditd 进行其它操作
  • auditd.conf 是 auditd 的配置文件,确定 auditd 是如何启动的,日志文件放在哪里等等
  • audit.rules 是 audit 的规则文件,确定 audit 的日志中记录哪些操作
  • audit.rules通过一个对 audit 进行控制的应用程序 auditctl 进行操作,root 用户也可以直接调用 auditctl 进行操作
  • auditd 收到的数据后会有两个去处,默认的是将日志保存在 audit.log 文件中,默认路径/var/log/audit/audit.log,另一个通过 audispd 将日志进行分发

4、使用安全审计系统

  • 安装软件包
  • 设置配置文件、配置常用命令,添加审计规则
  • 启用 audit 守护进程并开始进行日志记录
  • 通过生成审计报表和搜索日志来周期性地分析数据。

5、audit 和 syslog 日志系统的关系

  • audit 主要用来记录安全信息,用于对系统安全事件的追溯
  • syslog 日志系统用来记录系统中的各种信息,如硬件警报和软件日志等
  • syslog 属于应用层,没办法记录太多信息
  • audit 来记录内核信息,包括文件的读写,权限的改变等

audit配置以及用法

1、安装 audit

#yum install audit*.* -y
  • 1

也可以选择源码安装

2、audit 配置文件

  • /etc/audit/auditd.conf 是守护程序的默认配置文件
  • /etc/audit/audit.rules 是记录审计规则的文件(初始审计规则文件是空的)
  • /etc/audit/auditd.conf 文件包括如下几个部分:一般先设置 auditd 的日志文件,然后设置是否循环使用日志文件,配置日志文件大小和报警信息,设置审计规则信息和目录观察器
    CentOS示例
#设置日志文件
log_file = /var/log/audit/audit.log
#设置日志文件轮询的数目,它是 0~99 之间的数
#如果设置为小于 2,则不会循环日志
#如果没有设置 num_logs 值,它就默认为 0,意味着从来不循环日志文件
num_logs = 5
#设置日志文件是否使用主机名称,一般选 NONE
name_format = NONE
#设置日志文件大小,以兆字节表示的最大日志文件容量
max_log_file = 6
#设置日志文件到达最大值后的动作,这里选择 ROTATE(轮询)
max_log_file_action = ROTATE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3、auditctl 命令

auditctl [ ] filter, action -S syscall -F condition -k label
#filter可选user,exit,task,exclude 详细说明哪个内核规则匹配过滤器应用在事件中,可选中之一为与规则匹配的过滤器
#action可选always,never 是否审核事件 always表示是 never表示否
#syscall可选all,2,open等 所有的系统调用都可以在/usr/include/asm/unistd_64.h文件中找到,许多系统调用都能形成一个规则
#condition可选euid=0, arch=b64 详细说明其他选项,进一步修改规则来与以特定架构,ID,进程ID和其他内容为基础的事件相匹配
#label可选任意文字 标记审核事件并检索日志
#-S 表示系统调用号或名字 -F 表示规则域 -k 表示设置审计规则上的过滤关键
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4、audit 审计规则
audit 审计规则分成三个部分

  • 控制规则:这些规则用于更改审计系统本身的配置和设置,可以在/etc/audit/audit.rules 中设置
  • 文件系统规则:这些是文件或目录监视。 使用这些规则,我们可以审核对特定文件或目录的任何类型的访问,可以通过 auditctl 命令设置,监控文件系统行为(依靠文件、目录的权限属性来识别),也可以加入到文件/etc/audit/rules.d/audit.rules 中即可实现对该文件的监视
auditctl -w /etc/passwd -p wa
auditctl -w /etc/hosts -p wa -k hosts_change
  • 1
  • 2
  • 系统调用规则:这些规则用于监视由任何进程或特定用户进行的系统调用,可能会引起高负荷的日志活动,这会让内核承受更大的负荷,所以要慎重衡量哪些系统调用需要放到 audit.rules 中
#file 是用户自己设置的一个规则名字
auditctl -a always,exit -F arch=b64 -F auid=10001 -S open -k file
  • 1
  • 2

通过 auditctl 命令添加的规则不是永久有效的,重新启动后有效的,可以将命令添加到文件/etc/audit/rules.d/audit.rules 中

5、auditd 守护进程

service auditd start #启动
service auditd stop #停止
systemctl enable auditd #自启动
service auditd restart #重启
service auditd reload #重加载配置
service auditd rotate #旋转日志文件
service auditd resume #推迟审核事件日志之后重新开始
service auditd status #显示运行状态
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

6、aureport生成审计消息的报表
示例

aureport #生成汇总报表
aureport -ts 9:00 -te 18:00 -f –i #生成一段特定时间内的报告
aureport -u --failed --summary –i #生成所有用户失败事件的总结报告
aureport -s -i --summary #生成系统调用事件报告
  • 1
  • 2
  • 3
  • 4

7、ausearch搜索记录
audit 系统附带了一个功能强大的工具,称为 ausearch 搜索审计日志,使用 ausearch可以过滤和搜索事件类型,还可以通过将数值转换为更加直观的值(如系统调用或用户名)来解释事件
示例

ausearch --messag e USER _LO G IN --success no --i nterpret #搜索系统登录失败
ausearch -m ADD _USER -m DEL_USER -m ADD _GROUP -m USER _CHAUT HTOK -m D EL_GROUP -m CHGRP_ID -m ROLE_ASSIGN -m ROLE_REMOVE -i #搜索所有的账户,群组,角色变更
ausearch --start 04/27/2019 --end 04/29/2019 no w -m SYSCALL -sv no –i #搜寻从指定时间段的失败的系统调用
ausearch -k key | less #使用关键字(key)搜索审计事件记录(使用关键字可提高效率,但需要建立关键字审计规则)
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/759031
推荐阅读
相关标签
  

闽ICP备14008679号