Docker
1 基础知识
1.1 Clammit的介绍
- Clammit具备整合(集成)nginx与clamav的能力,使Nginx变身为具有杀毒能力的反向代理
- Clammit是一个HTTP病毒扫描检测代理(可以理解为具有病毒检测能力的反向代理)
- Clammit工作于Web客户端与Web应用服务器之间(相当于反向代理)
- Clammit本身并没有病毒扫描能力,其依靠调用ClamAV(clamd)来完成扫描并返回HTTP响应码
1.2 Clammit的工作原理
- Clammit通过代理服务端的应用向Web客户端提供HTTP页面或接口
- Clammit接收到Web客户端提交的HTTP请求(包括上传的文件)
- Clammit则调用ClamAV对上传的HTTP请求进行病毒扫描
- Clammit如果发现病毒,则会立即拒绝上传的HTTP请求并返回异常响应码(418)
- Clammit如果没发现病毒,则将HTTP请求转发给上游Web应用服务器并返回正常的响应码
1.3 Clammit程序设计架构
- 转发器(forwarder/forwarder.go)接收来自Web客户的HTTP请求
- 转发器下载请求正文(至少使用两次)
- 转发器将请求传递给拦截器(clam_interceptor.go)
- 拦截器定位表单数据并自动发送(方法包括POST/PUT/PATCH)到clamd
- 如果clamd返回假则文件包含病毒,拦截器将编写异常HTTP响应码并返回给Web客户端同时停止调用转发器
- 如果clamd返回真则文件正常,则转发器构造一个新的HTTP请求发给Web服务端并向Web客户端返回正常响应
2 最佳实践
2.1 部署前的准备
2.1.1 部署Docker环境
本章使用如下Docker环境部署,参阅本章建议你先搭建以下Docker集群环境并熟悉,
2.1.2 准备Clamav镜像
In docker01
请参阅以下章节完成Clamav的私有镜像打包,
2.1.3 准备Clammit镜像
请参阅以下章节完成Clammit的私有镜像打包,
2.2 部署Clammit
In docker01
2.2.1 创建服务配置文件
vim /data/docker/yml/clammit-stack.yml
加入如下配置,
version: '3.1' services: clamav: image: docker01.cmdschool.org:5000/clamav:0.102.3 restart: always environment: TZ: Asia/Shanghai deploy: replicas: 1 placement: constraints: [node.labels.clamav == true] logging: driver: "json-file" options: max-size: "100m" max-file: "5" clammit: image: docker01.cmdschool.org:5000/clammit:v0.6.0 restart: always environment: TZ: Asia/Shanghai depends_on: - clamav ports: - 8438:8438 deploy: replicas: 1 placement: constraints: [node.labels.clammit == true] logging: driver: "json-file" options: max-size: "100m" max-file: "5"
根据配置需求创建数据存放目录,
In docker01
mkdir -p /data/docker/service/clammit/conf/
根据配置需求创建Clammit主配置文件,
vim /data/docker/service/clammit/conf/clammit.cfg
加入如下配置,
[ application ] listen = :8438 application-url = https://wenku.baidu.com/ clamd-url = tcp://clamav:3310 log-file = /var/log/clammit/clammit.log debug = true test-pages = true
根据配置的需求设置运行标记,
In docker01
docker node update --label-add clammit=true docker01.cmdschool.org docker node update --label-add clamav=true docker02.cmdschool.org
2.2.2 部署服务
docker stack deploy -c /data/docker/yml/clammit-stack.yml clammit
2.2.3 页面测试
配置完成后,可使用如下链接测试,
http://docker01.cmdschool.org:8438/
注:百度文库只是作为一个代理应用的范例说明(尽管你无法完成上传测试O(∩_∩)O哈哈~,你可以使用其他应用替换并测试杀毒功能)
2.2.4 测试反向代理的病毒检测能力
请从以下权威机构页面下载标准病毒码并上传到测试(请看清楚官方的说明再下载),
注:建议使用一台无杀毒软件的客户下载病毒病上传测试,测试完成可以销毁此虚拟机。
参阅文档
====================
https://docs.docker.com/compose/compose-file/
https://docs.docker.com/engine/reference/builder/
没有评论