如何配置 Linux 审计规则以跟踪我的 EC2 Linux 实例上的用户活动、文件更改和目录更改?

3 分钟阅读
0

我想跟踪我的 Amazon Elastic Compute Cloud(Amazon EC2)Linux 实例上的用户活动、文件更改和目录更改。

简述

审计进程守护程序(auditd)是 Linux 审计系统的用户空间组件。使用 auditd 跟踪访问或修改文件和目录的用户或应用程序。您还可以使用 auditd 来确定哪个用户运行了特定的命令。

解决方案

要使用 auditd 跟踪活动,请完成以下步骤:

  1. ec2-user/ubuntu/根用户身份通过 SSH 连接到您的 EC2 实例。将 ubuntu 替换为您的亚马逊机器映像(AMI)的用户名

  2. 安装审计程序包:

    RHEL 和 CentOS

    # sudo yum install audit

    SUSE Linux

    # sudo zypper install audit

    Ubuntu

    # sudo apt install auditd
  3. 运行 auditctl 命令来创建审计规则。审计规则定义存储在 /etc/audit/audit.rules 文件中。自定义审计规则定义存储在 /etc/audit/rules.d/custom.conf 文件中。这些定义具有持久性。您也可以在系统运行时创建和应用规则。

    规则示例

    跟踪访问或修改特定文件或目录的用户或应用程序:

    # sudo auditctl -a always,exit -F arch=b64 -S rename,rmdir,unlink,unlinkat,renameat -F auid\>=500 -F auid\!=-1 -F dir=/root/test/ -F key=delete

    确定哪个用户运行了某个特定的命令。在以下示例中,这个命令为 sudo

    # sudo auditctl -w /bin/sudo -p rwxa -k sudo

    此示例使用以下语法列表:

    -a -添加新规则。
    -w -添加一个对特定路径中某个文件系统对象的监视,例如 /etc/shadow
    -p -为某个文件系统设置权限筛选条件。
    -k -在审计规则上设置一个筛选键。该筛选键唯一标识规则生成的审计记录。
    -F -使用此字段指定其他选项,例如 architecture、PID、GID、auid 等。
    -S -使用此字段进行系统调用。这是一个名字或数字。

    有关语法和开关的完整列表,请参阅 die.net 的 Linux man 手册中的 auditctl(8)audit.rules(7)

    **注意:**要确保您的规则在系统重启后仍然有效,请编辑 audit.rules,然后将以下规则添加到文件中:

    RHEL 6、CentOS 6 或 Amazon Linux 1:

    #sudo vi /etc/audit/audit.rules
    
    -a always,exit -F arch=b64 -S rename,rmdir,unlink,unlinkat,renameat -F auid>=500 -F auid!=-1 -F dir=/root/test/ -F key=delete
    -w /bin/sudo -p rwxa -k sudo

    RHEL 7、CentOS 7、Amazon Linux 2 或 Amazon Linux 2023:

    # sudo vi /etc/audit/rules.d/audit.rules
    
    -a always,exit -F arch=b64 -S rename,rmdir,unlink,unlinkat,renameat -F auid>=500 -F auid!=-1 -F dir=/root/test/ -F key=delete
    -w /bin/sudo -p rwxa -k sudo
  4. 重新启动 auditd 服务。将 auditd 服务设置为在系统启动时运行:

    # sudo chkconfig auditd on
    # sudo service auditd start
    # sudo service auditd stop
    # sudo service auditd restart

    **注意:**在 CentOS 和 Red Hat Linux(RHEL)7 中重启 auditd 服务时,最佳实践是使用 service 命令而不是 systemctl 命令。systemctl 命令可能会导致错误。

  5. 要读取审计日志,请运行 ausearch 命令。

    审计日志示例

    在以下示例中,用户 ec2-useruid = ec2-user)删除了 /root/test/example.txt 文件:

    # sudo ausearch -i -k delete
    type=PROCTITLE msg=audit(04/04/20 19:41:51.231:3303) : proctitle=rm -rf /root/test/example.txt
    type=PATH msg=audit(04/04/20 19:41:51.231:3303) : item=1 name=/root/test/example.txt inode=16777349 dev=ca:01 mode=file,777 ouid=root ogid=root
    rdev=00:00 nametype=DELETE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0
    type=PATH msg=audit(04/04/20 19:41:51.231:3303) : item=0 name=/tmp/test/ inode=16777328 dev=ca:01 mode=dir,777 ouid=root ogid=root rdev=00:00 nametype=PARENT cap_fp=none cap_fi=none
    cap_fe=0 cap_fver=0
    type=CWD msg=audit(04/04/20 19:41:51.231:3303) : cwd=/home/ec2-user
    type=SYSCALL msg=audit(04/04/20 19:41:51.231:3303) : arch=x86_64 syscall=unlinkat success=yes exit=0 a0=0xffffff9c a1=0xc5f290 a2=0x0 a3=0x165 items=2 ppid=3645
    pid=933 auid=ec2-user uid=ec2-user gid=ec2-user euid=ec2-user suid=ec2-user fsuid=ec2-user egid=ec2-user sgid=ec2-user fsgid=ec2-user tty=pts0 ses=1 comm=rm exe=/usr/bin/rm key=delete

    在以下示例中,用户 ec2-user(uid= 1000)以 sudo 权限运行命令 sudo su -

    # sudo ausearch -k sudo
    
    time->Mon Apr  6 18:33:26 2020
    type=PROCTITLE msg=audit(1586198006.631:2673): proctitle=7375646F007375002D type=PATH msg=audit(1586198006.631:2673): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=5605 dev=103:05 mode=0100755 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(1586198006.631:2673):
     item=0 name="/usr/bin/sudo" inode=12800710 dev=103:05 mode=0104111 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(1586198006.631:2673):  cwd="/home/ec2-user"
    type=EXECVE msg=audit(1586198006.631:2673): argc=3 a0="sudo" a1="su" a2="-"
    type=SYSCALL msg=audit(1586198006.631:2673): arch=c000003e syscall=59 success=yes exit=0 a0=e8cce0 a1=e8c7b0 a2=e61720 a3=7ffde58ec0a0 items=2 ppid=2658 pid=3726 auid=1000 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000
    tty=pts0 ses=4 comm="sudo" exe="/usr/bin/sudo" key="script"
AWS 官方
AWS 官方已更新 6 个月前