clamAV防病毒软件(开源)
官网地址ClamAVNet
uname -a 查看自己服务器的架构,下载对应的防病毒版本
将下载的好的包上传至服务器
解压安装软件包到指定目录下
# centos
rpm -ivh --prefix=/usr/local/clamav clamav-1.3.1.linux.x86_64.rpm |
# ubuntu
dpkg -x clamav-1.3.1.linux.x86_64.deb /usr/local/clamav/ |
cd /usr/local/clamav
设置PATH变量
echo PATH=/usr/local/clamav/bin:/usr/local/clamav/sbin:$PATH > /etc/profile.d/path.sh |
使其生效
source /etc/profile.d/path.sh |
使用clamscan命令进行测试时,提示缺少相关库文件
clamscan -r -i /root/ |
报错:
clamscan: error while loading shared libraries: libclamav.so.12: cannot open shared object file: No such file or directory
查看系统内libclamav.so.12是否已存在
find / -name 'libclamav.so.12' |
更新ldconfig
echo "/usr/local/clamav/lib64/" | sudo tee -a /etc/ld.so.conf.d/clamav.conf |
ldconfig |
再次测试clamscan -r -i /root/
提示缺少病毒库。
因为是离线环境。需要找一个外网环境,使用freshclam下载病毒库后拷贝过来
从ClamAV站点下载文件定义:
wget http://db.local.clamav.net/main.cvd
wget http://db.local.clamav.net/daily.cvd
这两个文件是必需的
将这些文件复制到ClamAV目录中:
sudo mv daily.cvd main.cvd /usr/local/share/clamav/
另一种下载方式
找了个能连接外网的虚拟机安装clamav,下载病毒库
将病毒库放在/usr/local/share/clamav/下面
cd /usr/local/share
unzip clamav.zip
再次测试正常 clamscan -r -i /root/
clamd配置:
配置clamd守护进程就需要修改clamd的配置文件。
两个配置文件:
clamd.conf:clamd 守护进程的配置文件。当你使用 clamdscan(而不是 clamscan)命令时,该命令实际上会与后台运行的 clamd 守护进程进行交互来执行扫描。因此,clamdscan 的行为会受到 clamd.conf 文件中的配置的影响。这个文件包含了与守护进程行为、日志记录、扫描选项等相关的设置。
freshclam.conf:ClamAV 病毒数据库更新工具 freshclam 的配置文件。当你使用 freshclam 命令来更新你的病毒数据库时,该命令会根据这个配置文件来运行。这个文件包含了与更新源、更新频率、代理设置、日志记录等相关的设置。
1、先创建存放日志、socket和pid的文件目录。
cd /usr/local/clamav/
mkdir logs pid socket |
/usr/local/clamav/etc这个目录下有两个配置文件模板,可以根据这两个模板创建配置文件。
cd /usr/local/clamav/etc |
cp clamd.conf.sample clamd.conf |
cp freshclam.conf.sample freshclam.conf |
3、修改配置文件
vi clamd.conf
# 注释掉Example这一行 LogFile /usr/local/clamav/logs/clamd.log LogFileMaxSize 20M PidFile /usr/local/clamav/pid/clamd.pid DatabaseDirectory /usr/local/share/clamav #刚刚上传的病毒库存放的位置 LocalSocket /usr/local/clamav/socket/clamd.socket |
查看配置结果
[root@CentOS7 etc]# cat clamd.conf |grep -Ev "^#|^$"
修改freshclam.conf配置
vi freshclam.conf
# 注释掉Example这一行 DatabaseDirectory /var/lib/clamav UpdateLogFile /usr/local/clamav/logs/freshclam.log PidFile /usr/local/clamav/pid/freshclam.pid DatabaseMirror database.clamav.net Checks 24 #24表示一天检查一次病毒库更新没,更新了就直接拉取到本地 |
[root@CentOS7 etc]# cat freshclam.conf | grep -Ev '^#|^$'
创建clamav用户
groupadd clamav |
useradd -g clamav -s /bin/false -c "Clam Antivirus" clamav |
更改目录权限:
chown -R clamav:clamav /usr/local/clamav |
全部配置好后进行测试: freshclam clamd
提示配置文件是在/usr/local/etc下面找的,所以需要将配置文件软链接到这个下面。
软链接源文件要使用绝对路径
ln -s /usr/local/clamav/etc/freshclam.conf /usr/local/etc/ |
ln -s /usr/local/clamav/etc/clamd.conf /usr/local/etc/ |
在线生成病毒库: freshclam
如果报如下的错,说明权限不够,因为clamav是使用clamv这个用户,该用户对/var/lib/clamav目录没有足够权限,解决办法就是赋予权限。
chmod 777 /var/lib/clamav
再次进行测试:
clamd正常运行
,
clamdscan正常运行
最后将freshclam和clamd做成系统服务交给systemd进行托管。
# centos7的systemd文件是放在/usr/lib/systemd/system/
# ubuntu的systemd文件时放在/lib/systemd/system/
centos:
创建clamd的systemd文件:
vi /usr/lib/systemd/system/clamd.service
添加如下内容:
[Unit] Description=Clam AntiVirus userspace daemon Documentation=man:clamd(8) man:clamd.conf(5) https://docs.clamav.net/ # Check for database existence ConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc} ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc} [Service] type=simple ExecStart=/usr/local/clamav/sbin/clamd --foreground=true # Reload the database ExecReload=/bin/kill -USR2 $MAINPID StandardOutput=syslog TimeoutStartSec=420 [Install] WantedBy=multi-user.target |
启动clamd systemctl start clamd
查看clamd状态 systemctl status clamd
创建freshclam的systemd文件
vi /usr/lib/systemd/system/freshclam.service
添加如下内容:
[Unit] Description=ClamAV virus database updater Documentation=man:freshclam(1) man:freshclam.conf(5) https://docs.clamav.net/ # If user wants it run from cron, don't start the daemon. # ConditionPathExists=!/etc/cron.d/clamav-update Wants=network-online.target After=network-online.target [Service] ExecStart=/usr/local/clamav/bin/freshclam -d --foreground=true [Install] WantedBy=multi-user.target |
启动 systemctl start freshclam.service
查看状态 systemctl status freshclam.service
启动
cd /usr/local/clamav/sbin
./ clamd
查看版本 clamscan -V
查看进程 ps ax | grep clamd