一、Linux病毒的历史
1996年出现的Staog是Linux系统下的第一个病毒,它出自澳大利亚一个叫VLAD的组织。Staog病毒是用汇编语言编写,专门感染二进制文件,并通过三种方式去尝试得到root权限。Staog病毒并不会对系统有什么实质性的损坏,它应该算是一个演示版,但它向世人揭示了Linux可能被病毒感染的潜在危险。Linux系统上第二个被发现的病毒是Bliss病毒,它是一个不小心被释放出来的实验性病毒。与其它病毒不同的是,Bliss本身带有免疫程序,只要在运行该程序时加上“disinfect-files-please”选项,即可恢复系统。
如果说刚开始时Linux病毒向人们展示的仅仅是一个概念,那么,在2001年发现的Ramen病毒,则已经开始引起很多人的担心。Ramen病毒可以自动传播,无需人工干预,所以和1988年曾使人们大受其苦的Morris蠕虫非常相似。它只感染Red Hat 6.2和7.0版使用匿名FTP服务的服务器,它通过两个普通的漏洞RPC.statd和wu-FTP感染系统。表面看来,这不是一个危险的病毒,它很容易被发现,且不会对服务器做出任何有破坏性的事情。但是当它开始扫描时,将消耗大量的网络带宽。从1996年至今,新的Linux病毒屈指可数,这说明Linux是一个健壮的、具有先天病毒免疫能力的操作系统。当然,除了其自身设计优秀外,还有其它的原因。首先,Linux早期的使用者一般都是专业人士,就算是今天,虽然其使用者激增,但典型的使用者仍为那些有着很好的电脑背景且愿意帮助他人的人,Linux高手更倾向于鼓励新手支持这样一种文化精神。
正因为如此,Linux使用群中一种倾向就是以安全的经验尽量避免感染病毒。其次,年轻也是Linux很少受到病毒攻击的原因之一。事实上,所有的操作系统(包括DOS和Windows)在其产生之初,也很少受到各种病毒的侵扰。然而,2001年3月,美国SANS学院的全球事故分析中心(Global Incident Analysis Center――GIAC)发现,一种新的、针对使用Linux系统计算机的蠕虫病毒正通过互联网迅速蔓延,它将有可能对用户的电脑系统造成严重破坏。这种蠕虫病毒被命名为Lion病毒,与Ramen蠕虫病毒非常相似。但是,这种病毒的危险性更大,Lion病毒能通过电子邮件把一些密码和配置文件发送到一个位于china.com的域名上。
Dartmouth学院安全技术研究所工程师威廉・斯蒂恩斯说:“攻击者在把这些文件发回去之后就可以通过第一次突破时的缺口再次进入整个系统。这就是它与Ramen蠕虫病毒的不同之处。事实上,Ramen病毒是一种比较友善的病毒,它在侵入系统后会自动关闭其中的漏洞。而这个病毒却让那些漏洞敞开,并开辟新的漏洞。以至于如果你的系统感染了这个病毒,我们不能百分之百确信这个系统有挽救的价值。更加合理的选择很有可能是转移数据,并且重新格式化硬盘。”一旦计算机被彻底感染,Lion病毒就会强迫电脑开始在互联网上搜寻别的受害者。不过,感染Lion病毒的系统少于感染Ramen病毒的系统,但是它所造成的损失却比后者大得多。
二、Linux平台下的病毒分类
Linux操作系统一直被认为是Windows系统的劲敌,因为它不仅安全、稳定、成本低,而且很少发现有病毒传播。但是,随着越来越多的服务器、工作站和个人电脑使用Linux软件,电脑病毒制造者也开始攻击这一系统。对于Linux系统无论是服务器,还是工作站的安全性和权限控制都是比较强大的,这主要得力于其优秀的技术设计,不仅使它的操作系统难以宕机,而且也使其难以被滥用。Unix经过20多年的发展和完善,已经变得非常坚固,而Linux基本上继承了它的优点。在Linux里,如果不是超级用户,那么恶意感染系统文件的程序将很难得逞。当然,这并不是说Linux就无懈可击,病毒从本质上来说是一种二进制的可执行的程序。像速客一号(Slammer)、冲击波(Blast)、霸王虫(Sobig)、 米虫(Mimail)、劳拉(Win32.Xorala)病毒等恶性程序虽然不会损坏Linux服务器,但是却会传播给访问它的Windows系统平台的计算机。
Linux平台下的病毒分类大体如下:
◆ 可执行文件型病毒
可执行文件型病毒是指能够寄生在文件中的、以文件为主要感染对象的病毒。病毒制造者们无论使用什么武器,不管是汇编语言或C语言,要感染ELF文件都是轻而易举的事情。这方面的病毒有Lindose。
◆ 蠕虫(Worm)病毒
1988年Morris蠕虫爆发后,Eugene H. Spafford为了区分蠕虫和病毒,给出了蠕虫的技术角度的定义――计算机蠕虫可以独立运行,并能把自身的一个包含所有功能的版本传播到另外的计算机上。在Linux平台下,蠕虫病毒极为猖獗,像利用系统漏洞进行传播的Ramen、Lion和Slapper等,这些病毒都感染了大量的Linux系统,造成了巨大的损失。
◆ 脚本病毒
目前出现比较多的是使用Shell脚本语言编写的病毒。此类病毒编写较为简单,但是破坏力同样惊人。我们知道,Linux系统中有许多的以.sh结尾的脚本文件,而一个短短十数行的Shell脚本就可以在短时间内遍历整个硬盘中的所有脚本文件,进行感染。
◆ 后门程序
在广义的病毒定义概念中,后门也已经纳入了病毒的范畴。活跃在Windows系统中的后门这一入侵者的利器在Linux平台下同样极为活跃。从增加系统超级用户账号的简单后门,到利用系统服务加载、共享库文件注射、rootkit工具包,甚至可装载内核模块(LKM),Linux平台下的后门技术发展非常成熟,隐蔽性强,难以清除。这是Linux系统管理员极为头疼的问题。
三、Linux病毒的防治
综合以上介绍可以看到,总体来说计算机病毒对Linux系统的危害较小。但是由于各种原因在企业应用中往往是Linux和Windows操作系统共存形成异构网络,在服务器端大多使用Linux和Unix,在桌面端使用Windows,所以Linux的防范病毒策略分成针对Linux本身(服务器和使用其作为桌面的计算机)防范策略和针对使用Linux服务器后端的Windows系统的病毒防范策略两个部分,Linux下的防病毒软件也分成基于开放源代码的和商业软件两部分。
◆ 针对Linux本身做病毒防范策略(服务器和使用其作为桌面的计算机)
对可执行文件型病毒、蠕虫(Worm)病毒、脚本病毒的防范,通过安装GPL查杀病毒软件基本可以防范。服务器端可以使用AntiVir(http://www.hbedv.com/)查杀病毒。它是工作在命令行下的,运行时可以较少占用系统资源。桌面用户可以选择Tkantivir(http://www.sebastian-geiges.de/tkantivir/),它是用Tcl/Tk编写的,可以运行在任何X-Window环境下面,比如KDE或GNOME等。
对于后门程序防范,可以采用
LIDS(http://www.lids.org/)和Chkrootkit(http://www.chkrootkit.org/)。LIDS是Linux内核补丁和系统管理员工具(Lidsadm),它加强了Linux内核,可以保护dev/目录下的重要文件。而Chkrootkit可以检测系统的日志和文件,查看是否有恶意程序侵入系统,并且寻找关联到不同恶意程序的信号。最新版本的Chkrootkit0.45可以检测出sniffers、Trojans、worms、rootkit等100种病毒。
此外,对于Linux服务器来说运行的软件大都是开源软件,而且都在不停升级,稳定版和测试版交替出现。在www.apache.org等网站上,最新的ChangeLog中都写有“Bug Fix”、“Security Bug Fix”等字样。所以,Linux系统管理员要经常关注相关网站的Bug Fix和升级,及时升级或添加补丁,千万不要报侥幸心理。这里套用一句名言:“你的服务器永远可能在第二天被黑客接管。”
◆ 针对使用Linux服务器后端的Windows系统的病毒防范策略
许多企业使用代理服务器接人互联网,用户的Windows系统在进行HTTP网页浏览和文件下载时容易被感染病毒,所以可以在代理服务器上加挂一个病毒过滤器,对用户浏览的HTTP网页进行病毒检测,发现有用户浏览网页感染病毒的状况即由代理服务器进行阻断,丢弃带有病毒的请求,将不安全的进程阻止在代理服务器内,禁止带有病毒的数据向客户端计算机传播。Squid是一款非常优秀的代理服务器软件,但是没有专门的病毒过滤功能。可以考虑使用德国开放源码爱好者开发的一款基于Linux的病毒过滤代理服务器--HAVP(http://www.server-side.de/)。
HAVP病毒过滤代理服务器软件既可以独立使用,也可以与Squid串联使用,增强Squid代理服务器的病毒过滤功能。
提供邮件服务是Linux服务器中重要应用,可以使用ClamAV(http://www.clamwin.com/)防范病毒。ClamAV全名是Clam AntiVirus,它跟Liunx一样强调公开程序代码、免费授权等观念。ClamAV目前可以侦测超过8万种病毒、蠕虫和木马程序,并且随时更新数据库。其分布在世界各地的病毒专家24小时更新及维护病毒数据库,任何人发现可疑病毒也可以随时跟他们联系,立刻更新病毒码。这样在极短的时间内,网络上采用ClamAV的邮件服务器就能完成最新的防护。
以上主要介绍了基于开放源代码的软件,商业防毒软件商Trend Micro、Network Associates、Data Fellows和Sophos也都有各自的Linux版病毒检测器。另外,随着Linux在中国的发展许多我们熟悉的国内软件厂商(瑞星等)也推出了相应的Linux病毒防范软件。
用户防范.
与Windows的病毒相比,从数量上看,Linux的病毒几乎可以忽略不计,但是Linux病毒的制造者们并不会停止,他们多是一些精通编写代码的黑客,Linux自身不可避免地存在的脆弱点很有可能会被他们利用从而编写出各式各样的新Linux病毒来。虽然,Linux病毒还没有开始泛滥,但如果用户毫无防范概念的话,一旦某个Linux病毒暴发,就很可能造成严重的后果。所以Linux用户应该及早重视起Linux病毒这个问题。最后,笔者对Linux平台下病毒的防范总结出以下几条建议,仅供参考:
(1)做好系统加固工作。
(2)留心安全公告,及时修正漏洞。
(3)日常操作不要使用root权限进行。
(4)不要随便安装来历不明的各种设备驱动程序。
(5)不要在重要的服务器上运行一些来历不明的可执行程序或脚本。
(6)尽量安装防毒软件,并定期升级病毒代码库。
(7)对于连接到Internet的Linux服务器,要定期检测Linux病毒。蠕虫和木马是否存在。
(8)对于提供文件服务的Linux服务器,最好部署一款可以同时查杀Windows和Linux病毒的软件。
(9)对于提供邮件服务的Linux服务器,最好配合使用一个E-mail病毒扫描器。
总而言之,对于Linux平台下病毒的防范要采取多种手段,决不可因为现在Linux病毒很少就掉以轻心。
参考:http://os.51cto.com/art/201205/336907.htm