clamav源码分析(clamav病毒库停止更新)

生活常识 2023-04-30 10:08生活常识www.baidianfengw.cn

  一、ClamAV简介

  Clam AntiVirus是一个C语言开发的,类UNIX系统上使用的开源的 (GPL) 反病毒软件包。主要应用于邮件服务器,采用多线程后台操作,可以自动升级病毒库。ClamAV是一个在命令行下查毒软件,因为它不将杀毒作为主要功能,默认只能查出您计算机内的病毒,无法清除。ClamAV可以工作很多的平台上,有少数无法支持,这就要取决您所使用的平台的流行程度了。

  Linux系统的病毒较少,并不意味着病毒免疫,尤其是对于诸如邮件或者归档文件中夹杂的病毒往往更加难以防范,而ClamAV则能起到不少作用。

  该软件提供了包含灵活且可伸缩的监控程序、命令行扫描程序以及用于自动更新数据库的高级工具在内的大量实用程序。该软件的核心在于可用于各类场合的反病毒引擎共享库。主要使用ClamAV开源杀毒引擎检测木马、病毒、恶意软件和其他恶意的威胁。

  ◆ 高性能

  ClamAV包括一个多线程扫描程序守护程序,用于按需文件扫描和自动签名更新的命令行实用程序。

  ◆ 格式支持

  ClamAV支持多种文件格式,文件和存档解包以及多种签名语言。PDF、JS、XLS、DOCX、PPT等

  特别说明

  经测试,对于ClamAV版本为 0.102.x(0.102.0、0.102.1、0.102.2、0.102.3、0.102.4),需要Curl version >=7.45 确保支持clamonacc使用的所有选项。CentOS7系统YUM源的最新版本为7.29.0,可使用下列方法确保ClamAV安装编译通过

  ①使用第三方YUM源升级curl。

  ②使用官方提供的软件源包编译安装高版本的curl 。

  ③禁用clamonacc,在执行 http://www.changchenghao.cn/n/configure 时再加上 –disable-clamonacc 参数。

  注ClamAV编译时报如上图错误。

  二、环境准备

  OSCentOS 7.8 x64

  测试服务器IP192.168.168.100

  Softwareclamav-0.103.1

  注系统为最小化安装,部署前已完成系统初始化、内核及安全优化。

  三、安装Clamav

  1.安装依赖

  rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

  yum -y install gcc gcc-c++ bzip2 bzip2-devel pcre2 pcre2-devel ncurses ncurses-devel zlib zlib-devel openssl openssl-devel llvm-devel libxml2 libxml2-devel libcurl-devel libtool-ltdl-devel

  注①centos系统的库是openssl、openssl-devel;ubuntu系统的库是libssl、libssl-devel

  ②libtool-ltdl-devel 更新病毒库时会报错,如下图。

  2.创建用户及用户组

  groupadd clamav

  useradd -g clamav -s /bin/false -c “Clam AntiVirus” clamav

  注若不创建用户组及用户,则ClamAV编译时需加 –disable-clamav 参数选项将禁用对clamav用户和组是否存在的检查,clamscan仍然需要无特权的帐户才能在超级用户模式下工作。

  3.下载解压编译安装

  cd /data/tools

  wget http://www.clamav.net/downloads/production/clamav-0.102.2.tar.gz

  tar xf clamav-0.102.2.tar.gz

  cd clamav-0.102.2

  http://www.changchenghao.cn/n/configure –prefix=/usr/local/clamav –with-pcre2 –disable-clamonacc

  make && make install

  四、配置Clamav

  1.创建日志目录

  mkdir -p /data/logs/clamav/

  touch /data/logs/clamav/{freshclam.log,clamd.log}

  chown -R clamav.clamav /data/logs/clamav

  2.创建病毒库目录

  mkdir -p /usr/local/clamav/updata

  chown -R root.clamav /usr/local/clamav/

  chown -R clamav.clamav /usr/local/clamav/updata/

  3.修改配置文件

  cd /usr/local/clamav/etc

  cp clamd.conf.sample clamd.conf

  cp freshclam.conf.sample freshclam.conf

  ## 修改: clamd.conf

  vi clamd.conf

  Example //注释掉这一行(第8行)

  添加下面三行

  LogFile /data/logs/clamav/clamd.log

  PidFile /data/logs/clamav/clamd.pid

  DatabaseDirectory /usr/local/clamav/updata/

  ## 修改: freshclam.conf

  vi freshclam.conf

  Example //注释掉这一行(第8行)

  添加下面三行:

  UpdateLogFile /data/logs/clamav/freshclam.log

  PidFile /data/logs/clamav/freshclam.pid

  DatabaseDirectory /usr/local/clamav/updata

  五、下载或更新病毒库

  在运行clamd,clamdscan或clamscan,必须在系统上的适当位置安装ClamAV病毒数据库(.cvd)文件。这些数据库文件的默认位置是/usr/local/share/clamav。

  ## 国内下载可能会有点慢,多台机器的话,可以一台下载之后再拷贝

  /usr/local/clamav/bin/freshclam

  注更新病毒库时必须先停止freshclam服务。systemctl stop clamav-freshclam.service

  更新结果如下图

  六、Clamav服务管理

  ## 启动

  systemctl start clamav-freshclam.service

  ## 查看Clamav状态

  systemctl status clamav-freshclam.service

  ## 配置开机启动

  systemctl enable clamav-freshclam.service

  ## 停止服务

  systemctl stop clamav-freshclam.service

  七、ClamAV的使用

  ## 创建软链接,方便命令操作

  ln -s /usr/local/clamav/bin/clamscan /usr/local/sbin/clamscan

  ## 查看相应的帮助信息

  clamscan -h

  ## 扫描目录文件显示扫描结果但并不隔离或删除文件

  clamscan -r –bell -i ${路径}

  如clamscan -r –bell -i /home/

  ## 扫描计算机上的所有文件并且显示所有的文件的扫描结果

  clamscan -r /

  ## 扫描所有用户的主目录

  clamscan -r /home

  ## 扫描文件

  clamscan targetfile

  ## 递归扫描home目录,并且记录日志

  clamscan -r -i /home -l /data/logs/clamav/clamscan.log

  ## 递归扫描home目录,将病毒文件删除,并且记录日志

  clamscan -r -i /home –remove -l /data/logs/clamav/clamscan.log

  ## 扫描指定目录,然后将感染文件移动到指定目录,并记录日志

  mkdir -p /data/virus_collection

  clamscan -r -i /home –move=/data/virus_collection -l /data/logs/clamav/clamscan.log

  八、计划任务——实际生产环境应用

  编写shell脚本,使用计划任务,让服务器每天晚上定时更新病毒库和定时杀毒,保存杀毒日志。

  mkdir -p /data/shell

  cd /data/shell

  vi clamscan.sh //输入如下内容

  ## 设置定时计划任务,每天早上4点执行计划任务

  crontab -e //输入如下内容

  注脚本执行时间自定义。

Copyright@2015-2025 白癜风网版板所有