首页/安全/安全加固速查/rsyslog 配置核查与语法校验

rsyslog 配置核查与语法校验

系统日志与认证日志都过 rsyslog:核查主配置与 rsyslog.d 片段,改前用 -N1 校验语法。

安全加固速查安全更新于 2026-10-13

日志服务不能失明

系统日志与认证日志都要经过 rsyslog:主配置 /etc/rsyslog.conf 加上 /etc/rsyslog.d 下的片段共同决定“什么日志写到哪、是否转发”。改配置前必须用 rsyslogd -N1 做语法校验,因为日志服务一旦启动失败,等于全系统失明——故障、入侵行为都留不下记录,而且往往不会立刻有人发现。

基本信息

适用平台Linux(RHEL/CentOS/Debian/Ubuntu)
主配置/etc/rsyslog.conf
片段目录/etc/rsyslog.d/*.conf
校验命令rsyslogd -N1(只检查不启动)
关键动作变更先校验,再 reload,少用 restart

典型使用场景

  • 基线核查:确认日志落盘位置与留存策略符合要求
  • 变更前置校验:调整规则前验证语法,避免日志服务起不来
  • 排障:某类日志不再写入文件时定位是规则还是权限问题
  • 日志分流:把不同级别的日志写到独立文件便于检索
  • 转发配置的前置准备:在集中采集方案里属于第一步

核查与校验

核查与校验
rsyslogd -N1                        # 配置语法校验,不启动服务
grep -v '^#' /etc/rsyslog.conf | grep -v '^$' | head -30
ls /etc/rsyslog.d/
cat /etc/rsyslog.d/*.conf 2>/dev/null | head -40
systemctl status rsyslog --no-pager | head   # 确认服务在运行且最近无重启失败
logger -p local0.info 'rsyslog-config-test'   # 写入一条测试日志
sudo tail -5 /var/log/messages 2>/dev/null || sudo tail -5 /var/log/syslog

核查项读法

检查项含义异常表现
rsyslogd -N1 退出码配置语法是否合法非 0 表示配置有误,reload 会失败
includes 引用片段是否被正确加载片段存在但未生效,说明未被引用
规则行设施.级别 目标规则写反会导致日志写错位置
文件权限目标文件所属与权限权限不足时静默丢弃日志
服务状态服务是否在运行反复重启说明配置或磁盘有问题
日志服务挂掉等于全系统失明:任何改动先用 rsyslogd -N1 校验再重载,这是成本最低的一道保险。

落地要点

  • 优先 reload 而不是 restart:restart 可能丢掉瞬时日志
  • -N1 校验不覆盖 include 文件的读取权限,仍需真实写一条日志验证
  • 配置片段文件名影响加载顺序,编号规范能减少覆盖冲突
  • 日志目录空间不足会导致写入失败,纳入容量监控
  • 把日志目标文件与集中采集方案一起设计,避免本地与远端两套口径不一致
只校验不做一次真实写入验证,容易漏掉权限类问题:日志服务正常但文件写不进去,属于沉默失效。

易错点

  • 不校验直接 reload:配置有误导致日志服务中断,故障期间无任何记录
  • 用 restart 代替 reload:瞬时日志丢失,恰是故障前后最关键的记录
  • 只改文件不看是否被 include:片段存在但不生效,误判为改动无用
  • 忽略目标目录权限与容量:日志静默丢弃,事后无法还原

数据来源与参考

  • rsyslog 官方文档
  • CIS Linux Benchmark:rsyslog

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌