Citrix Web应用程序防火墙的概念验证部署指南
概述
本概念验证(PoC)指南旨在帮助您快速部署Citrix Web应用防火墙(WAF),无论是独立部署还是作为现有ADC部署的一部分,以保护网络应用程序和服务。本指南涵盖了Citrix WAF的一些基础知识,部署最佳实践以及WAF项目的后续步骤。本指南不会涵盖所有可用的保护措施,也不涵盖当前可用的所有网络技术。
这些说明涉及克隆已由ADC设备代理的应用程序或服务器,允许管理员在不中断现有流量的情况下构建策略和规则。这不是为网络应用程序防火墙部署的PoC的唯一方法,但它比其他方法更容易。
概念体系结构
的Web应用程序防火墙在第7层(应用程序层)运行,与在第3层或第4层运行的传统网络防火墙不同。它了解网页和应用程序协议,如HTTP,XML,SQL和HTML。
Citrix WAF提供了积极和负面的安全模型,以实现尽可能广泛的保护。负面安全模型使用漏洞签名来防止已知的攻击。它还允许快速初始部署,并通过导入第三方评估工具的结果为应用程序的“虚拟修补”提供机制。
积极的安全模型定义了允许的流量模式和用户行为,并阻止其他所有内容.WAF引擎使用动态分析为可接受的行为构建规则集。
必备条件
本指南假定已在Citrix ADC或独立Citrix WAF上配置了以下内容:
- 基本了解网络概念和管理思杰ADC
- ADC设备已在网络上部署并可访问
- 已应用合适的许可证 - 无论是独立的WAF还是ADC,都需要高级许可证
- 已分配NSIP,可供管理访问
- 已分配剪断,可以与受保护的一个或多个服务进行通信
另一个VIP的仅内部IP地址和DNS条目(该服务可能已经由ADC进行负载平衡,请确保有单独的IP和DNS可用)
注意:
使用不同的DNS名称和URL访问应用程序可能需要向应用程序添加配置以使其知道新名称
- 对您所保护的应用程序或服务的体系结构和结构的基本了解。例如,如果站点处理信用卡信息确定是否启用了信用卡保护,或者应用程序是否使用SQL数据库进行存储,则确定是否使用SQLi保护
- 基本了解网络协议和技术,例如HTTP、HTML、正则表达式、JavaScript等,具体取决于受保护的应用程序
- 对Citrix ADC上的第4层负载平衡和配置的基本了解
- 专用的syslog服务器 - 虽然本地系统日志可用,但建议配置专用的syslog服务器或者,带安全洞察的思杰ADM提供了对WAF引擎和应用程序安全性的详细分析
WAF概念验证注意事项
很可能的是,我们要保护的Web服务或应用程序已经由ADC代理进行负载平衡或其他流量管理。在WAF PoC部署期间,我们不希望中断现有用户的应用程序功能或可用性。为了实现这一点,重复的虚拟服务器的唯一区别在于,重复的虚拟服务器绑定了WAF策略。
此方法还使用户能够测试应用程序以确保其正常运行,并为可接受的流量构建WAF规则。
在启用网络应用程序防火墙之前,需要考虑调整ADC部署的规模,因为它会导致大量资源消耗。估计大小的最佳方法是使用Web服务器分析和估计请求大小,响应大小和表单数量。Citrix ADC可用于收集基本的网络大小规模指标,但前提是应用程序已被代理:
显示httpband-类型响应显示httpband-类型REQUEST <!——NeedCopy>
某些保护需要的资源远远超过其他保护措施,因此称为高级保护。高级保护功能会消耗更多资源,因为他们记住 Web 交易中的表单域、URL、Cookie 和其他数据。WAF 引擎验证数据是否在事务之间发生变化,以确保请求和响应不会被篡改,从而消耗更多的设备内存。如配置中所述,某些高级保护支持无会话检查,无会话保护需要更多的CPU资源而不是内存。
例如,具有高级策略的设备能够处理大约十分之一的流量,与仅具有基本保护的相同设备相同。有关每个不同设备支持的WAF吞吐量功能,请参阅思杰ADC数据手册。
推荐的保护
这些安全检查通常可以在WAF配置文件中启用。大多数这些检查都要求在启用阻止之前应用学习的规则;默认情况下不要启用块,而不首先部署学习的规则。
注意:
这份清单并非详尽无遗。某些保护与某些应用程序不兼容,有些保护不会为其他应用程序增加任何好处。
- Cookie的一致性
- 允许WAF引擎加密或代理来自应用程序的会话cookie的
- 饼干一致性可防止恶意行为者篡改饼干
饼干一致性是高级保护
注意:
当用户主动使用应用程序时,请勿启用此设置,因为不允许发送任何未加密的会话饼干
- Citrix Prod文档中的更多信息
- 缓冲区溢出
- 防止对不安全操作系统或Web服务器软件的攻击,这些操作系统或Web服务器软件在接收到超过它能够处理的数据时可能
- 缓冲区溢出检测到URL,饼干或标题是否超过指定的最大大小
- Citrix Prod文档中的更多信息
- 表单字段一致性检查
- 验证用户返回的Web表单在发送到服务器之前是否未被修改
- 表单字段一致性是具有无会话支持的高级保护
- Citrix Prod文档中的更多信息
- SQL注入
- 阻止或转换职位正文,标题和Cookie中的SQL特殊关键字和字符
- 仅当网络应用程序使用SQL数据库时才适用
- Citrix Prod文档中的更多信息
- 跨站脚本检查(XSS)
- 检查跨站脚本攻击请求的标头和正后文
- WAF既可以完全阻止请求,也可以转换违规脚本以防止它们运行
- Citrix Prod文档中的更多信息
- 拒绝URL
- 阻止与黑客和恶意代码或脚本通常访问的URL的连接
- 通过单击编辑然后添加,可以在放宽规则>拒绝网址UI中添加**自定义拒绝URL规则
- Citrix Prod文档中的更多信息
- 开始的网址(URL关闭)
- 防止通过书签,外部链接,跳页或手动输入网址直接访问网站上的随机URL(强制浏览)
- 开始URL是一种具有无会话支持的高级保护;必须先部署学习的规则,然后才能根据启动URL进行阻止
- Citrix Prod文档中的更多信息
初始WAF配置
配置WAF保护时有两种选择:
- 选项1:使用Web应用防火墙配置向导创建WAF配置文件和WAF策略
- 该向导将指导您构建初始特征码集以及其他安全检查和设置,如下所示:
- 在Web UI中,导航到:安全>的Citrix Web应用防火墙
- 选择WAF配置文件的名称和配置文件类型(网页,XML或JSON,取决于所保护的应用程序类型)
- 指定用于确定WAF引擎处理哪些流量的表达式
选择对已知漏洞应用保护的签名-可以选择使用现有特征码集或创建新的特征码集。要选择应用于此保护配置文件的签名,有两个编辑器选项提供基本或高级功能。
两个编辑器都有导航选项,用于选择签名,然后启用、阻止、日志或统计信息。注意多页签名,并确保所有签名都被选中。基本编辑器更容易入门,而高级编辑器则提供了更多功能
注意:
在继续下一步之前,请确保签名被标记为已启用
- 选择适用于应用程序的深度保护。建议首先启用日志记录、统计信息和学习;最初不要启用阻止,因为许多保护需要一些学习的规则
重要提示:
如果WAF向导用于创建配置文件和策略,它确实会在全局范围内绑定!如果过滤表达式保留为默认值(真),则WAF引擎会处理所有流量,这可能会导致应用程序行为不当。建议的操作是解除策略与默认全局绑定点的绑定,而是绑定到稍后创建的磅虚拟服务器。要从全局绑定点解除WAF策略的绑定,请执行以下操作:
- 导航到安全> Citrix Web应用防火墙>策略>防火墙
- 选择策略管理器,然后选择默认全局
- 突出显示列出的WAF策略,然后选择取消绑定
- 该向导将指导您构建初始特征码集以及其他安全检查和设置,如下所示:
- 选项2:或者,可以通过手动创建WAF配置文件,WAF策略并应用特征码集,将WAF保护应用于应用程序或站点
- 为应用程序创建特征码集
- 导航到安全> Citrix Web应用防火墙>签名
- 突出显示默认签名然后按添加创建默认特征码集的副本
- 根据受保护的应用程序或站点选择适当的签名,并确保签名设置为已启用
- 创建Web应用防火墙配置文件
- 导航到安全> Citrix Web应用防火墙>配置文件
- 为配置文件指定一个描述性名称,然后根据要保护的应用程序类型选择网络,XML或JSON
- 选择”基本“以应用基本默认设置
- 创建后,突出显示新的配置文件,然后按编辑
- 开安全检查并在所有项目上取消选择封锁
- 开档案设置
- 在绑定签名设置中选择先前创建的特征码集
- 如果后端应用程序服务器支持 _分块请求,请_启用流以提高性能
- 根据受保护的应用程序或网站修改任何其他设置
- 创建Web应用防火墙策略
- 导航到安全> Citrix Web应用防火墙>策略>防火墙
- 按添加创建新策略
- 为策略指定一个描述性名称,然后选择之前创建的WAF配置文件
- 创建一个流量表达式,用于确定WAF引擎处理哪些流量
- 为应用程序创建特征码集
无论使用哪种方法,基本的Web应用防火墙配置现在都可以绑定。最后一步是更新签名文件。
- 导航到安全> Citrix Web应用防火墙>签名
- 突出显示新创建的特征码集,然后按选择操作 > 自动更新设置
启用签名自动更新并确保已填充更新网址
注意:
签名更新要求ADC可以解析DNS名称并从NSIP访问公共互联网
- 配置自动更新后,ADC每小时检查更新一次。签名也可以手动更新,并且在创建WAF配置文件和策略后需要运行一次手动更新
要验证ADC设备是否能够访问签名更新,请从CLI运行以下命令(退出到壳):
外壳卷曲-一世https://s3.amazonaws.com/NSAppFwSignatures/SignaturesMapping.xml <!——NeedCopy>
系统应该返回一个http / 1.1 200确定
最新的签名更新文档可在思杰PROD文档上找到 - 也可以通过RSS获取更新。
默认情况下,不启用常见事件格式(CEF)日志记录,WAF使用本机日志记录格式。此外,WAF Eninge还可以包含用于请求的地理位置信息。为方便故障排除,建议导航到安全>的Citrix Web应用防火墙>更改引擎设置来启用英语日志记录和地理位置。选中欧共体语言教学大纲的日志记录和地理位置日志记录的复选框。或者,可以通过CLI在中启用这些设置,如下所示:
集设置GeoLocationLogging ON!——NeedCopy>
克隆虚拟服务器配置
创建Web应用防火墙配置文件和策略后,它需要绑定到负载平衡虚拟服务器。如果尚未在ADC上配置应用程序或服务,则需要从头开始进行配置。如果应用程序已配置,则需要对其进行克隆。
要快速克隆现有虚拟服务器,请执行以下操作:
- 导航到流量管理 > 负载平衡 > 虚拟服务器
- 突出显示现有虚拟服务器,然后按添加创建具有类似设置的新虚拟服务器
- 为新虚拟服务器指定一个新名称和不同的IP地址
- 确保端口和协议正确无误,然后按好的
- 绑定服务或服务组然后按继续
- 修改负载平衡方法、持久性以及与现有虚拟服务器匹配所需的任何其他流量设置
- 如果此虚拟服务器是HTTPS虚拟服务器,请确保绑定了适当的证书并绑定了安全的密码套件
接下来,WAF策略需要绑定到这个新的虚拟服务器:
- 导航到流量管理 > 负载平衡 > 虚拟服务器
- 突出显示新创建的虚拟服务器并按编辑
- 在右侧的“高级设置”列中,选择策略
- 按+(加号)图标添加策略
- 选择具有请求类型的应用程序防火墙策略
- 默认的绑定详细信息可以单独留下
用户验收测试和初始疑难解
此时,用户可以开始使用新网址测试应用程序,访问绑定了WAF策略的网络应用程序。根据应用程序的复杂性,跨不同业务部门的多个用户需要使用该应用程序来生成可接受的流量。学习引擎使用此流量来查看应用程序的所有部分,并确保没有阻碍应用程序功能的误报块。
在初步测试期间,可能很难找到与违规请求相关的信息,但是有一些设置可以帮助解决这一点。首先是设置一个自定义的HTML错误对象,该对象在请求被阻止时显示诊断信息。如果未设置错误对象,用户通常会看到不提供任何信息的空白页面。
注意:
一旦WAF受保护的应用程序暴露给非测试受众,建议将其删除或更改。
- 将HTML错误对象设置为显示诊断信息
- 前往WAF个人资料,然后展开个人资料设置
- 选择HTML错误对象,然后单击添加按钮(或加号)以创建新对象
- 在“导入HTML错误页面”中选择文本
- 为错误对象命名并粘贴以下代码:
< html >< >头 应用防火墙阻止页面< /名称> head>身体< >
您的要求已被封锁由安全策略
H1>访问已被阻止 - 如果你觉得这是错误,请与网站管理员引述如下: H3>
<李>NS交易ID:$ {} NS_TRANSACTION_ID<李>AppFW会话ID:$ {} NS_APPFW_SESSION_ID<李>违规类别:$ {} NS_APPFW_VIOLATION_CATEGORY<李>违规详细信息:$ {} NS_APPFW_VIOLATION_LOG< / UL >< /身体> html><!——NeedCopy >
生成的错误页面将显示有价值的诊断信息,包括违规类别和日志详细信息。此信息允许管理员验证是否由于误报而需要放宽区块。
重要提示:
某些WAF块仅阻止页面的某些元素加载,例如图像,CSS格式,脚本或按钮\表单功能可能无法正常工作。尽管诊断错误页面未显示,但这些块仍被视为问题。使用syslog 查看器(请参阅下面的示例)查找导致问题的违规签名或安全检查。
当诊断错误页面不可用时,WAF引擎生成的系统日志消息有助于了解阻塞的会话
- 转到“系统”>“审核“>”系统日志”消息
- 在筛选依据列下,选择模块,然后选择APPFW
- 按应用
如果存在误报块,可以立即从系统日志查看器中放松某些违规行为
- 从“系统日志消息”视图(之前)中,找到违反规则的系统日志消息
- 选中消息右上角的复选框
- 选择操作菜单,然后选择部署
- 或者,您可以在部署放宽规则之前修改它
注意:
来自签名违规的假阳性块通常意味着网络应用程序不符合标准或编写不良。允许应用程序运行的直接行动是应用放宽规则,但长期目标是修复应用程序本身。对编写不良应用程序的放宽规则可能会通过允许应用程序运行而允许恶意内容流通。
通过打开所有物品的统计信息,只要违反规则或签名,设备就会收集计数器。这在最初很有用,因为它允许清除计数器以查看是否因WAF策略而发生了任何新的阻止请求。
在ADC UI的仪表板选项卡中,将统计视图设置为应用程序防火墙以查看所有关联的统计数据。统计数据也可以从此视图中清除。
或者,可以使用以下命令从设备的壳牌命令行查看统计信息:
nsonmsg-D.统计|Grep.appfw <!——NeedCopy>
请注意,网络应用程序防火墙遵循Web标准,默认情况下,格式错误的请求会被阻止。要更改此行为,请执行以下操作:
- 思杰WAF使用严格的HTTP检查
- 默认情况下无效,不符合RFC标准的HTTP请求被阻止
- 要修改不符合RFC要求的请求处理,请转到安全>的Citrix Web应用防火墙然后更改引擎设置
- 请参阅下面的代码以了解CLI方法,以便仅为格式错误的请求设置日志记录和统计生成
注意:
此设置为全局设置。如果禁用阻止选项,WAF引擎将绕过任何不符合RFC要求的应用程序防火墙处理。不建议这样做。
集appfw设置-malformedReqAction登录统计<!——NeedCopy>
安全检查学习
学习的数据用于为WAF引擎的积极安全模型创建规则-有关学习规则的一些快速细节:
- 以正则格式存储,可以导出为CSV进行分析或迁移
- 在HA对设备中传播
- 安全检查可以永久保留在学习模式下,但不是必要的
- UAT期间处理的流量越多,收集更多有用的数据
- 强烈建议配置可信学习客户端,以便了解设备何时接收来自已知和未知客户端的流量。此设置可确保恶意流量不允许进入已知的规则。
学习的引擎在aslearn
流程和规则以SQLite的格式存储在以下位置时运行:
/var/nslog/asl/appfwprofile.db <!——NeedCopy>
学习模式可以永久启用,但学习数据库的大小限制为20 MB。数据库达到这个大小后,学习引擎不会添加新数据。
从过程的角度来看,学习方式如下:
每当用户使用包含已启用学习检查的绑定WAF策略访问新应用程序时,都会生成学习的规则。通过使用复制虚拟服务器方法,在用户测试受保护的应用程序时,不会阻止生产流量。此外,此时通过WAF引擎的所有流量都将生成学习的规则。
制定放松规则和确保应用程序按预期运行而不会出现误报块的典型流程持续发生:
在之前未创建规则的应用程序或工作流发生更改时,必须重复此过程。
要使用UI查看学习的数据,请执行以下操作:
- 导航到安全> Citrix Web应用防火墙>配置文件,选择应用防火墙配置文件,然后选择编辑
- 在右栏中,选择学习规则
- 每个支持学习的安全检查都会显示以下几个选项:
- 选择编辑以查看和部署为特定安全检查学习的规则
- 一旦部署了规则,它们就会从学习的规则转变为放松规则
- 在学习的规则的UI中,在将规则移动到放宽规则之前,可以使用“导出学习数据“按钮将规则导出为CSV
- 视觉型的人也是一个有价值的工具,特别是对于开始URL检查来显示规则和受保护应用程序的URL映射
将学习的规则部署到放宽规则后,可以将安全检查设置为“阻止”。
注意:
如果没有处理足够的流量或WAF引擎没有看到所有应用程序路径,则可能会出现误报块。学习的规则过程可以重复,直到应用程序按预期运行。
进口出口
网络应用程序防火墙配置文件的整个配置可以跨多个设备进行复制。此过程将捕获所有绑定对象,例如HTML错误对象,XML错误对象,WSDL \ XML架构,签的名,放宽规则等。当从测试\开发环境迁移到生产环境或在进行更改之前备份WAF配置时,这可能特别有用。
注意:
导出的配置要求两个设备在同一版本中。
要使用GUI导出WAF配置文件,请在源设备上导航到安全> Citrix Web应用防火墙>配置文件>选择WAF配置文件,然后选择操作>导出导出过程可能需要一些时间才能生成导出文件。归档后,WafProfile.tgz文件将下载到客户端计算机。
要使用GUI导入WAF配置文件,请在目标设备上导航到安全> Citrix Web应用防火墙>配置文件>选择操作>导入。选择“导入自“文件,然后选择“选择文件“以查找之前下载的档案。导入过程中的任何问题都会记录到:
/var/log/ns.log <!——NeedCopy>
注意:
导入过程不会创建WAF策略或绑定。
动态分析
在版本13.0中,动态分析功能已添加到WAF引擎中,允许在配置阈值后自动将学习的数据部署到放宽规则中。系统会向管理员发送警报,允许他们在数据无效时跳过数据,否则系统会自动添加该数据。默认情况下,所有受支持的安全检查都禁用动态分析-要启用动态分析并配置设置,请执行以下操作:
- 导航到安全> Citrix Web应用防火墙>配置文件,选择应用防火墙配置文件,然后选择编辑
- 在右栏中,选择动态分析
- 可以通过此UI启用或禁用每个安全检查
- 还可以通过选择“设置”来修改此WAF配置文件的动态分析设置
使用动态分析时,强烈建议启用可信学习客户端,以确保只有有效的应用程序流量才生成规则。这些客户端可从以下位置添加:
- 学习的规则的UI
- 动态分析UI
转向生产时的注意事项
使用复制虚拟服务器方法时最重要的考虑因素是,如果应用程序URL发生更改,任何包含URL的学习规则都不适用。例如,“开始URL”和“CSRF表单标记“规则包括URL。
迁移到生产虚拟服务器的最佳方法是关闭阻塞以进行安全检查,然后重新获取和部署包含URL的规则。或者,可以在修改URL后导出学习的规则,然后读取。如果尚未添加可信学习客户端,启用这些客户端也将非常重要。
最后,如果的PoC在与生产资源不同的测试平台上运行,则必须考虑通过启用的Web应用程序防火墙而变化的资源需求。