为什么 chkrootkit 不测试 syslogd?

为什么 chkrootkit 不测试 syslogd?

当我用扫描我的机器时,chkrootkit我注意到它总是显示其中之一:

Checking `syslogd'...                                       not tested

为什么不测试这个?应该测试这个吗?如果测试它是件好事,我该如何让它测试它?


操作系统信息:

Description:    Ubuntu 14.10
Release:    14.10

封装信息:

chkrootkit:
  Installed: 0.49-5ubuntu1
  Candidate: 0.49-5ubuntu1
  Version table:
 *** 0.49-5ubuntu1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ utopic/universe amd64 Packages
        100 /var/lib/dpkg/status

答案1

发生这种情况是因为chkrootkit在几个常见位置查找可执行文件syslogd,但由于 Ubuntu 使用rsyslog,其 syslog 守护进程被称为rsyslogd

要检查您机器上的 syslog 守护程序是否特别调用rsyslogd而不是syslogd,您可以运行locate syslogd(当然,如果您确实有 rootkit,它也可能导致此命令报告错误结果):

ek@Io:~$ locate syslogd
/etc/apparmor.d/usr.sbin.rsyslogd
/etc/apparmor.d/disable/usr.sbin.rsyslogd
/etc/apparmor.d/local/usr.sbin.rsyslogd
/usr/sbin/rsyslogd
/usr/share/man/man8/rsyslogd.8.gz

为了验证这是chkrootkit不测试 syslog 守护进程的原因,你可以chkrootkit使用-d标志运行(例如调试模式)并将输出的副本发送到文件:

sudo chkrootkit -d |& tee ~/chkrootkit.log

Checking `syslogd'...然后在文本编辑器中打开日志文件并检查和消息之间的调试输出not tested。在我的计算机上它看起来像这样(我预计在您的计算机上它会类似):

Checking `syslogd'...                                       + chk_syslogd
+ STATUS=1
+ SYSLOG_I_L=/usr/lib/pt07|/dev/pty[pqrs]|/dev/hd[als][0-7]|/dev/ddtz1|/dev/ptyxx|/dev/tux|syslogs\.h
+ loc syslogd syslogd /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /sbin /usr/sbin /lib /usr/lib /usr/libexec .
+ thing=syslogd
+ shift
+ dflt=syslogd
+ shift
+ :
+ test -f /usr/local/sbin/syslogd
+ :
+ test -f /usr/local/bin/syslogd
+ :
+ test -f /usr/sbin/syslogd
+ :
+ test -f /usr/bin/syslogd
+ :
+ test -f /sbin/syslogd
+ :
+ test -f /bin/syslogd
+ :
+ test -f /sbin/syslogd
+ :
+ test -f /usr/sbin/syslogd
+ :
+ test -f /lib/syslogd
+ :
+ test -f /usr/lib/syslogd
+ :
+ test -f /usr/libexec/syslogd
+ :
+ test -f ./syslogd
+ [ / = / ]
+ echo syslogd
+ exit 1
+ CMD=syslogd
+ [ ! -r syslogd ]
+ return 2
+ STATUS=2
+ [  = t ]
+ echo not tested
not tested

由于名为syslogd 在任何这些位置都不存在(或者根本没有)没有什么可测试的。

可能的部分解决方法就是在其中一个位置创建一个指向真实ryslogd可执行文件的符号链接。我认为这只是部分的解决方案,因为我不知道检查(或应该检查)的细节chkrootkit,或者是否应该做任何特殊的事情来正确检查rsyslogd或者它在检查符号链接和最近创建的文件时是否真的正常工作.当我这样做时chkrootkit确实报告检查成功:syslogd

ek@Io:~$ sudo ln -s /usr/sbin/rsyslogd /usr/local/sbin/syslogd
ek@Io:~$ sudo chkrootkit | grep syslogd
Checking `syslogd'...                                       not infected

子目录sbin/usr/local可能尚不存在,在这种情况下您可以创建它。无论哪种方式,我建议syslogd在使用后删除符号链接。

任何状况之下真正的解决方案作为菩提禅--这应该作为chkrootkitUbuntu 软件包的一个错误进行报告。我建议您报告错误的方式如下:

  1. 阅读本指南,如果您还没有的话。它为编写错误报告提供了极好的指导。(这个问题是另一个很好的资源。
  2. 跑步ubuntu-bug chkrootkit
  3. Apport 会提示“正在收集问题信息”。完成后,点击“发送”。这将打开一个新的浏览器选项卡,您可以在其中报告错误。
  4. chkrootkit包括记录问题发生时的输出信息。我建议附加显示其输出的日志,最好包括调试输出。您可以附加运行时创建的日志文件sudo chkrootkit -d |& tee ~/chkrootkit.log(见上文)。您还可以在错误报告本身的文本中重现最相关的小部分。
  5. 提交错误报告。
  6. 或者,如果您对此答案发表评论,我会转到错误报告并指出我也受到了影响——因为我能够在我的系统上重现该错误。我可能还能提供其他信息——例如,我可以确认它发生在 15.04 Beta 上,如果您没有时间制作和附加日志,我可以这样做。(但我鼓励您在原始报告中提供尽可能多的相关信息。)

答案2

http://www.chkrootkit.org/README

“未测试”:未执行测试——这可能发生在以下情况下:
a)测试特定于操作系统;
b)测试依赖于不可用的外部程序;
c)给出了一些特定的命令行选项。(例如 -r)。

假设您没有传递特定的命令行选项,我猜测这在某种程度上是“特定于操作系统的”。

我会向 Ubuntu 提交错误报告

答案3

我写信给 chkrootkit 的作者,告诉他要对 syslogd 进行检查,而不是对基于 Ubuntu 的发行版中的 syslogd 进行检查。

以下是对话的相关部分:

--- 剪辑 ---

我知道这是一个基于 Ubuntu 发行版的问题,但 rsyslog 最终有可能成为目标吗?

是的,所有 Linux 二进制文件都可能被感染(包括 rsyslogd),但要检查它,我需要查看受感染的二进制文件。自 chkrootkit 创建以来的 20 年里,我从未见过 rsyslogd 被感染。--- 片段 ---

所以这不是一个错误。

干杯。

相关内容