WAF专题5 -- WAF动作
2022-11-16 08:31:20 Author: debugeeker(查看原文) 阅读量:9 收藏

WAF每条规则都会配置动作,对命中规则的请求进行对应的处理。

每个WAF产品对动作定义不大一样。

  • ModSecurity定义了allow,  block, deny, drop, pass,  pause, proxy, redirect。

    • allow: 命中了某条规则后,不需要对请求/响应应用其它规则,直接让请求通过。这个可以用于白名单。

    • block: 并不是一个真正的动作,它的行为取决于配置的默认动作,如果默认动作更新,使用block的规则行为也随即改变。在安全响应方面,它可用于批量进行规则作为更新。

    • deny: 中断规则处理,拦截请求/响应。在客户端的角度来说,这个动作会返回4xx或5xx的状态码(取决于规则定义status),但并没有中断当前的连接

    • drop:  对当前tcp连接进行关闭操作,它和deny的不同是:deny之后,客户端仍然可以提交请求,但使用drop后,客户端只有重新连接才可以访问。这个动作可以节省后端服务的连接数

    • pass: 命中某条规则继续匹配下一条规则。可用于对请求进行精细地过滤,但会对响应速度有较大影响。

    • pause: 命中某条规则,对当前事务暂停指定的毫秒。一般用于防止登录爆破。如果遭受DDOS攻击,会恶化整个web服务的响应速度

    • proxy:  把命中规则的请求转发到另外一个web服务去。这个功能类似反向代理。由于它对客户端完全来说,完全是无感知,可以用它导向请求到蜜罐系统。这个动作是一个非常优秀的动作。

    • redirect: 当规则被命中,它会返回一个重定向,指示浏览器访问另外一个url。它和proxy的区别是,它对客户端是感知。可用于配置新上线接口或屏蔽某些有问题的接口。

  • Naxsi定义了accept, block, drop。

    • accept: 对应ModSecurity的allow, 一旦命中立马放行

    • block: 对应ModSecurity的deny

    • drop: 对应ModSecurity的drop

  • 华为云WAF定义了allow, deny, , redirect

    • accept: 对应ModSecurity的allow, 一旦命中立马放行

    • deny: 对应ModSecurity的deny, 默认返回418

    • redirect: 对应Modsecurity的redirect

  • openrestyl lua WAF定义了allow, deny,drop, redirect

    • accept: 对应ModSecurity的allow, 一旦命中立马放行

    • deny: 对应ModSecurity的deny, 默认返回403

    • drop: 对应ModSecurity的drop

    • redirect: 对应Modsecurity的redirect

其中华为云WAF和openresty lua WAF,在实现pass动作,都是通过规则组来实现。

对于动作配置方面,有这样的建议:

  1. 在功能开发方面,drop最好能够先返回一个状态码再停止掉整个连接,drop, deny状态码尽量可以通过规则配置。

  2. 在配置规则时,对于drop, deny的状态码,每条规则或规则组都返回不同的状态码。

这样做的好处是:

  1. 有效隐藏WAF的特征,让攻击者无法确认是否有WAF存在

  2. 当出现规则误拦截时,可以根据返回码快速定位是哪条规则误拦截。这是从无数次背锅感悟出来的血的教训

暗号:fguy6


文章来源: http://mp.weixin.qq.com/s?__biz=MzU4NjY0NTExNA==&mid=2247486734&idx=1&sn=92625b69b2bfb5aa6c4f073b47c2d7c1&chksm=fdf9661bca8eef0db810c434db408e6da4fc0bb93bd8f388a2dd23cfdd5fa5a516aa8c04fce0#rd
如有侵权请联系:admin#unsafe.sh