CentOS系统提供了强大的审计框架(auditd)来跟踪系统活动,包括用户登录、文件访问、命令执行等。以下是使用审计日志监测未经授权访问的完整指南:
# 安装auditd
sudo yum install audit
# 启用并启动服务
sudo systemctl enable auditd
sudo systemctl start auditd
审计规则存储在/etc/audit/rules.d/audit.rules
文件中。以下是常用监控规则:
# 监控所有登录尝试
-a always,exit -F arch=b64 -S execve -F path=/bin/login -k LOGIN
-a always,exit -F arch=b32 -S execve -F path=/bin/login -k LOGIN
# 监控SSH登录
-w /etc/ssh/sshd_config -p wa -k SSH_CONFIG
-w /var/log/secure -p wa -k SSH_LOGIN
# 监控/etc/passwd和/etc/shadow访问
-w /etc/passwd -p wa -k PASSWD
-w /etc/shadow -p wa -k SHADOW
-w /etc/sudoers -p wa -k SUDOERS
# 监控关键配置文件
-w /etc/hosts -p wa -k HOSTS
-w /etc/resolv.conf -p wa -k DNS
# 监控sudo使用
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k SUDO
-a always,exit -F arch=b32 -S execve -F path=/usr/bin/sudo -k SUDO
# 监控su命令
-a always,exit -F arch=b64 -S execve -F path=/bin/su -k SU
-a always,exit -F arch=b32 -S execve -F path=/bin/su -k SU
# 重新加载审计规则
sudo augenrules --load
审计日志默认存储在/var/log/audit/audit.log
中。
# 查看所有审计日志
sudo ausearch -i
# 查看特定类型的日志(如登录)
sudo ausearch -k LOGIN -i
# 查看特定用户的日志
sudo ausearch -ui username -i
# 查看最近30分钟的事件
sudo ausearch -ts recent -i
# 生成报告
sudo aureport -i
# 实时监控审计日志
sudo tail -f /var/log/audit/audit.log
编辑/etc/audit/auditd.conf
确保以下设置:
max_log_file = 50 # 日志文件最大MB数
num_logs = 5 # 保留的日志文件数量
可以配置audispd将关键事件转发到SIEM系统或发送邮件通知。
创建一个定期检查审计日志的脚本:
#!/bin/bash
# 检查失败的登录尝试
FAILED_LOGINS=$(ausearch -m USER_LOGIN --success no -i | wc -l)
# 检查特权命令使用
PRIV_CMDS=$(ausearch -k SUDO -i | wc -l)
# 检查敏感文件访问
SENSITIVE_ACCESS=$(ausearch -k PASSWD -k SHADOW -k SUDOERS -i | wc -l)
# 发送警报(如果超过阈值)
if [ $FAILED_LOGINS -gt 5 ] || [ $SENSITIVE_ACCESS -gt 0 ]; then
echo "安全警报: 检测到可疑活动" | mail -s "安全警报" admin@example.com
fi
通过以上配置,您可以有效监控CentOS系统中的未经授权访问尝试,并及时发现潜在的安全威胁。