Rsyslog 不会从 Cisco 网络设备写入任何日志 - 所有其他远程系统日志均正常工作

Rsyslog 不会从 Cisco 网络设备写入任何日志 - 所有其他远程系统日志均正常工作

tcpdump 确认有效的系统日志来自多个远程系统 - 服务器和思科网络设备。

操作系统是 Linux RHEL 8.8

所有服务器都正常运行并写入磁盘,并显示为 local1:info,但没有一个 Cisco 设备会写入磁盘。Cisco 在 tcpdump 中都显示为 local7:info。

我认为有一个内核过滤器或某种东西告诉 Rsyslog 丢弃/忽略 local7 的内容,但我不知道如何验证这一点。

我运行了这个但没有发现任何可疑的东西:grep -r 'local7' /etc/

我该如何进一步排除故障并找出这些 Cisco 日志发生了什么?我以前从未见过这种情况。

Rsyslog 配置很好,它们只是设置为*.*转到 /var/log/remote/00514/%fromhost-ip%/syslog.log,并且到目前为止,除了 Cisco 之外,它对所有系统都有效。

Cisco 的 IP 或主机名也不会显示在 Rsyslog 调试日志中。

谢谢!

答案1

为 Cisco 设备创建自定义 Rsyslog 配置:

为 Cisco 设备创建自定义 Rsyslog 配置文件,例如 /etc/rsyslog.d/cisco.conf。

在此文件中,指定 Cisco 日志的设施和严重性级别,并定义应将其写入何处。例如:

# Log all local7 messages from Cisco devices to a specific file local7.* /var/log/cisco.log

修改后重启 rsyslog systemctl restart rsyslog

检查 selinux 要检查 SELinux 是否阻止了您的 syslog 日志,您可以使用软件包audit2allow中的工具policycoreutils-python。以下是如何检查 SELinux 审计日志并生成必要的 SELinux 策略规则:

  1. policycoreutils-python如果尚未安装,请安装该包:

    sudo yum install policycoreutils-python  # For RHEL/CentOS
    # OR
    sudo dnf install policycoreutils-python  # For Fedora
    
  2. 检查 SELinux 审计日志,查看是否有任何与您的 syslog 日志相关的拒绝。您可以使用以下ausearch命令:

    sudo ausearch -m avc -ts recent  # Replace "recent" with a specific timestamp if needed
    

    此命令将显示 AVC(访问向量缓存)拒绝。查找与您的 syslog 或 Rsyslog 进程相关的条目。

  3. 一旦确定了与 Rsyslog 相关的 AVC 拒绝,您就可以使用 生成 SELinux 策略规则audit2allow。例如,如果您看到与 Rsyslog 尝试写入特定目录相关的拒绝,则可以创建自定义 SELinux 模块来允许这些操作:

    sudo ausearch -m avc -ts recent | audit2allow -M my-rsyslog-policy
    

    此命令将生成两个文件:my-rsyslog-policy.ppmy-rsyslog-policy.te。 该.pp文件是编译后的策略模块, 该.te文件是人类可读的策略源。

  4. 安装自定义 SELinux 策略模块:

    sudo semodule -i my-rsyslog-policy.pp
    
  5. 重新启动 Rsyslog 服务以应用新的 SELinux 策略规则:

    sudo systemctl restart rsyslog
    
  6. 监控 SELinux 审计日志以确保先前识别的 AVC 拒绝不再出现。

通过遵循以下步骤,您可以识别并解决可能阻止 Rsyslog 正常运行的 SELinux 拒绝。创建自定义 SELinux 策略规则时要小心,因为它们应该只允许必要的操作并维护系统的安全性。

相关内容