题
我需要在Linux服务器上扫描上传的文件是否有病毒,但我不知道如何处理它。
如果有的话,我有哪些选择?我也对多个用户同时发送多个文件时扫描程序的执行情况感兴趣。
解决方案
我想看看 Clam AntiVirus 。它提供了一个clamscan
程序,可以扫描给定文件并返回通过/失败指示。它是免费的,并定期自动更新其数据库。
至于将此类产品集成到文件上传过程中,这将特定于您实际使用的任何文件上传过程。
其他提示
以下是针对已知病毒进行测试时ClamAV的结果:
[infected] = <!> gt; AdvancedXPFixerInstaller.exe
[pass] = <!> gt; auto.exe
[pass] = <!> gt; cartao.exe
[infected] = <!> gt; cartoes_natal.exe
[pass] = <!> gt; codec.exe
[pass] = <!> gt; e421.exe
[pass] = <!> gt; fixtool.exe
[infected] = <!> gt; flash_install.exe
[infected] = <!> gt; issj.exe
[infected] = <!> gt; iwmdo.exe
[infected] = <!> gt; jobxxc.exe
[infected] = <!> gt; kbmt.exe
[pass] = <!> gt; killer_cdj.exe
[pass] = <!> gt; killer_javqhc.exe
[infected] = <!> gt; killer_rodog.exe
[infected] = <!> gt; kl.exe
[infected] = <!> gt; MacromediaFlash.exe
[infected] = <!> gt; MacromediaFlashPlayer.exe
[infected] = <!> gt; paraense.exe
[infected] = <!> gt; pibzero.exe
[pass] = <!> gt; scan.exe
[pass] = <!> gt; uaqxtg.exe
[pass] = <!> gt; vejkcfu.exe
[infected] = <!> gt; VIDeoSS.exe
[infected] = <!> gt; wujowpq.exe
[pass] = <!> gt; X-IrCBOT.exe
问题是,这些都不应该通过。
如果您担心性能,请考虑使用clamd / clamdscan作为您的实现。 clamd作为守护进程运行,因此所有初始化成本只进行一次。然后,当您使用clamdscan扫描文件时,它只是将文件提供给分叉的clamd以进行实际扫描。如果你有大量的流量,它会更有效率。
如果您有超出此类的性能问题,则应考虑使用商业产品。如今,大多数大型玩家都拥有Linux / Unix版本。
您应该查看 opswat的MetaScan 。此工具管理文件的更新和多引擎扫描。它捆绑了AVG,CA eTrust <!>#8482;。 ClamWin,ESET NOD32防病毒引擎,MicroWorld eScan引擎,Norman病毒控制和VirusBuster EDK。此外,它将调用诺顿等。优点是您可以针对该文件运行多个引擎。
您应该尝试找一个具有扫描仪公共API的反病毒软件供应商。这样您就可以以编程方式扫描文件。从长远来看,它会比通过上传脚本搞乱其他进程更容易。
您是否通过商业扫描仪运行它们?我曾经是一个产品的管理员,它通过4个商用扫描仪并行运行文件。我有一个几百个测试病毒库,没有一个商业扫描仪能找到它们......
Clamscan会在文件存储后扫描文件,而不会阻止上传或下载受感染的文件
我有一个鱿鱼(https +缓存)<!> lt; - <!> gt; HAVP ( clamAV )<!> lt; - <!> gt; Tomcat反向代理设置。 HAVP( http://www.server-side.de/ )是扫描http流量虽然是ClamAV或任何其他商业防病毒软件。它会阻止用户下载受感染的文件。
尽管如此,它在上传时不起作用,因此它不会阻止文件存储在服务器上,但会阻止文件下载并传播。因此,使用常规文件扫描(例如clamscan)