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 策略规则:
policycoreutils-python
如果尚未安装,请安装该包:sudo yum install policycoreutils-python # For RHEL/CentOS # OR sudo dnf install policycoreutils-python # For Fedora
检查 SELinux 审计日志,查看是否有任何与您的 syslog 日志相关的拒绝。您可以使用以下
ausearch
命令:sudo ausearch -m avc -ts recent # Replace "recent" with a specific timestamp if needed
此命令将显示 AVC(访问向量缓存)拒绝。查找与您的 syslog 或 Rsyslog 进程相关的条目。
一旦确定了与 Rsyslog 相关的 AVC 拒绝,您就可以使用 生成 SELinux 策略规则
audit2allow
。例如,如果您看到与 Rsyslog 尝试写入特定目录相关的拒绝,则可以创建自定义 SELinux 模块来允许这些操作:sudo ausearch -m avc -ts recent | audit2allow -M my-rsyslog-policy
此命令将生成两个文件:
my-rsyslog-policy.pp
和my-rsyslog-policy.te
。 该.pp
文件是编译后的策略模块, 该.te
文件是人类可读的策略源。安装自定义 SELinux 策略模块:
sudo semodule -i my-rsyslog-policy.pp
重新启动 Rsyslog 服务以应用新的 SELinux 策略规则:
sudo systemctl restart rsyslog
监控 SELinux 审计日志以确保先前识别的 AVC 拒绝不再出现。
通过遵循以下步骤,您可以识别并解决可能阻止 Rsyslog 正常运行的 SELinux 拒绝。创建自定义 SELinux 策略规则时要小心,因为它们应该只允许必要的操作并维护系统的安全性。