亚马逊AWS官方博客

自己动手,等保合规:在亚马逊云科技私人定制 OPNsense 防火墙(二)Web 病毒防火墙

在第一篇中,我们介绍了如何在亚马逊云科技中搭建 OPNsense。接下来,我们将更近一步,介绍如何通过 OPNsense,在亚马逊云科技中,实现病毒防火墙,以满足网络安全等级保护制度 2.0 中要求的病毒拦截技术要求项。

OPNsense 作为一款开源、功能强大的解决方案,通过深度集成 ClamAV 开源病毒扫描引擎,以及内置的 C-ICAP 插件,配合 Squid 透明代理,能够有效检测和阻止恶意流量、病毒文件,增强网络安全,降低企业的安全成本。

1. Web 病毒防火墙技术介绍

OPNsense 的 Web 病毒防火墙,并非一个单一的功能模块,而是多种开源的网络安全项目与技术的有机结合。具体来说,其通过 ICAP 协议、Squid 代理、ClamAV 反病毒引擎、WEB 应用防火墙,以及其自身的防火墙规则,实现对 Web 流量的深度检测和防护。这种多层次、协同工作的安全架构,可以为用户提供一个更强大、更灵活的 Web 安全防病毒解决方案。

1.1 ICAP(Internet Content Adaptation Protocol)原理

ICAP 是一种轻量级的、类似于 HTTP 的协议,它允许将内容修改功能(例如病毒扫描、内容过滤、数据丢失防护等)从 Web 服务器或代理服务器中分离出来,从而提供一种标准化的方式,让网络内容在到达浏览器之前可以被修改或者过滤,以满足特定的安全策略。

ICAP 主要包含以下几步:

  1. 请求转发: ICAP 客户端(如 Web 代理服务器)接收到 HTTP 请求或响应时,根据配置的策略将该请求或响应发送给 ICAP 服务器。
  2. 内容处理:ICAP 服务器接收到 ICAP 消息后,会对其中的 HTTP 内容进行处理,如:病毒扫描、内容过滤、数据脱敏、压缩转码等。该过程中 ICAP 服务器有可能进一步调用其他服务。
  3. 响应返回:ICAP 服务器处理完 HTTP 内容后,会将处理结果封装成 ICAP 响应消息,并返回给 ICAP 客户端。
  4. 内容传递:ICAP 客户端接收到 ICAP 响应消息后,会根据响应消息的内容,决定如何处理原始的 HTTP 请求或响应。例如:当 HTTP 内容被检测为恶意内容时,ICAP 客户端会阻断该内容。

1.2 Squid 代理服务器简介

Squid 的核心功能是代理并缓存客户端请求的网页内容。当用户请求某个网页时,Squid 会先检查本地缓存中是否已存在该网页。如果存在,则直接从缓存中返回,无需再次向远程服务器请求,从而显著提高访问速度。通过缓存,Squid 还可以减少对外部服务器的请求,降低网络带宽占用。

Squid 本身已经提供了大量访问控制功能,如可以根据 IP 地址、域名、URL 等多种条件,对用户的网络访问进行限制。同时,Squid 还支持透明代理模式,用户无需手动设置代理服务器,Squid 会自动拦截并处理网络流量。

1.3 开源反病毒引擎 ClamAV

ClamAV 是一款开源软件,ClamAV 支持多种操作系统,包括 Linux、Windows 和 macOS。

ClamAV 能够检测多种类型的恶意软件,包括病毒、木马、蠕虫和间谍软件。并提供了免费的病毒数据库更新,以确保能够检测最新的威胁。

2. 亚马逊云科技中 OPNsense 部署与配置

在云上,整体的技术架构,可以参考图 1 Web 病毒防火墙原理。防火墙截获 Web 请求,并转发到 Squid Web 代理服务器。代理服务器从互联网获取网站返回,然后使用 ClamAV 进行病毒扫描。根据扫描结果,进行相应的结果返回。

图 1. Web 病毒防火墙原理

2.1 OPNsense 配置

OPNsense 的 Web 防病毒,首先需要安装相关插件,并对网络进行相关配置。然后,即可对相关的 ClamAV、Squid、C-ICAP 等组件进行配置。

2.1.1 安装 OPNsense 插件

在 OPNsense 控制台,System -> Firmware中,安装 os-c-icap,os-clamav,os-squid 三个插件,如图 2 安装 OPNsense 插件所示。选择需要的插件,点击右边的‘+’号即可自动安装。

图 2. 安装 OPNsense 插件

2.1.2 配置防火墙规则

为了将 Web 流量送入 ClamAV 进行处理,首先在防火墙中要将 Web 流量进行重定向处理。因而,我们创建一条单独的端口转发规则,将私有子网(192.168.128.0/24)对外的 Web 流量(80 端口),重定向到本地 Squid。如果还需要处理 HTTPS 流量,则参考图 3 Web 流量防火墙规则再添加 443 端口流量。

图 3. Web 流量防火墙规则

2.2 ClamAV 配置

接下来,我们配置 ClamAV 反病毒引擎。正常情况下,我们可以直接启用,并同步通过 freshclam 下载更新病毒库。但是,因为病毒文件比较大, 容易出现下载失败,导致 ClamAV 不能正常启动。如果出现病毒更新失败,可以进入 OPNsense EC2 的串口,通过 root 密码登录后,参考下面的命令,下载初始化的病毒库文件。

1.	# 如果不存在就收工创建
2.	cd /var/db/clamav
3.	
4.	# 下载文件,可以是自己的服务器
5.	wget https://database.clamav.net/main.cvd -o /var/db/clamav/main.cvd
6.	wget https://database.clamav.net/daily.cvd -o /var/db/clamav/daily.cvd
7.	wget https://database.clamav.net/bytecode.cvd -o /var/db/clamav/bytecode.cvd
8.	
9.	# 更改权限
10.	chown clamav:clamav main.cvd
11.	chmod 640 *.cvd

病毒库更新完毕后,我们可以参考图 4 防病毒引擎配置,启用 ClamAV 服务。如果我们期望使用 ClamAV 的远程调用功能,可以启用 TCP port。其他的参数,建议参考 EC2具体的配置进行相应的调整。

图 4. 防病毒引擎配置

在配置、启动 ClamAV后,我们可以在图 5 防病毒引擎信息的界面中,检查 ClamAV 的具体软件与病毒库版本信息。

图 5. 防病毒引擎信息

自此,ClamAV 已经在 OPNsense 系统后台运行。

2.3 Squid 配置

接下来,我们进行 Squid Web 代理服务器的配置。在 Services -> Squid Web Proxy中,如图 6 Web 代理服务器配置,启动代理服务并应用,系统将会在后台启动 Squid。

图 6. Web 代理服务器配置

接下来,参考图 7 Squid 网络配置 配置代理转发。因为我们 Squid 并不对外提供服务,所以接口选择 Loopback。端口使用默认的即可。如果要修改,前述配置防火墙规则中,防火墙转发规则也需要相应修改。

为了简化客户端配置,我们需要启用透明代理。在透明代理模式下,Squid 会自动识别 Web 流量并进行代理。

对于 HTTPS 流量,Squid 也可以进行代理分析,同样,启用 SSL 检查即可。防火墙中也有添加对应的 HTTPS 转发规则。

图 7. Squid 网络配置

因为我们启用了透明代理模式,因为透明模式下,代理服务器不需要用户名密码。为了安全起见,我们需要限制只有私有子网可以访问。因而需要在访问控制列表中,添加我们的私有子网地址(192.168.128.0/24)。如图 8 Squid 访问控制所示。

图 8. Squid 访问控制

最后,配置 ICAP 服务地址。如前面 Web 病毒防火墙技术介绍中提到,Squid 会将 Web 流量转发到 ICAP 服务,ICAP 服务调用 ClamAV 进行病毒扫描,如图 9 Squid ICAP 转发配置。

图 9. Squid ICAP 转发配置

2.4 C-ICAP 配置

接下来,还要配置 ICAP,用于承接 Squid 导入的 Web 流量。参考图 10 ICAP 插件配置,启用 ICAP 服务。

图 10. ICAP 插件配置

然后,参考图 11 ICAP 防病毒配置,配置反病毒扫描功能。

图 11. ICAP 防病毒配置

现在,OPNsense Web 反病毒防火墙已经配置完成。我们可以进行测试验证了。

3. 功能测试与验证

3.1 VPC 中 OPNsense 的网络部署架构

因为 OPNsense 还未支持亚马逊云科技 Gateway Load Balancer,所以,网络部署需要采用 NAT 网关方式部署,如图 12 测试验证部署架构所示。

图 12. 测试验证部署架构

3.2 病毒测试文件:EICAR

‌EICAR‌,欧洲反计算机病毒协会(European Institute for Computer Antivirus Research),是一个旨在提高反病毒研究的深度和促进杀毒软件的发展国际组织。EICAR 的主要职责是维护计算机网络的安全,并扩展到信息安全领域,包括内容安全、无线网络安全、射频识别(RFID)和信息安全意识等‌。

EICAR 最著名的贡献是 EICAR 标准反病毒测试文件,也称为 EICAR 测试文件。这个文件是由 EICAR 与计算机病毒研究组织(CARO)共同开发的,用于测试计算机反病毒程序的反应。EICAR 测试文件允许在不使用真实计算机病毒的情况下测试杀毒软件,从而确保杀毒软件能够正确识别和处理潜在的威胁。

本文测试使用标准 EICAR 病毒文件进行测试验证。

3.3 实战测试

为了对比测试,首先,我们测试正常网站访问,验证防火墙基本功能;然后,测试 EICAR 病毒文件,验证防火墙反病毒功能。

3.3.1 对比测试测试

在私有子网的 EC2 中,访问 www.baidu.com, 参考图 13 Web 访问测试验证,可以看到功能正常。 然后,我们访问 http://pkg.opnsense.org/test/eicar.com.txt, 一个标准的 EICAR 病毒样本文件,可以看到,访问失败。

图 13. Web 访问测试验证

3.3.2 日志验证

为了验证访问失败确实是被病毒查杀。我们可以检查 ICAP 服务日志。其中,可以看到对应的查杀日志。如图 14 防火墙日志检查所示。

图 14. 防火墙日志检查

4. 总结

本文首先阐述了 OPNsense 通过集成 Squid 代理服务器、ICAP(互联网内容适应协议)以及 ClamAV 反病毒引擎来实现 Web 流量的病毒扫描。然后本文详细介绍了如何在亚马逊云科技上部署和配置 OPNsense 中配置和验证 Web 防病毒功能。希望通过本文,读者能够自行在亚马逊云科技中,配置自己的 Web 病毒防火墙。

5. 参考文献

  1. ICAP 互联网内容适配协议:https://en.wikipedia.org/wiki/Internet_Content_Adaptation_Protocol
  2. Squid Web 代理服务器:https://www.squid-cache.org/Doc/
  3. ClamAV 配置与升级:https://docs.clamav.net/
  4. EICAR virus 测试文件:https://www.eicar.org/download-anti-malware-testfile/
  5. OPNsense 官网文档:https://docs.opnsense.org/

本篇作者

刘科

西云数据解决方案架构师,15+ 年 IT 研发、管理经验,曾就职于知名通信设备厂商、头部互联网企业,有丰富、广泛的系统架构与研发管理经验。擅长帮助企业打造完善研发 Devops 体系,构建网络与安全体系,帮助企业业务产品项目落地。

李阳

亚马逊云科技安全解决方案架构师,负责基于亚马逊云科技云原生安全服务的解决方案架构设计、咨询和落地,包括网络安全等级保护解决方案、多账号安全治理解决方案等。加入亚马逊云科技前曾在移动通信 5G 安全技术研究和标准化、国密算法及标准化、云计算安全产品管理(云安全运维审计、云应用身份管理 IDaaS)和解决方案方面有着丰富经验。