一、前置准备:安装与配置rsyslog
确保CentOS系统已安装rsyslog(默认已安装),并启动服务:
sudo yum install rsyslog -y # 安装rsyslog(CentOS 7/8)
sudo systemctl start rsyslog # 启动服务
sudo systemctl enable rsyslog # 开机自启
编辑/etc/rsyslog.conf,配置基础日志分类存储(如将认证日志单独保存):
auth,authpriv.* /var/log/auth.log # 认证相关日志(如登录、sudo使用)
*.info;mail.none;authpriv.none;cron.none /var/log/messages # 普通系统日志
重启服务使配置生效:
sudo systemctl restart rsyslog
二、强化rsyslog自身安全性
firewalld)限制rsyslog端口(UDP 514/TCP 514)的访问,仅允许可信IP(如日志服务器IP)访问:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="514" protocol="tcp" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="514" protocol="udp" accept'
sudo firewall-cmd --reload
/etc/rsyslog.conf添加TLS配置:module(load="imtcp")
module(load="omfwd")
module(load="tls")
input(type="imtcp" port="514" ssl.caCert="/etc/rsyslog/certs/ca.pem" ssl.cert="/etc/rsyslog/certs/server.crt" ssl.key="/etc/rsyslog/certs/server.key")
action(type="omfwd" target="192.168.1.100" port="514" protocol="tcp" tls="on" tls.caCert="/etc/rsyslog/certs/ca.pem")
sudo chown root:root /var/log/auth.log /var/log/messages
sudo chmod 600 /var/log/auth.log /var/log/messages
chattr命令给日志文件添加不可更改属性(需root权限):sudo chattr +i /var/log/auth.log
(注:需修改日志时,用chattr -i临时解除,修改后再恢复)三、部署auditd实现深度安全审计
rsyslog仅能记录日志,无法主动监控系统调用或用户操作,需配合auditd(Linux审计守护进程)实现深度审计:
sudo yum install audit -y
/etc/audit/rules.d/audit.rules,添加关键监控规则(如监控/etc/passwd文件修改、execve系统调用(程序执行)、用户登录):# 监控/etc/passwd文件的写、删除、属性修改操作
-w /etc/passwd -p wa -k passwd_change
# 监控所有程序执行(execve系统调用)
-a exit,always -F arch=b32 -S execve -k execve_audit
-a exit,always -F arch=b64 -S execve -k execve_audit
# 监控用户登录(ssh、su、login等)
-w /var/log/secure -p rwxa -k login_audit
sudo systemctl start auditd
sudo systemctl enable auditd
augenrules命令加载新规则:sudo augenrules --load
四、使用工具监控与分析审计日志
tail命令实时监控认证日志或audit日志:sudo tail -f /var/log/auth.log # 实时查看认证日志
sudo ausearch -m USER_LOGIN -i # 实时查看用户登录事件(需auditd支持)
aureport工具生成汇总报告(如最近7天的登录事件、execve调用):sudo aureport -au -ts today -te 7 # 用户认证报告(最近7天)
sudo aureport -k -i # 所有带key的审计事件(如passwd_change、execve_audit)
ausearch工具查询特定key的事件(如passwd_change):sudo ausearch -k passwd_change -i # 查询/etc/passwd修改事件
sudo ausearch -k execve_audit | grep "comm=" # 查看执行的程序名称
五、日志轮转与长期管理
使用logrotate工具自动轮转日志,防止日志文件过大占用磁盘空间:
/etc/logrotate.d/rsyslog(针对rsyslog日志)和/etc/logrotate.d/audit(针对audit日志):# /etc/logrotate.d/rsyslog
/var/log/messages {
daily
rotate 30
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
systemctl restart rsyslog > /dev/null 2>&1 || true
endscript
}
# /etc/logrotate.d/audit
/var/log/audit/audit.log {
daily
rotate 30
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
systemctl restart auditd > /dev/null 2>&1 || true
endscript
}
sudo logrotate -vf /etc/logrotate.d/rsyslog
(-v表示详细模式,-f表示强制轮转)六、持续维护与优化
sudo yum update rsyslog audit -y
/var/log/auth.log和/var/log/audit/audit.log定期备份到远程服务器(如使用scp或rsync),防止本地日志丢失。systemctl命令定期检查rsyslog和auditd的运行状态,确保服务正常:sudo systemctl status rsyslog
sudo systemctl status auditd