linux安装clamav病毒扫描与删除

ClamAV介绍

ClamAV是Linux操作系统一款免费的杀毒工具,通过命令执行病毒库升级、查找病毒和删除病毒。

安装ClamAV

方法一💡 Tips:在CentOS操作系统上安装ClamAV,请分别执行以下命令

yum install epel-release -y
yum install clamav clamavd clamav-update -y

方法二 💡 Tips:在Ubuntu操作系统上安装ClamAV,请分别执行以下命令

apt update
apt install clamav clamavd clamav-update -y

方法三 💡 Tips: 手动下载 地址clamav下载
image.png
image.png
根据自己的服务器环境下载,然后上传到自己的服务器
然后进入上传位置执行该安装包

yum install clamav-1.3.0.linux.x86_64.rpm

-------------------------------------------------------------------------------------------------------------------
安装完成之后

freshclam

更新病毒库,基本上第一次执行都会出现问题,自己的虚拟机还好,可能直接就行了,但是云服务器的肯定是会出现问题的
但是不要慌,这是正常现象
image.png
好,我们找到/usr/local/etc/这个路径
image.png
把.sample后缀全部去掉
image.png
然后把两个配置文件中的Example都注释掉
image.png
可以看到又出现了新的问题,这个也是正常现象,需要我们手动给给他创建一个用户
image.png
发现我们无法创建,这也是正常现象,我们的/etc/passwd是锁定的状态,我们需要临时解一下锁

chattr -i /etc/shadow
chattr -i /etc/passwd

然后我们看看在passwd文件里面存不存在clamav用户,存在就保存退出,不存在就创建用这个用户,命令添加或者直接在文件里面添加

clamav:x:1001:1002::/home/clamav:/bin/bash

然后再来一次
image.png
这里是无法创建病毒库,说明我们没有授权给对应的文件夹 我们只有root对这个文件夹有写入权限
image.png
省的麻烦干脆全放开了
image.png
ok了

扫描

扫描1

clamscan -r -i /home

image.png
image.png自己对照翻译吧,我就放个图方便看懂
这里扫描起来还好,但是多扫描几个文件太慢了

扫描2

它还有一个快很多的命令

clamdscan

尝试一下
image.png
可以发现我们现在是扫描不了的,其实这是正常现象,我们得开启它,它默认是不开启的
image.png
它依赖一个clamd的进程service,这个服务是加载病毒签名数据库到内存中。这使得病毒扫描请求(如通过 clamdscan 命令)能够迅速地与这些内存中的签名进行比较,大大提高了扫描效率。
那怎么开启呢

clamd

image.png
可以看到它需要定义服务器类型(本地和/或TCP)。
那么重新回到它的配置文件
clamd.conf

# 注释掉Example这一行
LogFile /usr/local/clamav/logs/clamd.log
LogFileMaxSize 20M
PidFile /usr/local/clamav/clamd.pid
DatabaseDirectory /usr/local/share/clamav
LocalSocket /usr/local/clamav/socket/clamd.socket

它要求你开启一个socket,你可以参照我这个修改
我这里就不找了,直接放一起了哈
image.png
然后在
image.png
freshdam.conf

DatabaseDirectory /usr/local/share/clamav
UpdateLogFile  /usr/local/clamav/logs/freshclam.log
PidFile  /usr/local/clamav/pid/freshclam.pid
DatabaseMirror database.clamav.net
Checks 24

image.png
image.png
开启成功了
扫描一下试试
image.png
ok了,可以明显感觉到快了很多

守护进程

vim /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=/usr/local/share/clamav/main.{c[vl]d,inc}
ConditionPathExistsGlob=/usr/local/share/clamav/daily.{c[vl]d,inc}[Service]
type=simple
ExecStart=/usr/local/sbin/clamd --foreground=true
# Reload the database
ExecReload=/bin/kill -USR2 $MAINPID
StandardOutput=syslog
TimeoutStartSec=420[Install]
WantedBy=multi-user.target

这是一个 systemd 服务单元文件,用于定义 Clam AntiVirus 的 clamd 守护进程如何作为一个服务运行。下面是对这个文件的详细解释:
[Unit]

  • Description: 服务的简短描述,这里表示这是一个 Clam AntiVirus 的用户空间守护进程。
  • Documentation: 指向相关文档资源的链接,这里提供了手册页和官方文档的链接。

ConditionPathExistsGlob

  • 这些条件检查特定的文件或路径是否存在。在这里,它检查 /var/lib/clamav/ 目录下是否存在以 main.{c[vl]d,inc} 和 daily.{c[vl]d,inc} 结尾的文件。这通常是为了确保 ClamAV 的病毒数据库文件存在,因为 clamd 需要这些文件来检测病毒。

[Service]

  • Type=simple:表示这个服务将立即启动。systemd 不会等待额外的命令或进程。
  • ExecStart:指定服务启动时运行的命令。这里,它运行 clamd 并以前台模式 (–foreground=true) 启动。这意味着 clamd 将作为 systemd 的一个直接子进程运行,而不是作为一个独立的后台进程。
  • ExecReload:当服务需要重载配置时运行的命令。这里,它发送一个 USR2 信号给 clamd 的主进程(由 $MAINPID 变量表示),这通常用于请求 clamd 重新加载其配置。
  • StandardOutput=syslog:将服务的标准输出重定向到 syslog,这样你可以在系统日志中查看 clamd 的输出。
  • TimeoutStartSec=420:设置服务启动的超时时间,这里是 420 秒(7 分钟)。

[Install]

  • WantedBy=multi-user.target:表示当 multi-user.target 被激活时,这个服务应该被启动。在大多数系统上,这相当于传统的多用户运行级别(如运行级别 3)。

为了使用这个服务单元文件,你需要将它保存到一个 systemd 可以识别的位置(通常是 /etc/systemd/system/ 或 /lib/systemd/system/),然后使用 systemctl 命令来管理这个服务。
例如,要启用并启动这个服务,你可以执行:

bash复制代码sudo systemctl enable clamd.service  
sudo systemctl start clamd.service

然后,你可以使用 systemctl status clamd.service 来检查服务的状态。
image.png

vim  /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/bin/freshclam -d --foreground=true[Install]
WantedBy=multi-user.target

这是一个 systemd 服务单元文件,用于定义 ClamAV 的 freshclam 守护进程,该进程用于更新 ClamAV 的病毒数据库。下面是对这个文件的详细解释:
[Unit]

  • Description: 服务的简短描述,表明这是 ClamAV 的病毒数据库更新器。
  • Documentation: 指向与 freshclam 相关的文档资源,包括手册页和官方文档链接。

# ConditionPathExists=!/etc/cron.d/clamav-update

  • 这是一个被注释掉的条件,如果取消注释,它将检查 /etc/cron.d/ 目录下是否存在 clamav-update 文件。如果存在,则不会启动这个 systemd 服务,因为用户可能希望从 cron 来运行 freshclam。

Wants=network-online.targetAfter=network-online.target

  • Wants 表示这个服务想要 network-online.target 被激活,但即使 network-online.target 失败,freshclam 服务仍然会尝试启动。
  • After 指定 freshclam 服务应在 network-online.target 之后启动,以确保在网络连接建立之后再运行病毒数据库更新。

[Service]

  • ExecStart: 指定服务启动时运行的命令。这里,它运行 freshclam 并以前台模式 (–foreground=true) 启动,同时 -d 参数可能表示在更新时显示详细的输出。

[Install]

  • WantedBy=multi-user.target: 表示当 multi-user.target 被激活时,这个服务应该被启动。在多用户运行级别(如运行级别 3)中,这是典型的操作状态。

要使用这个服务单元文件,你需要将它保存到一个 systemd 可以识别的位置(通常是 /etc/systemd/system/ 或 /lib/systemd/system/),然后使用 systemctl 命令来管理这个服务。
例如,要启用并立即启动这个服务,你可以执行:

bash复制代码sudo systemctl enable freshclam.service  
sudo systemctl start freshclam.service

然后,你可以使用 systemctl status freshclam.service 来检查服务的状态。
请注意,如果你打算使用 cron 来定期运行 freshclam,你可能需要注释掉或删除服务单元文件中关于启动守护进程的部分,以避免服务冲突或重复运行更新器。同时,你需要确保相应的 cron 作业被正确配置和启用。
image.png

systemctl list-unit-files

image.png
image.png
查看到这两个的守护进程都执行成功了哈

代码块

💡 Tips:钉钉告警通知

扫描到病毒我让它给我发钉钉消息怎么搞
clamscan脚本,慢扫脚本

#!/bin/bash
export LANG=en_US.UTF-8  
export LC_ALL=en_US.UTF-8
# 获取当前时间(用于创建、读取日志文件)
date=`date +%Y%m%d-%H:%M:%S`# *填写扫描路径(可根据自己的情况来自定义,默认为/根目录)
read -p "请输入你要扫描的目录:" clpath
# *填写要存储日志的路径(可根据自己的情况来自定义,默认为/var/log/clamav/)
clamav_log="/var/log/clamav"# 判断是否有存储日志的目录,如果没有则先创建,为了下面的存放日志而创建
if [ -e $clamav_log ];thenecho "有这个目录" > /dev/null
elseecho "没有这个目录" > /dev/nullmkdir -p $clamav_log
fi#扫描/目录 结果打印到$clamav_log/clamav$date.log
clamscan -r -i $clpath -l $clamav_log/clamav$date.log
#删除WARING开头的内容
sed -i  '/^WARNING/d' $clamav_log/clamav$date.log
#删除第一行到第三行的内容
sed -i '1,3d' $clamav_log/clamav$date.log##获取当前服务器ip ,可以先执行这条命令看看自己的ip对不对。
ip=`hostname -I | awk -F " " '{print $1}'`
#echo $IPdata_log=""
data_log="扫描目录:"
data_log+=$clpath"\n"
while read line
do
#  data_log+=$line"<br>"data_log+=$line"\n"
done < $clamav_log/clamav$date.log##获取执行时的时间
scan_time=$(cat $clamav_log/clamav$date.log | grep "Start Date" | awk -F ": " '{print $2}')data_log=${data_log/SCAN SUMMARY/Zxs盾扫描结果}
data_log=${data_log/Known viruses/病毒库数量}
data_log=${data_log/Engine version/引擎版本} 
data_log=${data_log/Scanned directories/已扫描目录} 
data_log=${data_log/Scanned files/已扫描文件} 
data_log=${data_log/Infected files/已发现病毒文件} 
data_log=${data_log/Total errors/错误总数}
data_log=${data_log/Data scanned/已扫描数据} 
data_log=${data_log/Data read/读取数据} 
data_log=${data_log/Time/扫描时长} 
data_log=${data_log/Start Date/开始时间} 
data_log=${data_log/End Date/结束时间} curl 'https://oapi.dingtalk.com/robot/send?access_token=你的机器人的token' -H 'Content-Type: application/json' -X POST -d "$(  
printf '{"msgtype": "text","text": {"content": "%s"}}' "$data_log"  
)"

我这里主动输入路径让它去进行扫描哈,自动,你可以写好要扫描的位置然后执行
image.png
clamdscan脚本,快扫脚本

#!/bin/bash
export LANG=en_US.UTF-8  
export LC_ALL=en_US.UTF-8
# 获取当前时间(用于创建、读取日志文件)
date=`date +%Y%m%d-%H:%M:%S`# *填写扫描路径(可根据自己的情况来自定义,默认为/根目录)
read -p "请输入你要扫描的目录:" clpath
# *填写要存储日志的路径(可根据自己的情况来自定义,默认为/var/log/clamav/)
clamav_log="/var/log/clamav"# 判断是否有存储日志的目录,如果没有则先创建,为了下面的存放日志而创建
if [ -e $clamav_log ];thenecho "有这个目录" > /dev/null
elseecho "没有这个目录" > /dev/nullmkdir -p $clamav_log
fi#扫描/目录 结果打印到$clamav_log/clamav$date.log
clamdscan -i $clpath -l $clamav_log/clamav$date.log
#删除WARING开头的内容
sed -i  '/^WARNING/d' $clamav_log/clamav$date.log
#删除第一行到第三行的内容
sed -i '1,2d' $clamav_log/clamav$date.log##获取当前服务器ip ,可以先执行这条命令看看自己的ip对不对。
ip=`hostname -I | awk -F " " '{print $1}'`
#echo $IPdata_log=""
data_log="扫描目录:"
data_log+=$clpath"\n"
while read line
do
#  data_log+=$line"<br>"data_log+=$line"\n"
done < $clamav_log/clamav$date.log##获取执行时的时间
scan_time=$(cat $clamav_log/clamav$date.log | grep "Start Date" | awk -F ": " '{print $2}')data_log=${data_log/SCAN SUMMARY/Zxs盾扫描结果}
data_log=${data_log/Infected files/已发现病毒文件} 
data_log=${data_log/Time/扫描时长} 
data_log=${data_log/Start Date/开始时间} 
data_log=${data_log/End Date/结束时间} curl 'https://oapi.dingtalk.com/robot/send?access_token=你的钉钉token' -H 'Content-Type: application/json' -X POST -d "$(  
printf '{"msgtype": "text","text": {"content": "%s"}}' "$data_log"  
)"

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/836239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

过拟合和欠拟合的学习

1.什么拟合 就是说这个曲线能不能很好地描述某些样本数据&#xff0c;并且拥有较好的泛化能力。 2.什么是过拟合 过拟合就是曲线太过于贴切训练数据的特征了&#xff0c;在训练集上表现得非常优秀&#xff0c;近乎完美的预测/区分了所有得数据&#xff0c;但是在新的测试集上…

使用python撰写计算书

使用python撰写电路计算书 1、效果预览 下图是效果预览&#xff0c;可以写公式&#xff0c;画图&#xff0c;带单位计算 我们通常写计算书&#xff0c;使用mathcad或者maple等商业软件&#xff0c;但是个人使用可能还行&#xff0c;在很多公司是不允许使用破解版的。这时…

矿用光缆型号和规格

管道矿用光缆生产厂家&#xff0c;矿用光缆特点是什么&#xff0c;矿用通信光缆 矿用光缆 MGTS光缆的结构是将250 m光纤套入高模量材料制成的松套管中&#xff0c;松套管内填充防水化合物。缆芯的中心是一根金属加强芯&#xff0c;对于某些芯数的光缆来说&#xff0c;金属加强…

【HCIP学习】BGP选路、过滤及属性

一、BGP路由选路原则&#xff08;13条&#xff09; 1、首先丢弃下一跳&#xff08;NEXT_HOP&#xff09;不可达的路由&#xff1b; 2、优选Preferred-value值最大的路由&#xff1b;默认为0&#xff1b; Preferred-value&#xff1a;定义&#xff1a;首选项。 属性值&#…

如何在 Linux / Ubuntu 上下载和安装 JMeter?

Apache JMeter 是一个开源的负载测试工具&#xff0c;可以用于测试静态和动态资源&#xff0c;确定服务器的性能和稳定性。在本文中&#xff0c;我们将讨论如何下载和安装 JMeter。 安装 Java&#xff08;已安装 Java 的此步骤可跳过&#xff09; 安装 Java 要下载 Java&…

序列到序列模型在语言识别Speech Applications中的应用 Transformer应用于TTS Transformer应用于ASR 端到端RNN

序列到序列模型在语言识别Speech Applications中的应用 A Comparative Study on Transformer vs RNN in Speech Applications 序列到序列(Seq2Seq)模型在语音识别(Speech Applications)中有重要的应用。虽然Seq2Seq模型最初是为了解决自然语言处理中的序列生成问题而设计的…

APP未上架应用市场,微信商户如何轻松开通APP支付?

在移动互联网时代&#xff0c;APP作为企业与用户之间的重要桥梁&#xff0c;其支付功能的完善与否直接关系到用户体验和企业的营收。然而&#xff0c;有些企业可能面临APP尚未上架应用市场的情况&#xff0c;这时如何开通微信APP支付功能呢&#xff1f;&#xff08;需要超快捷高…

如何同时或者按顺序间隔启动多个程序

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 1、打开工具&#xff0c;切换到定时器模块&#xff0c;快捷键&#xff1a;Ctrl3 2、新建一个定时器&#xff0c;我这里演示同时打开多个程序&#xff08;比…

YOLOv9最新改进系列:融合空间信息关注机制(SimAM)于YOLOv9网络,在通道之间和空间位置之间建立更加准确的关联,助力YOLOv9有效涨点!!!

YOLOv9最新改进系列&#xff1a;融合空间信息关注机制&#xff08;SimAM&#xff09;于YOLOv9网络&#xff0c;在通道之间和空间位置之间建立更加准确的关联,助力YOLOv9有效涨点&#xff01;&#xff01;&#xff01; 在此之前&#xff01;先恭喜两位家人&#xff01;&#xf…

WEB后端复习——Servlet

Servlet是运行在Web服务器或应用服务器上的java程序&#xff0c;它是一个中间层&#xff0c;负责连接来自web浏览器或其他HTTP客户程序和[HTTP服务器]上应用程序 Servlet执行下面的任务: 1&#xff09;读取客户发送的显示数据。 2&#xff09;读取由浏览器发送的隐式请求数据。…

JavaWeb文件上传/下载(Servlet)

效果 文件下载 文件上传 项目概述 Jakarta EE9&#xff0c;Web项目 项目文件结构 0 maven依赖&#xff0c;资源文件 <!-- lombok插件--> <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId&g…

C++STL初阶(1):string的使用及初阶原理

此文作为学习stl的笔记&#xff0c;许多普及、概念性的知识点将不再罗列&#xff08;如stl的发展、背景等&#xff09; 便于读者作为复习等方法了解。 0.STL简介&#xff08;笔记向&#xff09; STL不是祖师爷本贾尼实现的&#xff0c;是在惠普实验室中实现的。其作为一个数据结…

NASA数据集——2002-2011年全球18.7 至 89.0 千兆赫的亮度温度、海冰浓度和海冰积雪深度三级网格产品(AE_SI12)数据

AMSR-E/Aqua Daily L3 12.5 km Brightness Temperature, Sea Ice Concentration, & Snow Depth Polar Grids V003 三级网格产品&#xff08;AE_SI12&#xff09;包括 18.7 至 89.0 千兆赫的亮度温度、海冰浓度和海冰积雪深度。 简介 美国国家航空航天局地球观测系统 Aqu…

数组实现循环队列

1、分析 循环队列最主要的特点为当前面的空间被pop后&#xff0c;后面的数据可以插入到前面空余的数据中去&#xff1b; 所以最难的部分为判断什么时候为空什么时候为满&#xff1a; a、空满问题 我们先来分析当数据满时&#xff0c;head和tail相等&#xff08;tail认为是指…

Android 按键消息流程源码分析

在Android系统中&#xff0c;键盘按键事件是由SystemServer服务来管理的&#xff1b;然后在以消息的形式分发给应用程序处理。产生键盘按键事件则是有Linux kernel的相关驱动来实现。键盘消息有别于其他类型的消息&#xff1b;需要从Linux kernel drivers产生由上层APP来处理。…

在做题中学习(57):寻找数组的中心下标

724. 寻找数组的中心下标 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a;前缀和后缀和 思路&#xff1a;要看一个数是不是中心下标&#xff0c;就看他前面数的和 与 后面数的和 相不相等。 1.i前面数的和&#xff0c;是[0,i-1] 的前缀和&#xff0c;i后面数的和&am…

综合性练习(验证码案例)

目录 一、需求 二、准备工作 三、约定前后端交互接口 1、需求分析 2、接口定义 四、Hutool工具介绍 1、引入依赖 2、测试使用Hutool生成验证码 五、实现服务器端代码 代码解读&#xff1a; 六、调整前端页面代码 七、运行测试 随着安全性的要求越来越高&#xff0c…

软件体系结构论述

一、软件危机 1.软件成本日益增长 2.开发进度难以控制 3.软件质量差 4.软件维护困难 软件危机的原因 1.用户需求不明确 2.缺少正确的理论 3.软件规模大 4.软件复杂度高 如何克服软件危机 用工程&#xff0c;科学&#xff0c;数学的原则和方法…

Linux 第二十八章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

欢乐钓鱼大师攻略,怎么获取道具?

在《欢乐钓鱼大师》的游戏世界中&#xff0c;道具是提升钓鱼体验、解锁新功能以及完成挑战的关键。通过多种方式获取道具&#xff0c;能够帮助玩家更好地探索游戏世界、挑战自我&#xff0c;以及与其他玩家展开竞争。以下是关于如何获取道具的详细攻略&#xff0c;让你能够在游…