Using auditd to Record File Changes (Linux)
The auditd is a user-space component of the Linux audit system. It records operation logs, including file read/write and invoking records, in the OS, which can be used for audit if a fault occurs. This section uses CentOS 7.4 64bit as an example to describe how to install and configure auditd.
auditd-related Tool Commands and Configuration Files
Tool commands:
- auditctl: controls the audit daemon in real time, such as adding rules.
 - aureport: checks and generates audit reports.
 - ausearch: searches for audit events.
 - auditspd: forwards event notifications to other applications instead of writing them to audit logs.
 - autrace: traces processes.
 
Configuration files:
- /etc/audit/auditd.conf: specifies configuration file of auditd.
 - /etc/audit/rules.d/audit.rules: contains audit rules.
 - /etc/audit/audit.rules: records audit rules.
 
Procedure
Installing auditd
- Run the following command to install auditd:
    
    
 
     After auditd is installed for the first time, there are no audit rules by default. You can run the sudo auditctl -l command to query the audit rules.
 - Run the following command to check the runtime status of auditd:
    
    Figure 1 Runtime status
     
Configuring audit rules
- Run the following command to configure the monitoring file and change the directory:
    
auditctl -w /etc/passwd -p rwxa
where:
- -w: specifies the file path to be monitored. The preceding command specifies the monitored file path /etc/passwd.
 - -p: specifies the access permission of the file or directory that triggers the audit.
 - rwxa: specifies trigger conditions. r indicates the read permission, w the write permission, x the execution permission, and a the attribute.
 
 - Run the following commands to audit all accesses to /production:
    
mkdir production
auditctl -w /production/
 - Run the following command to check configured rules:
 - After rules are added, run the following command to check the audit log:
    
    
    
Figure 2 shows that the file is not modified. The parameters are described as follows:
- time: audit time
 - name: audit object
 - cwd: current path
 - syscall: related system calls
 - auid: ID of the audited user
 - uid and gid: user ID and user group ID for accessing a file
 - comm: command for a user to access a file
 - exe: file path where the preceding command can be executed
 
 - Run the following command to add a user test to the monitoring file:
    
useradd test
 - Run the following command to check the audit log again:
    
    
    
Figure 3 shows that /etc/passwd is modified by user root (uid=0, gid=0) in the /root directory at a specified time. The /etc/passwd file is accessed from /usr/bin/sudo.
 - Run the following command to check whether the audit log contains any content:
    
    

 - Run the following commands to change the directory permissions as user root and check the audit log again:
    
chmod -R 777 /test/
ausearch -f /test/
 - Run the following command to view the audit report:
    
    Figure 4 Viewing the audit report
     - Run the following command to view the authorization failure details:
    
    Figure 5 Viewing authorization failure details
     - Run the following command to view all events related to account modifications:
    
    Figure 6 Viewing account modification events
     - (Optional) Run the following commands to clear the defined rules:
    
    
auditctl -l
Figure 7 Clearing defined rules
     
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.
    
      
