一、Linux 下病毒分类
Linux操作系统一直被认为是Windows系统的劲敌,因为它不仅安全、稳定、成本低,而且很少发现有病毒传播。但是,随着越来越多的服务器、工作站和个人电脑使用Linux软件,电脑病毒制造者也开始攻击这一系统。对于Linux系统无论是服务器,还是工作站的安全性和权限控制都是比较强大的,这主要得力于其优秀的技术设计,不仅使它的作业系统难以宕机,而且也使其难以被滥用。当然,这并不是说Linux就无懈可击,病毒从本质上来说是一种二进制的可执行的程序。速客一号(Slammer)、冲击波(Blast)、霸王虫(Sobig)、 米虫(Mimail)、劳拉(Win32.Xorala)病毒等恶性程序虽然不会损坏Linux服务器,但是却会传播给访问它的Windows系统平台的计算机。
Linux平台下的病毒分类:
1.可执行文件型病毒:可执行文件型病毒是指能够寄生在文件中的,以文件为主要感染对象的病毒。病毒制造者们无论使用什么武器,汇编或者C,要感染ELF文件都是轻而易举的事情。这方面的病毒有Lindose。
2.蠕虫(worm)病毒:1988年Morris蠕虫爆发后,Eugene H. Spafford 为了区分蠕虫和病毒,给出了蠕虫的技术角度的定义,“计算机蠕虫可以独立运行,并能把自身的一个包含所有功能的版本传播到另外的计算机上。”在Linux平台下,蠕虫病毒极为猖獗,像利用系统漏洞进行传播的ramen,lion,Slapper等,这些病毒都感染了大量的Linux系统,造成了巨大的损失。
3.脚本病毒:目前出现比较多的是使用shell脚本语言编写的病毒。此类病毒编写较为简单,但是破坏力同样惊人。我们知道,Linux系统中有许多的以.sh结尾的脚本文件,而一个短短十数行的shell脚本就可以在短时间内遍历整个硬盘中的所有脚本文件,进行感染。
4.后门程序:在广义的病毒定义概念中,后门也已经纳入了病毒的范畴。活跃在Windows系统中的后门这一入侵者的利器在Linux平台下同样极为活跃。从增加系统超级用户账号的简单后门,到利用系统服务加载,共享库文件注射,rootkit工具包,甚至可装载内核模块(LKM),Linux平台下的后门技术发展非常成熟,隐蔽性强,难以清除。是Linux系统管理员极为头疼的问题。
二、Linux 服务器病毒防范策略
综合以上介绍,可以看到总体来说计算机病毒对Linux系统存在较小的危险。但是由于各种原因在企业应用中往往是Linux和Windows操作系统共存形成异构网络。在服务器端大多使用Linux和Unix的,桌面端使用Windows 。所以为Linux的防范病毒策略分成两个部分:
1. 针对Linux本身(服务器和使用其作为桌面的计算机)防范策略。
可执行文件型病毒、蠕虫(worm)病毒、脚本病毒的防范通过安装GPL查杀病毒软件基本可以防范。服务器端可以使用f-prot(http://www.f-prot.com/ )它是工作在命令行下的,运行时可以较少占用系统资源。桌面用户可以选择tkantivir(http://www.sebastian-geiges.de/tkantivir/ )是用Tcl/Tk写的,可以运行在任何X-Windows环境下面,比如KDE或Gnome等。
对于后门程序防范可以采用LIDS(http://www.lids.org/ )和Chkrootkit(http://www.chkrootkit.org/ ),LIDS是Linux内核补丁和系统管理员工具(lidsadm),它加强了Linus内核。可以保护dev/目录下的重要文件。而Chkrootkit可以检测系统的日志和文件,查看是否有恶意程序侵入系统,并且寻找关联到不同恶意程序的信号。最新版本的Chkrootkit0.45可以检测出sniffers、Trojans、worms、rootkit等59种。
此外对于Linux服务器来说运行的软件大都是开源软件,而且都在不停升级,稳定版和测试版交替出现。在www.apache.org 等网站上,最新的ChangeLog中都写着:bug fix, security bug fix的字样。所以Linux系统管理员要经常的关注相关网站的bug fix和升级,及时升级或添加补丁。千万不要报侥幸心理,否则一个Shell脚本就可能拿下你的网站。套用一句名言:你的服务器永远可能在第二天被黑客接管。
2.针对使用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 目前可以侦测超过40,000 种病毒、蠕虫、木马程序,并且随时更新数据库,有一组分布在世界各地的病毒专家,24小时更新及维护病毒数据库,任何人发现可疑病毒也可以随时跟她们取得 联系,立刻更新病毒码,在极短的时间内,网络上采用ClamAV的邮件服务器就完成最新的防护动作。
三、安装配置f-prot
系统要求:硬件: 中央处理器:兼容 Intel X86处理器Pentium 200 以上 ,32 兆(推荐64兆)内存,100兆硬盘空间 ,显示内存4兆。软件: 内核版本 2.2以上 ,perl语言版本5。8以上。
f-prot 官方网址:http://www.f-prot.com/ ,是著名的冰岛F-Port杀毒软件,具有即时病毒扫描、定期病毒扫描、自定义病毒扫描等功能。 这是一个简单使用的抗滤过性病原体的工具,将透过发现及移动的病毒入侵中,保护你的资料。它目前可以发觉出64000不寻常及有害的计算机害虫。除了存取和要求扫描外,此工具也包含更新功能,自动的得到最新的病毒码程序。任何新的病毒都可以直接的加入到查觉数据库及解毒数据库。更新及病毒扫描可以自动执行。f-prot免费版为Home版,Linux版免费,windows收费,下载地址: Linux版本:http://www.f-prot.com/download/home_user/download_fplinux.html ,填写基本资料后才能下载,下载后,安装过程中不会要求输入序列号等。f-prot主要用于文件服务器(NFS和Samba)和邮件服务器(sendmail、postfix、Qmail)。
1. 软件下载
#wget http://files.f-prot.com/files/linux-x86/fp-linux-ws.rpm
2. 软件安装升级
软件安装完成后会自动连接到官方网站进行升级,操作如下:
#rpm -ivh fp-linux-ws.rpm
Preparing... ########################################### [100%]
1:fp-linux-ws ########################################### [100%]
***************************************
* F-Prot Antivirus Updater *
***************************************
There's a new version of:
"Application/Script viruses and Trojans" signatures on the web.
Starting to download...
Download completed.
Preparing to install Application/Script viruses and Trojans signatures.
Application/Script viruses and Trojans signatures have successfully been installed.
Preparing to install Document/Office/Macro viruses signatures.
Document/Office/Macro viruses signatures have successfully been installed.
**********************************
* Update completed successfully. *
**********************************
默认软件包安装在/usr/local/f-prot 目录下。
3. 查看f-prot手册页
f-prot是命令行下工作软件,软件提供请详细的手册页面。使用前请详细阅读。使用过Unix的用户比较熟悉man手册页。在Linux系统中存储着一部联机使用的手册,以供用户在终端上查找。man 是manual(手册)的缩写,使用man这个命令可以调阅其中的帮助信息,非常方便和实用。在您有输入命令有困难时, 您可以立刻得到这个文档. 例如, 如果您使用ps命令时遇到困难, 您可以输入man f-prot得到帮助信息. 这会显示出f-prot的手册页。由于手册页man page是用less程序来看的(可以方便地使屏幕上翻和下翻), 所以在man page里可以使用less的所有选项。
在less中比较重要的功能键有: [q]退出 ;[Enter]一行行地下翻 ;[Space]一页页地下翻 ;[b]上翻一页 ;[/]后跟一个字符串和[Enter]来查找字符串 ;[n]发现上一次查找的下一个匹配。手册页man page在很少的空间里提供了很多的信息。f-prot的手册页面如图1 。
总结:
到此为止我们介绍了Linux 下病毒特点以及f-prot的安装方法,下篇文章笔者会介绍f-prot的使用方法和技巧,敬请关注。
本文着重介绍linux环境下的f-prot防病毒软件的具体应用技巧。
一、 修改相关参数
f-prot主要用于文件服务器(NFS和Samba)和邮件服务器(sendmail、postfix、Qmail)。 对于文件服务器(NFS和Samba)可以直接使用,而邮件服务器(sendmail、postfix、Qmail)需要作相应修改,这里笔者以Postfix邮件服务器为例。Postfix 邮件服务器使用MailScanner 调用f-prot 与SpamAssassin, MailScanner配置比较直观简单。
1. 安装、配置MailScanner
# tar xzf MailScanner-4.48.4-2.rpm.tar.gz
# cd MailScanner-4.48.4-2
# ./install.sh
2. 修改 /etc/MailScanner/MailScanner.conf
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
Virus Scanners = f-prot
Always Include SpamAssassin Report = yes
Use SpamAssassin = yes
Required SpamAssassin Score = 4
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
SpamAssassin Install Prefix = /usr/bin
SpamAssassin Local Rules Dir = /etc/MailScanner
3. 让Postfix 调用MailScanner,在/etc/postfix/main.cf 加入以下一行
header_checks = regexp:/etc/postfix/header_checks
4. 编辑/etc/postfix/header_checks 为以下内容
/^Received:/ HOLD
5. 修正权限
# chown postfix.postfix /var/spool/MailScanner/incoming
# chown postfix.postfix /var/spool/MailScanner/quarantine
二、 f-prot命令行参数
f-prot是基于命令行下的工具,配合一些参数可以更有效查杀Linux、Windows病毒。
格式:f-prot [drive, file or directory] [options]
[options]主要参数见图-1:
应用说明:目前的防病毒产品普遍应用了一种被称为启发式扫描的技术,这是一种基于人工智能领域启发式( heuristic )搜索技术和行为分析手段的病毒检测技术。启发式扫描能够发现一些应用了已有机制或行为方式的病毒,根据“图灵试验”所获得的理论基础来分析,完全防御未知病毒是不可能的,只有当计算机拥有了超越人类的智能才可能检测出所有的未知病毒。智能主动防御可以有效防御针对未知的威胁及网络攻击;启发式扫描技术主要针对未知的病毒。这两种技术是可以并存的。
[drive, file or directory] 方便代表驱动器名称、文件名称或者目录名称。
三、 测试f-prot
您可以从网址(http://www.eicar.org/anti_virus_test_file.htm )下载一个测试感染文件 http://www.eicar.org/download/eicar_com.zip 将其放在一个临时目录中。使用f-prot扫描该目录。然后查看结果,如果出现图2 界面表示安装fprot安装工作成功。
从图2 我们可以看到f-port程序版本、扫描引擎版本。病毒库版本:“VIRUS SIGNATURE FILES”包括:SIGN.DEF、SIGN2.DEF、MARCO.DEF 以及生成日期。
四、 应用实例
例如需要可以检查系统加载的Windows分区,如果要检查C盘:使用命令(扫描结果见图-2):
#f-prot /mnt/winc -report=cjh
上面这个命令还会生成一个名称cjh是报表文件。如果你能确认你的电子邮件服务器支持8—bit的字节,可以直接用命令发送报表到管理员邮箱 :
cat <附件文件名> | mail <邮件地址>
cat(“concatenate”的缩写)命令是将几个文件处理成一个文件并将这种处理的结果保存到一个单独的输出文件,这里我们用它来合并邮件的文本。
cat cjh | mail Roger
上面的命令表示把内容为cjh文件内容的邮件给用户Roger。
五、 升级软件
f-prot是依赖当前信息来防止计算机受到新的安全威胁。通过在线升级可以给您的f-prot提供这些新信息,将程序更新和防护更新下载到您的计算机。f-prot安装目录包含一个tools子目录,进入这个目录执行一个perl语言脚步会自动连接到updates.f-prot.com:80端口进行系统的扫描引擎版本和病毒库版本升级,操作如下:
#./check-updates.pl
升级过程如图3 。
目前,f-prot杀毒软件平均五到七天升级一次。
六、 定时启动f-prot方法
在 Linux 中,任务可以被配置在指定的时间段、指定的日期、或系统平均载量低于指定的数量时自动运行。Linux 随带几个自动化任务的工具:cron、at。
1. 使用cron命令定时启动f-prot
cron 是一个可以用来根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。cron 假定系统持续运行。如果当某任务被调度时系统不在运行,该任务就不会被执行。要使用 cron 服务,你必须安装了 vixie-cron RPM 软件包,而且必须在运行 crond 服务。要判定该软件包是否已安装,使用 rpm -q vixie-cron 命令。要判定该服务是否在运行,使用 /sbin/service crond status 命令。如果没有打开可以运行命令:ntsysv,打开窗口在crond服务选项加上*(用空格键),然后重新启动系统,这样系统会启动cron服务。cron 的主配置文件是 /etc/crontab,/etc/crontab 文件中的每一行都代表一项任务,它的格式是:
minute hour day month dayofweek command
• minute — 分钟,从 0 到 59 之间的任何整数。
• hour — 小时,从 0 到 23 之间的任何整数。
• day — 日期从 1 到 31 之间的任何整数(必须是该月份的有效日期)。
• month — 月份,从 1 到 12 之间的任何整数(或使用月份英文简写如 jan)。
• dayofweek — 星期从 0 到 7 之间的任何整数(或使用星期的英文简写如 sun等)。
• command — 要执行的命令。
应用实例:
首先建立定时器设置文件,文件名称mytype(名称自己设定):
#crontab -e
文件内容:
19 00 * * * /usr/local/f-prot/f-prot /mnt/winc -report=/root/.xfprot/xfprot.log -dumb -archive -noserver
用vi或其他编辑器存盘退出。使用 crontab命令添加到任务列表中:
#crontab -u mytype
这样用户在每天的19点00分会自动对目录/mnt/wic进行病毒扫描并且产生一个报表文件xfprot.log。
2. 使用at命令定时启动f-prot
cron 被用来调度重复的任务,at 命令被用来在指定时间内调度一次性的任务。要使用 at 命令,你必须安装了 at RPM 软件包,并且 atd 服务必须在运行。要判定该软件包是否被安装了,使用 rpm -q at 命令。要判定该服务是否在运行,使用 /sbin/service atd status 命令。
配置 at 作业方法:
要在某一指定时间内调度一项一次性作业,键入 at time 命令。这里的 time 是执行命令的时间。time 参数可以是下面格式中任何一种:
HH:MM 格式 — 譬如,04:00 代表 4:00AM。如果时间已过它就会在第二天的这一时间执行。
midnight — 代表 12:00AM。
noon — 代表 12:00PM。
teatime — 代表 4:00PM。
英文月名 日期 年份 格式— 譬如,January 15 2002 代表 2002 年 1 月 15 日。年份可有可无。
MMDDYY、MM/DD/YY、或 MM.DD.YY 格式 — 譬如,011502 代表 2002 年 1 月 15 日。
now + 时间 — 时间以 minutes、hours、days、或 weeks 为单位。譬如,now + 5 days 代表命令应该在 5 天之后的此时此刻执行。
键入了 at 命令和它的时间参数后,at> 提示就会出现。键入要执行的命令,按 [Enter] 键,然后键入 Ctrl-D。你可以指定多条命令,方法是键入每一条命令后按 [Enter] 键。键入所有命令后,按 [Enter] 键转入一个空行,然后再键入 Ctrl-D。或者,你也可以在提示后输入 shell 脚本,在脚本的每一行后按 [Enter] 键,然后在空行处键入 Ctrl-D 来退出。
应用实例:
at 19:00
at> /usr/local/f-prot/f-prot /mnt/winc -report=/root/.xfprot/xfprot.log -dumb -archive -noserver
at> <EOT>
job 1 at 2007-03-09 19:00
这样在今天的19点00分会自动对目录/mnt/wic进行病毒扫描并且产生一个报表文件xfprot.log。
七、安装图形化界面
大家可能觉得命令行的方式不太友好,所以这里介始一个和f-prot相配的图形化界面xfprot(官方网址:http://web.tiscali.it/sharp/xfprot/ )。xfprot是用perl语言写的,可以运行在任何X-Windows环境下面,比如KDE或Gnome等。
1. 系统要求:
由于开发者使用perl语言和 GTK +(GIMP Tool Kit,GIMP工具包是一个用于创造图形用户接口的库)开发的,所以安装前请检查系统gtk+模块的perl编译器版本。
# rpm –qa | grep perl
# rpm –qa | grep gtk+
硬件: 中央处理器:兼容 Intel X86处理器Pentium 200 以上 ,32 兆(推荐64兆)内存,100兆硬盘空间 ,显示内存4兆。
软件: 内核版本 2.2以上 ,KDE 3.0以上或GNOME 2.0以上,桌面分辨率至少为640×480 ,桌面颜色至少6万5千色(16位元)。
2. 软件下载安装
#wegt http://web.tiscali.it/sharp/xfprot/xfprot-1.18.tar.gz
#gunzip xfprot-1.18.tar.gz;tar vxf xfprot-1.18.tar
#cd xfprot-1.18
#./configure
Checking for bash.....OK
Writing default values to config.h
Setting install and binaries directory prefix to : /usr/local
You can override this with: --with-install-dir=/somedir
Setting xfprot binary directory to: /usr/local/xfprot
Checking for su.....OK
Using default values for f-prot's install directory: /usr/local/f-prot
If you experience problems with the default settings try
the --autodetect switch or change them by editing manually config.h.
Setting xfprot private directory to: ~.xfprot
Running Linux Kernel: 2.6
Checking for konsole.....OK
Found Gtk+ libs version 2.4.13 #检查Gtk库版本#
Using Gtk+ 2.4.13 libs
Build with debug statements?
[1] Yes
[2] No
[1/2]> #选择1 ,建立调试信息#
Adding debug statements to Makefile.in
Setting language to en_GB, you can override this with: --with-lang=xx_XX
Supported languages are:
de_DE
en_GB
es_ES
fr_FR
it_IT
pl_PL
pt_BR
#make
这样就会在/usr/local/xfprot 目录下产生可以执行文件xfprot-gtk。在桌面建立快捷方式:单击鼠标右键选择“Link To Application”在执行菜单内加入/usr/local/xfropt/xfrot-gtk。
3. 软件使用方法
打开一个终端运行命令:“xfprot”即可启动程序,说明如果您使用root权限运行这个命令首先会出现安全警告如图4 。
说明:在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者。普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户。超级用户是系统最高权限的拥有者,是系统管理唯一的胜任者;由于权限的超级并且达到无所不能的地步,如果管理不擅,必会对系统安全造成威胁。 应当尽可能的避免用直接用超级用户root登录系统。由于超级权限在系统管理中的不可缺少的重要作用,为了完成系统管理任务,我们必须用到超级权限;在一般情况下,为了系统安全,对于一般常规级别的应用,不需要root用户来操作完成,root用户只是被用来管理和维护系统之用;比如系统日志的查看、清理,用户的添加和删除,在不涉及系统管理的工作的环境下,普通用户足可以完成。
选择“No”退出系统,然后切换到普通用户身份重新运行命令:xfprot,第一次运行该命令首先会重新“协议许可”界面如图5 。
在“I agree,don’t show it again”前打钩,点击“Ok”按钮即可。进入主工作界面。如图6 。
xfport主工作界面一共包括6 大选项27 子选项。实际上对应于表1 的命令选项。
xfport工作界面包括6个重要的快捷键,这样可以提高工作效率:
F1 :扫描目标目录。
F2 :升级软件。(说明这里升级f-port的程序文件、扫描病毒引擎和病毒库,而不是xfropt本身。)。
F3 :查看当前报表文件内容。
F4 :测试扫描,清除病毒。
F5 :查看程序版本信息。(说明这里查看的是f-port的程序文件、扫描病毒引擎和病毒库信息,而不是xfropt本身版本信息)
F6 :查看可以查杀的病毒列表。如图7 。
从图7 可以看到f-port可以查杀的病毒数量405700个,其中Linux 、Unix病毒619个。
您仔细对照表1 就可以开始使用XFROPT进行工作,在Path to scan 一栏:设置扫描路径即可开始实时工作如图 8 。
总结:
与Windows的病毒相比,从数量(619种Unix 和linux病毒)上看,Linux的病毒几乎可以忽略不计,为了整体的安全,在Linux系统中也需要能查找和杀除Windows病毒。这就需要使用一些专门的反病毒软件。现在,已经有一些开放源码软件和商业软件可供用户选择了,而且其数量正在逐渐增加。作为开源软件f-port for Linux的升级速度还是比较快的。该软件在TopTenREVIEWS(http://toptenreviews.com/ )发布的2007年度的世界杀毒软件排名中位列14名。本文中笔者使用Linux 版本是:centos 4.4。