对/var/log/messages文件追加了不可修改扩展属性a,导致logroate对/var/log/messages失效

文章描述了一次由于/var/log/messages文件被设置为不可修改(a)属性,导致logrotate无法正常轮换日志的问题。在解决过程中,通过检查logrotate配置和文件属性,发现并修改了syslog配置文件,添加了在轮换前后调整文件属性的命令,从而恢复了日志轮换功能。此外,还提醒关注日志产生的源头,确保其正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一次logroate未生效的根因和解决过程

故障现象
  • 监控系统预警某服务器A的存储使用用率超过80%。经查发现Linux的系统日志文件/var/log/messages在某个时间起不再轮换并删除归档文件,形成一个超大文件,占用服务器的大量本地存储。
故障环境
  • centos7.6
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
故障根因
  • 某次信息安全测评过程中对/var/log/messages文件追加了不可修改扩展属性a,导致logroate对/var/log/messages失效。
改进措施

修改/etc/logrotate.d/syslog文件,在日志轮换前删除/var/log/messages的a属性,在日志轮换后增加a属性。

  • 修改前的 /etc/logrotate.d/syslog文件内容如下:
# cat /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
#	
  • 修改后的 /etc/logrotate.d/syslog文件内容如下:
# cat /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    compress
    missingok
    sharedscripts
    prerotate
        /bin/chattr -a /var/log/messages 2>/dev/null || true
    endscript
    postrotate
        /bin/chattr +a /var/log/messages 2>/dev/null; /bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2>/dev/null || true
    endscript
}
# 
故障解决过程
  • 监控系统预警某服务器A的存储使用用率超过80%:
    在这里插入图片描述
  • 登录服务器A,通过du -h --max-depth=1命令层层往下查,查看到/var/log/messages文件非常大,并且从某个日期起不再轮换。
  • 查看logrotate的轮换状态文件,以确定是否执行了具体切割任务。发现/var/log/messages在前一天被轮换了:
# cat /var/lib/logrotate/logrotate.status
logrotate state -- version 2
...(手工删除部分显示)
"/var/log/messages" 2023-3-xx-3:14:1
...(手工删除部分显示)
#
  • 执行/usr/sbin/logrotate -d /etc/logrotate.d/syslog命令,在调试模式看查看logrotate运行情况,发现/var/log/messages竟然未达到轮换的大小,猜测应该是logrotate未读取到/var/log/messages的真实大小。
# /usr/sbin/logrotate -d /etc/logrotate.d/syslog
...(手工删除部分显示)
considering log /var/log/messages
  log does not need rotating (log size is below the 'size' threshold)
...(手工删除部分显示)
  • 查看logrotate轮换模式:在/etc/logrotate.d/syslog文件未指定轮换模式,查看/etc/logrotate.conf设置默认的轮换模式为create,即把当前日志文件改名再新建一个同名的日志文件。因此推测logrotate对 /var/log/messages 无改名权限。
# cat /etc/logrotate.conf
...(手工删除部分显示)
# create new (empty) log files after rotating old ones
create
...(手工删除部分显示)
# ll /var/log/messages
-rw------- 1 root root XXX XXX  4 19:52 /var/log/messages
# lsattr /var/log/messages
-----a---------- /var/log/messages
  • 哪什么时候对/var/log/messages增加了权限扩展属性a呢?根据最后一次轮换日期回溯,发现在某次信息安全测评中的Linux的基线检查发现如下漏洞并完成了整改。
检测方法
    使用命令查看/var/log/messages文件是否只可追加不可修改:
        #lsattr /var/log/messages
判定依据
    /var/log/messages文件的权限第六位为a则合规,否则不合规。
    
加固方案参考配置操作
	1、更改/var/log/messages文件属性
	  #chattr +a /var/log/messages       #如果不存在则忽略
待跟进事项
  • /var/log/messages为什么产生了大量日志?要分析其来源,并判断是否适合写到此文件中。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值