介绍
在本次实验中,你将学习如何检查 Linux 中是否设置了审计规则。首先,你将使用 auditctl -l 命令列出当前加载的审计规则,该命令与 Linux 审计守护进程 (auditd) 交互,以显示定义了哪些系统事件正在被跟踪的规则。
接下来,你将检查位于 /etc/audit/audit.rules 的审计规则配置文件,以了解这些规则是如何持久存储的。最后,你将验证 /var/log/audit 目录中的审计日志,以查看根据配置规则记录的事件,从而深入了解系统的审计活动。
使用 auditctl -l 列出审计规则
在这一步中,你将学习如何使用 auditctl 命令列出系统上当前配置的审计规则。Linux 审计守护进程 (auditd) 是一个强大的工具,用于跟踪系统上与安全相关的信息。审计规则定义了系统应该记录哪些事件。
auditctl 命令用于控制审计守护进程。要列出当前加载的审计规则,你可以使用 -l 选项。
如果你还没有打开终端,请打开它。你可以通过点击桌面左侧的 Xfce Terminal 图标来打开终端。
现在,在终端中输入以下命令并按回车键:
sudo auditctl -l
你可能会看到类似于以下的输出:
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/gshadow -p wa -k gshadow_changes
-w /etc/group -p wa -k group_changes
-w /etc/sudoers -p wa -k sudoers_changes
-w /etc/sudoers.d/ -p wa -k sudoers_changes
-w /var/log/faillog -p wa -k logins
-w /var/log/lastlog -p wa -k logins
-w /var/log/tallylog -p wa -k logins
-w /var/run/utmp -p wa -k session
-w /var/log/wtmp -p wa -k session
-w /var/log/btmp -p wa -k session
-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,chmod,fchmod,chown,fchown,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=1000 -F auid!=unset -k access
-a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,chmod,fchmod,chown,fchown,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=1000 -F auid!=unset -k access
-a always,exit -F arch=b32 -S execve -F auid>=1000 -F auid!=unset -k exec
-a always,exit -F arch=b64 -S execve -F auid>=1000 -F auid!=unset -k exec
-a always,exit -F arch=b32 -S unlink,unlinkat,rename,renameat -F auid>=1000 -F auid!=unset -k delete
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F auid>=1000 -F auid!=unset -k delete
-a always,exit -F arch=b32 -S rmdir -F auid>=1000 -F auid!=unset -k delete
-a always,exit -F arch=b64 -S rmdir -F auid>=1000 -F auid!=unset -k delete
-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=unset -k mount
-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=unset -k mount
-a always,exit -F arch=b32 -S swapon -F auid>=1000 -F auid!=unset -k swapon
-a always,exit -F arch=b64 -S swapon -F auid>=1000 -F auid!=unset -k swapon
-a always,exit -F arch=b32 -S swapoff -F auid>=1000 -F auid!=unset -k swapoff
-a always,exit -F arch=b64 -S swapoff -F auid>=1000 -F auid!=unset -k swapoff
-a always,exit -F arch=b32 -S acct -F auid>=1000 -F auid!=unset -k acct
-a always,exit -F arch=b64 -S acct -F auid>=1000 -F auid!=unset -k acct
-a always,exit -F arch=b32 -S settimeofday,adjtimex,stime -F auid>=1000 -F auid!=unset -k time-change
-a always,exit -F arch=b64 -S settimeofday,adjtimex,stime -F auid>=1000 -F auid!=unset -k time-change
-a always,exit -F arch=b32 -S clock_settime -F auid>=1000 -F auid!=unset -k time-change
-a always,exit -F arch=b64 -S clock_settime -F auid>=1000 -F auid!=unset -k time-change
-a always,exit -F arch=b32 -S sethostname,setdomainname -F auid>=1000 -F auid!=unset -k system-locale
-a always,exit -F arch=b64 -S sethostname,setdomainname -F auid>=1000 -F auid!=unset -k system-locale
-a always,exit -F arch=b32 -S init_module,finit_module,delete_module -F auid>=1000 -F auid!=unset -k modules
-a always,exit -F arch=b64 -S init_module,finit_module,delete_module -F auid>=1000 -F auid!=unset -k modules
-a always,exit -F arch=b32 -S creat_module,delete_module -F auid>=1000 -F auid!=unset -k modules
-a always,exit -F arch=b64 -S creat_module,delete_module -F auid>=1000 -F auid!=unset -k modules
-a always,exit -F arch=b32 -S syslog -F auid>=1000 -F auid!=unset -k syslog
-a always,exit -F arch=b64 -S syslog -F auid>=1000 -F auid!=unset -k syslog
-a always,exit -F arch=b32 -S kexec_load -F auid>=1000 -F auid!=unset -k kexec
-a always,exit -F arch=b64 -S kexec_load -F auid>=1000 -F auid!=unset -k kexec
-a always,exit -F arch=b32 -S bpf -F auid>=1000 -F auid!=unset -k bpf
-a always,exit -F arch=b64 -S bpf -F auid>=1000 -F auid!=unset -k bpf
-a always,exit -F arch=b32 -S fanotify_init -F auid>=1000 -F auid!=unset -k fanotify
-a always,exit -F arch=b64 -S fanotify_init -F auid>=1000 -F auid!=unset -k fanotify
-a always,exit -F arch=b32 -S perf_event_open -F auid>=1000 -F auid!=unset -k perf_event
-a always,exit -F arch=b64 -S perf_event_open -F auid>=1000 -F auid!=unset -k perf_event
-a always,exit -F arch=b32 -S io_uring_setup -F auid>=1000 -F auid!=unset -k io_uring
-a always,exit -F arch=b64 -S io_uring_setup -F auid>=1000 -F auid!=unset -k io_uring
-a always,exit -F arch=b32 -S open_by_handle_at -F auid>=1000 -F auid!=unset -k open_by_handle
-a always,exit -F arch=b64 -S open_by_handle_at -F auid>=1000 -F auid!=unset -k open_by_handle
-a always,exit -F arch=b32 -S name_to_handle_at -F auid>=1000 -F auid!=unset -k name_to_handle
-a always,exit -F arch=b64 -S name_to_handle_at -F auid>=1000 -F auid!=unset -k name_to_handle
-a always,exit -F arch=b32 -S vmsplice -F auid>=1000 -F auid!=unset -k vmsplice
-a always,exit -F arch=b64 -S vmsplice -F auid>=1000 -F auid!=unset -k vmsplice
-a always,exit -F arch=b32 -S process_vm_readv -F auid>=1000 -F auid!=unset -k process_vm_readv
-a always,exit -F arch=b64 -S process_vm_readv -F auid>=1000 -F auid!=unset -k process_vm_readv
-a always,exit -F arch=b32 -S process_vm_writev -F auid>=1000 -F auid!=unset -k process_vm_writev
-a always,exit -F arch=b64 -S process_vm_writev -F auid>=1000 -F auid!=unset -k process_vm_writev
-a always,exit -F arch=b32 -S ptrace -F auid>=1000 -F auid!=unset -k ptrace
-a always,exit -F arch=b64 -S ptrace -F auid>=1000 -F auid!=unset -k ptrace
-a always,exit -F arch=b32 -S kcmp -F auid>=1000 -F auid!=unset -k kcmp
-a always,exit -F arch=b64 -S kcmp -F auid>=1000 -F auid!=unset -k kcmp
-a always,exit -F arch=b32 -S finit_module -F auid>=1000 -F auid!=unset -k finit_module
-a always,exit -F arch=b64 -S finit_module -F auid>=1000 -F auid!=unset -k finit_module
-a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=unset -k delete_module
-a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=unset -k delete_module
-a always,exit -F arch=b32 -S init_module -F auid>=1000 -F auid!=unset -k init_module
-a always,exit -F arch=b64 -S init_module -F auid>=1000 -F auid!=unset -k init_module
-a always,exit -F arch=b32 -S creat_module -F auid>=1000 -F auid!=unset -k creat_module
-a always,exit -F arch=b64 -S creat_module -F auid>=1000 -F auid!=unset -k creat_module
-a always,exit -F arch=b32 -S syslog -F auid>=1000 -F auid!=unset -k syslog
-a always,exit -F arch=b64 -S syslog -F auid>=1000 -F auid!=unset -k syslog
-a always,exit -F arch=b32 -S kexec_load -F auid>=1000 -F auid!=unset -k kexec_load
-a always,exit -F arch=b64 -S kexec_load -F auid>=1000 -F auid!=unset -k kexec_load
-a always,exit -F arch=b32 -S bpf -F auid>=1000 -F auid!=unset -k bpf
-a always,exit -F arch=b64 -S bpf -F auid>=1000 -F auid!=unset -k bpf
-a always,exit -F arch=b32 -S fanotify_init -F auid>=1000 -F auid!=unset -k fanotify_init
-a always,exit -F arch=b64 -S fanotify_init -F auid>=1000 -F auid!=unset -k fanotify_init
-a always,exit -F arch=b32 -S perf_event_open -F auid>=1000 -F auid!=unset -k perf_event_open
-a always,exit -F arch=b64 -S perf_event_open -F auid>=1000 -F auid!=unset -k perf_event_open
-a always,exit -F arch=b32 -S io_uring_setup -F auid>=1000 -F auid!=unset -k io_uring_setup
-a always,exit -F arch=b64 -S io_uring_setup -F auid>=1000 -F auid!=unset -k io_uring_setup
-a always,exit -F arch=b32 -S open_by_handle_at -F auid>=1000 -F auid!=unset -k open_by_handle_at
-a always,exit -F arch=b64 -S open_by_handle_at -F auid>=1000 -F auid!=unset -k open_by_handle_at
-a always,exit -F arch=b32 -S name_to_handle_at -F auid>=1000 -F auid!=unset -k name_to_handle_at
-a always,exit -F arch=b64 -S name_to_handle_at -F auid>=1000 -F auid!=unset -k name_to_handle_at
-a always,exit -F arch=b32 -S vmsplice -F auid>=1000 -F auid!=unset -k vmsplice
-a always,exit -F arch=b64 -S vmsplice -F auid>=1000 -F auid!=unset -k vmsplice
-a always,exit -F arch=b32 -S process_vm_readv -F auid>=1000 -F auid!=unset -k process_vm_readv
-a always,exit -F arch=b64 -S process_vm_readv -F auid>=1000 -F auid!=unset -k process_vm_readv
-a always,exit -F arch=b32 -S process_vm_writev -F auid>=1000 -F auid!=unset -k process_vm_writev
-a always,exit -F arch=b64 -S process_vm_writev -F auid>=1000 -F auid!=unset -k process_vm_writev
-a always,exit -F arch=b32 -S ptrace -F auid>=1000 -F auid!=unset -k ptrace
-a always,exit -F arch=b64 -S ptrace -F auid>=1000 -F auid!=unset -k ptrace
-a always,exit -F arch=b32 -S kcmp -F auid>=1000 -F auid!=unset -k kcmp
-a always,exit -F arch=b64 -S kcmp -F auid>=1000 -F auid!=unset -k kcmp
此输出显示了审计系统中当前活动的规则。每行代表一条规则。现在不必担心理解规则的每个细节。重要的是你可以看到规则列表。
-w 选项用于监视特定文件或目录的更改。-a 选项用于添加规则。-S 选项指定要审计的系统调用。
点击 Continue 继续下一步。
使用 cat /etc/audit/audit.rules 查看审计规则文件
在上一步中,你使用 auditctl -l 列出了当前活动的审计规则。这些规则通常在审计守护进程启动时从配置文件中加载。审计规则的主要配置文件是 /etc/audit/audit.rules。
让我们使用 cat 命令来查看这个文件的内容。cat 命令用于显示文件的内容。
在终端中输入以下命令并按回车键:
cat /etc/audit/audit.rules
你将看到 /etc/audit/audit.rules 文件的内容被打印到终端上。这个文件包含了审计守护进程在启动时加载的规则。
### This file is automatically generated from /etc/audit/rules.d
##
### The rules are simply the concatenation of all rules files in /etc/audit/rules.d
### and will be loaded after the kernel rules are loaded.
##
##
### First rule - delete all
-D
### Increase the buffers to survive stress events.
### Make this bigger for busy systems
-b 8192
### Set failure mode to syslog
-f 1
### Log all attempts to alter system time
-a always,exit -F arch=b32 -S settimeofday,adjtimex,stime -F auid>=1000 -F auid!=unset -k time-change
-a always,exit -F arch=b64 -S settimeofday,adjtimex,stime -F auid>=1000 -F auid!=unset -k time-change
-a always,exit -F arch=b32 -S clock_settime -F auid>=1000 -F auid!=unset -k time-change
-a always,exit -F arch=b64 -S clock_settime -F auid>=1000 -F auid!=unset -k time-change
### Log all attempts to alter system locale
-a always,exit -F arch=b32 -S sethostname,setdomainname -F auid>=1000 -F auid!=unset -k system-locale
-a always,exit -F arch=b64 -S sethostname,setdomainname -F auid>=1000 -F auid!=unset -k system-locale
### Log all attempts to alter system modules
-a always,exit -F arch=b32 -S init_module,finit_module,delete_module -F auid>=1000 -F auid!=unset -k modules
-a always,exit -F arch=b64 -S init_module,finit_module,delete_module -F auid>=1000 -F auid!=unset -k modules
-a always,exit -F arch=b32 -S creat_module,delete_module -F auid>=1000 -F auid!=unset -k modules
-a always,exit -F arch=b64 -S creat_module,delete_module -F auid>=1000 -F auid!=unset -k modules
### Log all attempts to alter system syslog
-a always,exit -F arch=b32 -S syslog -F auid>=1000 -F auid!=unset -k syslog
-a always,exit -F arch=b64 -S syslog -F auid>=1000 -F auid!=unset -k syslog
### Log all attempts to alter system kexec
-a always,exit -F arch=b32 -S kexec_load -F auid>=1000 -F auid!=unset -k kexec
-a always,exit -F arch=b64 -S kexec_load -F auid>=1000 -F auid!=unset -k kexec
### Log all attempts to alter system bpf
-a always,exit -F arch=b32 -S bpf -F auid>=1000 -F auid!=unset -k bpf
-a always,exit -F arch=b64 -S bpf -F auid>=1000 -F auid!=unset -k bpf
### Log all attempts to alter system fanotify
-a always,exit -F arch=b32 -S fanotify_init -F auid>=1000 -F auid!=unset -k fanotify
-a always,exit -F arch=b64 -S fanotify_init -F auid>=1000 -F auid!=unset -k fanotify
### Log all attempts to alter system perf_event
-a always,exit -F arch=b32 -S perf_event_open -F auid>=1000 -F auid!=unset -k perf_event
-a always,exit -F arch=b64 -S perf_event_open -F auid>=1000 -F auid!=unset -k perf_event
### Log all attempts to alter system io_uring
-a always,exit -F arch=b32 -S io_uring_setup -F auid>=1000 -F auid!=unset -k io_uring
-a always,exit -F arch=b64 -S io_uring_setup -F auid>=1000 -F auid!=unset -k io_uring
### Log all attempts to alter system open_by_handle
-a always,exit -F arch=b32 -S open_by_handle_at -F auid>=1000 -F auid!=unset -k open_by_handle
-a always,exit -F arch=b64 -S open_by_handle_at -F auid>=1000 -F auid!=unset -k open_by_handle
### Log all attempts to alter system name_to_handle
-a always,exit -F arch=b32 -S name_to_handle_at -F auid>=1000 -F auid!=unset -k name_to_handle
-a always,exit -F arch=b64 -S name_to_handle_at -F auid>=1000 -F auid!=unset -k name_to_handle
### Log all attempts to alter system vmsplice
-a always,exit -F arch=b32 -S vmsplice -F auid>=1000 -F auid!=unset -k vmsplice
-a always,exit -F arch=b64 -S vmsplice -F auid>=1000 -F auid!=unset -k vmsplice
### Log all attempts to alter system process_vm_readv
-a always,exit -F arch=b32 -S process_vm_readv -F auid>=1000 -F auid!=unset -k process_vm_readv
-a always,exit -F arch=b64 -S process_vm_readv -F auid>=1000 -F auid!=unset -k process_vm_readv
### Log all attempts to alter system process_vm_writev
-a always,exit -F arch=b32 -S process_vm_writev -F auid>=1000 -F auid!=unset -k process_vm_writev
-a always,exit -F arch=b64 -S process_vm_writev -F auid>=1000 -F auid!=unset -k process_vm_writev
### Log all attempts to alter system ptrace
-a always,exit -F arch=b32 -S ptrace -F auid>=1000 -F auid!=unset -k ptrace
-a always,exit -F arch=b64 -S ptrace -F auid>=1000 -F auid!=unset -k ptrace
### Log all attempts to alter system kcmp
-a always,exit -F arch=b32 -S kcmp -F auid>=1000 -F auid!=unset -k kcmp
-a always,exit -F arch=b64 -S kcmp -F auid>=1000 -F auid!=unset -k kcmp
### Log all attempts to alter system finit_module
-a always,exit -F arch=b32 -S finit_module -F auid>=1000 -F auid!=unset -k finit_module
-a always,exit -F arch=b64 -S finit_module -F auid>=1000 -F auid!=unset -k finit_module
### Log all attempts to alter system delete_module
-a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=unset -k delete_module
-a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=unset -k delete_module
### Log all attempts to alter system init_module
-a always,exit -F arch=b32 -S init_module -F auid>=1000 -F auid!=unset -k init_module
-a always,exit -F arch=b64 -S init_module -F auid>=1000 -F auid!=unset -k init_module
### Log all attempts to alter system creat_module
-a always,exit -F arch=b32 -S creat_module -F auid>=1000 -F auid!=unset -k creat_module
-a always,exit -F arch=b64 -S creat_module -F auid>=1000 -F auid!=unset -k creat_module
### Log all attempts to alter system syslog
-a always,exit -F arch=b32 -S syslog -F auid>=1000 -F auid!=unset -k syslog
-a always,exit -F arch=b64 -S syslog -F auid>=1000 -F auid!=unset -k syslog
### Log all attempts to alter system kexec_load
-a always,exit -F arch=b32 -S kexec_load -F auid>=1000 -F auid!=unset -k kexec_load
-a always,exit -F arch=b64 -S kexec_load -F auid>=1000 -F auid!=unset -k kexec_load
### Log all attempts to alter system bpf
-a always,exit -F arch=b32 -S bpf -F auid>=1000 -F auid!=unset -k bpf
-a always,exit -F arch=b64 -S bpf -F auid>=1000 -F auid!=unset -k bpf
### Log all attempts to alter system fanotify_init
-a always,exit -F arch=b32 -S fanotify_init -F auid>=1000 -F auid!=unset -k fanotify_init
-a always,exit -F arch=b64 -S fanotify_init -F auid>=1000 -F auid!=unset -k fanotify_init
### Log all attempts to alter system perf_event_open
-a always,exit -F arch=b32 -S perf_event_open -F auid>=1000 -F auid!=unset -k perf_event_open
-a always,exit -F arch=b64 -S perf_event_open -F auid>=1000 -F auid!=unset -k perf_event_open
### Log all attempts to alter system io_uring_setup
-a always,exit -F arch=b32 -S io_uring_setup -F auid>=1000 -F auid!=unset -k io_uring_setup
-a always,exit -F arch=b64 -S io_uring_setup -F auid>=1000 -F auid!=unset -k io_uring_setup
### Log all attempts to alter system open_by_handle_at
-a always,exit -F arch=b32 -S open_by_handle_at -F auid>=1000 -F auid!=unset -k open_by_handle_at
-a always,exit -F arch=b64 -S open_by_handle_at -F auid>=1000 -F auid!=unset -k open_by_handle_at
### Log all attempts to alter system name_to_handle_at
-a always,exit -F arch=b32 -S name_to_handle_at -F auid>=1000 -F auid!=unset -k name_to_handle_at
-a always,exit -F arch=b64 -S name_to_handle_at -F auid>=1000 -F auid!=unset -k name_to_handle_at
### Log all attempts to alter system vmsplice
-a always,exit -F arch=b32 -S vmsplice -F auid>=1000 -F auid!=unset -k vmsplice
-a always,exit -F arch=b64 -S vmsplice -F auid>=1000 -F auid!=unset -k vmsplice
### Log all attempts to alter system process_vm_readv
-a always,exit -F arch=b32 -S process_vm_readv -F auid>=1000 -F auid!=unset -k process_vm_readv
-a always,exit -F arch=b64 -S process_vm_readv -F auid>=1000 -F auid!=unset -k process_vm_readv
### Log all attempts to alter system process_vm_writev
-a always,exit -F arch=b32 -S process_vm_writev -F auid>=1000 -F auid!=unset -k process_vm_writev
-a always,exit -F arch=b64 -S process_vm_writev -F auid>=1000 -F auid!=unset -k process_vm_writev
### Log all attempts to alter system ptrace
-a always,exit -F arch=b32 -S ptrace -F auid>=1000 -F auid!=unset -k ptrace
-a always,exit -F arch=b64 -S ptrace -F auid>=1000 -F auid!=unset -k ptrace
### Log all attempts to alter system kcmp
-a always,exit -F arch=b32 -S kcmp -F auid>=1000 -F auid!=unset -k kcmp
-a always,exit -F arch=b64 -S kcmp -F auid>=1000 -F auid!=unset -k kcmp
### Log all attempts to alter system finit_module
-a always,exit -F arch=b32 -S finit_module -F auid>=1000 -F auid!=unset -k finit_module
-a always,exit -F arch=b64 -S finit_module -F auid>=1000 -F auid!=unset -k finit_module
### Log all attempts to alter system delete_module
-a always,exit -F arch=b32 -S delete_module -F auid>=1000 -F auid!=unset -k delete_module
-a always,exit -F arch=b64 -S delete_module -F auid>=1000 -F auid!=unset -k delete_module
### Log all attempts to alter system init_module
-a always,exit -F arch=b32 -S init_module -F auid>=1000 -F auid!=unset -k init_module
-a always,exit -F arch=b64 -S init_module -F auid>=1000 -F auid!=unset -k init_module
### Log all attempts to alter system creat_module
-a always,exit -F arch=b32 -S creat_module -F auid>=1000 -F auid!=unset -k creat_module
-a always,exit -F arch=b64 -S creat_module -F auid>=1000 -F auid!=unset -k creat_module
### Log all attempts to alter system syslog
-a always,exit -F arch=b32 -S syslog -F auid>=1000 -F auid!=unset -k syslog
-a always,exit -F arch=b64 -S syslog -F auid>=1000 -F auid!=unset -k syslog
### Log all attempts to alter system kexec_load
-a always,exit -F arch=b32 -S kexec_load -F auid>=1000 -F auid!=unset -k kexec_load
-a always,exit -F arch=b64 -S kexec_load -F auid>=1000 -F auid!=unset -k kexec_load
### Log all attempts to alter system bpf
-a always,exit -F arch=b32 -S bpf -F auid>=1000 -F auid!=unset -k bpf
-a always,exit -F arch=b64 -S bpf -F auid>=1000 -F auid!=unset -k bpf
### Log all attempts to alter system fanotify_init
-a always,exit -F arch=b32 -S fanotify_init -F auid>=1000 -F auid!=unset -k fanotify_init
-a always,exit -F arch=b64 -S fanotify_init -F auid>=1000 -F auid!=unset -k fanotify_init
### Log all attempts to alter system perf_event_open
-a always,exit -F arch=b32 -S perf_event_open -F auid>=1000 -F auid!=unset -k perf_event_open
-a always,exit -F arch=b64 -S perf_event_open -F auid>=1000 -F auid!=unset -k perf_event_open
### Log all attempts to alter system io_uring_setup
-a always,exit -F arch=b32 -S io_uring_setup -F auid>=1000 -F auid!=unset -k io_uring_setup
-a always,exit -F arch=b64 -S io_uring_setup -F auid>=1000 -F auid!=unset -k io_uring_setup
### Log all attempts to alter system open_by_handle_at
-a always,exit -F arch=b32 -S open_by_handle_at -F auid>=1000 -F auid!=unset -k open_by_handle_at
-a always,exit -F arch=b64 -S open_by_handle_at -F auid>=1000 -F auid!=unset -k open_by_handle_at
### Log all attempts to alter system name_to_handle_at
-a always,exit -F arch=b32 -S name_to_handle_at -F auid>=1000 -F auid!=unset -k name_to_handle_at
-a always,exit -F arch=b64 -S name_to_handle_at -F auid>=1000 -F auid!=unset -k name_to_handle_at
### Log all attempts to alter system vmsplice
-a always,exit -F arch=b32 -S vmsplice -F auid>=1000 -F auid!=unset -k vmsplice
-a always,exit -F arch=b64 -S vmsplice -F auid>=1000 -F auid!=unset -k vmsplice
### Log all attempts to alter system process_vm_readv
-a always,exit -F arch=b32 -S process_vm_readv -F auid>=1000 -F auid!=unset -k process_vm_readv
-a always,exit -F arch=b64 -S process_vm_readv -F auid>=1000 -F auid!=unset -k process_vm_readv
### Log all attempts to alter system process_vm_writev
-a always,exit -F arch=b32 -S process_vm_writev -F auid>=1000 -F auid!=unset -k process_vm_writev
-a always,exit -F arch=b64 -S process_vm_writev -F auid>=1000 -F auid!=unset -k process_vm_writev
### Log all attempts to alter system ptrace
-a always,exit -F arch=b32 -S ptrace -F auid>=1000 -F auid!=unset -k ptrace
-a always,exit -F arch=b64 -S ptrace -F auid>=1000 -F auid!=unset -k ptrace
### Log all attempts to alter system kcmp
-a always,exit -F arch=b32 -S kcmp -F auid>=1000 -F auid!=unset -k kcmp
-a always,exit -F arch=b64 -S kcmp -F auid>=1000 -F auid!=unset -k kcmp
如你所见,/etc/audit/audit.rules 的内容与 sudo auditctl -l 的输出类似。这个文件是加载到内核审计子系统中的规则的来源。
理解这个文件的内容对于配置系统审计至关重要。你可以在这个文件中添加、删除或修改规则,以自定义要审计的事件。但是,对这个文件的更改需要 root 权限,并且通常需要重启审计守护进程才能生效。
点击 Continue 继续下一步。
验证 /var/log/audit 中的审计日志
既然你已经知道如何列出审计规则并查看配置文件,接下来让我们看看审计日志存储在哪里。审计守护进程会将日志条目写入文件,这些文件通常位于 /var/log/audit/ 目录中。
主要的审计日志文件通常名为 audit.log。你可以使用 ls 命令列出 /var/log/audit/ 目录中的文件,查看日志文件是否存在。
在终端中输入以下命令并按回车键:
ls /var/log/audit/
你应该会看到类似以下的输出,显示 audit.log 文件:
audit.log
现在,让我们使用 tail 命令查看 audit.log 文件的内容。tail 命令用于查看文件的末尾,最新的日志条目通常位于文件末尾。由于审计日志可能非常大,因此查看末尾通常比使用 cat 查看整个文件更实用。
在终端中输入以下命令并按回车键:
sudo tail /var/log/audit/audit.log
你将看到 audit.log 文件的最后几行。这些行代表了根据配置规则审计到的最近事件。输出大致如下,每行都是一条详细的审计记录:
type=SYSCALL msg=audit(1678886400.123:456): arch=c000003e syscall=1 success=yes exit=1 a0=1 a1=7ffc... a2=1 a3=0 items=0 ppid=1234 pid=5678 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts/0 ses=1 comm="bash" exe="/usr/bin/bash" subj=unconfined key="access"
type=PROCTITLE msg=audit(1678886400.123:456): proctitle=bash
type=CWD msg=audit(1678886400.123:456): cwd="/home/labex/project"
... (more log entries)
每条日志条目都包含了关于被审计事件的大量信息,例如事件类型、时间戳、用户 ID、进程 ID、执行的命令等等。分析这些日志对于安全监控和事件响应至关重要。
你现在已经成功定位并查看了审计日志。在实际场景中,你会使用 ausearch 和 aureport 等工具来有效地搜索和汇总这些日志,但在这个入门实验中,仅仅知道它们的位置就是一个很好的开始。
点击 Continue 完成本实验。
总结
在本实验中,你学习了如何检查 Linux 中是否设置了审计规则。你首先使用 auditctl -l 命令列出当前加载的审计规则,这些规则由 Linux 审计守护进程(auditd)控制,用于定义要记录的系统事件。
接着,你通常会使用 cat 命令查看位于 /etc/audit/audit.rules 的审计规则文件,以了解审计规则的持久配置。最后,你会验证 /var/log/audit 目录中的审计日志,以确认事件是否按照配置的规则进行记录。



