登录
  • 人们都希望被别人需要 却往往事与愿违
  • 乐观主义是软件开发的职业病, 用户反馈则是其治疗方法@Kent Beck (Extreme Programming之父)

救命!我的 Azure Front Door WAF 规则不生效怎么办!

Azure Benny小土豆 3129次浏览 1522字 0个评论
文章目录[显示]
这篇文章在 2024年09月27日21:17:41 更新了哦~

最近在用 Front Door加速网站访问,想添加一个这样的规则:只允许 /v1下的路径和特定国家的IP,其他全部禁止。

这其实很简单的!只要创建两条 WAF规则,一个禁止全部优先级低,一个允许特定路径,优先级高。

100优先级的允许规则

救命!我的 Azure Front Door WAF 规则不生效怎么办!

看起来一点问题都没有吧,非常简单容易理解

500 优先级阻止规则

救命!我的 Azure Front Door WAF 规则不生效怎么办!

也很好理解,阻止全部

没用!

配置下来就是不生效,所有的请求都被阻止了。给阻止规则停用,就全部能访问。

azure-cli里看下WAF的配置,避免他们前端有bug

{
    "rules": [
        {
            "action": "Allow",
            "enabledState": "Enabled",
            "groupBy": [],
            "matchConditions": [
                {
                    "matchValue": [
                        "/v1"
                    ],
                    "matchVariable": "RequestUri",
                    "negateCondition": false,
                    "operator": "BeginsWith",
                    "transforms": []
                },
                {
                    "matchValue": [
                        "CN"
                    ],
                    "matchVariable": "SocketAddr",
                    "negateCondition": false,
                    "operator": "GeoMatch",
                    "transforms": []
                }
            ],
            "name": "Allow",
            "priority": 100,
            "rateLimitDurationInMinutes": 1,
            "rateLimitThreshold": 100,
            "ruleType": "MatchRule"
        },
        {
            "action": "Block",
            "enabledState": "Enabled",
            "groupBy": [],
            "matchConditions": [
                {
                    "matchValue": [],
                    "matchVariable": "RequestUri",
                    "negateCondition": false,
                    "operator": "Any",
                    "transforms": []
                }
            ],
            "name": "Deny",
            "priority": 500,
            "rateLimitDurationInMinutes": 1,
            "rateLimitThreshold": 100,
            "ruleType": "MatchRule"
        }
    ]
}

从结果来看,完全没问题。给规则从 begins with 改成 contains又可以,但是那也意味着https://cn-test.burn.hair/login?id=v1也会允许,而这不太行

救命!我的 Azure Front Door WAF 规则不生效怎么办!

看看 log

没办法了,开 log 试试看吧,不行就联系 Azure Support

先要去 Log Analytics workspaces 里开一个记录日志的奇怪的东西

救命!我的 Azure Front Door WAF 规则不生效怎么办!

然后去 Diagnostic settings 里 把这个东西和 Front Door、Workspaces关联起来

救命!我的 Azure Front Door WAF 规则不生效怎么办!

然后去log页面运行这样的一个查询,绝了连看日志都得学习查询语法😓

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "FrontdoorWebApplicationFirewallLog"

然后就能看到 WAF的日志了

救命!我的 Azure Front Door WAF 规则不生效怎么办!

什么??

WTF?谁家 requestUri这么写啊 还带端口的,怪不得我配置的 begins with /v1 不好用,但是contains就行……

救命!我的 Azure Front Door WAF 规则不生效怎么办!

火速去 WAF 里,改一下规则,给matches value改成完整的路径就好了

https://cn-test.burn.hair:443/v1

救命!我的 Azure Front Door WAF 规则不生效怎么办!

😢 问题解决了,开的各种东西可以去 Resource Group 里删除了


「不愧是 Azure,从定价,到文档,到使用,没一个符合直觉」

—— Nova Kowk


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/azure-waf.html
喜欢 (0)
分享:-)
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论
取消评论

                     

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)