一、clamav 开源杀毒软件
Clamav这个杀毒软件是我之前centos服务器中毒后发现的!杀毒效率和系统占用率给人的印象非常深刻!
这个Clamav是思科 Cisco 自2004年就开始的开源项目,在印象中Cisco基本没有过免费的东西,不过这个还真的很好用!
ClamAV的®是一个开源(GPL)的杀毒引擎,包括电子邮件扫描,Web扫描和终点的安全使用防病毒引擎。它提供了许多实用程序,包括灵活且可扩展的多线程守护程序,命令行扫描程序以及用于自动数据库更新的高级工具。
软件特点
- ClamAV旨在快速扫描文件。
- 实时保护(仅Linux)。我们的扫描守护程序支持在现代版本的Linux上进行按访问扫描,包括阻止文件访问直到文件被扫描为止的功能。
- ClamAV可检测超过100万种病毒,蠕虫和特洛伊木马,包括Microsoft Office宏病毒,移动恶意软件和其他威胁。
- 内置的字节码解释器允许ClamAV签名编写器创建和分发非常复杂的检测例程,并远程增强扫描仪的功能。
- 签名签名数据库可确保ClamAV仅执行可信签名定义
- 命令行扫描器
- sendmail的Milter界面
- 先进的数据库更新程序,支持脚本更新和数字签名
- 病毒数据库每天更新多次
- 内置对所有标准邮件文件格式的支持
- 内置支持各种存档格式,包括Zip,RAR,Dmg,Tar,Gzip,Bzip2,OLE2,Cabinet,CHM,BinHex,SIS等
- 内置对UPX,FSG,Petite,NsPack,wwpack32,MEW,Upack打包的ELF可执行文件和可移植可执行文件的内置支持,并被SUE,Y0da Cryptor等混淆
- 内置支持流行的文档格式,包括MS Office和MacOffice文件,HTML,Flash,RTF和PDF
软件支持多种平台
- GNU/Linux
- Alpine
- 3.11 (64bit)
- Ubuntu
- 18.04 (64bit, 32bit)
- 20.04 (64bit)
- Debian
- 9 (64bit, 32bit)
- 10 (64bit, 32bit)
- CentOS
- 7 (64bit, 32bit)
- 8 (64bit)
- Fedora
- 30 (64bit)
- 31 (64bit)
- Alpine
- UNIX
- FreeBSD
- 11 (64bit)
- 12 (64bit)
- macOS
- 10.13 (High Sierra)
- 10.15 (Catalina)
- FreeBSD
- Windows
- 7 (64bit, 32bit)
- 10 (64bit, 32bit)
系统运行最低要求
以下最低推荐系统要求是对Cisco提供的标准ClamAV签名数据库使用clamscan或clamd和clamdscan二进制文件。
建议的最低ClamAV 内存
- FreeBSD和Linux服务器版本:2 GiB +
- Linux非服务器版:2 GiB +
- Windows 7和10 32位:2 GiB +
- Windows 7和10 64位:3 GiB +
- macOS:3 GiB +
推荐的最低ClamAV CPU
1个CPU在2.0 Ghz +
所需的最小可用硬盘空间
对于ClamAV应用程序,我们建议有5 GB的可用空间。该建议是对每个操作系统的建议磁盘空间的补充。
我们试下Linux版本和Windows版本的Calmav。
二、Clamav linux版本
2.1 安装Clamav
我的服务器是CentOS Linux release 7.9.2009
安装也很简单:
yum install -y epel-release
yum install -y clamav
yum install -y clamd
这样就安装完成了!
2.2 关于Clamav的配置
在配置的时候要注意,目前在线安装的都是最新版本!!!
ClamAV 0.103.1版本通过上面安装后各种日志文件和病毒库数据文件都是默认在“ /var/lib/clamav”位置!!!
下面创建文件之类的或者修改配置等都是为了管理防止在指定位置!!!
换就话说就是不配置,也是可以直接使用!!!
也就是说如果懒的话,或者只用一次的话,直接可以扫描了!!!
默认配置查看命令,需要用到clamconf
2.2.1 Clamconf
clamconf是ClamAV提供的用于检查整个系统配置的工具,因为它与ClamAV的安装有关。在运行时,它会显示配置在编译时ClamAV的,重要的OS的细节,两者的内容(和有效性)时使用的值clamd.conf,并freshclam.conf与其他重要引擎,数据库,平台,构建信息。
它还可以生成示例配置文件clamd.conf和freshclam.conf。
要使用clamconf,并查看其提供的所有信息,只需运行以下命令:
clamconf
有关的更多详细信息clamconf,请运行:
man clamconf
或者
clamconf --help
2.3 病毒库更新
2.3.1 freshclam工具
freshclam是Clam AntiVirus的自动数据库更新工具。可以将其配置为以两种模式工作:
- interactive 交互式-通过命令行执行程序
- daemon 守护程序-在后台静默
freshclam 是一个高级工具:它支持脚本更新(而不是每次更新时都传输整个CVD文件,它仅通过特殊脚本传输最新数据库与当前数据库之间的差异),通过DNS进行数据库版本检查,代理服务器(带有身份验证) ,数字签名和各种错误情况。
快速测试:不带任何参数(以超级用户身份)运行freshclam并检查输出。
freshclam
freshclam [options]
--help -h 显示此帮助
--version -V 打印版本号并退出
--verbose -v 详细
--debug 启用调试消息
--quiet 仅输出错误消息
--no-warnings 不打印和记录警告
--stdout 写入stdout替换stderr。不影响“调试”消息。
--show-progress 显示下载进度百分比
--config-file=FILE 从指定文件中读取配置。
--log=FILE -l FILE 将log日志保存到指定文件
--daemon -d 在守护程序模式下运行 (daemon mode)
--pid=FILE -p FILE 将守护进程的pid保存在FILE中
--foreground -F Don't fork into background (for use in daemon mode).
--user=USER -u USER Run as USER
--no-dns 强制使用旧的非DNS验证方法
--checks=#n -c #n 每天检查的次数, 1 <= n <= 50
--datadir=DIRECTORY 将新数据库下载到指定目录中
--daemon-notify[=/path/clamd.conf] 发送RELOAD命令到 clamd
--local-address=IP -a IP Bind to IP for HTTP downloads
--on-update-execute=COMMAND 更新完成后执行新的命令
Use EXIT_1 to return 1 after successful database update.
--on-error-execute=COMMAND 命令如果发生错误,则执行命令
--on-outdated-execute=COMMAND 软件过时时执行新的Execute COMMAND
--update-db=DBNAME 仅更新数据库 DBNAME
2.3.2 freshclam.conf配置
freshclam.conf 文件位于 /etc/freshclam.conf
修改配置文件,文件默认注释,去掉注释即可!其他的根据自己情况修改!
DatabaseDirectory /var/lib/clamav 病毒库存放位置
UpdateLogFile /var/log/clamav/freshclam.log 更新日志
PidFile /var/run/freshclam.pid 更新进程 默认禁止的!
DatabaseMirror database.clamav.net 病毒库更新地址
Checks 72 数据库更新间隔时间默认12小时,也就是一天两次。
ConnectTimeout 60 数据库更新超时 默认30s
LogFileMaxSize 2M
如果一切正常,则可以在/var/log中创建日志文件(确保目录由clamav或freshclam将以其身份运行的任何用户所有):
mkdir -p /var/log/clamav/ 日志文件夹
touch /var/log/clamav/freshclam.log 创建日志文件
chmod 666 /var/log/clamav/freshclam.log 授予读取和写入权限
chown clamupdate /var/log/clamav/freshclam.log
配置完freshclam.conf,要freshclam在daemon模式下运行,请执行:
freshclam -d
另一种方法是使用cron守护程序。可以定期更新病毒库,您必须将以下行添加到root或clamav用户的crontab中:
crontab -e
00 01,13 * * * /usr/bin/freshclam --quiet
2.4 病毒扫描的日志
touch /var/log/clamav/clamd.scan 创建日志文件
chmod 644 /var/log/clamav/clamd.scan 授予读取和写入权限
chown clamscan:clamscan /var/log/clamd.scan
修改scan.conf 文件位于 /etc/clamd.d/scan.conf
LogFile /var/log/clamav/clamd.scan
PidFile /run/clamd.scan/clamd.pid
DatabaseDirectory /var/lib/clamav
LogFileMaxSize 2M
TCPAddr 127.0.0.1
TCPSocket 3310
2.5 Clamav 的使用
ClamAV有两个命令:clamdscan、clamscan
clamdscan命令是用yum安装方法才能使用,需要启动clamd服务,执行速度快
clamscan命令通用,如果是源码安装的就使用这个命令。不依赖服务,命令参数较多,执行速度稍慢
用clamdscan扫描,需要开始服务才能使用。速度快,不用带-r,默认会递归扫描子目录
clamdscan /usr
clamscan:
用clamscan扫描,不需要开始服务就能使用。速度慢,要带-r,才会递归扫描子目录
clamscan -r /usr
这个命令不仅会显示找到的病毒,正常的扫描文件也会显示出来。
2.5.1 clamscan命令
clamscan [选项] [文件/目录/-]
--help -h 显示此帮助
--version -V 打印版本号
--verbose -v 详细
--archive-verbose -a 在扫描的档案中显示文件名
--debug 启用libclamav的调试消息
--quiet 仅输出错误消息
--stdout 写入stdout替代stderr。不影响“调试”消息。
--no-summary 在扫描结束时禁用摘要
--infected -i 仅打印受感染的文件
--suppress-ok-results -o 跳过打印OK文件
--bell 病毒检测的声音
--tempdir =DIRECTORY 在目录中创建临时文件
--leave-temps [=yes/no(*)] 不删除临时文件
--gen-json [=yes/no(*)] 生成扫描文件的JSON描述。 JSON将被打印,并且- 如果启用--leave-temps,则删除到temp目录。
--database = FILE / DIR -d FILE / DIR 从FILE加载病毒数据库或从DIR加载所有受支持的db文件
--official-db-only [=yes/no(*)] 仅加载官方签名
--log = FILE -l FILE 将扫描报告保存到FILE
--recursive [=yes/no(*)] -r 递归扫描子目录
--allmatch [=yes/no(*)] -z 找到匹配项后继续在文件内扫描
--cross-fs [=yes/no(*)] 扫描其他文件系统上的文件和目录
--follow-dir-symlinks [=0/1(*)/2] 跟随目录符号链接(0 =永不,1 =直接,2 =始终)
--follow-file-symlinks [=0/1(*)/2] 跟随文件符号链接(0 =从不,1 =直接,2 =始终)
--file-list = FILE -f FILE从FILE扫描文件
--remove [=yes/no(*)] 删除受感染的文件。小心!
--move =DIRECTORY 将受感染文件移到目录中
--copy = DIRECTORY 将受感染的文件复制到目录中
--exclude = REGEX 不扫描与REGEX匹配的文件名
--exclude-dir = REGEX 不扫描与REGEX匹配的目录
--include = REGEX 仅扫描与REGEX匹配的文件名
--include-dir = REGEX 仅扫描与REGEX匹配的目录
--bytecode [=yes/no(*)] 从数据库加载字节码
--bytecode-unsigned [=yes/no(*)] 加载未签名的字节码
**警告**:切勿运行不受信任来源的字节码签名。
这样做可能会导致任意代码执行。
--bytecode-timeout = N 设置字节码超时(以毫秒为单位)
--statistics [= none(*)/ bytecode / pcre] 收集并打印执行统计信息
--detect-pua [=yes/no(*)] 检测可能有害的应用程序
--exclude-pua = CAT 跳过类别CAT的PUA信号
--include-pua = CAT 加载CAT类的PUA信号
--detect-structured [=yes/no(*)] 检测结构化数据(SSN,信用卡)
--structured-ssn-format = X SSN格式(0 =正常,1 =剥离,2 =两者)
--structured-ssn-count = N 最小SSN计数以生成检测
--structured-cc-count = N 最小CC计数以生成检测
--structured-cc-mode = X CC模式(0 =贷方借方和私人标签,仅1 =贷方卡
--scan-mail [=yes/no(*)] 扫描邮件文件
--phishing-sigs [=yes/no(*)] 启用基于电子邮件签名的网络钓鱼检测
--phishing-scan-urls [=yes/no(*)] 启用基于URL签名的网络钓鱼检测
--heuristic-alerts [=yes/no(*)] 启发式警报
--heuristic-scan-precedence [=yes/no(*)] 找到启发式匹配项后立即停止扫描
--normalize [=yes/no(*)] 标准化html,脚本和文本文件。使用normalize = no获得yara兼容性
--scan-pe [=yes/no(*)] 扫描PE文件
--scan-elf [=yes/no(*)] 扫描ELF文件
--scan-ole2 [=yes/no(*)] 扫描OLE2容器
--scan-pdf [=yes/no(*)] 扫描PDF文件
--scan-swf [=yes/no(*)] 扫描SWF文件
--scan-html [=yes/no(*)] 扫描HTML文件
--scan-xmldocs [=yes/no(*)] 扫描基于xml的文档文件
--scan-hwp3 [=yes/no(*)] 扫描HWP3文件
--scan-archive [=yes/no(*)] 扫描存档文件(libclamav支持)
--alert-broken [=yes/no(*)] 警报损坏的可执行文件(PE和ELF)
--alert-broken-media [=yes/no(*)] 警报损坏的图形文件(JPEG,TIFF,PNG,GIF)
--alert-encrypted [=yes/no(*)] 关于加密档案和文档的警报
--alert-encrypted-archive [=yes/no(*)] 加密档案警报
--alert-encrypted-doc [=yes/no(*)] 加密文档警报
--alert-macros [=yes/no(*)] 关于包含VBA宏的OLE2文件的警报
--alert-exceeds-max [=yes/no(*)] 对超过最大文件大小,最大扫描大小或最大递归限制的文件发出警报
--alert-phishing-ssl [=yes/no(*)] 在URL中包含SSL不匹配的电子邮件时发出警报
--alert-phishing-cloak [=yes/no(*)] 对包含隐藏URL的电子邮件发出警报
--alert-partition-intersection [=yes/no(*)] 包含分区交叉点的原始DMG图像文件的警报
--nocerts 禁用PE文件中的authenticode证书链验证
--dumpcerts 在PE文件中转储Authenticode证书链
--max-scantime =#n 超过此时间的扫描时间将被跳过,并假定为干净时间(毫秒)
--max-filesize =#n 大于此大小的文件将被跳过并假定为干净
--max-scansize =#n 每个容器文件要扫描的最大数据量(**)
--max-files =#n 每个容器文件要扫描的最大文件数(**)
--max-recursion =#n 容器文件的最大归档递归级别(**)
--max-dir-recursion =#n 最大目录递归级别
--max-embeddedpe =#n 检查嵌入式PE的最大大小文件
--max-htmlnormalize =#n 要规范化的HTML文件的最大大小
--max-htmlnotags =#n 要扫描的规范化HTML文件的最大大小
--max-scriptnormalize =#n 要规范化的脚本文件的最大大小
--max-ziptypercg =#n 要重新分析的zip的最大大小
--max-partitions =#n 磁盘映像中要扫描的最大分区数
--max-iconspe =#n PE文件中要扫描的最大图标数
--max-rechwp3 =#n 对HWP3解析函数的最大递归调用
--pcre-match-limit =#n 对PCRE匹配函数的最大调用数。
--pcre-recmatch-limit =#n 对PCRE匹配函数的最大递归调用。
--pcre-max-filesize =#n 执行PCRE subsig匹配的最大文件大小。
--disable-cache 禁用对扫描文件的哈希和进行缓存和缓存检查。
2.5.2 clamdscan命令
clamdscan [选项] [文件/目录/-]
--help -h 显示此帮助
--version -V 打印版本号并退出
--verbose -v 详细
--quiet 安静,仅输出错误消息
--stdout 写入stdout而不是stderr。不影响“调试”消息。
--log = FILE -l FILE 将扫描报告保存在FILE中
--file-list = FILE -f FILE从FILE扫描文件
--ping -p A [:I] 以可选间隔[I]最多响起[P]次Ping,直到响应为止。
--wait -w 等待30秒钟,开始Clamd启动。 (可选)与--ping一起使用以设置尝试[A]和间隔[I]来检查Clamd。
--remove 删除受感染的文件。小心!
--move =目录 将受感染文件移到目录中
--copy =目录 将受感染的文件复制到目录中
--config-file = FILE 从FILE中读取配置。
--allmatch -z 找到匹配项后,继续在文件中进行扫描。
--multiscan -m 强制进行MULTISCAN模式
--infected -i 仅打印受感染的文件
--no-summary 在扫描结束时禁用摘要
--reload 请求Clamd重新加载病毒数据库
--fdpass 将文件描述符传递给clamd(如果clamd以其他用户身份运行,则很有用)
--stream 强制将流文件塞满(用于调试和单元测试)
2.5.3 常用命令使用
1.扫描当前目录下的所有文件
calmscan
2.扫描指定的单个文件
clamscan /bin/uame
3.扫描/home目录下的所有文件和子目录
clamscan -r /home
4.扫描只显示找到的病毒信息
clamscan --no-summary -ri /tmp
5.扫描并清除
clamscan -r –remove ${路径}
6.扫描并移动病毒和感染文件到指定目录
clamscan -r --move=/home/bill/my_virus_collection ${路径}
7.扫描邮箱目录,以查找包含病毒的邮件
clamscan -r /var/spool/mail
8.扫描home文件夹并将结果保存在scan.log文件
clamscan -r /home -l scan.log
9.使用安静模式,仅仅打印出错误信息
clamscan -r /home --quiet
10.以指定的文件作为病毒库扫面病毒
clamscan -d /tmp/newclamdb -r /tmp 以/tmp/newclamdb目录中的所有.cvd文件为病毒库,扫描/tmp目录下的所有文件和子目录
11.扫描计算机上的所有文件并且显示有问题的文件的扫描结果
clamscan -r --bell -i /·
评论区