Linux杀毒软件ClamAV初体验

近期有客户的Linux云服务器出现中毒的情况,不禁在想,Windows平台上有许多免费的杀毒软件,例如火绒。那Linux平台上是否也有类似的杀毒软件,于是网上搜索了下,找到了ClamAV,一款开源的跨平台的防病毒引擎,用于检测木马、病毒、恶意软件和其他恶意威胁。本文主要整理了下CentOS7环境下ClamAV的安装和基本使用方法。

ClamAV介绍


ClamAV是一款开源的跨平台的防病毒工具包,专为邮件网关上的电子邮件扫描而设计,用于检测木马、病毒、恶意软件和其他恶意威胁。ClamAV提供了许多使用程序,包括灵活且可扩展的多线程守护程序、命令行扫描程序和用于自动数据库更新的高级工具。该软件包的核心是一个防病毒引擎,以共享库的形式提供。

支持平台

  • GNU/Linux
    • Alpine
      • 3.17 (x86_64)
    • Ubuntu
      • 18.04 (x86_64, i386)
      • 20.04 (x86_64)
    • Debian
      • 10 (x86_64, i386)
      • 11 (x86_64, i386)
    • CentOS
      • 7 (x86_64, i386)
    • Fedora
      • 31 (x86_64)
      • 33 (x86_64)
    • openSUSE
      • 15 Leap (x86_64)
  • UNIX
    • FreeBSD
      • 12 (x86_64)
      • 13 (x86_64)
    • macOS
      • 10.13 High Sierra (Intel x86_64)
      • 10.15 Catalina (Intel x86_64)
      • 11.5 Big Sur (Intel x86_64, arm64 Apple M1)
  • Windows
    • 7 (x86_64, i386)
    • 10 (x86_64, i386)

推荐系统要求

以下最低推荐系统要求适用于ClamScanClamD应用程序与Cisco提供的标准ClamAV特征库配合使用。

ClamAV的CPU最小推荐

  • 1核CPU,主频大于或等于2.0 Ghz

ClamAV的内存最小推荐

  • FreeBSD and Linux server edition: 3 GiB+
  • Linux non-server edition: 3 GiB+
  • Windows 7 & 10 32-bit: 3 GiB+
  • Windows 7 & 10 64-bit: 3 GiB+
  • macOS: 3 GiB+

ClamAV的硬盘最小推荐

  • 5GiB可用空间

安装ClamAV


下载链接:https://www.clamav.net/downloads

下载所需版本对应平台的安装包,本文以CentOS7为例

执行以下命令安装ClamAV

1
rpm -ivh clamav-1.2.1.linux.x86_64.rpm

默认将安装在/usr/local中,其中包含:

  • 应用程序:/usr/local/bin
  • 守护进程:/usr/local/sbin
  • 库文件:/usr/local/lib
  • 头文件:/usr/local/include
  • 配置文件:/usr/local/etc/
  • 病毒库:/usr/local/share/clamav/

配置ClamAV


freshclam.conf

freshclam是自动更新病毒库的工具。它可以配置为在两种模式下工作:

  • 交互式 - 从命令行按需执行
  • 守护进程 - 静默在后台自动执行

根据示例配置文件创建freshclam.conf文件

1
2
cp -a /usr/local/etc/freshclam.conf.sample /usr/local/etc/freshclam.conf
sed -i 's/^Example/#Example/g' /usr/local/etc/freshclam.conf

编辑/usr/local/etc/freshclam.conf,添加以下内容

1
2
3
UpdateLogFile /var/log/freshclam.log
LogTime yes
DatabaseOwner root

参数说明
UpdateLogFile:指定更新日志文件
LogTime:配置日志文件显示时间戳
DatabaseOwner:指定病毒库文件所属用户
更多配置参数可执行man freshclam.conf进行查询

创建日志文件

1
2
touch /var/log/freshclam.log
chmod 600 /var/log/freshclam.log

更新病毒库(首次更新建议手动前台执行)

1
freshclam

为了保证病毒库能持续升级更新,可执行以下命令启动freshclam守护进程实现自动更新

1
freshclam -d

若不想freshclam长期占用系统资源,可通过crontab自定义设置定期更新

1
2
# 每5分钟更新一次病毒库
*/5 * * * * /usr/local/bin/freshclam

clamd.conf

目前,ClamAV要求先配置clamd.conf文件,然后才可以运行守护进程,至少需要注释掉“Example”行,否则clamd将认为配置无效。

根据示例配置文件创建clamd.conf文件

1
2
cp -a /usr/local/etc/clamd.conf.sample /usr/local/etc/clamd.conf
sed -i 's/^Example/#Example/g' /usr/local/etc/clamd.conf

编辑/usr/local/etc/clamd.conf,添加以下内容

1
2
3
4
5
LogFile /var/log/clamd.log
LogTime yes
LocalSocket /run/clamav/clamd.sock
LocalSocketMode 660
User root

参数说明
LogFile:指定clamd日志文件
LogTime:配置日志文件显示时间戳
LocalSocket:指定socket文件路径
LocalSocketMode:指定socket文件权限
User:设置运行clamd的用户身份
更多配置参数可执行man clamd.conf进行查询

启动扫描


ClamD

ClamD是一个多线程守护程序,它使用libclamav扫描文件以查找病毒。通过修改clamd.conf可以配置扫描行为以满足大多数需求。

启动ClamD

1
clamd

设置开机自启

1
2
echo "clamd" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

说明
实际测试clamd需要占用2GiB左右的内存,启动前请确保有足够的内存资源

ClamDScan

ClamDScan是一个ClamD客户端,它大大简化了使用Clamd扫描文件的任务。它通过clamd.conf中指定的套接字向clamd守护进程发送命令,并在守护进程完成所有请求的扫描后生成扫描报告。因此在运行ClamDScan之前,必须先运行一个ClamD实例。

1
2
# 全盘扫描,首次扫描时间会比较长
clamdscan /

为了方便,可按照如下方法设置定期扫描,首先编写扫描脚本

1
2
3
4
5
6
7
8
9
cat > /opt/auto_scan.sh << EOF
#!/bin/bash
PATH=\$PATH:/usr/local/bin/
# 更新病毒库
freshclam
# 进行全盘扫描
echo > /var/log/clamdscan.log
clamdscan --log=/var/log/clamdscan.log --config-file=/usr/local/etc/clamd.conf -w /
EOF

最后执行crontab -e配置计划任务

1
2
# 每30分钟全盘扫描一次
*/30 * * * * sh /opt/auto_scan.sh