【ClamAV】Linux系统开源杀毒软件ClamAV的安装

Linux作为一个开源的操作系统,很多人普遍认为没有病毒,所以很多企业的服务器要么只使用了物理防火墙或软件防火墙,要么为了性能直接裸奔,其实Linux系统的病毒较少,但是并不意味着病毒免疫,尤其是对于诸如邮件或者归档文件中夹杂的病毒往往更加难以防范,况且很多企业的服务器都是基于Linux,所以为了防范不法分子的入侵,我们还是要安装杀毒软件,并且不定期进行查杀病毒

目录

  • 一、安装环境
  • 二、搭建步骤
  • 三、常用命令总结
  • 四、遇到的问题
  • 五、定时查杀病毒
  • 六、参考并致谢

一、安装环境

操作系统:CentOS 7
应用软件:ClamAV

二、搭建步骤

yum方式和RPM方式任选一种

1、yum方式安装
1)使用以下命令将依赖和主安装包都下载安装上
[root@localhost ~]# yum install clamav  clamav-server clamav-data clamav-update clamav-filesystem clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd pcre* gcc zlib zlib-devel libssl-devel libssl openssl

说明: 这种方法安装吼,病毒库默认地址是:/var/lib/clamav

此时ClamAV已经安装完成

2、rpm方式安装
1)下载软件包
#官网地址:
    http://www.clamav.net/downloads   
#Linux中下载地址:
    wget http://www.clamav.net/downloads/production/clamav-0.100.0.tar.gz
#参考文档:
    https://github.com/vrtadmin/clamav-faq/raw/master/manual/clamdoc.pdf
2)创建clamav用户和存放病毒库目录
# clamav用户和用户组
[root@localhost ~]# groupadd clamav && useradd -g clamav clamav && id clamav
# 日志存放目录
[root@localhost ~]# mkdir -p /usr/local/clamav/logs     
[root@localhost ~]# touch /usr/local/clamav/logs/clamd.log
[root@localhost ~]# touch /usr/local/clamav/logs/freshclam.log
[root@localhost ~]# chown clamav.clamav /usr/local/clamav/logs/clamd.log
[root@localhost ~]# chown clamav.clamav /usr/local/clamav/logs/freshclam.log

# 病毒存放目录
[root@localhost ~]# mkdir -p /usr/local/clamav/updata
[root@localhost ~]# chown -R root.clamav /usr/local/clamav/
[root@localhost ~]# chown -R clamav.clamav /usr/local/clamav/updata/
3)解压安装包

包名的XXXX只是代表版本号,命令仅供参考

[root@localhost ~]# tar zxvf clamav-xxxxx.tar.gz
4)安装依赖
[root@localhost ~]# yum install gcc openssl openssl-devel -y
5)编译安装
[root@localhost ~]# cd clamav-xxxxx/  
[root@localhost ~]# ./configure --prefix=/usr/local/clamav --with-pcre  
[root@localhost ~]# make && make install 
[root@localhost ~]#  echo $?

此时ClamAV已经安装完成

3、修改配置文件clam.conf

如果是yum方式安装的话,配置文件都会在/etc目录下,不用做以下复制模板操作,同时yum方式安装的配置文件名称是scan.conf

# rpm安装方式需要复制模板配置文件
[root@localhost ~]# cd /usr/local/clamav/etc  
[root@localhost ~]# cp clamd.conf.sample clamd.conf  
[root@localhost ~]# cp freshclam.conf.sample freshclam.conf

打开clamd.conf配置文件

[root@localhost ~]# vim clamd.conf 
或者  
[root@localhost ~]# vim scan.conf

注释掉#Example
并打开配置(路径可根据需要修改,这里使用yum安装的默认路径)

LogFile /var/log/clamd.scan    
PidFile /var/run/clamd.scan/clamd.pid     
DatabaseDirectory /var/lib/clamav

然后找到以下配置进行修改:
一般情况下只是去掉注释的更改,使用yum方式安装的话配置文件中的配置基本都是可用的

DatabaseDirectory /var/lib/clamav  

# 这里定义服务器类型(本地或者TCP,如果定义为使用本地socket则将此注释打开)
LocalSocket /var/run/clamd.scan/clamd.sock

# 这里定义服务器类型(本地或者TCP,如果定义为使用TCP socket则将此注释打开)
TCPSocket 3310  

TCPAddr 127.0.0.1

4、修改配置文件freshclam.conf

[root@localhost ~]# vim /etc/freshclam.conf

同样将Excemple注释掉

三、常用命令总结

1、启动、关闭、查看状态
# 启动服务
[root@localhost ~]# systemctl start clamd@scan.server  
# 关闭服务  
[root@localhost ~]# systemctl stop clamd@scan.server  
# 查看服务状态
[root@localhost ~]# systemctl status clamd@scan.server 
2、扫描杀毒
1、clamdscan命令
  • 一般是使用yum安装才能使用,需要启动clamd服务,执行速度较快,默认会递归扫描子目录
[root@localhost ~]# clamdscan /home
2、clamscan命令
  • 通用,不依赖服务(不需要开启服务也能用),命令参数较多,执行速度慢
-r/--recursive[=yes/no]             所有文件
--log=FILE/-l FILE        增加扫描报告
--move [路径]          移动病毒文件至..
--remove [路径]              删除病毒文件
--quiet                  只输出错误消息
--infected/-i                       只输出感染文件
--suppress-ok-results/-o                   跳过扫描OK的文件
--bell                         扫描到病毒文件发出警报声音
--unzip(unrar)                 解压压缩文件扫描

例:

clamscan -ri --log=/home/clamav.log /home

扫描结果如下

2、更新病毒库
1、 手动更病毒库
[root@localhost ~]# freshclam
2、自动更新病毒库

freshclam命令通过文件/etc/cron.d/clamav-update来运行,改文件内容如下:


但默认情况下是禁止了自动更新功能,需要移除文件/etc/sysconfig/freshclam配置文件最后一行的配置才能启用

六、遇到的问题

1、服务不能启动,查看日志发现报错:Please defind server type (local and/or TCP)

原因: 是在配置文件中没定义是使用本地的socket还是使用TCP方式的socket
解决方法: 修改scan.conf文件中的配置,如使用本地的socket:


然后再次启动:

2、在更新病毒库时,出现Can't create temporaty directory xxxx的错误

解决方法:
一般错误提示中会给出UID和GID提示,根据提示修改权限


然后再次执行更新:

3、手动更新时遇到错误:Update failed. Your network may be down or none of the mirrors listed in freshclam.conf is working.

解决方法: 将旧的镜像地址删掉:

[root@localhost ~]# rm -f /var/lib/clamav/mirrors.dat

然后再次执行手动更新

4、执行clamdscan命令时出现:Permission denied. ERROR

暂未发现解决方法,如果有找到方法的网友麻烦告知一下谢谢

五、定时查杀病毒

1、直接使用命令+定时任务的方式

打开定时任务配置文件

[root@localhost ~]# vim crontab

文件内配置如下

1  3  * * *  /usr/bin/freshclam --quiet
20 3  * * *  /usr/bin/clamscan  -r /home  --remove -l /var/log/clamscan.log
2、使用命令+脚本方式,如果扫描到病毒就发送邮件给管理员(基于python环境,脚本摘于网络)
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import socket
import os
import re
 
 
class ClamAV(object):
    ## 这里填入自己的远程smtp服务。利用第三方smtp服务进行邮件发送。
    def __init__(self):
        self.HOST = "smtp.exmail.qq.com"  
        self.PORT = "465"
        self.USER = 'xxx@xxxx.com'
        self.PASSWD = 'xxxxxx'
        self.TO = "xxxxxxxxx@xx.com"
 
    def clamscan(self):
        os.system('freshclam')
        os.system('clamscan -ri /tmp > /tmp/clamscan.log')
        with open('/tmp/clamscan.log', 'r', encoding='utf-8') as f:
            a = f.read()
 
        result = re.findall('Infected files:.*', a)
        if result:
            number = result[0].split(':')[1].strip()
            if number != '0':
                self.sendmail('Infected files:%s。有文件感染,请手动检查,查杀病毒。' %number)
        else:
            self.sendmail('扫描脚本有误,请检查')
 
    def sendmail(self,content):
        ipaddr = socket.gethostbyname(socket.gethostname())
 
        smtp = smtplib.SMTP_SSL(self.HOST, self.PORT)
        smtp.ehlo()
        smtp.login(self.USER, self.PASSWD)
 
        TEXT = """IP: %s\nContent: %s""" %(ipaddr,content)
        message = MIMEText(TEXT, 'plain', 'utf-8')
        message['From'] = self.USER
        message['To'] = self.TO
        message['Subject'] = Header('Clamscan Result Warning', 'utf-8')
 
        smtp.sendmail(self.USER, self.TO, message.as_string())
        smtp.quit()
 
 
clam = ClamAV()
clam.clamscan()

然后将python脚本设定为定时任务
打开定时任务配置文件

[root@localhost ~]# vim crontab

配置文件内容如下

00 4 * * * root /home/clamsacn.py

六、参考并致谢

https://blog.csdn.net/weixin_41004350/article/details/80182929

https://www.cnblogs.com/bingo1024/p/9018212.html

http://www.vaerenbergh.com/blog/scan-uploaded-files-drupal-clamav

https://blog.csdn.net/heiby/article/details/52136340

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280

推荐阅读更多精彩内容