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

上次更新时间:2020 年 5 月 29 日

我想要跟踪 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例上的活动,例如用户活动、文件更改和目录更改。如何配置 Linux 审计系统以执行此操作?

简短描述

Auditd 是 Linux 审计系统的用户空间组件。Auditd 可用于跟踪可疑活动,并帮助您确定可以在哪些方面采取额外的安全措施。

Auditd 可用于:

  • 跟踪正在访问或修改文件和目录的用户或应用程序。
  • 跟踪正在运行特定命令的用户。

解决方法

1.    ec2-user/ubuntu/root user 身份使用 SSH 连接到 EC2 实例。将 ubuntu 替换为您的 AMI 用户名

2.    运行以下命令以安装审计程序包:

RHEL 和 CentOS:

# sudo yum install audit

SUSE Linux:

# sudo zypper install audit

Ubuntu:

# sudo apt install auditd

3.    创建审计规则。

审计规则是在 /etc/audit/audit.rules 文件中定义的。自定义审计规则是在 /etc/audit/rules.d/custom.conf 文件中定义的。文件中定义的审计规则具有持久性。也可以在运行时实施规则。

运行 auditctl 命令以创建您的审计规则。

示例规则

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

# 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 - 使用此字段指定其他选项,例如架构、PID、GID、auid 等。
-S - 它是系统调用。这是一个名称或编号。

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

注意:要使规则在重启后保持不变,请编辑 audit.rules,然后将以下规则添加到文件中:

RHEL 6、CentOS 6 或 Amazon Linux 1:

# 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

RHEL 7、CentOS 7 或 Amazon Linux 2:

# 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

注意:重启 auditd 服务时,在 CentOS 和 RHEL 7 中,最好使用 service 命令,而不是 systemctl 命令。使用 systemctl 命令可能会导致错误。

5.    运行 ausearch 命令以读取审计日志。

示例审计日志

在以下示例中,用户 ec2-user (uid = 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"

这篇文章对您有帮助吗?


您是否需要账单或技术支持?