基于异常检测的 waf 策略配置

 

  • 流量模式异常检测
    • 原理:正常的网站流量通常具有一定的模式和规律,如访问频率、请求路径分布、请求头和请求体的大小等。通过对历史流量数据的分析,可以建立一个流量模式的基线。当出现与基线差异较大的流量时,可能表示存在攻击行为。
    • 配置策略
      • 流量频率分析
        • 配置 WAF 来统计不同 IP 地址或用户会话的请求频率。例如,对于一个普通的博客网站,正常情况下单个 IP 在一分钟内可能只会有几次页面访问请求。可以在 WAF 中设置一个阈值,如每分钟超过 50 次请求视为异常。当检测到某个 IP 的请求频率超过这个阈值时,WAF 可以采取相应的措施,如暂时封锁该 IP 或者要求进行验证码验证。
        • 同时,考虑不同类型的请求频率。比如,注册或登录请求的频率通常会低于普通的内容浏览请求。对于注册和登录功能,可以设置更严格的频率限制,如每分钟不超过 3 次请求,以防止暴力破解攻击。
      • 请求路径分布监测
        • 分析网站正常访问时的请求路径分布。例如,一个电商网站,大部分流量集中在产品页面、购物车页面和结账页面。WAF 可以记录每个路径被访问的比例作为基线。当出现大量请求集中在一些不常见的路径(如后台管理路径或者包含敏感信息的路径)时,视为异常。
        • 利用机器学习算法(如聚类分析)来动态调整请求路径的正常范围。例如,随着业务的发展,新的页面或功能上线,WAF 可以自动更新请求路径的分布模型,以适应新的流量模式。
      • 请求头和请求体大小监控
        • 确定正常请求头和请求体的大小范围。对于普通的网页浏览请求,请求头通常在几百字节到几 KB 之间,请求体大小也有一定的范围(如 HTML 页面请求体较小,文件上传请求体则根据允许上传的文件大小而定)。WAF 可以设置上下限来检测异常大小的请求。
        • 当检测到异常大小的请求头或请求体时,进一步检查内容是否包含可疑的攻击特征。例如,一个异常大的请求体可能是包含恶意代码的 SQL 注入尝试或者是大量垃圾数据的 DDoS 攻击。
  • 用户行为异常检测
    • 原理:每个用户在网站上的行为也有一定的模式。通过分析用户的行为序列、操作时间间隔、操作类型等,可以发现异常的用户行为,这可能是攻击者在进行恶意操作。
    • 配置策略
      • 行为序列分析
        • 记录用户在网站上的操作序列,如登录、浏览页面、添加商品到购物车、结账等操作。利用马尔可夫链等模型来建立正常的用户行为序列模式。例如,正常用户在登录后通常会先浏览一些商品页面,然后可能会将商品添加到购物车,最后进行结账。如果检测到一个用户的行为序列不符合这个正常模式,如登录后直接尝试访问系统管理页面,WAF 可以判定为异常行为。
        • 对于具有复杂业务逻辑的网站(如金融交易平台),可以根据具体的业务流程来细化行为序列模型。例如,在证券交易平台,正常的交易行为序列包括查看行情、下单、确认订单等步骤,WAF 可以对这些步骤的顺序和时间间隔进行监控,以发现异常交易行为。
      • 操作时间间隔监测
        • 分析用户不同操作之间的时间间隔。例如,正常用户在填写注册表单时,各个字段的填写时间间隔可能比较均匀,而攻击者使用自动化工具填写表单时,时间间隔可能会非常短或者几乎为零。WAF 可以设置一个时间间隔阈值,如在填写表单时,两个相邻字段的填写时间间隔小于 0.1 秒视为异常。
        • 对于一些需要用户仔细阅读和操作的功能(如阅读并同意用户协议),可以设置较长的时间间隔下限。如果检测到用户在极短的时间内完成这些操作,可能表示存在自动化攻击的嫌疑。
      • 操作类型异常检测
        • 确定每个用户角色或用户组正常的操作类型。例如,普通用户在内容管理系统中通常只会进行内容浏览和评论操作,而管理员会进行内容发布、审核等操作。WAF 可以根据用户的权限和角色来监测操作类型是否异常。
        • 当检测到用户进行与其角色不相符的操作时,如普通用户尝试执行管理员权限的操作(如删除其他用户的评论),WAF 可以立即拦截该操作,并可能触发警报,通知管理员进行进一步调查。
  • 内容异常检测
    • 原理:除了流量和用户行为,请求内容本身也可能存在异常。这包括数据格式、编码方式、语言特征等方面的异常,这些异常可能是攻击的迹象。
    • 配置策略
      • 数据格式异常检查
        • 对于网站接受的各种数据格式(如 JSON、XML、表单数据等),建立正常的数据格式模型。例如,对于一个接受 JSON 数据的 API 接口,正常的 JSON 数据应该符合一定的结构和数据类型要求。WAF 可以使用 JSON Schema 等工具来验证数据格式。当检测到不符合正常格式的 JSON 数据时,如缺少关键字段或者字段数据类型错误,视为异常。
        • 对于文件上传功能,检查上传文件的格式是否符合预期。除了检查文件扩展名,还可以通过检查文件头的二进制签名来确定文件的真实格式。例如,对于声称是 JPEG 图片的文件,检查其文件头是否符合 JPEG 文件的标准签名,否则可能是攻击者试图上传恶意文件。
      • 编码方式异常监测
        • 分析正常请求中使用的编码方式。例如,在网页请求中,通常使用 UTF – 8 编码来表示文本内容。WAF 可以检查请求头中的编码声明与实际请求内容的编码是否一致。如果检测到不一致或者使用了不常见的编码方式(如一些攻击者可能会使用自定义编码来隐藏恶意内容),视为异常。
        • 对于 URL 编码,监控是否存在过度编码或者恶意编码的情况。例如,正常的 URL 参数可能只会有适度的编码,但攻击者可能会使用多次编码来绕过简单的过滤机制。WAF 可以对 URL 编码进行解码和检查,以发现潜在的攻击特征。
      • 语言特征异常检测
        • 利用自然语言处理(NLP)技术来分析请求内容中的文本部分。例如,对于一个博客网站的评论功能,正常的评论应该具有自然语言的语法和词汇特征。WAF 可以通过建立语言模型(如使用词袋模型或者深度学习语言模型)来检测评论内容是否包含异常的语言特征。
        • 异常的语言特征可能包括大量无意义的字符组合、不符合语法的句子结构或者包含特定的恶意词汇(如与网络攻击相关的词汇)。当检测到这些异常语言特征时,WAF 可以采取措施,如阻止评论发布或者将评论标记为需要人工审核。