我需要扫描 Linux 系统中的病毒/恶意软件,仅扫描整个文件系统。有几个选项可以考虑。
- 一种是用户通常的做法:每天使用防病毒软件扫描一次系统。
- 第二个选项是查找过去一天修改的文件并将该列表提供给防病毒程序。
我在包含 500 万个空文件的目录上测试了以下 bash 命令find
,它非常高效。
date;find /test/ -type f -ctime -1 -type f 1>./find_ctime.out 2>./find.errors;date
只需约5秒。
我使用 -ctime 选项只是为了克服使用 touch 等实用程序更改某些程序修改时间的问题。
大多数管理员在谈论系统扫描时都会谈论使用防病毒软件进行完整扫描。
为什么不可以使用 find 来获取修改的文件列表并对其进行扫描?
只要您除了增量扫描之外还定期进行完整系统扫描,这可能不是最糟糕的想法,但也有一些缺点:
并非所有漏洞都需要修改文件
一些漏洞可能潜伏在旧文件中,而旧防病毒签名根本无法发现这些漏洞。因此,当新签名发布时,他们可能会在旧文件中发现威胁。
文件修改时间很奇怪
Linux 中的文件修改和更改时间存在各种奇怪和不一致的情况。
dd
则可以绕过 mtime/ctimes因此,考虑到所有这些,如果攻击者知道您的防病毒扫描策略是基于修改/更改时间的,他们可以很容易地使用上述任何一种方法以及可能数十种其他方法来绕过它。