如何使用Audit记录Linux系统中文件改动

概述

Linux Auditing System可以记录操作系统中的操作日志,包括文件读写、系统调用都可以记录到日志中,出现问题可以用于审计。本文主要介绍CentOS7系统下Audit工具的安装和配置。

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
  • 安装以CentOS7为例,执行以下命令安装audit工具。
    说明:CentOS 6与CentOS 8操作系统版本结束了生命周期(EOL),按照社区规则,CentOS 6/8的源地址内容已移除。当您在CentOS 6/8系统内继续使用默认配置的源地址时会发生报错。建议您先切换CentOS 6/8的源地址,然后再进行操作。具体操作,请参见CentOS 6 EOL如何切换源?CentOS 8 EOL如何切换源?
    yum install -y audit audit-libs
  • 配置参数
    audit安装后配置文件是在/etc/audit/auditd.conf目录下
    说明:max_log_file = 100表示每个日志文件最大限额,单位是M。
    num_logs = 20表示保留日志文件个数。
    max_log_file_action = ROTATE表示达到最大日志文件数后执行的操作,ROTATE表示滚动,则会删除最早的日志文件。
    此参数还支持IGNORE、SYSLOG、SUSPEND和KEEP_LOGS,通常为了保证磁盘空间有足够的剩余,一般选择ROTATE滚动。
  • 配置审计规则
    audit的rule配置文件是/etc/audit/audit.rules该文件是由/etc/audit/rules.d目录下的配置文件自动生成后给您, 以/etc目录审计为例,在/etc/audit/rules.d/audit.rules文件中添加以下规则。
    -w /etc -p rwxa -k etc_change_log
    说明:-p表示permission值可以为r=read, w=write, x=execute, a=attribute,表示监控这些类型的改动。-k表示key,是rule的唯一标识符,它主要是用于过滤。
  • 重启服务
    完成基础配置后执行以下命令重启audit服务,重启后配置开始生效。
    service auditd restart
  • 验证
    • 在/etc目录中执行以下命令创建testfile文件。
      touch /etc/testfile
    • 执行以下命令对testfile文件做写入操作。
      echo 111 > /etc/testfile
    • 执行以下命令对testfile文件做更改权限操作。
      chmod +x /etc/testfile

    • 执行以下命令对testfile文件做更改名称操作。
      mv /etc/testfile /etc/testfile.bak
    • 执行以下命令对testfile文件做删除操作。
      rm /etc/testfile.bak
    • 执行以下命令查看key在etc_change_log中记录的关于/etc/testfile文件日志。
      ausearch -f /etc/testfile -k etc_change_log 
      time->Thu Feb 13 17:13:02 2020
      type=PROCTITLE msg=audit(1581585182.035:6825171): proctitle=746F756368002F6574632F7465737466696C65
      type=PATH msg=audit(1581585182.035:6825171): item=1 name="/etc/testfile" inode=921833 dev=fd:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 objtype=CREATE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
      type=PATH msg=audit(1581585182.035:6825171): item=0 name="/etc/" inode=917505 dev=fd:01 mode=040755 ouid=0 ogid=0 rdev=00:00 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
      type=CWD msg=audit(1581585182.035:6825171):  cwd="/etc/audit/rules.d"
      type=SYSCALL msg=audit(1581585182.035:6825171): arch=c000003e syscall=2 success=yes exit=3 a0=7ffd8e1ee718 a1=941 a2=1b6 a3=7ffd8e1ebce0 items=2 ppid=23628 pid=28541 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=473 comm="touch" exe="/usr/bin/touch" key="etc_change_log"
      ----
      time->Thu Feb 13 17:13:05 2020
      type=PROCTITLE msg=audit(1581585185.794:6825537): proctitle="-bash"
      type=PATH msg=audit(1581585185.794:6825537): item=1 name="/etc/testfile" inode=921833 dev=fd:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
      type=PATH msg=audit(1581585185.794:6825537): item=0 name="/etc/" inode=917505 dev=fd:01 mode=040755 ouid=0 ogid=0 rdev=00:00 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
      type=CWD msg=audit(1581585185.794:6825537):  cwd="/etc/audit/rules.d"
      type=SYSCALL msg=audit(1581585185.794:6825537): arch=c000003e syscall=2 success=yes exit=3 a0=1873400 a1=241 a2=1b6 a3=fffffff0 items=2 ppid=23626 pid=23628 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=473 comm="bash" exe="/usr/bin/bash" key="etc_change_log"
      ----
      time->Thu Feb 13 17:13:08 2020
      type=PROCTITLE msg=audit(1581585188.789:6825785): proctitle=63686D6F64002B78002F6574632F7465737466696C65
      type=PATH msg=audit(1581585188.789:6825785): item=0 name="/etc/testfile" inode=921833 dev=fd:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
      type=CWD msg=audit(1581585188.789:6825785):  cwd="/etc/audit/rules.d"
      type=SYSCALL msg=audit(1581585188.789:6825785): arch=c000003e syscall=268 success=yes exit=0 a0=ffffffffffffff9c a1=2496100 a2=1ed a3=7fffc60da660 items=1 ppid=23628 pid=28567 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=473 comm="chmod" exe="/usr/bin/chmod" key="etc_change_log"
      ----
      time->Thu Feb 13 17:13:16 2020
      type=PROCTITLE msg=audit(1581585196.850:6826878): proctitle=726D002D69002F6574632F7465737466696C652E62616B
      type=PATH msg=audit(1581585196.850:6826878): item=1 name="/etc/testfile.bak" inode=921833 dev=fd:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 objtype=DELETE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
      type=PATH msg=audit(1581585196.850:6826878): item=0 name="/etc/" inode=917505 dev=fd:01 mode=040755 ouid=0 ogid=0 rdev=00:00 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
      type=CWD msg=audit(1581585196.850:6826878):  cwd="/etc/audit/rules.d"
      type=SYSCALL msg=audit(1581585196.850:6826878): arch=c000003e syscall=263 success=yes exit=0 a0=ffffffffffffff9c a1=214e0d0 a2=0 a3=7ffeffa18a60 items=2 ppid=23628 pid=28593 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=473 comm="rm" exe="/usr/bin/rm" key="etc_change_log"
      说明:日志已经记录了刚刚执行过的操作,其中comm表示执行的命令,执行用户的uid=0 gid=0,包括执行时间、执行时所在的目录cwd,执行时的pid、ppid都有记录。有了这个日志当文件出现异常就可以轻松查看到是哪个用户什么时间做过改动。

适用于

  • 云服务器ECS