WAF 防火墙

WAF 防火墙是一种应用层防火墙,专注于保护 Web 应用程序免受各种网络攻击和漏洞利用。它的作用在于识别和阻止恶意请求,以确保 Web 应用程序和敏感数据的安全。对于企业来说,Web 应用程序是重要的资产之一,因此保护其安全至关重要。WAF防火墙可以防止数据泄露、网站瘫痪、客户隐私泄露等风险。它还能快速响应新的威胁和漏洞,提供及时的保护。

本文档的目标是为用户提供关于WAF防火墙的详细信息和使用指南。它将涵盖WAF防火墙的主要功能:规则管理、日志和监控、白名单和黑名单管理等内容。

主要功能

当前 WAF 防火墙主要支持规则管理、日志和监控、白名单和黑名单管理,以下篇幅将详细介绍这三部分功能。

规则管理

waf

网关的 WAF 防火墙内置了6个规则集,分别是防御XSS跨站脚本攻击、防御Http协议漏洞、防御SQL注入、一般性防御、防御恶意响应、防御拒绝服务攻击。详细说明如下:

  • 防御XSS跨站脚本攻击:识别和阻止恶意注入的脚本代码,防止攻击者利用客户端漏洞获取用户信息。

  • 防御Http协议漏洞:检测和阻止恶意请求、恶意文件上传等针对HTTP协议的攻击。

  • 防御SQL注入:识别并拦截恶意的SQL查询,防止攻击者通过注入攻击获取敏感数据。

  • 一般性防御:针对常见的Web攻击,如路径遍历、代码执行等进行检测和阻止。

  • 防御恶意响应:检测并拦截恶意响应,如恶意重定向、恶意文件下载等,保护用户免受攻击。

  • 防御拒绝服务攻击:检测和阻止DDoS攻击、暴力破解等拒绝服务攻击,确保Web应用程序的可用性和稳定性。

日志和监控

WAF 防火墙提供全面的日志记录和报告功能,记录所有访问和安全事件,以便进行安全审计和威胁分析。对于非法访问,可以通过日志获取详细信息,并配合相应防火墙规则进行防御。

白名单和黑名单管理

WAF防火墙允许用户定义白名单和黑名单,用于控制允许或禁止特定IP地址的访问。通过白名单和黑名单管理,用户可以灵活地管理访问控制,确保合法的流量可以正常通过,同时阻止已知的恶意请求和攻击。

使用手册

添加、修改和删除规则

在WAF防火墙中,添加、修改和删除规则均在网关策略处进行配置。

  1. 进入团队视图或应用视图

  2. 点击左侧边栏的 网关 按钮,选择你需要防护的网关策略

  3. 点击 编辑,在 安全 一栏打开 WAF防火墙

  4. 选择相应的规则类型,如防御XSS跨站脚本攻击、SQL注入等。

  5. 保存规则设置并生效

删除全部规则直接关闭 WAF防火墙 开关即可,删除部分规则,则在复选框中进行修改。

监控和分析WAF防火墙日志

WAF防火墙提供了日志记录和报告功能,以便您监控和分析访问和安全事件。默认情况下需要在网关查询相关日志,你可以执行如下命令查询详细日志:

  1. kubectl logs -fl name=rbd-gateway -nrbd-system

当有访问被 WAF 防火墙拦截时,你可以看到如下日志信息

  1. 2023/05/10 16:30:52 [error] 30844#30844: *207007927 [client 10.43.83.34] ModSecurity: Access denied with code 403 (phase 2). Matched "Operator `Ge' with parameter `5' against variable `TX:ANOMALY_SCORE' (Value: `5' ) [file "/usr/local/openresty/nginx/conf/modsecurity/rules/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "80"] [id "949110"] [rev ""] [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [data ""] [severity "2"] [ver "OWASP_CRS/3.3.2"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [hostname "10.10.10.25"] [uri "/"] [unique_id "168379385236.800594"] [ref ""], client: 10.43.83.34, server: nginx-test.grapps.cn, request: "PUT / HTTP/1.1", host: "nginx-test.grapps.cn"

根据如上日志,你可以获取到被拦截请求的详细信息,包括 client 的 ip、访问的域名、请求的方法、拦截时间、以及被哪条规则阻止了。上面这个示例表示访问 nginx-test.grapps.cn 这个域名的 PUT 请求,触发了 REQUEST-949-BLOCKING-EVALUATION.conf 这个规则文件中 id 为 949110 的规则。你可以通过访问这个配置文件,查看对应规则信息。

  1. 进入网关 pod 的终端
  1. POD_NAME=$(kubectl get po -l name=rbd-gateway -n rbd-system -o jsonpath='{.items[0].metadata.name}')
  2. kubectl exec -it $POD_NAME -n rbd-system -- bash
  1. 查看指定规则文件中,该文件路径在异常日志中会给出
  1. cat /usr/local/openresty/nginx/conf/modsecurity/rules/REQUEST-949-BLOCKING-EVALUATION.conf
  1. 根据规则文件中的规则id,查找对应规则,并寻找解决方案

白名单和黑名单的最佳实践

白名单和黑名单是WAF防火墙中用于控制访问权限的重要工具。用于控制允许或禁止特定IP地址的访问。你可以设置某个IP地址或者某段IP,注意:黑白名单互斥,你只能单独启用黑名单或单独启用白名单。黑白名单与 WAF 防火墙一样,均在网关策略处进行配置。

  1. 进入团队视图或应用视图

  2. 点击左侧边栏的 网关 按钮,选择你需要防护的网关策略

  3. 点击 编辑,在 安全 一栏选择 黑名单白名单

  4. 填入对应 IP 地址或 IP 段。如 192.168.0.1 或 192.168.0.1/24

  5. 保存规则设置并生效

以下是一些最佳实践策略,可帮助您更有效的管理白名单和黑名单:

  • 确定受信任的IP地址和域名:根据业务需求和安全策略,确定那些受信任的IP地址和域名,它们应该被添加到白名单中,允许无限制访问您的应用程序。 这可能包括内网 IP 地址、合作伙伴的 IP 地址或特定的第三方服务 IP 地址。

  • 仅添加必要的IP地址和域名:避免将所有IP地址或域名都添加到白名单中,以减少误操作或安全漏洞的风险。 只添加那些确实需要访问您的应用程序的IP地址和域名,限制访问的范围。

  • 定期审查和更新白名单和黑名单:定期审查白名单和黑名单的内容,确保其中的IP地址和域名仍然是当前可信的,并删除不再需要的条目。

  • 日志分析和行为分析:监控白名单和黑名单的访问日志,分析是否存在异常行为或潜在的安全威胁。根据日志分析结果,及时更新白名单和黑名单,以增强对恶意访问的防护。