Mapping of Audit rule to Record Type Generated + chmod log query

Steve Grubb sgrubb at redhat.com
Mon Jan 10 21:17:44 UTC 2022


Hello,

On Monday, January 10, 2022 3:32:55 PM EST Rohit wrote:
> Question 1
> I'm not even sure if this is feasible but does there exist an audit rule
> type <--> record type mapping?

Nope.
 
> For example, a file watch rule for writes and attribute changes (-p wa)
> would generate record types of SYSCALL and CWD. While a watch for execution
> (-p x) on a file would generate a SYSCALL, EXECVE and CWD.
> 
> Similarly, is there a way to know what record types the different audit
> rule types (file watches, syscalls) may generate?

There are 2 kinds of events, simple and compound. The simple events are 
typically standalone such as something originating from user space. The 
compound events always have a syscall event, but as to the auxiliary records, 
it really depends on the path the syscall takes through the kernel. Various 
places are hooked and collect information. When the syscall exits, then it 
dumps all the collected auxiliary records.,


> -----
> 
> Question 2
> I am trying to decipher a chmod related log entry. My audit rule is
> -w /etc/passwd -p wa -k passwd_mod
> 
> I thereafter ran a "chmod 744 /etc/passwd" . I received a SYSCALL record
> type with the following parameters
> type=SYSCALL msg=audit(1641846347.980:1326): arch=c000003e syscall=268
> success=yes exit=0 a0=ffffffffffffff9c a1=1a600f0 a2=1a4 a3=3c0 items=1
> ppid=6639 pid=6781 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0
> sgid=0 fsgid=0 tty=pts6 ses=4294967295 comm="chmod" exe="/bin/chmod"
> 
> I'm trying to decipher whether the above event can give me the exact
> permission passed to the chmod command (755). I understand that execve may
> give it to me easier.

If you use ausearch -i to look at the raw record, it's much easier.

type=SYSCALL msg=audit(01/10/2022 15:25:47.980:1326) : arch=x86_64 
syscall=fchmodat success=yes exit=0 a0=AT_FDCWD a1=0x1a600f0 a2=0644 a3=0x3c0 
items=1 ppid=6639 pid=6781 auid=unset uid=root gid=root euid=root suid=root 
fsuid=root egid=root sgid=root fsgid=root tty=pts6 ses=unset comm=chmod exe=/
bin/chmod

> I see the underlying syscall is fchmodat which accepts 3 arguments
> 
> int dfd, const char __user *filename, umode_t mode
> 
> In which case, in the above log event, would a3=3c0 be the right argument
> to represent the new permission (755)? Or am I reading this incorrectly?

The a2 argument is the one that has the mode. Ausearch shows that it's value 
is 0644.

-Steve





More information about the Linux-audit mailing list