翼度科技»论坛 云主机 LINUX 查看内容

离线部署clamAV

9

主题

9

帖子

27

积分

新手上路

Rank: 1

积分
27
背景:
项目现场有一个服务器需要作国家二级等保整改,有一个高风险选项是需要安装防恶意代码软件,所以就考虑安装clamAV来实现。现场使用cnetos7服务器,且无外网,只能离线安装。
如果有外网直接执行以下命令就行了。
  1. # ubuntu
  2. sudo apt install clamav clamav-daemon -y
  3. # centos
  4. sudo yum install clamav clamav-update -y
复制代码
离线部署实现:
1、去官网下载对应的软件包,centos就下载 .rpm软件包。
https://www.clamav.net/downloads

2、将下载的软件包上传到服务器后使用rpm命令进行安装,软件包里面已经将相关依赖这些打包好了,直接安装就行。
  1. rpm -ivh --prefix=/usr/local/clamav clamav-1.0.3.linux.x86_64.rpm
复制代码

安装成功后clamav的相关文件就被放到了/usr/local/clamav下

3、设置PATH变量
  1. echo PATH=/usr/local/clamav/bin:/usr/local/clamav/sbin:$PATH > /etc/profile.d/path.sh
复制代码

4、使用
clamav常用的命令有以下:
clamscan 命令:通用,不依赖服务,命令参数较多,执行速度稍慢,安装好clamav服务后就可以直接用。
clamdscan 命令:是一个搭配clamd常驻服务的扫毒工具,功能非常类似clamscan,执行效率较高,可用的参数较少(因为部分功能是由 clamd 控制的)。例如递归扫描不用带 -r ,默认会递归扫描子目录
freshclam:执行这个命令就会根据配置文件将病毒库下载到指定的位置,默认应该是/usr/local/share/clamav。
直接使用clamscan命令进行测试时,提示缺少相关库文件,但是clamav的安装目录里面又是存在对应文件的,所以要更新ldconfig

5、更新ldconfig
  1. echo "/usr/local/clamav/lib64/" | sudo tee -a /etc/ld.so.conf.d/clamav.conf
  2. ldconfig
复制代码

再次测试,提示缺少病毒库。因为是离线环境。所以就搭建一个有外网的机器,使用freshclam下载病毒库后拷贝过来。

将病毒库解压到指定目录下,默认是放在/usr/local/share/clamav下的。

再次测试就正常了

因为不需要进行频繁的扫描或扫描大量文件,只是偶尔执行扫描,那么 clamscan 可能已经足够了。
如果是希望进行频繁的扫描或扫描大量文件,那么使用 clamdscan 和 clamd 守护进程可能是一个更有效的选择。
配置clamd守护进程就需要修改clamd的配置文件。
两个配置文件:
clamd.conf:clamd 守护进程的配置文件。当你使用 clamdscan(而不是 clamscan)命令时,该命令实际上会与后台运行的 clamd 守护进程进行交互来执行扫描。因此,clamdscan 的行为会受到 clamd.conf 文件中的配置的影响。这个文件包含了与守护进程行为、日志记录、扫描选项等相关的设置。
freshclam.conf:ClamAV 病毒数据库更新工具 freshclam 的配置文件。当你使用 freshclam 命令来更新你的病毒数据库时,该命令会根据这个配置文件来运行。这个文件包含了与更新源、更新频率、代理设置、日志记录等相关的设置。
clamd配置:
1、先创建存放日志、socket和pid的文件目录,并创建对应的日志文件。

2、/usr/local/clamav/etc这个目录下有两个配置文件模板,可以根据这两个模板创建配置文件。
  1. # 进入/usr/local/clamav/etc目录
  2. cp -a clamd.conf.sample clamd.conf
  3. cp -a freshclam.conf.sample freshclam.conf
复制代码

3、修改配置文件
  1. # 注释掉Example这一行
  2. LogFile /usr/local/clamav/logs/clamd.log
  3. LogFileMaxSize 20M
  4. PidFile /usr/local/clamav/clamd.pid
  5. DatabaseDirectory /var/lib/clamav
  6. LocalSocket /usr/local/clamav/socket/clamd.socket
复制代码

DatabaseDirectory就是指定病毒库的存放位置

如果需要实时更新病毒库,freshclam.conf也需要进行配置
  1. [root@CentOS7 etc]# cat freshclam.conf | grep -Ev '^#|^$'
  2. DatabaseDirectory /var/lib/clamav
  3. UpdateLogFile  /usr/local/clamav/logs/freshclam.log
  4. PidFile  /usr/local/clamav/pid/freshclam.pid
  5. DatabaseMirror database.clamav.net
  6. Checks 24
复制代码
Checks 24表示1h检查一次,一天24h,默认是2h检查一次病毒库更新没,更新了就直接拉取到本地。
DatabaseDirectory指定使用freshman命令下载的病毒库存放位置。


创建clamav用户
  1. groupadd clamav
  2. useradd -g clamav -s /bin/false -c "Clam Antivirus" clamav
复制代码

更改目录权限:
  1. chown -R clamav:clamav /usr/local/clamav
复制代码

全部配置好后进行测试:
提示配置文件是在/usr/local/etc下面找的,所以需要将配置文件软链接到这个下面。

软连接:
  1. [root@CentOS7 ~]# # 软链接源文件要使用绝对路径
  2. [root@CentOS7 ~]# ln -s /usr/local/clamav/etc/freshclam.conf  /usr/local/etc/
  3. [root@CentOS7 ~]# ln -s /usr/local/clamav/etc/clamd.conf  /usr/local/etc/
复制代码

再次进行测试:
提示没有病毒库,就需要先使用  生成病毒库或者将离线的病毒库拷贝到这个目录下

在线生成病毒库:

再次进行测试:
clamd正常运行,再打开一个窗口测试clamdscan。


最后将freshclam和clamd交给systemd进行托管,freshclam用于定时更新病毒库,当 clamd 守护进程启动并在后台运行时,它会加载病毒签名数据库到内存中。这使得病毒扫描请求(如通过 clamdscan 命令)能够迅速地与这些内存中的签名进行比较,大大提高了扫描效率。
clamd的systemd文件:
  1. # centos7的systemd文件是放在/usr/lib/systemd/system/
  2. # ubuntu的systemd文件时放在/lib/systemd/system/
复制代码
  1. vim /usr/lib/systemd/system/clamd.service
  2. [Unit]
  3. Description=Clam AntiVirus userspace daemon
  4. Documentation=man:clamd(8) man:clamd.conf(5) https://docs.clamav.net/
  5. # Check for database existence
  6. ConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc}
  7. ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc}
  8. [Service]
  9. type=simple
  10. ExecStart=/usr/local/clamav/sbin/clamd --foreground=true
  11. # Reload the database
  12. ExecReload=/bin/kill -USR2 $MAINPID
  13. StandardOutput=syslog
  14. TimeoutStartSec=420
  15. [Install]
  16. WantedBy=multi-user.target
复制代码

测试是否能正常启动,启动成功

freshclam的systemd文件
  1. vim  /usr/lib/systemd/system/freshclam.service
  2. [Unit]
  3. Description=ClamAV virus database updater
  4. Documentation=man:freshclam(1) man:freshclam.conf(5) https://docs.clamav.net/
  5. # If user wants it run from cron, don't start the daemon.
  6. # ConditionPathExists=!/etc/cron.d/clamav-update
  7. Wants=network-online.target
  8. After=network-online.target
  9. [Service]
  10. ExecStart=/usr/local/clamav/bin/freshclam -d --foreground=true
  11. [Install]
  12. WantedBy=multi-user.target
复制代码
启动检查:

clamscan和clamdscan区别说明:
clamscan 和 clamdscan 都是 ClamAV 的扫描工具,但它们的工作方式略有不同:
clamscan:
独立运行: clamscan 是一个独立的命令行扫描工具,每次执行都会启动一个新的进程。
效率: 由于它每次运行时都需要加载病毒数据库,所以相对较慢,特别是在扫描大量文件或多次扫描时。
配置: clamscan 不依赖 clamd.conf,所有的配置都是基于命令行参数。
clamdscan:
依赖守护进程: clamdscan 与后台运行的 clamd 守护进程进行交互来执行扫描。这意味着病毒数据库已经被 clamd 加载并保持在内存中。
效率: 由于不需要每次都重新加载病毒数据库,clamdscan 的扫描速度通常更快。
配置: clamdscan 的行为会受到 clamd.conf 文件中的配置的影响。
总的来说,如果你需要进行频繁的扫描或扫描大量文件,那么使用 clamdscan 和 clamd 守护进程可能是一个更有效的选择。但如果你只是偶尔执行扫描,那么 clamscan 可能已经足够了。
https://blog.csdn.net/leiwuhen92/article/details/125934412
https://blog.ncyupu.com/os/centos/2023/06/06/213.html

来源:https://www.cnblogs.com/heyongshen/p/17671484.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具