使用auditd并结合rsyslog和sudo日志记录的更全面的解决方案:
1. 使用 auditd 配置详细的审计规则
安装 auditd
sudo yum install audit -y
sudo systemctl start auditd
sudo systemctl enable auditd
配置 auditd 规则
编辑 /etc/audit/rules.d/audit.rules 文件,添加以下规则:
# 记录所有登录事件
-w /var/log/secure -p wa -k auth
# 记录用户执行的命令
-a always,exit -F arch=b64 -S execve -k exec_commands
-a always,exit -F arch=b32 -S execve -k exec_commands
# 记录重要文件的访问,如/etc/passwd
-w /etc/passwd -p rwa -k passwd_changes
# 记录所有使用sudo的命令
-w /var/log/sudo.log -p wa -k sudo_commands
重启 auditd 以应用新规则
sudo systemctl restart auditd
2. 配置 sudo 日志记录
确保 sudo 的日志记录到 /var/log/sudo.log:
编辑 /etc/sudoers 文件,确保包含以下行:
Defaults logfile="/var/log/sudo.log"
3. 配置 rsyslog 以集中日志
安装 rsyslog(如果还没有安装)
sudo yum install rsyslog -y
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
配置 rsyslog 将审计日志发送到远程服务器
编辑 /etc/rsyslog.conf 文件,添加以下行来发送日志到远程日志服务器(假设远程日志服务器IP为 192.168.1.100):
# Load the necessary modules
module(load="imfile")
# Define input file for audit log
input(type="imfile"
File="/var/log/audit/audit.log"
Tag="audit"
Severity="info"
Facility="local6")
# Send logs to remote server
local6.* @@192.168.1.100:514
重启 rsyslog 以应用新配置
sudo systemctl restart rsyslog
4. 解析和分析日志
你可以使用 ausearch 和 aureport 命令来分析 auditd 日志。这里是一个自动化的示例脚本,用于解析和记录关键信息:
#!/bin/bash
OUTPUT_FILE="/var/log/parsed_audit_log.txt"
# 获取登录事件
ausearch -k auth -i > $OUTPUT_FILE
# 获取执行的命令
ausearch -k exec_commands -i >> $OUTPUT_FILE
# 获取访问的文件
ausearch -k passwd_changes -i >> $OUTPUT_FILE
# 获取sudo命令
ausearch -k sudo_commands -i >> $OUTPUT_FILE
echo "日志已解析并保存到 $OUTPUT_FILE"
保存为 parse_audit_log.sh 并设置为可执行:
chmod +x parse_audit_log.sh
运行脚本:
./parse_audit_log.sh
5. 使用安全措施
限制日志文件访问权限
确保只有授权用户可以读取审计日志和其他重要日志文件:
sudo chown root:root /var/log/audit/audit.log
sudo chmod 600 /var/log/audit/audit.log
sudo chown root:root /var/log/parsed_audit_log.txt
sudo chmod 600 /var/log/parsed_audit_log.txt
配置日志轮转
使用 logrotate 来管理日志文件,避免日志文件过大:
编辑 /etc/logrotate.d/audit 文件,添加以下内容:
/var/log/audit/audit.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0600 root root
postrotate
/sbin/service auditd reload > /dev/null 2>/dev/null || true
endscript
}
通过这种方法,你可以在CentOS上更安全地记录和管理用户的IP、时间、角色、访问的文件和操作的命令,同时确保日志的安全性和完整性。