处理大型请求(例如文件上载)时,某些请求可能会被阻止,并显示 413 请求实体过大 (413 Request Entity Too Large) 消息。
NSX Advanced Load Balancer 可以针对如下请求触发警示或阻止上载:
文件大小超过虚拟服务 HTTP 配置文件中客户端最大正文大小字段下设置的限制。
二进制上载数据随机匹配
System-Default-Policy
规则,这将导致 WAF 根据模式阻止或标记请求。超过正则表达式匹配限制,并且对输入运行的规则过长,这将导致 WAF 终止执行。
大型请求(例如常规文件上载)的处理方式有所不同,因为这些请求将被部分处理,如下所述。
处理大型上载的参数
对于大型文件上载,将考虑以下两个配置参数:
客户端最大正文大小:在 NSX Advanced Load Balancer UI 中,导航到 以配置 HTTP 策略。在 DDoS 选项卡下,客户端最大正文大小字段定义客户端请求的最大正文大小。此值可限制作为单个 HTTP 请求一部分的客户端 POST 的大小。对于 WAF 绕过规则,此值将被覆盖而不予考虑。否则,如果配置的值小于在 WAF 配置文件下配置的客户端最大完整标头大小,则在到达 WAF 之前,缓冲将失败,并在代理中显示 413 错误消息。要缓解此问题,请更新在客户端最大标头字段大小下配置的值,使其大于在客户端最大完整标头大小下配置的值。
注:如果将客户端最大正文大小设置为默认值零(表示无限制),则该值将始终大于客户端最大完整标头大小。
客户端最大完整标头大小:在 NSX Advanced Load Balancer UI 中,导航到 以配置 WAF 配置文件。在 部分下,客户端最大完整标头大小字段定义 WAF 扫描的客户端请求正文允许的最大大小。如果客户端请求大小大于在此字段中配置的值,则会在允许的情况下根据定义的大小,通过 WAF 扫描部分正文。
如果 WAF 由于
System-Default-Policy
规则匹配而拒绝请求,则会丢弃其余请求正文。如果 WAF 允许该请求,则其余正文将在后端进行流式传输。确保选中忽略由部分扫描导致的请求正文解析错误复选框,以避免部分扫描触发的任何错误。
HTTP 1.0 和 HTTP 2.0 均支持此功能。
仅
content-length
请求支持此功能,分块编码的 POST 则不支持此功能。如果在“检测”模式下激活了 WAF 并接收了分块编码的 POST,则当 POST 的大小大于“WAF 配置文件”下定义的客户端最大完整标头大小时,该 POST 将被拒绝。
示例
以下是特定上载和相应 WAF 日志条目的示例:
示例 1:
请求被拒绝并显示 413 消息,因为客户端请求大小超过 HTTP 配置文件中配置的最大值。
由于 WAF 未检查请求,WAF 状态为“已通过”。
可以通过增加客户端最大正文大小的值来缓解此错误。
示例 2:
大小限制已增加,因此未达到任何限制。
请求被拒绝,并显示 403 消息。
同时,PDF 的某些部分与 WAF CRS 规则匹配时,请求会被拒绝,并且状态为“已拒绝”。
绕过 WAF
您可以将某些大型请求或特定上载请求绕过 WAF。很少有文件扩展名会绕过 WAF 检查,因为它们是静态内容。有关配置静态扩展的更多信息,请参阅配置 WAF 配置文件。
您也可以使用 Modsec 绕过规则完全绕过上载,如以下部分中所述。
Modsec 绕过规则
以下是 Modsec 绕过规则的一些示例。建议使用 URL 配置这些规则。ID 应在 0 到 99.999 的本地范围内,或者在专用预留范围内,如 ModSecurity 手册中所述。此处选择的数字是为了说明示例。请确保规则 ID 在您的部署中是唯一的。
单个 URL:
SecRule REQUEST_URI "@rx /app/upload/" id:90001,phase:1,t:none,nolog,pass,ctl:ruleEngine=off
多个 URL:
SecRule REQUEST_URI "@rx /app/upload/|/app/upload_two/|/app/upload_three/" id:90002,phase:1,t:none,nolog,pass,ctl:ruleEngine=off
可以使用其他运算符(例如 @contains
、@startwith
)更改此规则。
按 Content-Length:
SecRule REQUEST_HEADERS:Content-Length “@gt 1048576” phase:1,id:90003,nolog,pass,ctl:ruleEngine=off
建议使用 URL 配置规则,而不使用 Content-Length。
对恶意上载的影响
在这些情况下,攻击者可能想要偷偷向服务器进行恶意上载。此类上载可能包含恶意软件、勒索软件、病毒以及其他基于文件的漏洞利用(PDF 阅读器漏洞利用),等等。建议针对应用程序的上载目录使用病毒恶意软件扫描工具,以检测并缓解攻击。
上载绕过对应用程序安全的影响
如果大型二进制数据绕过配置了正确的上载请求或 URL 范围,WAF 将无法检查数据,并且影响将微乎其微。
您可以将某些大型请求或特定上载请求绕过 WAF。很少有文件扩展名会绕过 WAF 检查,因为它们是静态内容。
大型上载将在流量处理期间进行缓存。即使不需要请求的某一部分并绕过该部分,在检查该请求的其他部分之前,也会缓存该部分。因此,仅排除上载参数并不能帮助实现最佳效果。