首页 > 其他分享 >使用 ClamAV 命令行查杀服务器端病毒或恶意文件

使用 ClamAV 命令行查杀服务器端病毒或恶意文件

时间:2024-07-12 21:30:35浏览次数:14  
标签:扫描 服务器端 clamav ClamAV 查杀 clamd usr conf local

ClamAV 是一个开源 (GPLv2) 防病毒工具包,它提供了许多实用程序,包括灵活且可扩展的多线程守护程序命令行扫描程序、用于自动更新病毒库的高级工具。该软件包的核心是一个以共享库形式提供的反病毒引擎

安装 clamav

1、基于 deb 包安装最新版 clamav-1.3.1(2024.07)

wget https://github.com/Cisco-Talos/clamav/releases/download/clamav-1.3.1/clamav-1.3.1.linux.x86_64.deb
dpkg -i clamav-1.3.1.linux.x86_64.deb
cd /usr/local/etc/ && cp freshclam.conf.sample freshclam.conf

# 编辑 freshclam.conf 注释包含字符串 Example 的行
touch /var/log/freshclam.log
chown clamav.clamav /var/log/freshclam.log

2、clamav-1.3.1 主要文件介绍

/usr/local/bin/clamconf       # 配置文件生成工具
/usr/local/bin/clamscan       # 用于手工扫描的程序
/usr/local/bin/clamdscan      # 依赖后台服务的扫描程序
/usr/local/bin/clamdtop       # 监控守护程序 clamd
/usr/local/bin/clamsubmit     # ClamAV 的文件提交实用程序
/usr/local/bin/clamav-config  # change libclamav prefix [default /usr/local]
/usr/local/bin/clambc         # 是 Clam Anti-Virus 的字节码签名测试工具。它可用于测试新制作的字节码签名或帮助验证现有字节码是否按预期针对样本执行
/usr/local/bin/freshclam      # 病毒库文件 (.cvd) 下载、升级工具。在使用 ClamAV 扫描前,需执行病毒下载及升级
/usr/local/sbin/clamd         # clamd 守护进程
/usr/local/sbin/clamonacc     # 按需扫描程序(实时监控)

# sigtool 命令行测试工具,用于帮助用户`创建和使用病毒签名`
# 虽然 sigtool 有许多用途(包括制作签名),但值得注意的是 sigtool 能够帮助用户和分析人员确定 libclamav 病毒签名检测到的文件是否为误报
/usr/local/bin/sigtool
# 默认配置模板
/usr/local/etc/clamd.conf.sample
/usr/local/etc/freshclam.conf.sample

3、使用 clamconf 可生成如下三个配置文件模板

clamconf -g clamd.conf  # clamd.conf freshclam.conf clamav-milter.conf

更新病毒库

使用 freshclam 命令来更新 ClamAV 的病毒数据库,该命令默认使用的配置文件路径 /usr/local/etc/freshclam.conf

freshclam
#> ClamAV update process started at Thu Jul 11 09:13:49 2024
#> daily database available for download (remote version: 27333)
#> Time:   14.7s, ETA:    0.0s [========================>]   60.91MiB/60.91MiB
#> Testing database: '/var/lib/clamav/tmp.323dec9a1f/clamav-05a1dfc8f555474816a4959ac069095f.tmp-daily.cvd' ...
#> Database test passed.
#> daily.cvd updated (version: 27333, sigs: 2064131, f-level: 90, builder: raynman)
#> main database available for download (remote version: 62)
#> Time:   21.8s, ETA:    0.0s [========================>]  162.58MiB/162.58MiB
#> Testing database: '/var/lib/clamav/tmp.323dec9a1f/clamav-5fb574897c99d106694ccdebf3874608.tmp-main.cvd' ...
#> Database test passed.
#> main.cvd updated (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
#> bytecode database available for download (remote version: 335)
#> Time:    0.5s, ETA:    0.0s [========================>]  282.94KiB/282.94KiB
#> Testing database: '/var/lib/clamav/tmp.323dec9a1f/clamav-2ab9699585fd9e9aaac156850c202456.tmp-bytecode.cvd' ...
#> Database test passed.
#> bytecode.cvd updated (version: 335, sigs: 86, f-level: 90, builder: raynman)

命令行扫描 clamscan

clamscan 是一个命令行工具,它使用 libclamav 扫描文件或目录中的病毒,创建扫描报告,然后退出。与 clamdscan 不同,clamscan 不需要运行的 clamd 实例即可运行

执行病毒扫描 clamscan -r -i /etc/

# 选项 -r 递归扫描子目录,-i 仅打印已感染病毒的文件
----------- SCAN SUMMARY -----------
Known viruses: 8695952
Engine version: 1.3.1
Scanned directories: 228
Scanned files: 708
Infected files: 0       # 已感染文件数
Data scanned: 3.20 MB
Data read: 1.38 MB (ratio 2.32:1)
Time: 25.450 sec (0 m 25 s)
Start Date: 2024:07:11 09:18:04
End Date:   2024:07:11 09:18:29

配置 ClamAV Daemon(clamd)

1、基于配置示例创建 clamd.conf

cd /usr/local/etc && cp clamd.conf.sample clamd.conf

2、编辑 clamd.conf 注释包含字符串 Example 的行(大概在第 8 行), 并去掉如下配置项的注释

LogFile /tmp/clamd.log
LogFileMaxSize 2M
LogTime yes
LogVerbose yes

DatabaseDirectory /var/lib/clamav
LocalSocket /tmp/clamd.sock
TCPSocket 3310
# clamdscan 扫描时不扫描如下目录
ExcludePath ^/proc/
ExcludePath ^/sys/

cat /etc/systemd/system/clamd.service

[Unit]
Description = clamd scanner daemon
After = syslog.target nss-lookup.target network.target

[Service]
Type = forking
ExecStart = /usr/local/sbin/clamd -c /usr/local/etc/clamd.conf
Restart = on-failure
TimeoutStartSec = 420

[Install]
WantedBy = multi-user.target

守护程序 clamd 大约占用内存 1.2 G,可通过命令systemctl status clamd.service查看

Daemon 扫描 clamdscan

使用 clamdscan 来调用守护进程 /usr/local/sbin/clamd 对文件或目录进行安全扫描

1、创建 EICAR 测试病毒文件

# cat /usr/local/test.txt 病毒测试文件
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

EICAR 测试文件是一个标准的测试文件,用于验证杀毒软件的工作状态。该文件是无害的,并且被所有的杀毒软件识别为测试病毒

2、使用 clamdscan 执行扫描

clamdscan -m --fdpass /usr/
# 扫描结果
#> /usr/local/test.txt: Eicar-Signature FOUND
#> ----------- SCAN SUMMARY -----------
#> Infected files: 1               # 发现 1 个被感染的文件
#> Time: 17.216 sec (0 m 17 s)     # 扫描用时 17s
#> Start Date: 2024:07:11 23:02:39
#> End Date:   2024:07:11 23:02:56

clamdscan 选项说明

选项 --multiscan 或 -m 告诉 clamd 守护进程同时使用多个线程来扫描文件。

选项 --fdpass 允许 clamd 守护进程在扫描文件时传递文件描述符(file descriptor),这样可以避免在扫描大量文件时频繁地打开和关闭文件,从而提高性能

码字不易,若觉得本文对你有用,欢迎点赞

标签:扫描,服务器端,clamav,ClamAV,查杀,clamd,usr,conf,local
From: https://blog.csdn.net/gumc123/article/details/140367755

相关文章

  • 不定时修改Linux服务器端口和密码
    最近总是不想动,服务器的安全又不得不考虑,有时候还会忘记修改服务器的端口和密码,就诞生了下面的Shell脚本。脚本包含了日志记录,备份SSH文件,修改SSH端口,修改SSH密码,更新防火墙、发送加密邮件,设置定时任务。脚本目前只在Ubuntu系统测试,其它系统未测试,以下标红的信息一定要看。注意......
  • Blazor SPA 的本质是什么以及服务器端渲染如何与 Blazor 的新 Web 应用程序配合使用
    Blazor通常被称为单页应用程序(SPA)框架。当我第一次开始使用Blazor时,我对SPA的含义、组件如何为SPA架构做出贡献以及所有这些如何与交互性联系在一起感到困惑。今天,我将解答大家可能关心的三个问题:什么是SPA?了解所有新的“BlazorWebApp”模板。是什么使Blaz......
  • 玄机-第一章 应急响应-webshell查杀
    玄机-第一章应急响应-webshell查杀靶机账号密码rootxjwebshell1.黑客webshell里面的flagflag{xxxxx-xxxx-xxxx-xxxx-xxxx}2.黑客使用的什么工具的shellgithub地址的md5flag{md5}3.黑客隐藏shell的完整路径的md5flag{md5}注:/xxx/xxx/xxx/xxx/xxx.xxx4.黑客免杀马完......
  • React的服务器端渲染(SSR)和客户端渲染(CSR)有什么区别?
    React的服务器端渲染(SSR)和客户端渲染(CSR)是两种不同的页面渲染方式,它们各自有不同的特点和适用场景:服务器端渲染(SSR)页面渲染:页面在服务器上生成,然后将完整的HTML发送给客户端。SEO:由于搜索引擎爬虫可以直接访问到完整的页面内容,因此对搜索引擎优化(SEO)更为友好。首......
  • NetMvc通过亚马逊方式服务器端和客户端上传MinIO顺利解决
    前言:1、由于项目是.NETFramework4.7MVCLayUI,所以需要找一个资源站点存放项目中静态资源文件;2、需要支持服务端和客户端都支持上传文件方式;3、调用简单,涉及库越少越好。结果:调用AWSSDK.S3和AWSSDK.Core实现文件上传到MinIO;调用MimeMapping获取文件ContentType......
  • 超好用mqtt服务器端server和客户端client协议通信学习测试工具
    超好用mqtt服务器端server和客户端client协议通信学习测试工具 作为物联网数据采集解决方案专业提供商,数采物联网小编daq-iot在这里做以下内容介绍,并诚挚的欢迎大家讨论和交流   软件使用注意事项:本软使用需要用户了解mqtt通信参数设置好后,要先启动软件左下角的服......
  • 接上篇,客户端实现,图形界面编程,利用socket和UCP/TCP编写,客户端和服务器端程序可以进行
     1.项目结构 1.1基本架构本项目采用基于Java的`Swing`库进行图形界面开发,并使用`Socket`进行网络通信。项目包名为`org.example.tcp`。 1.2模块划分项目主要分为以下几个模块:图形用户界面(GUI)模块网络通信模块线程处理模块 2.GUI设计 2.1主窗口设计 2.1.1......
  • 内网部署api接口文档服务器端口如何让外网访问?
    计算机业内人士对于swagger并不陌生,不少人选择用swagger做为API接口文档管理。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧密集成到服务器端的代......
  • sybase服务器端安装与配置
    sybase服务器端安装与配置安装:1.安装SYBASE服务器端,开始时不用配置,等完全装完后再配置。2.装好后进入serverconfig,3. 选择createadaptiveserver,输入一个Adaptiveservername,如:lottery_data,点击continue4.默认如下,点击continue5.默认如下,点击continue6.默认......
  • sybase12.5服务器端的安装
    sybase12.5客户端安装sybase安装教程转载https://blog.51cto.com/u_16213592/7296293sybase数据库的安装分为服务器端和客户端,本文先介绍一下服务器端的安装。1、和其他程序一样,双击setup.exe.2、出现欢迎界面,直接点击next即可。3、下面选择相应国家的协议,咱是中国人,当......