linux安装clamav病毒扫描与删除

您所在的位置:网站首页 发现病毒怎么继续安装系统呢 linux安装clamav病毒扫描与删除

linux安装clamav病毒扫描与删除

2024-07-09 19:16| 来源: 网络整理| 查看: 265

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.pngimage.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.pngok了

扫描

扫描1 clamscan -r -i /home

image.pngimage.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.pngfreshdam.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.pngimage.png开启成功了扫描一下试试image.pngok了,可以明显感觉到快了很多

守护进程 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.target 和 After=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.pngimage.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 ];then echo "有这个目录" > /dev/null else echo "没有这个目录" > /dev/null mkdir -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 $IP data_log="" data_log="扫描目录:" data_log+=$clpath"\n" while read line do # data_log+=$line"" data_log+=$line"\n" done /dev/null else echo "没有这个目录" > /dev/null mkdir -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 $IP data_log="" data_log="扫描目录:" data_log+=$clpath"\n" while read line do # data_log+=$line"" data_log+=$line"\n" done


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3