简单说明:
从官网进行下载:https://github.com/vrtadmin/clamav-faq/raw/master/manual/clamdoc.pdf
目录和拆读说明:
1 Introduction
软件介绍,略
2 Base package
支持的平台,略,本系列博文只探究Redhat系列的安装配置和使用
3 Installation
3.1 Requirements
UNIX平台编译安装的组件需求
3.2 Installing on shell account
使用已存在的用户编译安装
3.3 Adding new system user and group
新建编译安装用户
3.4 Compilation of base package
编译安装
3.5 Compilation with clamav-milter enabled
编译安装milter模式(邮件服务过滤模式)
3.6 Using the system LLVM
使用LLVM而非gcc的编译方法
3.7 Running unit tests
make check 进行编译安装前的检查
3.8 Reporting a unit test failure bug
如果检查出来BUG,提交方法,略
3.9 Obtain Latest ClamAV anti-virus signature databases
获得最新的病毒库签名文件,此处只是简单介绍,略
4 Configuration
软件配置
4.1 clamd
探测功能的守护进程模式的配置文件和其解读方法
4.1.1 On-access scanning
实时监控模式的配置文件和其解读方法
4.2 clamav-milter
邮件服务过滤milter模式,略
4.3 Testing
探测扫描简单测试命令
4.4 Setting up auto-updating
病毒库自动升级配置
4.4.1 Closest mirrors
配置病毒库自动升级的最近镜像源
4.5 ClamAV Active Malware Report
恶意软件上报,略
5 Usage
5.1 Clam daemon
探测功能的守护进程模式使用
5.2 Clamdscan
守护进程模式的客户端使用
5.3 On-access Scanning
实时监控模式的使用
5.4 Clamdtop
类top命令的监控工具的使用
5.5 Clamscan
非守护进程模式的一次性扫描工具的使用
5.6 ClamBC
字节码测试工具的使用
5.7 Freshclam
病毒库升级工具的使用
5.8 Clamconf
配置检查工具的使用
5.9 Output format
5.9.1 clamscan
5.9.2 clamd
探测输出格式
6 LibClamAV
ClamAV的API库相关
6.1 License
许可信息,略
6.2 Supported formats and features
支持的探测扫描格式和特性
6.2.1 Executables
可以探测的可执行文件类型
6.2.2 Mail files
支持邮件和邮件附件的探测
6.2.3 Archives and compressed files
可以探测的归档和压缩文件类型
6.2.4 Documents
可以探测的文档类型的文件
6.2.5 Data Loss Prevention
可以对信用卡信息进行探测
6.2.6 Others
其他支持的格式
6.3 API
以下就是对ClamAV提供的API接口的使用和开发的介绍,略
6.4 CVD format
病毒库格式
6.5 Contributors
剩下的文档内容是一些贡献和捐赠以及开发团队名单等,略
拆读:
3 Installation
3.1 Requirements
UNIX平台编译安装clamav需要:
zlib、zlib-devel、openssl(版本>=0.9.8)、openssl-devel、
gcc(2.9x/3.x/4.x 这三个系列版本测试通过)、make
强烈推荐安装的可选包:
bzip2、bzip2-devel、bzip2-libs、
libxml2、libxml2-devel、check(即 make check功能)
可选包,但是这是一些在字节码功能测试的运行时编译执行的支持包(bytecode JIT):
gcc-c++(最小版本4.1.3,推荐4.3.4及其更高版本)
如果使用非gcc编译器,而是llvm编译器,则使用clang++
只有这些架构支持JIT:X86、X86-64、PowerPC、PowerPC64
可选包,bytecode JIT的test功能所使用的包:
make(最小版本3.79,推荐3.81)
Python(版本>=2.5.4)
3.2 Installing on shell account
使用已存在的用户编译安装
./configure --prefix=/home/gary/clamav --disable-clamav
参数--disable-clamav会忽略默认安装用户clamav和组clamav的检查
也就是可以装在已经存在用户,且非默认用户之下了
但是clamscan,一次性扫描的命令,还是需要在root下使用一个非root用户工作
也就是说,使用root执行一次性的扫描,该命令在扫描的时候会自动切换成非root用户工作
不推荐安装在已经存在的非默认用户下
3.3 Adding new system user and group
新建编译安装用户
groupadd clamav
useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
不要添加其他权限,并且保持该用户锁定状态
登录shell是/bin/false就代表该用户是锁定无法登陆的
3.4 Compilation of base package
编译安装
tar -xf clamav-x.yz.tar.gz
cd clamav-x.yz
./configure --sysconfdir=/etc
make
su -c "make install"
参数 --sysconfdir 是指定配置文件所在的目录
注意不要将编译安装生成的clamav可执行文件增加SUID或者SGID
Linux的SUID/SGID/SBIT是一组特殊的权限,提权和限权用的
使用su命令,没有切换用户环境变量的参数
也就是该命令实际上是已经存在的可以登录的非root用户编译
然后不切换环境变量的情况下切换到root用户进行编译,不推荐
3.5 Compilation with clamav-milter enabled
编译安装milter模式(邮件服务过滤模式)
./configure --enable-milter
需要加装sendmail-milter组件
3.6 Using the system LLVM
使用LLVM而非gcc的编译方法
./configure --with-system-llvm=/myllvm/bin/llvm-config
使用非gcc的编译套件进行编译的场景在CentOS5和6中遇到的不多
CentOS7多不多不清楚,一般MAC或者IOS的相关编译使用这一套编译器
不建议研究
3.7 Running unit tests
make check 进行编译安装前的检查
./configure --enable-check
make
make check
安装配置的时候使用--enable-check,在安装前就可以使用check进行检查
可以看到一些PASS、SKIP、FAIL之类的信息
根据《CentOS6 主机安全加固策略 Clamav 杀毒软件(一)源码安装配置》
进行编译安装前的配置的话,一般不会出现检查失败
4 Configuration
软件配置,使用命令clamconf可以检测相关的配置问题
如配置文件是否缺失,配置参数详细信息,编译安装信息等
4.1 clamd
探测功能的守护进程模式的配置文件和其解读方法
需要提前配置clamd.conf配置文件,如果文件不存在,执行clamd会报错
可以使用man 5 clamd.conf 来查看该配置文件的各个参数的说明
或者找到clamd.conf.sample,比如在源码编译包的etc目录下
该配置文件很重要
4.1.1 On-access scanning
实时监控模式的配置文件和其解读方法
该模式之支持Linux平台,且内核版本大于等于2.6.36
增加了fanotify功能的内核才支持该模式
经测试,CentOS6.X目前内核版本为2.6.32,是不支持的
如果升级CentOS6.X,目前长期支持版本为4.4,内核版本过高,该模式同时不支持
没有正规的将CentOS6.X内核升级到2.6.36之后且小于版本4的方法
如果个人手动编译内核版本进行升级是可以实现的,但是生产环境不建议这么做
生产环境并不建议非官方的内核升级方法,如果要升级kernel,建议使用官方yum源
那么该模式只能运行在CentOS7.X之上,且已经实验成功,后期会发一个实验博文
4.3 Testing
探测扫描简单测试命令
clamscan -r -l scan.txt clamav-x.yz
clamdscan -l scan.txt clamav-x.yz
参数-r代表递归,当扫描一个目录的时候使用
参数-l代表保存日志
使用 clamscan -h 和 clamdscan -h 查看帮助
此处的 clamav-x.yz 如果是执行过make的源码安装目录
则在clamav-x.yz/test/目录中会生成一些探测扫描测试用的文件
前提是执行过 ./configure && make
4.4 Setting up auto-updating
病毒库自动升级配置
freshclam是一个自动病毒库升级工具,有交互命令式和守护模式两种
该工具会比较差异进行升级,而非替代整个CVD文件
也就是说,如果不使用该工具,直接使用最新的CVD文件进行替换也可以完成升级
需要提前配置freshclam.conf配置文件,配置文件的参数说明的查看和clamd.conf一样
man 5 freshclam.conf 或者 freshclam.conf.sample
守护模式开启:.../freshclam -d
交互式命令模式可以直接挂系统任务:X X * * * .../freshclam --quiet
如果要每小时都做检查升级,建议分钟参数不要使用10的倍数,建议3到57之间选择
因为很多客户端都是用10的倍数分钟作为每小时的升级窗口
可以使用http代理来加快升级,比如当你的环境中部署了squid等等的代理服务器的时候
4.4.1 Closest mirrors
配置病毒库自动升级的最近镜像源
配置文件freshclam.conf中包含建议修改配置的参数:
DatabaseMirror db.XX.clamav.net
可以将XX替换成对应的国家代码,比如中国就是db.cn.clamav.net
可以在http://www.iana.org/cctld/cctld-whois.htm 找到各个国家的代码
也可以配置db.XX.ipv6.clamav.net来使用IPv6
但是经过这两天的测试发现,中国的镜像网站是没有速度的,心中几万头草泥马呼啸而过...
5 Usage
5.1 Clam daemon
探测功能的守护进程模式使用
clamd是一个使用libclamav扫描探测病毒文件的多线程守护模式
可以监听在TCP端口或者Socket文件或者两者都有的模式下
使用配置文件clamd.conf完全配置clamd,并且可以使用以下命令:
以下命令大小写敏感
PING 测试连通性的命令,clamd会回应一个PONG,乒乓测试
VERSION 获取版本信息
RELOAD 重新加载病毒库文件,注意并不是重新加载配置文件
SHUTDOWN 干净关闭clamd
SCAN ... 递归扫描文件或目录,支持归档文件的扫描,需要传入全路径
RAWSCAN ...、CONTSCAN ...、MULTISCAN ...、ALLMATCHSCAN ...、INSTREAM
FILDES、STATS、IDSESSION, END、STREAM、
SIGTERM 类似SHUTDOWN,干净的退出clamd
SIGHUP 重新打开日志文件
SIGUSR2 重新加载病毒库文件
以上命令的使用方式是向clamd监听的IP和端口传入命令即可,如:
echo 'PING'|nc 127.0.0.1 3310
使用echo,管道一个命令给127.0.0.1的3310端口后的clamd
也可以交互式 nc 127.0.0.1 3310,然后键入相应的命令
5.2 Clamdscan
守护进程模式的客户端使用
这是clamd的一个简单客户端,和clamscan单词扫描命令相似
但是完全依赖于clamd,也就是通过clamd.conf指向的clamd服务端进行扫描
clamscan是使用本机上的病毒库对目录进行扫描
clamdscan是调用指向的clamd来对目录进行扫描,这个clamd可以是远程的
5.3 On-access Scanning
实时监控模式的使用
目前只能在CentOS7.X上使用,通过配置clamd.conf来打开
如果配置prevention为on状态,即OnAccessPrevention参数
发现病毒文件时使用fanotify内核组件阻塞所有对该文件的访问
则需满足:
clamd必须干净关闭,比如使用SHUTDOWN或者SIGTERM命令
如果clamd没有退出而系统重启,可能会出问题,需要一次干净关闭进行修复
不要保护mail-scanner使用的附件解压目录,否则clamav访问会被阻塞
所谓的mail-scanner是一款比较流行的Linux平台的邮件网关的开源邮件安全系统
使用OnAccessMountPath参数来监控整个文件系统(即监控根)会造成prevention不可用
使用On-Access Scanner监控一个虚拟文件系统(VFS)时,会有一个不确定的运行状态
开启实时监控模式时,如果被保护的文件数超过8192,则需要配置内核参数:
echo 'fs.inotify.max_user_watches=8192000'>>/etc/sysctl.conf
sysctl -p
监控整个文件系统的配置样例:
ScanOnAccess yes
OnAccessMountPath /
保护家目录的配置样例:
ScanOnAccess yes
OnAccessIncludePath /home
OnAccessExcludePath /home/user/temp/dir/of/your/mail/scanning/software
OnAccessPrevention yes
设置了忽略目录并且打开访问阻塞功能
5.4 Clamdtop
类top命令的监控工具,使用clamdtop --help或者man clamdtop 查看帮助
5.5 Clamscan
非守护进程模式的一次性扫描工具
使用前必须下载病毒库文件,并且最好保证病毒库文件是最新的
使用clamscan --help 或者 man clamscan 查看帮助
5.6 ClamBC
字节码测试工具,可以用来测试包含bytecode的文件
使用 clambc --help 或者 man clambc 查看帮助
5.7 Freshclam
病毒库升级工具
通过对比下载的cdiffs文件来做病毒库文件的差异升级
同样可以查看man帮助或者--help查看命令用法的帮助信息
5.8 Clamconf
配置检查工具
主要检查clamd.conf、freshclam.conf和clamav-milter.conf(如果是milter模式的话)
以及平台版本信息、编译时的支持性软件信息、编译参数等
同样可以查看man帮助或者--help查看命令用法的帮助信息
5.9 Output format
5.9.1 clamscan
5.9.2 clamd
探测输出格式,有FOUND、ERROR和OK三种状态
6 LibClamAV
ClamAV的API库相关
Libclamav提供了API,可以简单且有效的增加病毒防护功能到你的软件中
这些库文件提供线程级别的安全,并且能够有效识别和扫描归档、邮件、
MS Office文档和可执行文件以及其他的格式文件
6.2 Supported formats and features
支持的探测扫描格式和特性
6.2.1 Executables
可以探测的可移植的可执行文件,即PE文件
如常见的EXE、DLL、OCX、SYS、COM等
PE文件是微软Windows操作系统上的程序文件
使用以下工具进行压缩或者加密的PE文件也是可以识别的:
Aspack、UPX、FSG、Petite、PeSpin、NsPack、wwpack32、MEW、Upack、Y0daCryptor
配置文件中的相关参数:
clamd.conf中搜索PE关键字来确定
6.2.2 Mail files
支持邮件和邮件附件的探测
支持绝大部分的邮件文件包括TNEF(winmail.dat 即windows上的邮件数据文件)附件
配置文件中的相关参数:
clamd.conf中搜索mail关键字来确定
6.2.3 Archives and compressed files
可以探测的归档和压缩文件类型:
Zip、RAR、7Zip、Tar、CPIO、Gzip、Bzip2、DMG、IMG、ISO 9660、PKG、
HFS+partition、HFSX partition、APM disk image、GPT disk image、
MBR disk image、XAR、XZ、MS OLE2、MS Cabinet Files、MS CHM、MS SZDD、
BinHex、SIS、AutoIt、NSIS、InstallShield
配置文件中的相关参数:
clamd.conf中搜索archive和compress关键字来确定
6.2.4 Documents
可以探测的文档类型的文件:
MS Office 和 MacOffice files、RTF、PDF、HTML
配置文件中的相关参数:
clamd.conf中搜索document关键字来确定
6.2.5 Data Loss Prevention
可以对信用卡信息进行探测
Libclamav包含DLP模块(Data Leakage Prevention),能够探测以下类型的金融卡信息:
AMEX、VISA、MasterCard、Discover、Diner’s Club、JCB和美国的社保卡号
只能探测明文存储于文本文件中的这些金融卡信息
配置文件中的相关参数:
clamd.conf中搜索Credit关键字来确定
6.2.6 Others
其他支持的格式:
JPEG、RIFF、uuencode、ScrEnc obfuscation、CryptFF
6.4 CVD format
病毒库格式:
CVD(ClamAV Virus Database)是数字化签名的tar包,包含一个或多个数据库
它的头是512-bytes长度的以冒号分割的字符串:
ClamAV-VDB:build time:version:number of signatures:functionality
level required:MD5 checksum:digital signature:builder name:build time (sec)
使用sigtool命令查看CVD文件的详细信息:
sigtool -i daily.cvd
可以继续查看《signatures.pdf》来获取关于CVD文件相关的签名信息、对libclamav做debug等
可以继续查看《phishsigs_howto.pdf》来获取数据库文件相关信息,如格式、匹配的正则和创建
[TOC]