28、ClamAV 杀毒软件配置、测试与自动化更新全解析

ClamAV 杀毒软件配置、测试与自动化更新全解析

1. ClamAV 基础配置

为了降低网络流量开销并确保从地理位置较近的服务器获取更新,需要进行重要的配置。以下是一些关键配置项:

# database.clamav.net 是一个轮询记录,指向最可靠的镜像。
# 它用作 db.XY.clamav.net 无法工作时的备用选项。
# 除非你知道自己在做什么,否则不要更改以下行。
DatabaseMirror database.clamav.net
# 每天检查数据库的次数。
# 默认值:12(每两小时一次)
Checks 24

对于流量较大的繁忙服务器,更频繁地更新病毒数据库是值得的,但此建议仅适用于运行 ClamAV 软件 0.8 或更高版本的系统。

同时,还需要设置文件权限,以确保正确访问相关文件。clamd 默认以 clamav 用户身份运行,freshclam 启动时会放弃特殊权限并切换到 clamav 用户。因此,需要使用以下命令设置套接字、PID 和日志文件的所有权:

# mkdir /var/log/clamav  /var/run/clamav
# chown clamav:clamav /var/log/clamav  /var/run/clamav

如果需要更改 freshclam 和 clamd 运行的用户,可以在 freshclam.conf 和 clamd.conf 中进行修改,但要确保 ClamAV 进程能够访问病毒定义数据库。

2. 安装后测试

在安装 ClamAV 的主要组件后,需要验证每个组件的正确运行:
- clamscan :命令行扫描器
- clamd :ClamAV 守护进程
- freshclam :病毒定义更新器

为了进行这些测试,需要一个病毒文件或至少一个看起来像病毒的非破坏性文件。这里我们使用 EICAR 测试病毒。

2.1 EICAR 测试病毒

EICAR(欧洲计算机反病毒研究协会)标准防病毒测试文件是由多个防病毒研究人员共同创建的,大多数防病毒产品会将其识别为病毒。该文件本身不是病毒,不包含任何程序代码,因此可以安全地传递给他人。文件是一个纯文本文件,由可打印的 ASCII 字符组成,可以使用普通文本编辑器轻松创建。任何支持 EICAR 测试文件的防病毒产品都应该能够检测到以以下 68 个字符开头的文件:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

创建该文件时需要注意:文件仅使用大写字母、数字和标点符号,不包含空格;第三个字符必须是大写字母 O,而不是数字 0;所有 68 个字符必须在一行,并且必须是文件的第一行。更多信息可访问 http://www.eicar.org/anti_virus_test_file.htm

2.2 测试 clamscan

首先要确保病毒扫描器已安装,并且病毒定义数据库已正确配置和包含。安装过程中会提供一个病毒数据库。最简单的测试方法是在服务器上创建一个 EICAR 测试文件的副本,然后运行 clamscan 程序:

clamscan -i testvirus.txt

运行该命令时可能会出现病毒数据库过时的警告,这是正常现象,在 freshclam 测试时会解决。

2.3 测试 clamd

使用 clamdscan 程序可以指示 clamd 进程扫描测试文件,这是确保 clamd 守护进程正在运行的有效测试。预期输出如下:

$ clamdscan testvirus.txt
/home/ian/testvirus.txt: Eicar-Test-Signature FOUND 
----------- SCAN SUMMARY ----------- 
Infected files: 1 
Time: 0.000 sec (0 m 0 s) 

如果 clamd 守护进程未运行,可以使用 # clamd 命令启动它。运行此测试后,还应检查 clamd 日志文件,查看是否有意外的错误或警告。

2.4 测试 freshclam

使用 freshclam 程序可以交互式地更新病毒数据库,此测试仅更新一次数据库。后续会介绍如何进行自动更新。以超级用户身份运行以下命令,预期输出类似如下:

(输出示例,展示更新过程中成功下载两个差异更新,第三次因网络问题失败,最后下载最新每日更新使数据库更新)

从输出可以看出,更新过程尝试下载最新数据库与当前数据库之间的差异,有助于减少网络流量和服务器负载。在出现故障时,freshclam 会检测到并下载最新的每日更新,以增加病毒签名数量使病毒数据库保持最新。再次运行 clamscan 测试时,将不再显示数据库过时的警告。运行此测试后,还应检查 freshclam 日志文件是否包含类似的输出。

3. ClamSMTP 介绍与配置

为了扫描通过服务器的所有电子邮件,需要在 Postfix 和 ClamAV 之间使用一个软件接口,即 ClamSMTP。

3.1 ClamSMTP 概述

ClamSMTP 是一个 SMTP 过滤器,允许使用 ClamAV 防病毒软件检查病毒。它接受 SMTP 连接,并将 SMTP 命令和响应转发到另一个 SMTP服务器。在转发之前,会拦截并扫描“DATA”电子邮件正文。ClamSMTP 旨在轻量级、可靠且简单,用 C 语言编写,没有主要依赖项。

3.2 下载与安装

可以从 http://memberwebs.com/stef/software/clamsmtp/ 下载最新的 ClamSMTP 源代码,使用 wget 命令直接下载到 Linux 系统:

$ wget http://memberwebs.com/stef/software/clamsmtp/clamsmtp-1.10.tar.gz

下载完成后,使用 tar 命令解压文件:

$ tar xvfz clamsmtp-1.10.tar.gz

这将创建一个目录结构,所有相关文件都包含在当前目录下。

安装步骤如下:
1. 运行 configure 实用程序创建正确的构建环境:

$ ./configure --sysconfdir=/etc
  1. 配置脚本完成后,运行 make 命令构建软件可执行文件:
$ make
  1. 最后,以 root 身份将可执行文件复制到系统的正确位置:
# make install

在最后一步,软件将安装到 /usr/local 目录,配置文件安装到 /etc 目录。在整个过程中,应检查每个步骤的输出,查看是否有重大错误或警告。

3.3 配置到 Postfix

Postfix 支持通过外部进程过滤邮件,可以在邮件排队之前或之后执行此操作。Postfix 和 clamsmtp 之间的通信方式是将 clamsmtp 视为一个 SMTP 服务器,这种简单的方法便于创建分布式架构。

需要对 Postfix 的 main.cf 文件进行如下配置:

content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings

content_filter 指令强制 Postfix 将所有邮件通过名为 scan 的服务发送到端口 10025,该服务将使用 clamsmtpd 设置。 receive_override_options 配置 Postfix 不执行地址映射,防止扩展电子邮件别名或组导致重复接收邮件。

还需要对 Postfix 的 master.cf 文件进行如下配置:

# AV scan filter (used by content_filter)
scan      unix  -       -       n       -       16      smtp
        -o smtp_send_xforward_command=yes
        -o smtp_enforce_tls=no
# For injecting mail back into postfix from the filter
127.0.0.1:10026 inet  n -       n       -       16      smtpd
        -o content_filter=
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_helo_restrictions=
        -o smtpd_client_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks_style=host
        -o smtpd_authorized_xforward_hosts=127.0.0.0/8

文件的格式非常重要,确保添加的文本中“=”(等号)和“,”(逗号)周围没有空格。完成这些更改后,使用以下命令让 Postfix 重新读取修改后的配置文件:

# postfix reload
3.4 配置 clamSMTP

必须创建配置文件 /etc/clamsmtpd.conf,否则 clamsmtpd 将无法运行。源发行版的 doc 目录中包含一个示例 clamsmtp.conf 配置文件,需要将其复制到正确位置并进行编辑:

# cp clamsmtpd.conf /etc/clamsmtpd.conf

该文件的格式和选项可在 clamsmtpd.conf(5) 手册中找到详细描述。以下是一些可能需要修改的关键值:

# The address to send scanned mail to. 
# This option is required unless TransparentProxy is enabled 
OutAddress: 127.0.0.1:10026 

# The maximum number of connection allowed at once. 
# Be sure that clamd can also handle this many connections 
#MaxConnections: 64 

# Amount of time (in seconds) to wait on network IO 
#TimeOut: 180 

# Keep Alives (ie: NOOP's to server) 
#KeepAlives: 0 

# Send XCLIENT commands to receiving server 
#XClient: off 

# Address to listen on (defaults to all local addresses on port 10025) 
#Listen: 0.0.0.0:10025 

# The address clamd is listening on 
ClamAddress: /var/run/clamav/clamd.sock 

# A header to add to all scanned email 
#Header: X-Virus-Scanned: ClamAV using ClamSMTP 

# Directory for temporary files 
#TempDirectory: /tmp 

# What to do when we see a virus (use 'bounce' or 'pass' or 'drop' 
Action: drop 

# Whether or not to keep virus files 
#Quarantine: off 

# Enable transparent proxy support 
#TransparentProxy: off 

# User to switch to 
User: clamav 

确保所有进程以与运行 clamd 相同的用户身份运行,否则可能会出现访问临时文件的问题。还可以配置在发现病毒时运行脚本,但这可能会带来安全风险,需要谨慎操作。

完成配置后,以 root 身份启动 clamsmtpd 进程:

# clamsmtpd

如果启动服务时遇到问题,确保 clamd 守护进程正在运行,并且监听指定的套接字(可以在 clamd.conf 中使用 LocalSocket 或 TCPSocket 指令设置,确保只取消注释其中一行),同时确保 ScanMail 指令设置为 on。

4. 电子邮件过滤测试

为了确保过滤和检测过程正常工作,需要使用 EICAR 测试文件进行测试。

4.1 测试邮件接收

首先检查是否仍能接收邮件,运行以下命令:

$ echo "Clean mail" | sendmail $USER

如果一切正常,收到的邮件头部应包含以下行:

X-virus-scanned: ClamAV using ClamSMTP

如果未收到邮件,检查系统、Postfix 和 clamd 日志文件。必要时,可以使用 -d 4 选项停止并重新启动 clamsmtpd 守护进程以获取更多调试输出。

4.2 测试邮件病毒过滤

将 EICAR 病毒文件作为电子邮件附件发送给自己,使用以下命令:

$ uuencode testvirus.txt test_virus | sendmail $USER

如果一切配置正确,应该不会收到该邮件,因为 clamsmtp 被配置为丢弃包含病毒的邮件。检查系统或 Postfix 日志文件,应能找到类似以下的条目:

Jul  8 19:38:57 ian postfix/smtp[6873]: 26E66F42CB: to=<ian@example.com>, orig_to=<ian>, relay=127.0.0.1[127.0.0.1]:10025, delay=0.1, delays=0.06/0/0.04/0, dsn=2.0.0, status=sent (250 Virus Detected; Discarded Email) 

这证明了能够检测到包含病毒的简单附件。

4.3 全面的邮件病毒测试

可以使用 http://www.gfi.com/emailsecuritytest/ 网站进行更全面的测试。该网站支持 17 种不同的病毒和电子邮件客户端漏洞测试。注册要测试的电子邮件地址,点击确认邮件中的链接验证身份后,即可发送任何或所有测试邮件。如果任何包含病毒的邮件未经过滤进入收件箱,则表示安装失败。需要注意的是,该网站发送的一些测试邮件并非严格意义上的病毒,ClamAV 不会对其进行检测,因为这些邮件本身不包含恶意代码,只是包含一些可能会欺骗 Outlook 客户端的格式错误的 MIME 标签,这不是防病毒程序的检测范围。

5. 病毒数据自动化更新

ClamAV 由志愿者提供,用于分发软件和病毒数据库的服务器和带宽是自愿资助的。因此,需要在检查更新频率以保持数据库最新和避免过度负载服务器之间找到平衡。

5.1 更新频率建议

如果运行的是 ClamAV 0.8x 或更高版本,并且 freshclam.conf 中包含 DNSDatabaseInfo current.cvd.clamav.net 选项,则可以每小时检查数据库更新多达四次;否则,必须每小时检查一次。

5.2 自动更新设置

ClamAV 的病毒数据库文件可以通过多种方式从 ClamAV 服务器下载,如使用 wget 等工具,但推荐使用之前安装的 freshclam 实用程序进行更新。freshclam 可以自动定期下载最新的防病毒数据库,它可以通过 cron 任务自动运行,也可以从命令行手动运行,还可以作为守护进程运行并自行处理调度。当以 root 身份启动 freshclam 时,它会放弃特殊权限并切换到 clamav 用户。

总结

通过以上步骤,我们完成了 ClamAV 的基础配置、各组件的测试、ClamSMTP 的安装与配置、电子邮件过滤测试以及病毒数据的自动化更新设置。在实际应用中,需要根据服务器的实际情况和需求进行适当调整,确保服务器的电子邮件系统能够有效抵御病毒威胁。

流程图

graph LR
    A[安装 ClamAV] --> B[基础配置]
    B --> C[安装后测试]
    C --> C1[测试 clamscan]
    C --> C2[测试 clamd]
    C --> C3[测试 freshclam]
    C --> D[ClamSMTP 配置]
    D --> D1[下载与安装]
    D --> D2[配置到 Postfix]
    D --> D3[配置 clamSMTP]
    D --> E[电子邮件过滤测试]
    E --> E1[测试邮件接收]
    E --> E2[测试邮件病毒过滤]
    E --> E3[全面邮件病毒测试]
    C3 --> F[病毒数据自动化更新]
    F --> F1[更新频率建议]
    F --> F2[自动更新设置]

表格:关键配置文件与作用

配置文件 作用
freshclam.conf 配置 freshclam 病毒定义更新器的相关参数,如更新频率、服务器地址等
clamd.conf 配置 ClamAV 守护进程的参数,如监听地址、日志文件位置等
main.cf Postfix 主配置文件,用于设置邮件过滤等全局参数
master.cf Postfix 主进程配置文件,定义服务和进程的启动参数
clamsmtpd.conf ClamSMTP 配置文件,设置邮件过滤的具体行为和参数

ClamAV 杀毒软件配置、测试与自动化更新全解析

6. 配置参数详细解析
6.1 freshclam.conf 配置参数

freshclam.conf 主要用于配置病毒定义更新器 freshclam 的相关参数,以下是一些重要参数的详细解析:
| 参数 | 描述 | 示例值 |
| ---- | ---- | ---- |
| Checks | 每天检查数据库的次数 | 24(每小时检查 1 次) |
| DNSDatabaseInfo | 指定用于获取数据库信息的 DNS 记录 | current.cvd.clamav.net |
| DatabaseMirror | 数据库镜像地址,作为备用选项 | database.clamav.net |

这些参数的合理配置可以确保病毒数据库及时更新,同时避免对服务器造成过大负载。

6.2 clamd.conf 配置参数

clamd.conf 用于配置 ClamAV 守护进程的参数,以下是关键参数的解析:
| 参数 | 描述 | 示例值 |
| ---- | ---- | ---- |
| LocalSocket | 指定 clamd 监听的本地套接字 | /var/run/clamav/clamd.sock |
| TCPSocket | 指定 clamd 监听的 TCP 套接字 | 3310 |
| ScanMail | 是否开启邮件扫描功能 | on |

这些参数决定了 clamd 守护进程的运行方式和功能。

6.3 main.cf 配置参数

main.cf 是 Postfix 的主配置文件,用于设置邮件过滤等全局参数,以下是关键参数的解析:
| 参数 | 描述 | 示例值 |
| ---- | ---- | ---- |
| content_filter | 指定邮件过滤服务 | scan:127.0.0.1:10025 |
| receive_override_options | 配置 Postfix 的接收选项 | no_address_mappings |

这些参数确保 Postfix 能够正确地将邮件传递给 ClamSMTP 进行过滤。

6.4 master.cf 配置参数

master.cf 是 Postfix 主进程配置文件,定义服务和进程的启动参数,以下是关键参数的解析:
| 参数 | 描述 | 示例值 |
| ---- | ---- | ---- |
| scan | 定义扫描服务 | unix - - n - 16 smtp |
| 127.0.0.1:10026 | 定义接收邮件的服务 | inet n - n - 16 smtpd |

这些参数确保 Postfix 能够正确地处理邮件的过滤和传递。

6.5 clamsmtpd.conf 配置参数

clamsmtpd.conf 是 ClamSMTP 的配置文件,设置邮件过滤的具体行为和参数,以下是关键参数的解析:
| 参数 | 描述 | 示例值 |
| ---- | ---- | ---- |
| OutAddress | 扫描后邮件发送的地址 | 127.0.0.1:10026 |
| ClamAddress | clamd 监听的地址 | /var/run/clamav/clamd.sock |
| Action | 发现病毒时的处理动作 | drop |
| User | 进程运行的用户 | clamav |

这些参数决定了 ClamSMTP 的过滤行为和安全性。

7. 常见问题与解决方案
7.1 启动 clamsmtpd 失败
  • 问题描述 :以 root 身份启动 clamsmtpd 进程时失败。
  • 可能原因
    • clamd 守护进程未运行。
    • clamd 未监听指定的套接字。
    • ScanMail 指令未设置为 on。
  • 解决方案
    • 确保 clamd 守护进程正在运行,可以使用 # clamd 命令启动。
    • 检查 clamd.conf 文件,确保 LocalSocket 或 TCPSocket 指令正确设置,并且只取消注释其中一行。
    • 确保 ScanMail 指令设置为 on。
7.2 邮件过滤异常
  • 问题描述 :发送测试邮件时,邮件过滤结果不符合预期。
  • 可能原因
    • ClamSMTP 配置文件参数设置错误。
    • Postfix 配置文件参数设置错误。
    • 病毒数据库未及时更新。
  • 解决方案
    • 检查 clamsmtpd.conf 文件,确保关键参数设置正确,如 OutAddress、ClamAddress、Action 等。
    • 检查 Postfix 的 main.cf 和 master.cf 文件,确保邮件过滤相关参数设置正确。
    • 运行 freshclam 手动更新病毒数据库,确保数据库是最新的。
7.3 病毒数据库更新失败
  • 问题描述 :freshclam 无法正常更新病毒数据库。
  • 可能原因
    • 网络连接问题。
    • freshclam.conf 配置参数错误。
    • 服务器负载过高。
  • 解决方案
    • 检查网络连接,确保服务器能够正常访问 ClamAV 服务器。
    • 检查 freshclam.conf 文件,确保 DNSDatabaseInfo 等参数设置正确。
    • 适当调整更新频率,避免在服务器负载高峰期进行更新。
8. 性能优化建议
8.1 调整更新频率

根据服务器的实际情况和网络带宽,合理调整病毒数据库的更新频率。如果服务器流量较大,可以适当增加更新频率,但要注意避免对服务器造成过大负载。

8.2 优化 ClamSMTP 配置
  • 调整 MaxConnections 参数,确保 clamd 能够处理的最大连接数与 ClamSMTP 允许的最大连接数相匹配。
  • 调整 TimeOut 参数,避免因网络延迟导致的长时间等待。
8.3 监控与日志分析

定期监控 ClamAV 和 ClamSMTP 的日志文件,及时发现并解决潜在的问题。可以使用日志分析工具对日志进行分析,了解病毒检测情况和系统运行状态。

9. 安全注意事项
9.1 脚本执行风险

在 clamsmtpd.conf 中配置 VirusAction 参数时要谨慎,因为运行脚本可能会带来安全风险。如果必须使用,要确保脚本的安全性,避免被恶意利用。

9.2 用户权限管理

确保所有进程以相同的用户身份运行,避免因权限问题导致的访问错误。同时,要限制不必要的用户对配置文件和日志文件的访问权限。

9.3 数据备份

定期备份 ClamAV 的病毒数据库和配置文件,以防数据丢失或损坏。

流程图

graph LR
    A[配置参数解析] --> B[常见问题排查]
    B --> B1[启动 clamsmtpd 失败]
    B --> B2[邮件过滤异常]
    B --> B3[病毒数据库更新失败]
    B --> C[性能优化]
    C --> C1[调整更新频率]
    C --> C2[优化 ClamSMTP 配置]
    C --> C3[监控与日志分析]
    B --> D[安全注意事项]
    D --> D1[脚本执行风险]
    D --> D2[用户权限管理]
    D --> D3[数据备份]

表格:常见问题与解决方案总结

问题 可能原因 解决方案
启动 clamsmtpd 失败 clamd 未运行、套接字设置错误、ScanMail 未开启 启动 clamd、检查 clamd.conf、确保 ScanMail 为 on
邮件过滤异常 配置文件参数错误、病毒数据库未更新 检查配置文件、手动更新病毒数据库
病毒数据库更新失败 网络问题、配置参数错误、服务器负载高 检查网络、检查 freshclam.conf、调整更新频率

总结

本文详细介绍了 ClamAV 杀毒软件的配置、测试、自动化更新等方面的内容,包括基础配置、各组件测试、ClamSMTP 的安装与配置、电子邮件过滤测试以及常见问题的解决方案和性能优化建议。通过合理配置和管理,可以确保服务器的电子邮件系统有效抵御病毒威胁,同时提高系统的稳定性和安全性。在实际应用中,要根据服务器的实际情况进行适当调整,不断优化系统性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值