一、简介
ClamAV(Clam AntiVirus)是一款开源的反病毒引擎,主要用于检测和清除恶意软件,包括病毒、木马和其他形式的恶意代码。它是免费的,并且支持多平台,包括Linux、Unix、Mac OS X、Windows和OpenVMS等操作系统。ClamAV特别适用于邮件服务器、文件传输系统及网页内容的扫描,能够与多种电子邮件服务器、FTP服务器以及网络安全设备集成,提供病毒防护功能。
ClamAV的核心技术之一是特征引擎,它依赖于签名数据库来识别已知的恶意软件模式。通过定期更新病毒库,ClamAV能够识别并阻止最新的威胁。除了命令行工具外,还存在如ClamTK这样的图形界面前端,使得用户操作更为便捷。
其主要特点和功能包括:
- 恶意代码扫描:扫描电子邮件、文件共享网络及本地文件系统中的潜在威胁。
- 集成能力:通过API,ClamAV可方便地嵌入到其他应用程序和服务中,增强其安全性能。
- 实时监控:支持对文件系统实施监控,及时发现并应对新出现的恶意代码。
- 跨平台:兼容多种操作系统环境,适应不同的使用场景。
- 社区驱动:作为一个开源项目,ClamAV的更新和维护得到了全球开发者社区的支持。
二、安装
1、yum安装
yum -y install epel-release
yum -y install clamav-server clamav-data clamav-filesystem clamav-lib clamav-update clamav clamav-devel
2、二进制安装
1、创建用户组
groupadd clamav
useradd -g clamav -s /bin/false -c "Clam Antivirus" clamav
2、安装依赖软件
# yum -y groupinstall "Development Tools"
# yum -y install openssl openssl-devel libcurl-devel zlib-devel libpng-devel libxml2-devel json-c-devel bzip2-devel pcre2-devel ncurses-devel check check-devel python3 python3-pip valgrind sendmail-devel
1、安装cmake
# wget https://cmake.org/files/v3.29/cmake-3.29.3.tar.gz
# tar zxf cmake-3.29.3.tar.gz
# cd cmake-3.29.3/
# ./configure
# make -j && make install
# cmake -version
cmake version 3.29.3
2、安装json-c
# git clone https://ghproxy.net/https://github.com/json-c/json-c.git
# mkdir json-c-build
# cd json-c-build
# cmake ../json-c
# make && make test && make USE_VALGRIND=0 test && make install
3、安装rust
# vim /etc/profile
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
# source /etc/profile
# curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
1) Proceed with standard installation (default - just press enter)
2) Customize installation
3) Cancel installation
>1
# source $HOME/.cargo/env
# rustc -V
rustc 1.78.0 (9b00956e5 2024-04-29)
3、安装clamav
# wget https://www.clamav.net/downloads/production/clamav-1.0.6.tar.gz
# tar zxf clamav-1.0.6.tar.gz
# cd clamav-1.0.6
# mkdir build && cd build
cmake .. \
-D CMAKE_INSTALL_PREFIX=/usr \
-D CMAKE_INSTALL_LIBDIR=lib \
-D APP_CONFIG_DIRECTORY=/etc/clamav \
-D DATABASE_DIRECTORY=/var/lib/clamav \
-D ENABLE_JSON_SHARED=OFF
cmake --build . && ctest && cmake --build . --target install
# clamav-config --version
1.0.6
-
CMAKE_INSTALL_PREFIX:安装“前缀”将是
/usr
-
CMAKE_INSTALL_LIBDIR:库目录将是
lib
(即/usr/lib
) -
APP_CONFIG_DIRECTORY:配置目录将是
/etc/clamav
-
DATABASE_DIRECTORY:数据库目录将是
/var/lib/clamav
三、修改配置文件
1、修改freshclam配置
# cp /etc/freshclam.conf /etc/freshclam.conf.bak
# sed -i '/^Example/d' /etc/freshclam.conf
# vim /etc/freshclam.conf
DatabaseDirectory /usr/local/clamav/updata
UpdateLogFile /usr/local/clamav/logs/freshclam.log
PidFile /usr/local/clamav/updata/freshclam.pid
# vim /usr/lib/systemd/system/clam-freshclam.service
[Unit]
Description = freshclam scanner
After = network.target
[Service]
Type = forking
ExecStart = /usr/bin/freshclam -d -c 4
Restart = on-failure
PrivateTmp = true
[Install]
WantedBy=multi-user.target
# systemctl enable clam-freshclam.service
# systemctl start clam-freshclam.service
# systemctl status clam-freshclam.service
2、手动下载 clamva 数据库
注意:服务器上如果无法下载的话在浏览器上下载后手动上传
# cd /var/lib/clamav
# rm -rf main.cvd daily.cvd bytecode.cvd
# wget https://database.clamav.net/main.cvd
# wget https://database.clamav.net/daily.cvd
# wget https://database.clamav.net/bytecode.cvd
# chown -R clamupdate:clamupdate *
# freshclam # 更新病毒库
3、修改scan配置
二进制安装该文件为clamd.conf
# cp /etc/clamd.d/scan.conf /etc/clamd.d/scan.conf.bak
# sed -i '/^Example/d' /etc/clamd.d/scan.conf
# sed -i -e '/^TCPAddr/{ s/127.0.0.1/0.0.0.0/;}' /etc/clamd.d/scan.conf
# sed -i 's/^#TCPSocket.*/TCPSocket 3310/g' /etc/clamd.d/scan.conf
# vim /etc/clamd.d/scan.conf
User root
LocalSocket /var/run/clamd.sock
# cp -ap /usr/lib/systemd/system/clamd@.service /etc/systemd/system/clamd.service
# vim /etc/systemd/system/clamd.service
## 把 %i 改成 scan.conf
[Unit]
Description = clamd scanner (scan.conf) daemon
Documentation=man:clamd(8) man:clamd.conf(5) https://www.clamav.net/documents/
After = syslog.target nss-lookup.target network.target
[Service]
Type = forking
ExecStart = /usr/sbin/clamd -c /etc/clamd.d/scan.conf
# Reload the database
ExecReload=/bin/kill -USR2 $MAINPID
Restart = on-failure
TimeoutStartSec=420
[Install]
WantedBy = multi-user.target
# systemctl enable clamd.service --now
# systemctl status clamd.service
# curl https://www.eicar.org/download/eicar.com.txt | clamdscan -
stream: Eicar-Test-Signature FOUND
# lsof -i:3310
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
clamd 53219 root 3u IPv4 83908 0t0 TCP *:dyna-access (LISTEN)
clamd 53219 root 4u IPv6 83909 0t0 TCP *:dyna-access (LISTEN)
四、使用
1、文件扫描
# clamscan mysql-schema.sql # 文件名
Loading: 9s, ETA: 0s [========================>] 8.69M/8.69M sigs
Compiling: 2s, ETA: 0s [========================>] 41/41 tasks
/root/mysql-schema.sql: OK
----------- SCAN SUMMARY -----------
Known viruses: 8694409 # 已知病毒数量
Engine version: 1.0.6 # 引擎版本
Scanned directories: 0 # 扫描的目录
Scanned files: 1 # 扫描的文件
Infected files: 0 # 感染的文件
Data scanned: 0.02 MB # 扫描的数据量
Data read: 0.01 MB (ratio 2.00:1) # 读取的数据量
Time: 12.382 sec (0 m 12 s) # 完成扫描所需的时间
Start Date: 2024:06:06 16:14:01 # 开始日期和时间
End Date: 2024:06:06 16:14:13 # 结束日期和时间
2、目录扫描
# clamdscan /etc
/etc: OK
----------- SCAN SUMMARY -----------
Infected files: 0
Time: 17.318 sec (0 m 17 s)
Start Date: 2024:06:06 16:11:59
End Date: 2024:06:06 16:12:17
参数 | 说明 |
---|---|
-r/--recursive[=yes/no] | 递归扫描子目录 |
--infected/-i | 只显示发现的病毒文件 |
--no-summary | 不显示统计信息 |
--log=FILE/-l FILE | 增加扫描报告 |
--move [路径] | 移动病毒文件至.. |
--remove [路径] | 删除病毒文件 |
--quiet | 只输出错误消息 |
--suppress-ok-results/-o | 跳过扫描OK的文件 |
--bell | 扫描到病毒文件发出警报声音 |
--unzip(unrar) | 解压压缩文件扫描 |
评论区