在CentOS系统的运维管理中,保障系统日志不被普通用户随意修改是维护系统安全性和可追溯性的重要工作。系统日志默认存储在/var/log目录下,包含内核日志、服务日志、安全日志等多种类型,一旦被篡改会直接影响故障排查和安全审计的效率。

一、调整系统日志文件的基础权限
CentOS系统的日志文件默认由root用户和adm组拥有,普通用户通常只有读取权限,但部分场景下可能存在权限配置不当的问题,首先需要确认并调整日志文件的权限。
1.1 查看日志文件当前权限
使用以下命令查看/var/log目录下日志文件的权限和所属用户组:
# 查看/var/log目录下所有日志文件的权限、所属用户和组 ls -l /var/log/*.log # 查看特定日志如安全日志的权限 ls -l /var/log/secure
1.2 设置合理的日志文件权限
建议将日志文件的权限设置为640,即root用户拥有读写权限,adm组拥有读取权限,其他用户无任何权限,避免普通用户修改日志。执行以下命令批量调整权限:
# 递归设置/var/log目录下所有.log文件的权限为640
find /var/log -name "*.log" -exec chmod 640 {} ;
# 将日志文件的所属组设置为adm,确保授权用户可读取
find /var/log -name "*.log" -exec chown root:adm {} ;
二、限制用户对日志服务的操作权限
CentOS系统默认使用rsyslog服务管理日志,普通用户若有权限操作rsyslog服务,可能会停止日志记录或修改日志配置,需要进一步限制相关权限。
2.1 禁止普通用户操作rsyslog服务
通过sudoers配置限制只有root用户可管理rsyslog服务,编辑sudoers文件:
# 编辑sudoers文件,建议使用visudo命令避免语法错误 visudo
在文件中添加以下内容,禁止所有普通用户执行rsyslog相关的服务管理命令:
# 禁止所有用户通过systemctl管理rsyslog服务 ALL ALL=(ALL) !/usr/bin/systemctl restart rsyslog, !/usr/bin/systemctl stop rsyslog, !/usr/bin/systemctl reload rsyslog
2.2 加固rsyslog配置文件权限
rsyslog的配置文件为/etc/rsyslog.conf和/etc/rsyslog.d/目录下的文件,需要限制普通用户修改这些配置文件:
# 设置rsyslog主配置文件权限为600,仅root可读写 chmod 600 /etc/rsyslog.conf # 设置rsyslog配置目录下所有文件权限为600 chmod 600 /etc/rsyslog.d/* # 设置配置文件所属用户和组为root chown root:root /etc/rsyslog.conf /etc/rsyslog.d/*
三、通过auditd添加日志修改审计规则
auditd是CentOS系统的审计服务,可以监控日志文件的操作行为,即使有权限的用户尝试修改日志,也会被记录到审计日志中,便于后续溯源。
3.1 安装并启动auditd服务
若系统未安装auditd,先执行安装命令,然后启动服务并设置开机自启:
# 安装audit审计工具 yum install audit -y # 启动auditd服务 systemctl start auditd # 设置auditd开机自启 systemctl enable auditd
3.2 添加日志文件监控规则
使用auditctl命令添加监控规则,监控/var/log目录下所有日志文件的写入、修改、删除操作:
# 添加规则:监控/var/log目录下的所有文件,记录写入、修改、删除操作,对应系统调用为write、rename、unlink auditctl -w /var/log -p wa -k log_modify # 查看已添加的审计规则 auditctl -l
若需要规则永久生效,需要将规则写入/etc/audit/rules.d/audit.rules文件中:
# 编辑审计规则文件 vi /etc/audit/rules.d/audit.rules # 在文件末尾添加以下内容 -w /var/log -p wa -k log_modify # 重启auditd服务使规则生效 systemctl restart auditd
3.3 查看审计日志
当触发日志修改操作时,审计记录会写入/var/log/audit/audit.log,使用以下命令查看相关记录:
# 搜索包含log_modify关键词的审计记录 ausearch -k log_modify
四、验证限制效果
完成上述配置后,可以切换到一个普通用户,尝试修改系统日志文件,验证限制是否生效:
# 切换到一个普通用户,假设用户名为testuser su - testuser # 尝试修改安全日志,此时应该提示权限不足 echo "test log" >> /var/log/secure
若返回权限不够的提示,说明文件权限限制生效。再尝试停止rsyslog服务,若提示不允许的操作,说明服务操作限制生效。
| 限制方式 | 作用 | 适用场景 |
|---|---|---|
| 日志文件权限调整 | 从文件层面禁止普通用户修改日志 | 所有CentOS系统基础配置 |
| rsyslog服务权限限制 | 防止普通用户停止或修改日志记录规则 | 需要长期稳定记录日志的场景 |
| auditd审计规则 | 记录所有日志修改行为,便于溯源 | 对安全要求较高的生产环境 |