WAF专题5 -- WAF动作

admin 2022年11月16日11:39:20评论56 views字数 1373阅读4分34秒阅读模式

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


原文始发于微信公众号(debugeeker):WAF专题5 -- WAF动作

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月16日11:39:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WAF专题5 -- WAF动作http://cn-sec.com/archives/1412570.html

发表评论

匿名网友 填写信息