当前位置: 首页 > ops >正文

本地部署开源防病毒引擎 ClamAV 并实现外部访问(Windows 版本)

ClamAV 是一款开源的防病毒引擎,专为检测恶意软件、病毒、木马、蠕虫等威胁而设计,广泛应用于邮件网关、文件扫描和端点安全等领域。

本文将详细介绍如何在 Windows 系统本地部署可视化 ClamAV 并结合路由侠实现外网访问本地部署的 ClamAV 。

第一步,本地部署安装 ClamAV

1,本教程操作环境为 Windows11 系统,访问 ClamAV 官网下载页: https://www.clamav.net/downloads ,选择最新版本的“ Windows ”,本教程选择“ clamav-1.4.2.win.x64.zip ”为例。

2,将压缩包解压到无空格路径,进入解压目录,复制 conf_examples 下的 clamd.conf.sample 和 freshclam.conf.sample 到主目录,分别重命名为 clamd.conf 和 freshclam.conf 。

3,首次运行前打开 freshclam.conf ,取消注释并修改以下行。

DatabaseMirror database.clamav.net
UpdateLogFile C:\ClamAV\logs\freshclam.log
LogFileMaxSize 2M
LogRotate yes
LogTime yes
DatabaseDirectory C:\ClamAV\db
Foreground yes
Debug yes

打开 clamd.conf ,取消注释并修改以下行。

LogFile C:\ClamAV\logs\clamd.log
LogFileMaxSize 2M
LogTime yes
LogRotate yes
Debug yes
LocalSocket C:\ClamAV\clamd.socket
TCPSocket 3310
TCPAddr 0.0.0.0
StreamMaxLength 50M

4,以管理员身份打开命令提示符,输入以下命令创建必要目录:

mkdir C:\ClamAV\logs
mkdir C:\ClamAV\db

输入以下命令导航到 ClamAV 目录:

cd C:\ClamAV

运行更新病毒数据库:

freshclam.exe

运行守护进程启动 ClamAV 服务:

clamd.exe

5,下载 Python 3.6 + ,点此下载,安装时勾选" Add Python to PATH "。

6,编辑 C:\ClamAV\clamav-rest\requirements.txt 文件,将内容改为:

flask>=3.1.0
pyclamd>=0.4.0

在 cmd 输入以下命令使用清华源安装。

pip install -r C:\ClamAV\clamav-rest\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

7,在 C:\ClamAV\clamav-rest 创建 templates\index.html ,在 script 中输入以下内容。

 async function scan() {const file = document.getElementById('fileInput').files[0];const formData = new FormData();formData.append('file', file);const response = await fetch('/scan', {method: 'POST',body: formData});document.getElementById('result').textContent = await response.text();}

同目录下创建 app.py 文件,输入以下内容。

from flask import Flask, request, jsonify,render_template, send_from_directory
import pyclamd
import socket
import osapp = Flask(__name__)
cd = pyclamd.ClamdNetworkSocket('localhost', 3310)UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)@app.route('/')
def index():return render_template('index.html')def check_clamd():try:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(2)result = sock.connect_ex(('localhost', 3310))return result == 0except:return False@app.route('/health')
def health():return jsonify({"flask_status": "running","clamd_connected": check_clamd()})@app.route('/scan',methods=['GET', 'POST'])
def scan():if request.method == 'POST':if 'file' not in request.files:return jsonify({"error": "No file uploaded"}), 400file = request.files['file']if file.filename == '':return jsonify({"error": "Empty filename"}), 400filepath = os.path.join(UPLOAD_FOLDER, file.filename)file.save(filepath)return _perform_scan(filepath)else:filepath = request.args.get('filepath')if not filepath:return jsonify({"error": "Missing filepath parameter"}), 400return _perform_scan(filepath)def _perform_scan(filepath):try:result = cd.scan_file(filepath)return jsonify({"status": "infected" if result else "clean","path": filepath,"result": result})except Exception as e:return jsonify({"error": str(e)}), 500import atexit
import shutildef cleanup():if os.path.exists(UPLOAD_FOLDER):shutil.rmtree(UPLOAD_FOLDER)atexit.register(cleanup)if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)

输入以下命令运行 ClamAV REST API 服务:

python app.py

8,打开浏览器输入地址 http://localhost:5000 即可访问 ClamAV 进行扫描。

第二步,外网访问本地 ClamAV

在内网的电脑上安装路由侠,点此下载

1,下载安装完成后,打开路由侠界面,点击【内网映射】。

2,点击【添加映射】。

3,选择【原生端口】。

4,在内网端口填写 ClamAV 端口 5000 后点击【创建】按钮,如下图。

5,创建好后,就可以看到一条映射的公网地址,鼠标右键点击【复制地址】。

6,在外网电脑上,打开浏览器,在地址栏输入从路由侠生成的外网地址,就可以看到内网部署的 ClamAV 扫描界面了。

http://www.xdnf.cn/news/10731.html

相关文章:

  • 研发型企业如何面对源代码保密问题
  • 不动产登记区块链系统(Vue3 + Go + Gin + Hyperledger Fabric)
  • 焊缝缺陷焊接缺陷识别分割数据集labelme格式5543张4类别
  • Neo4j 数据可视化与洞察获取:原理、技术与实践指南
  • 便捷高效能源服务触手可及,能耗监测系统赋能智能建筑与智慧城市
  • 12、企业应收账款(AR)全流程解析:从发票开具到回款完成
  • 【Web应用】若依框架:基础篇13 源码阅读-前端代码分析
  • MySQL 8 完整安装指南(Ubuntu 22.04)
  • 【论文解读】ReAct:从思考脱离行动, 到行动反馈思考
  • winrm登录失败,指定的凭据被服务器拒绝
  • Bash shell四则运算
  • 【Elasticsearch】search_after不支持随机到哪一页,只能用于上一页或下一页的场景
  • 涨薪技术|0到1学会性能测试第95课-全链路脚本开发实例
  • https(SSL)证书危机和可行的解决方案
  • 香橙派3B学习笔记6:基本的Bash脚本学习_UTF-8格式问题
  • QT常用控件(1)
  • SpringBoot接入Kimi实践记录轻松上手
  • 鸿蒙简易版影视APP案例实战
  • Attention Is All You Need (Transformer) 以及Transformer pytorch实现
  • 软件评测师 综合测试 真题笔记
  • 基于Python学习《Head First设计模式》第五章 单件模式
  • MySQL 灾备方案介绍
  • 模拟电子技术 第一章<半导体基础>
  • OpenCV 滑动条调整图像对比度和亮度
  • 嵌入式SDK技术EasyRTC音视频实时通话助力即时通信社交/教育等多场景创新应用
  • 攻防世界-unseping
  • GPR全波形反演中三种初始模型建立方法详解
  • 【嵌入式(2)深入剖析嵌入式开发:从基础到实战】
  • vue3学习
  • 大数据-277 Spark MLib - 基础介绍 机器学习算法 Gradient Boosting GBDT算法原理 高效实现