Linux审计系统(auditd)是内核级别的系统审计框架,可以记录系统调用和文件访问等事件,帮助管理员监控系统活动、检测异常行为并满足合规要求。
# 对于基于Debian的系统
sudo apt-get install auditd audispd-plugins
# 对于基于RHEL的系统
sudo yum install audit audit-libs
/etc/audit/auditd.conf
- 审计守护进程配置/etc/audit/rules.d/audit.rules
- 审计规则定义# 监控文件或目录访问
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
# 监控系统调用
-a always,exit -F arch=b64 -S execve -k process_execution
-a always,exit -F arch=b32 -S execve -k process_execution
# 监控特权命令使用
-w /bin/su -p x -k privileged
-w /usr/bin/sudo -p x -k privileged
# 监控账户变更
-w /usr/sbin/useradd -p x -k user_management
-w /usr/sbin/userdel -p x -k user_management
-w /usr/sbin/usermod -p x -k user_management
# 加载新规则
sudo auditctl -R /etc/audit/rules.d/audit.rules
# 查看当前规则
sudo auditctl -l
编辑/etc/audit/auditd.conf
:
max_log_file = 50 # 日志文件最大MB数
num_logs = 5 # 保留的日志文件数量
max_log_file_action = ROTATE # 达到最大值时轮转
审计日志默认存储在/var/log/audit/audit.log
# 查看所有审计日志
sudo ausearch -i
# 按关键字搜索
sudo ausearch -k identity
# 按用户搜索
sudo ausearch -ua username
# 按时间范围搜索
sudo ausearch -ts today
sudo ausearch -ts 09:00:00 -te 17:00:00
# 生成可读性更好的报告
sudo aureport -i
# 生成用户登录报告
sudo aureport -au -i
# 生成文件访问报告
sudo aureport -f -i
# 监控特定进程
sudo auditctl -a always,exit -F pid=1234 -k monitored_process
# 监控特定用户
sudo auditctl -a always,exit -F uid=1000 -k user_activity
配置/etc/audisp/audisp-remote.conf
:
remote_server = logserver.example.com
port = 60
保护审计日志目录:
sudo chmod 700 /var/log/audit
sudo chown root:root /var/log/audit
防止审计服务被停止:
sudo chattr +i /etc/audit/rules.d/audit.rules
定期审查审计规则和日志
设置警报机制,对关键事件进行实时通知
systemctl status auditd
journalctl -u auditd
grep audit /boot/config-$(uname -r)
通过以上配置,您可以建立一个全面的系统安全审计框架,帮助您监控系统活动、检测安全事件并满足合规要求。